선형대수(Linear Algebra)
Introduction
이번에 선형대수를 공부하면서 내용을 정리해보았습니다.
강의 영상 : https://ocw.mit.edu/courses/18-06-linear-algebra-spring-2010/video_galleries/video-lectures/
Video Lectures | Linear Algebra | Mathematics | MIT OpenCourseWare
This section contains a complete set of video lectures on linear algebra along with transcripts and related resource files.
ocw.mit.edu
스터디 github : https://github.com/jwkweon/study-linear-algebra
GitHub - jwkweon/study-linear-algebra
Contribute to jwkweon/study-linear-algebra development by creating an account on GitHub.
github.com
참고한 블로그 :
Lecture 3: Multiplication and inverse matrices
Lecture 3: Multiplication and inverse matrices (2018-04-18) - 나는 말했었는데, 나는 이미 행렬들을 ...
blog.naver.com
[Linear Algebra] Lecture3, 행렬곱셉(Matrix multiplication), 역행렬(Inverse matrix) 그리고 Gauss-Jordan
지난 강의에서 행렬 곱셈(Matrix multiplication)에 대해서 다루었다. 이번 강의에서는 행렬 곱셈과 그 규칙에대해 좀 더 알아보고 역행렬과 Gauss-Jordan이 제안한 소거법을 이용해 역행렬을 구하는 방법
twlab.tistory.com
(주로 https://twlab.tistory.com/10 블로그의 사진과 내용을 보면서 공부했고 추가로 나머지 블로그를 참고하였습니다.)
(저는 제가 이해하기 쉽게 요약해서 적었으므로 좀더 자세히 공부하고싶다면 위 블로그를 참고하시면 됩니다.)
행렬 곱셈(Matrix Multiplication)
먼저 배울 것은 row*cloumn 방법 이다.
이 방법은 우리가 중, 고등학교 또는 다른 수학에서 배운 일반적인 행렬 연산이다.
앞의 행렬의 행과 뒤의 행렬의 열을 곱하는 방식이다.
$$ \begin{bmatrix} a_{11} & a_{12} & a_{13} & a_{14} \\ a_{21} & a_{22} & a_{23} & a_{24} \\ a_{31} & a_{32} & a_{33} & a_{34} \end{bmatrix} \begin{bmatrix} b_{11} & b_{12} & b_{13} \\ b_{21} & b_{22} & b_{23} \\ b_{31} & b_{32} & b_{33} \\ b_{41} & b_{42} & b_{43} \end{bmatrix} = \begin{bmatrix} c_{11} & c_{12} & c_{13} \\ c_{21} & c_{22} & c_{23} \\ c_{31} & c_{32} & c_{33} \end{bmatrix} $$
먼저, $ c_{11} $ 이 나온 과정을 보면
A의 Row1 $\begin{bmatrix} a_{11} & a_{12} & a_{13} & a_{14} \end{bmatrix}$ 와
B의 Col1 $\begin{bmatrix} b_{11} \\ b_{21} \\ b_{31} \\ b_{41} \end{bmatrix}$ 이 각각 1 : 1 로 곱해져서 다 더한 값이 $ c_{11} $이 된다.
여기서, 잘 보면 A의 Row 벡터와 B의 Col 벡터를 1:1 로 곱해서 더하는 과정이 사실 벡터의 내적이다.
A의 Row1을 $ \vec a_{1} $ 이라 하고 B의 Col1을 $ \vec b_{1} $ 이라 해보자.
그러면 $ \vec a_{1} \cdot \vec b_{1} = c_{11} $ 이 된다.
백터의 내적하면 나오는 값은 스칼라 이기때문에 $c_{11}$은 스칼라 값이된다.
그리고 여기서 보면 A의 Row1에서 1이 c의 index의 앞부분 B의 Col1에서 1이 c의 index의 뒷부분이 된다.
만일, Row3과 Col1 벡터를 내적하면 $c_{31}$의 값을 찾을 수 있을 것이다.
여기서, row*column 행렬 곱셈을 할 때는 반드시 행렬의 사이의 차원이 같아야한다.
무슨 의미냐면 A의 행렬 형태가 3x4 이고 B의 행렬이 4x3 형태인데
이걸 이어서 보면 (3x4) * (4x3) 보면 가운데 4로 같은걸 확인할 수가 있다.
그리고 양 끝의 3이 결과로 나오는 행렬의 형태가 된다. 따라서, 3x3 형태가 나온다.
참고로 2x2, 3x3, 4x4, ... NxN 형태의 정사각형 형태의 행렬을 정방행렬(Square Matrix)라 한다.
여기까지는 중고등학교 때 배운 관점으로 행렬곱셈을 본 것이고 이제 새로운 관점으로 행렬 곱셈을 봐보자.
이번엔 A와 B를 column의 관점에서 봐보자. column-wise방법을 배워보자.
앞에서는 행렬 A의 Row하나랑 B의 Col 하나가 곱해져서 하나의 C원소를 만드는 관점으로 보았다.
다른 관점으로 보자 A의 행렬 전체가 B의 Col하나와 곱해진다고 보자 그러면 A의 Col1, Col2, ... Coln(즉, A의 행렬 전체)와 B의 Col1과 곱해져서 C의 Col1 하나를 만든다.
다시 말하면 A의 벡터 n개와 B의 벡터 1개가 내적해서 C의 벡터 1개를 만든다.
(참고로 A의 Col n개와 B의 Col 1개가 곱해지는 연산은 lecture2에서 배운 Column들의 선형 결합을 생각하자)
즉, 원소 하나가 아닌 벡터 하나를 만드는 것이다. 식으로 나타내보자.
$$ AB(col \ n) = C(col \ n) $$
이것이 무슨 의미일까? 바로 C의 column들은 A의 column들의 조합이라는 것이다.
왜냐면 A의 열의길이(m)과 C의 열의길이(m)이 같은걸 봐라, 즉 A와 C가 서로 같은 조합이라는 걸 볼 수 있다.
column 관점에서 봤으니 당연히 이번엔 A와 B를 row의 관점에서 봐보자. row-wise방법을 배워보자.
row-wise는 column wise와 모든게 반대라고 생각하면된다 A의 row하나와 B의 행렬 전체와 곱해진다고 보자 그러면 A의 Row1 벡터 하나와 B의 Row1~Rown 벡터들이 내적해서 C의 Row1 벡터 한개를 만들어 낸다.
(여기선 lecture2에서 배운 Row들의 선형 결합을 생각하자)
$$ A(row \ n) B = C(row \ n ) $$
따라서, C의 row들은 B의 row들의 조합이다.
마찬가지로, B의 row의 길이(p)와 C의 row의 길이(p)가 같은 것을 확인할 수 있다.
$$\begin{bmatrix} 2 \\ 3 \\ 4 \end{bmatrix} \begin{bmatrix} 1 & 6 \end{bmatrix} = \begin{bmatrix} 2 & 12 \\ 3 & 18 \\ 4 & 24 \end{bmatrix}$$
이제 위와같은 행렬이 있다 쳐보자
row-wise로 계산해보면
$$ 2 \begin{bmatrix} 1 & 6 \end{bmatrix} = \begin{bmatrix} 2 & 12 \end{bmatrix} $$
$$ 3 \begin{bmatrix} 1 & 6 \end{bmatrix} = \begin{bmatrix} 3 & 18 \end{bmatrix} $$
$$ 4 \begin{bmatrix} 1 & 6 \end{bmatrix} = \begin{bmatrix} 4 & 24 \end{bmatrix} $$
column-wise로 계산해보면
$$ 1\begin{bmatrix} 2 \\ 3 \\ 4 \end{bmatrix} = \begin{bmatrix} 2 \\ 3 \\ 4 \end{bmatrix}, \quad 6\begin{bmatrix} 2 \\ 3 \\ 4 \end{bmatrix} = \begin{bmatrix} 12 \\ 18 \\ 24 \end{bmatrix} $$
맨위에서 배운 방법은 row*column 인데, 이번에는 순서를 바꿔 column*row를 배워보자.
행렬 곱에서 AB를 곱하는거랑 BA를 곱하는거랑 완전히 결과가 다르다. row*column은 벡터의 내적으로 결과가 스칼라가 나왔다. 과연 반대로 곱하면 똑같이 나올까? 전혀 다를 것이다. column*row로 순서를 바꾸면 결과는 위와 같아진다.
$$ \begin{bmatrix} 2 & 7 \\ 3 & 8 \\ 4 & 9 \end{bmatrix} \begin{bmatrix} 1 & 6 \\ 0 & 0 \end{bmatrix}=\begin{bmatrix}2 \\ 3 \\ 4 \end{bmatrix} \begin{bmatrix} 1 & 6 \end{bmatrix} + \begin{bmatrix}7 \\ 8 \\ 9 \end{bmatrix} \begin{bmatrix} 0 & 0 \end{bmatrix} = \begin{bmatrix} 2 & 12 \\ 3 & 18 \\ 4 & 24 \end{bmatrix}$$
가 된다.
여기서 중요한 점이 있다.
$$\begin{bmatrix} 2 \\ 3 \\ 4 \end{bmatrix} \begin{bmatrix} 1 & 6 \end{bmatrix} = \begin{bmatrix} 2 & 12 \\ 3 & 18 \\ 4 & 24 \end{bmatrix}$$
$$ A \quad \quad B \quad \quad \quad \quad C $$
이 부분을 다시 자세히 봐보자.
C의 모든 row는 B의 row를 따라 같은 line 선상에 존재한다.
C의 모든 column은 A의 column을 따라 같은 line 선상에 존재한다.
즉, C의 행 벡터는 B의 행 벡터와 C의 열 벡터는 A의 열 벡터와 같은 선에 있다는 것이다.
결국 위 식의 결과인 C 행렬은 rank가 1인 행렬이다. (나중에 배운다)
(여기서 중요한건 lecture1에서 배운 rank랑 다른 개념이다)
B의 행 벡터와 C의 모든 행 벡터가 같은 선상에 있는 것을 확인할 수 있다.
A의 열 벡터와 C의 모든 열 벡터가 같은 선상에 있는 것을 확인할 수 있다.
따라서, column*row의 경우 위와 같은 특별한 행렬이 만들어지게 된다.
블록 단위 행렬 곱셈(Block Multiplication)
예를 들어 20x20의 행렬이 있다고 가정하자, 이를 4등분하면 10x10의 행렬이 4개가 나올 것이다.
이때, 각 행렬을 한개의 원소로 본다면 다음과 같을 것이다.
$$\begin{bmatrix} A_1 & A_2 \\ A_3 & A_4 \end{bmatrix} \begin{bmatrix} B_1 & B_2 \\ B_3 & B_4 \end{bmatrix} = \begin{bmatrix} C_1 & C_2 \\ C_3 & C_4 \end{bmatrix} $$
$$ A \quad\quad\quad \quad B \quad\quad\quad\quad C $$
여기서, A=B=C=20x20 행렬이고 각 원소들은 10x10 행렬이다.
결국 이렇게 Block으로 4등분해도 위 형태를 보면 다시 행렬 곱셈을 하면 된다.
예를 들면 row*cloumn 방법을 쓴다면 벡터의 내적이므로 간단하게 구할 수 있다.
$$ A_1 B_1 + A_2 B_3 = C_1 $$
$$ A_1 B_2 + A_2 B_4 = C_2 $$
$$ A_3 B_1 + A_4 B_3 = C_3 $$
$$ A_3 B_2 + A_4 B_4 = C_4 $$
역행렬(Inverse Matrix)
역행렬이 존재하는 case(invertible, nonsingular)
우선 어떤 정방행렬 A에 대해 생각해보자. 이 행렬이 역행렬이 존재한다고 가정하자.
이때의 관계를 다음과 같이 쓸 수 있다.
$$ A^{-1}A = I = A A^{-1} $$
$ A^{-1} $ = A의 역행렬
$I $ = 단위 행렬(Identity Matrix) $ \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} $와 같이 대각선만 1인 행렬
여기서, 역행렬을 앞에서 곱하는 것과 뒤에서 곱하는 것의 결과는 일반적인 행렬(직사각형 행렬)인 경우에는 위 식이 성립한다.
하지만 정방행렬의 경우는 앞에서 곱하나 뒤에서 곱하나 같다.
역행렬이 존재하지 않는 case(no inverse, singular)
이번에는 어떤 행렬 A가 있는데 이 행렬이 역행렬이 존재하지않는다고 해보자.
이런 행렬을 특이행렬(singular matrix)라고 한다.
$$ \begin{bmatrix} 1 & 3 \\ 2 & 6 \end{bmatrix} $$
$$ A $$
위 행렬은 왜 존재하지 않을까?
첫번째 방법은 나중에 배우는 행렬 A의 행렬식(determinant)는 0이되기 때문에 역행렬이 존재하지 않는다.
두번째 방법은 A 행렬을 column picture로 봐보자. 보면 각 column들이 같은 line상에 있음을 확인할 수 있다.
A의 rank는 1이며 선형 독립(linearly independant)인 차원의 개수가 A의 차원보다 작기때문에 특이행렬이다.
따라서, 행렬 A로는 2차원이 아닌 오직 line으로만 표현이 가능하다.
column 뿐만아니라 row도 같은 선상에 있음을 확인할 수 있다.
(Row1에 2배를 하면 Row2, Col1에 3배를 하면 Col2)
세번째 확인 방법은 각 column을 정규화(normalization)해서 같은지 비교해 보는 것이다.
A의 column벡터들의 2-norm 정규화식을 다음과 같이 계산하면 된다.
$$ \begin{bmatrix} \frac{1}{\sqrt { 1^2 + 2^2 }} \\ \frac{2}{\sqrt { 1^2 + 2^2 }} \end{bmatrix} = \begin{bmatrix} \frac{3}{\sqrt { 3^2 + 6^2 }} \\ \frac{6}{\sqrt { 3^2 + 6^2 }} \end{bmatrix}$$
$$ Col_1 \quad \quad \quad Col_2 $$
네번째 확인 방법은
만일, $ Ax=0 $을 만족하는 벡터 x를 찾을 수 있다면, 그 행렬은 역행렬이 존재하지 않는다.
(단, 이때 A는 정방행렬, x는 0이 아닌 벡터)
위의 행렬 A에 $ \begin{bmatrix} 3 \\ -1 \end{bmatrix} $를 곱하면 우변은 영벡터가 된다.
이를 다시 생각해보자, 시스템 A가 어떤 벡터 x를 0으로 보냈다. 이럴 경우, 이렇게 0으로 보낸 x를 다시 원래의 위치로 돌아오게끔 하는 시스템이 존재하는가?
선형대수에서의 연산은 선형 결합, 즉 변수에 어떤 계수들을 곱하고 더해서 계산이 되는 것인데, 애초에 변수 자체가 0으로 되어버렸으면 어떤 계수들을 곱해도 이를 복원시킬 방법이 없는 것이다.
위 시스템 A의 경우 2차원 상의 벡터인 x를 곱할 경우 이를 1차원 상의 공간으로 보내버린다. 게다가 0으로 만들어 버리는 경우도 있는 것이다. 이런 상황에서 원래 지점으로 되도리는 역행렬이 존재한다는 것이 말이 안된다.
선형 시스템을 다루는 선형 대수에서는 말이 안된다는 거다.
(정방행렬이 아닌 임의의 직사각행렬(Rectangular Matrix)는 pseudo inverse라는 방법을 이용해 계산해야 한다.)
Gauss-Jordan idea
역행렬이 존재하는 경우를 살펴보자.
$$ \begin{bmatrix} 1 & 3 \\ 2 & 7 \end{bmatrix} $$
$$ A $$
위 행렬 A는 행렬식(determinant)는 0이 아니고, 각 column들은 서로 다른 방향을 가리키고, Ax=0을 만족하는 x벡터도 찾을 수 없다.
이제 A가 역행렬이 존재하니 찾아보자.
행렬 A에 역행렬을 곱하면 단위 행렬 I가 되야한다. 다음을 풀어보자.
$$\begin{bmatrix} 1 & 3 \\ 2 & 7 \end{bmatrix} \begin{bmatrix} a & c \\ b & d \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} $$
$$ A \quad \quad \quad A^{-1} \quad \quad \quad I $$
위 식을 column-wise 시스템으로 분리해서 생각해보자.
$$ \begin{bmatrix} 1 & 3 \\ 2 & 7 \end{bmatrix} \begin{bmatrix} a \\ b \end{bmatrix} = \begin{bmatrix} 1 \\ 0 \end{bmatrix} $$
$$ \begin{bmatrix} 1 & 3 \\ 2 & 7 \end{bmatrix} \begin{bmatrix} c \\ d \end{bmatrix} = \begin{bmatrix} 0 \\ 1 \end{bmatrix} $$
위와 같이 하나의 식을 두 개로 분리해서 생각할 수 있다.
위 두식을 풀 수 있다면 행렬 A는 역행렬이 존재하는 것이다. 이것이 Jordan's idea의 시작이다.
lecture2에서 배운 Gauss 소거법과 Augmented Matrix를 통해 풀어보자.
$$ \begin{bmatrix} 1 & 3 & | & 1 & 0 \\ 2 & 7 & | & 0 & 1 \end{bmatrix} $$
$$ A \quad \quad \quad I $$
소거행렬을 통해 A를 상삼각행렬로 만들어보자 자세한 계산과정은 lecture2를 공부하면 된다.
일단, 첫번째 피벗으로 $ a_{11} $ 을 피벗으로 설정하면 $a_{21}$을 소거해야 하므로 소거 행렬 $ E_{21} $을 찾으면 된다.
(소거행렬 만들 땐 row-wise로 생각하면 쉽다)
$$ \begin{bmatrix} 1 & 0 \\ -2 & 1 \end{bmatrix} \begin{bmatrix} 1 & 3 & | & 1 & 0 \\ 2 & 7 & | & 0 & 1 \end{bmatrix} = \begin{bmatrix} 1 & 3 & | & 1 & 0 \\ 0 & 1 & | & -2 & 1 \end{bmatrix} $$
$$ E_{21} \quad \quad \quad A \quad \quad \quad I \quad \quad \quad \quad \quad \quad \quad \quad \quad $$
여기까지 상삼각행렬이 완성되었다. Gauss는 여기서 끝냈는데, Jordan은 여기서 소거를 한번더 진행했다.
이번엔 반대로 아래에서 위쪽으로 소거를 진행해야한다.
즉, 두번째 피벗을 $ a_{22} $로 잡는데 아래를 소거하는게 아닌 피벗을 기준으로 위를 소거하면 된다.
$a_{12}$를 소거해야하므로 소거 행렬 $E_{12}$를 찾으면 된다.
$$ \begin{bmatrix} 1 & -3 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 3 & | & 1 & 0 \\ 0 & 1 & | & -2 & 1 \end{bmatrix} = \begin{bmatrix} 1 & 0 & | & 7 & -3 \\ 0 & 1 & | & -2 & 1 \end{bmatrix} $$
$$ E_{12} \quad \quad \quad A \quad \quad \quad I \quad \quad \quad \quad \quad I \quad \quad \quad A^{-1}$$
따라서, 보면 $A$가 $I$로 바뀌었다. 그렇다면, 원래 있던 $I$ 는 $A^{-1}$가 될 것이다.
또한, 소거행렬에 이용되었던 $E_{12}$와 $E_{21}$의 곱은 $A^{-1}$가 될 것이다.
$$ \begin{bmatrix} 1 & -3 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 \\ -2 & 1 \end{bmatrix} = \begin{bmatrix} 7 & -3 \\ -2 & 1 \end{bmatrix} $$
$$ E_{12} \quad \quad \quad E_{21} \quad \quad \quad \quad E = A^{-1}$$
따라서, 소거행렬을 통해 역행렬을 구할 수가 있다.
결론
이번에는 행렬 곱셈과 역행렬에 대해 배워보았다.
행렬 곱셈은 4가지 방법을 배웠는데, row*column, column-wise, row-wise, column*row의 네 가지 연산 방법을 살펴보았고, 역행렬에서는 역행렬이 존재하는 경우와 존재하지 않는 경우, Gauss-Jordan의 소거법을 통해 실제 역행렬을 계산하는 방법을 배웠다.
'선형대수학' 카테고리의 다른 글
[Linear Algebra] Lecture 6, 열 공간(Column Space)과 영 공간(Null Space) (0) | 2023.03.12 |
---|---|
[Linear Algebra] Lecture 5, 대칭 행렬, 벡터 공간, 부분 공간 (0) | 2023.03.12 |
[Linear Algebra] Lecture 4, LU Decomposition(LU 분해) (1) | 2023.03.11 |
[Linear Algebra] Lecture 2, 소거법, 후방 대입법 그리고 소거 행렬 (1) | 2023.03.10 |
[Linear Algebra] Lecture 1, The Geometry of Linear Equations (0) | 2023.03.10 |