본문 바로가기
지난 연재물 - 수학 & 통계학/[선형대수학] Welcome to Linear world!

선형대수학_1.행렬의 연산(2)

by STEMentor Editor 2020. 1. 1.

 

안녕하세요~ 김경찬입니다! 이전 글에서 바로 이어서 시작하도록 하겠습니다.

행렬의 곱셈(2) - 행렬 X 행렬

행렬과 벡터의 곱셈에서 행렬과 행렬의 곱셈으로 넘어가는 것은 어렵지 않습니다. 열이 하나인 벡터 대신에 열이 여러 개인 행렬로 사고를 확장하기만 하면 됩니다! m×nm \times n 행렬 AAn×ln \times l 행렬 BB를 곱한 결과를 CC라 하고, 행렬의 곱셈의 정의 식을 다시 한 번 봅시다.
C=AB⟹Ci,j=∑k=1nAi,kBk,j,i=1,2,⋯ ,m,j=1,2,⋯ ,l \begin{aligned} \\ & C = AB \Longrightarrow C_{i,j} = \sum_{k=1}^n A_{i,k}B_{k,j}, \\ & i=1,2,\cdots ,m, \quad j=1, 2, \cdots, l \end{aligned}
이 정의를 갖고 앞에서 행렬 X 벡터를 다양한 방식으로 나타내었던 것처럼 변형 할 수 있는지 한 번 살펴보도록 하겠습니다.

첫 번째 방법

마찬가지로 직접 행렬의 각 원소를 구하는 방법입니다. 위의 정의를 자세히 살펴 보면, C⋅,jC_{\cdot, j}(CCjj번째 열벡터 입니다!)을 구하기 위해 행렬 AAB⋅,jB_{\cdot, j}를 곱해주고 있다는 것을 알 수 있습니다. CC의 각 열 벡터를 구하는 것은 행렬과 벡터의 곱셈으로 할 수 있고, CC는 이런 열 벡터들이 ll개 만큼 모인 것이죠. 그렇다면 여기에 앞서 행렬 X 벡터를 나타내는 첫번째 방법(AA의 행과 벡터의 내적)을 적용해 봅시다.
Ci,j=Ai,⋅⋅B⋅,j, \begin{aligned} &C_{i,j} = A_{i,\cdot}\cdot B_{\cdot,j}, \end{aligned}
즉, Ci,jC_{i,j}AAii번째 열과 B의 jj번째 열의 내적으로 구할 수 있다는 것입니다.

AB=[−A1,⋅−−A2,⋅−⋮−Am,⋅−][∣∣⋯∣B⋅,1B⋅,2⋯B⋅,l∣∣⋯∣]=[A1,⋅⋅B⋅,1⋯A1,⋅⋅B⋅,l⋮⋮⋮Am,⋅⋅B⋅,1⋯Am,⋅⋅B⋅,l]=C AB= \begin{bmatrix} -A_{1,\cdot}-\\-A_{2,\cdot}-\\ \vdots\\ -A_{m,\cdot}- \end{bmatrix} \begin{bmatrix} | & | & \cdots & | \\ B_{\cdot,1} & B_{\cdot,2} & \cdots &B_{\cdot,l}\\| & | & \cdots & | \end{bmatrix}= \begin{bmatrix} A_{1,\cdot}\cdot B_{\cdot, 1} & \cdots & A_{1,\cdot}\cdot B_{\cdot, l}\\ \vdots & \vdots & \vdots\\ A_{m,\cdot}\cdot B_{\cdot, 1} & \cdots & A_{m,\cdot}\cdot B_{\cdot, l} \end{bmatrix} = C

두 번째 방법

두 번째 방법부터는 사실 첫 번째 방법을 조금 더 축약한 것에 지나지 않을 수도 있는, 직접적인 행렬 곱셈 계산에는 도움이 되지 않는 방법일 수 있습니다. 하지만 제가 여기서 행렬의 곱셈을 나타내는 다양한 방법들을 보여주는 이유는, 꼭 행렬의 곱셈의 계산에만 도움을 주기 위한 것이 아닌, 앞으로 선형대수학을 공부하는 데에 있어서 필요한 사고 방식들을 제공해 주기 위함입니다. 사실 손으로 계산을 하는 데에 걸리는 시간은 어느 방법을 써도 비슷하거든요.
아무튼, 이번 방식은 CC의 각 원소를 하나하나 내적으로 나타내는 것을 축약하므로써 CC의 각 열 벡터의 특징에 대해 포커스를 맞추는 방식이라 할 수 있겠습니다.
위의 첫 번째 방법에서 마지막에 나온 식에서 CC의 첫 번째 열에 대한 표현을 가져와 봅시다.
C⋅,1=[A1,⋅⋅B⋅,1A2,⋅⋅B⋅,1⋮Am,⋅⋅B⋅,1] C_{\cdot, 1} = \begin{bmatrix} A_{1,\cdot}\cdot B_{\cdot, 1} \\ A_{2,\cdot}\cdot B_{\cdot, 1} \\ \vdots \\ A_{m,\cdot}\cdot B_{\cdot, 1} \end{bmatrix}

이렇게 보니, 앞서 행렬 X 벡터에서의 첫 번째 방법에서 나왔던 식과 유사하다는 것을 알 수 있습니다. CC의 첫 번째 열은 AABB의 첫 번째 열을 곱한 것과 같군요. 일반화 하자면, CCii 번째 열은 AA행렬과 BBii 번째 열을 곱한 것과 같습니다.
AB=A[∣∣⋯∣B⋅,1B⋅,2⋯B⋅,l∣∣⋯∣]=[∣∣⋯∣AB⋅,1AB⋅,2⋯AB⋅,l∣∣⋯∣]=C AB= A \begin{bmatrix} | & | & \cdots & | \\ B_{\cdot,1} & B_{\cdot,2} & \cdots &B_{\cdot,l}\\| & | & \cdots & | \end{bmatrix}= \begin{bmatrix} | & | & \cdots & | \\ AB_{\cdot,1} & AB_{\cdot,2} & \cdots &AB_{\cdot,l}\\| & | & \cdots & | \end{bmatrix} = C
이렇게 나타낼 수 있다는 것이죠. 여기에 행렬 X 벡터의 곱셈 두 번째 방법에서 얻어낸 사실을 적용하면, C=ABC = AB의 각 열 벡터들도 AA의 열 벡터들의 선형 결합으로 나타낼 수 있다는 것도 알 수 있겠네요!

그럼 내친 김에 CC의 각 행 벡터들도 살펴볼까요? 중간 과정은 생략하고, 결과만 보면 다음과 같습니다.
AB=[−A1,⋅−−A2,⋅−⋮−Am,⋅−]B=[−A1,⋅B−−A2,⋅B−⋮−Am,⋅B−]=C AB= \begin{bmatrix} -A_{1,\cdot}-\\-A_{2,\cdot}-\\ \vdots\\ -A_{m,\cdot}- \end{bmatrix} B= \begin{bmatrix} -A_{1,\cdot}B-\\-A_{2,\cdot}B-\\ \vdots\\ -A_{m,\cdot}B- \end{bmatrix} = C
즉, CCjj 번째 행은 AA의 j번째 행과 BB를 곱한 것과 같습니다. 또한, CC의 각 행 벡터들은 BB의 행 벡터들의 선형 결합으로 나타낼 수 있죠.

세 번째 방법

세 번째 방법은 조금은 이상하다고 생각할 수도 있는 방법입니다. 곱셈을 원소마다, 혹은 열/행 벡터마다 나누어 보는 것이 아니라, 아예 m×lm \times l 행렬들의 합으로 표현하는 방법으로, 행렬 X 벡터에서의 다룬 두 번째 방법과 비슷한 방식인데요.
C=AB⟹Ci,j=∑k=1nAi,kBk,j,i=1,2,⋯ ,m,j=1,2,⋯ ,l \begin{aligned} \\ & C = AB \Longrightarrow C_{i,j} = \sum_{k=1}^n A_{i,k}B_{k,j}, \\ & i=1,2,\cdots ,m, \quad j=1, 2, \cdots, l \end{aligned}

행렬 X 벡터에서 했던 것처럼 식을 한 번 다음과 같이 바꿔봅니다. 곱셈의 결과인 CC의 원소 번호를 나타내는 i,ji, j를 슬쩍 지워버리는 겁니다.
C=∑k=1nA⋅,kBk,⋅,⋯? C= \sum_{k=1}^n A_{\cdot,k}B_{k,\cdot}, \quad \cdots \quad ?
그러면 좌변은 CC가 남고, 우변은 AA의 열 벡터와 BB의 행 벡터가 남습니다. AA의 열 벡터는 m×1m \times 1차원이고, BB의 행 벡터는 1×l1 \times l 차원이니, ∑\sum안의 곱셈의 차원은 CC와 같습니다. 다만 이 식이 정말로 성립하는가 하는지는 조금 더 살펴봐야 하지만 생략하고, 결론만 말하자면 성립합니다. (증명은 단순히 위의 식을 전개해서 행렬의 곱셈의 정의와 비교해 보시면 됩니다.)
AB=[∣∣⋯∣A⋅,1A⋅,2⋯A⋅,n∣∣⋯∣][−B1,⋅−−B2,⋅−⋮−Bn,⋅−]=[∣A⋅,1∣][−B1,⋅−]+[∣A⋅,2∣][−B2,⋅−]+⋯+[∣A⋅,n∣][−Bn,⋅−]=C \begin{aligned} AB &= \begin{bmatrix} | & | & \cdots & | \\ A_{\cdot,1} & A_{\cdot,2} & \cdots &A_{\cdot,n}\\| & | & \cdots & | \end{bmatrix} \begin{bmatrix} -B_{1,\cdot}-\\-B_{2,\cdot}-\\ \vdots\\ -B_{n,\cdot}- \end{bmatrix} \\&= \begin{bmatrix} | \\ A_{\cdot,1} \\ | \end{bmatrix} \begin{bmatrix} -B_{1,\cdot}-\end{bmatrix} + \begin{bmatrix} | \\ A_{\cdot,2} \\ | \end{bmatrix} \begin{bmatrix} -B_{2,\cdot}-\end{bmatrix} + \cdots + \begin{bmatrix} | \\ A_{\cdot,n} \\ | \end{bmatrix} \begin{bmatrix} -B_{n,\cdot}-\end{bmatrix} \\ &= C \end{aligned}
위와 같이 열 벡터 X 행 벡터의 결과들은 각각이 행렬이 되며, 이를 outer product 라고 합니다.(벡터의 외적인 cross product 와는 다릅니다!) Outer product는 벡터 v,wv, w에 대해, v⨂w:=vwTv\bigotimes w := vw^\mathrm{T} 로 나타내며, 각 열은 vv에 스칼라를 곱해준 형태이고, 각 행들은 ww에 스칼라를 곱해준 형태가 됩니다.
(예시)v=[12]T,w=[23]Tv⨂w=vwT=[2346] \begin{aligned} (예시) \quad & v = \begin{bmatrix} 1 & 2\end{bmatrix}^\mathrm{T}, w = \begin{bmatrix} 2 & 3\end{bmatrix}^\mathrm{T} \\ & v\bigotimes w = vw^\mathrm{T} = \begin{bmatrix} 2 & 3 \\ 4 & 6\end{bmatrix} \end{aligned}
위의 예시를 보면 열은 각각 (2, 4), (3, 6)으로 (1, 2)의 스칼라 배수이며, 행은 (2,3), (4,6)으로 역시 (2,3) 의 스칼라 배수임을 알 수 있죠.
다시 행렬의 곱셈으로 돌아가 보면 이제 CC의 행과 열의 특성들을 한 눈에 볼 수 있습니다. CC를 이루는 각 구성요소들, 즉 A⋅,k⨂Bk,⋅A_{\cdot,k}\bigotimes B_{k,\cdot}는 모두 각자의 행들은 Bk,⋅B_{k,\cdot}의 스칼라 배이고, 열들은 A⋅,kA_{\cdot,k}의 스칼라 배입니다. 이들을 모두 더한 결과는? CC의 각 행들은 BB의 행들의 스칼라 배들의 합, 즉 그들의 선형 결합이고, 각 열들은 AA의 열들의 선형 결합이라는 것을 알 수 있습니다.

이제까지 행렬의 곱셈에 대해 알아보았습니다. 경험상 행렬의 곱셈을 표현하는 방법을 많이 알면 알수록 선형대수학을 공부할 때 등장하는 정리나 개념을 이해하는 데에 도움이 많이 되더라고요.
행렬의 Trace로 넘어가기 전에, 여러분이 앞으로 자주 마주하게 될 행렬의 곱셈의 특수한 케이스를 한 번 짚고 넘어가도록 하겠습니다. 행렬과 대각 행렬(Diagonal Matrix) 의 곱셈입니다. (대각 행렬이란, 행렬의 주대각선 외에 모든 원소가 0인 행렬을 말합니다.)

A∈Rm×n,D∈Rn×nA=[∣∣⋯∣A⋅,1A⋅,2⋯A⋅,n∣∣⋯∣],D=[d10⋯00d2⋯0⋮⋮⋱⋮00⋯dn]C=AD=?? A \in \mathbb{R}^{m \times n}, \quad D \in \mathbb{R}^{n \times n} \\ A = \begin{bmatrix} | & | & \cdots & | \\ A_{\cdot,1} & A_{\cdot,2} & \cdots &A_{\cdot,n}\\| & | & \cdots & | \end{bmatrix}, D = \begin{bmatrix} d_1 & 0 & \cdots & 0 \\0 & d_2 & \cdots & 0 \\\vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & d_n \end{bmatrix} \\ C = AD = ??
위의 행렬 곱셈 방법들 중 ADAD를 손쉽게 구할 수 있는 방법들이 있는데요. 먼저 행렬 곱셈의 2번째 방법을 사용해, CC의 열 벡터들을 AADD의 열 벡터들의 곱으로 표현하는 방법이 있습니다.
C⋅,i=AD⋅,i=[∣∣⋯∣A⋅,1A⋅,2⋯A⋅,n∣∣⋯∣][0⋮di⋮0]=[∣diA⋅,i∣]⟹C=[∣∣⋯∣d1A⋅,1d2A⋅,2⋯dnA⋅,n∣∣⋯∣] \begin{aligned} C_{\cdot, i} &= AD_{\cdot, i} \\ &=\begin{bmatrix} | & | & \cdots & | \\ A_{\cdot,1} & A_{\cdot,2} & \cdots &A_{\cdot,n}\\| & | & \cdots & | \end{bmatrix} \begin{bmatrix} 0 \\ \vdots \\d_i \\ \vdots \\ 0\end{bmatrix} = \begin{bmatrix} | \\ d_iA_{\cdot,i} \\ |\end{bmatrix} \\ \Longrightarrow C &= \begin{bmatrix} | & | & \cdots & | \\ d_1A_{\cdot,1} & d_2A_{\cdot,2} & \cdots &d_nA_{\cdot,n}\\| & | & \cdots & | \end{bmatrix} \end{aligned}
그 결과는 위와 같이, AA의 각 열들이 대각선에 있는 값들과 곱해진 것으로 나오게 됩니다. 행렬의 원소를 하나하나 계산하는 방법으로는 쉽게 알아내기 힘든 사실이죠. 위에서 설명한 행렬의 곱셈을 나타내는 세 번째 방법을 활용해도 쉽게 같은 결과를 얻을 수 있답니다. (너무 글이 길어지는 관계로 여기에 적지는 않겠습니다.) 이렇게 행렬의 곱셈을 다루는 다양한 방법을 아는 것은 선형대수학을 공부할 때 이점으로 작용한답니다.
이제 행렬의 Trace(대각합)에 대한 설명으로 넘어가 볼게요.

Trace(대각합)

Trace(대각합)는 정사각행렬의 주대각선에 있는 값들을 모두 합친 것을 말합니다. A∈Rn×nA \in \mathbb{R}^{n \times n}의 Trace는 tr(A)tr(A)라고 쓰고 tr(A):=∑i=1nAi,itr(A) := \sum_{i=1}^{n} A_{i,i} 입니다. Trace 의 주요 성질 몇 가지를 짚고 넘어가 봅시다.
A,B∈Rm×m(1)  tr(A+B)=tr(A)+tr(B)(2)  tr(cA)=c⋅tr(A)(3)  tr(AT)=tr(A)C∈Rm×n,D∈Rn×m(4)  tr(CD)=tr(DC) \begin{aligned} &A, B \in \mathbb{R}^{m \times m} \\&(1)\; tr(A + B) = tr(A) + tr(B) \\&(2)\; tr(cA) = c\cdot tr(A) \\&(3)\; tr(A^\mathrm{T}) = tr(A) \\ \\&C \in \mathbb{R}^{m \times n}, D \in \mathbb{R}^{n \times m} \\&(4)\; tr(CD) = tr(DC) \end{aligned}
(1), (2) 를 보면 알 수 있듯이 Trace 역시 선형 변환입니다. 행렬의 Transpose는 주대각선 성분을 변화시키지 못하기 때문에 (3)은 당연한 결과이고요. (4)는 행렬의 곱셈의 순서를 바꿔도 trace 는 변하지 않는다는 성질입니다. 다만 여기서 C,DC, D 행렬의 차원에 주목하셔야 합니다. tr(CD)tr(CD) 가 정의되기 위해서는 위와 같이 서로의 열의 개수가 상대 행렬의 행의 개수와 같아야 합니다.
<(4)의  증명>tr(CD)=∑i=1m[CD]i,i=∑i=1m(∑j=1nCi,jDj,i)=∑j=1n(∑i=1mDj,iCi,j)=∑j=1n[DC]j,j=tr(DC) \begin{aligned} < (4)의\; &증명> \\tr(CD) &= \sum_{i=1}^m [CD]_{i,i}= \sum_{i=1}^m (\sum_{j=1}^n C_{i,j}D_{j,i}) \\&=\sum_{j=1}^n (\sum_{i=1}^m D_{j,i}C_{i,j}) = \sum_{j=1}^n[DC]_{j,j} = tr(DC) \end{aligned}
(보너스)위의 성질 (4)를 각각 2개의 mm차원 벡터 v,wv,w에 대해 적용해 봅시다. 다음의 결과를 얻을 수 있습니다.
tr(v⨂w)=tr(vwT)=tr(wTv)=w⋅v tr(v \bigotimes w) = tr(vw^\mathrm{T}) = tr(w^\mathrm{T}v) = w \cdot v
즉 두 벡터의 outer product 의 trace 는 두 벡터의 내적과 같음을 알 수 있습니다.

Inverse(역행렬)

행렬의 연산, 그 마지막 파트는 역행렬(Inverse)입니다. 역행렬은 정사각행렬에 대해서만 정의되며, 행렬 A∈Rm×mA \in \mathbb{R}^{m \times m} 에 대해 A−1A^{-1}이라 쓰고, AA−1=A−1A=IAA^{-1} = A^{-1}A = I를 만족하는 행렬을 의미합니다. 역행렬을 구하는 것은 다양한 분야에서 중요하게 쓰이는 선형대수학의 application 중 하나인데요. 안타깝게도 모든 행렬이 역행렬을 갖지는 않습니다. 역행렬의 존재 유무를 판별하는 방법이나 계산 방법은 나중에 차차 다룰 예정이고요. 여기서는 역행렬의 간단한 성질 몇 가지만 알아보도록 합시다.
A,B∈Rm×m,Assume  ∃A−1,B−1(0)∃!A−1,B−1(1)  I−1=I(2)  (AB)−1=B−1A−1(3)  (AT)−1=(A−1)T(4)  (A−1)−1=A \begin{aligned} &A, B \in \mathbb{R}^{m \times m}, Assume\; \exists A^{-1}, B^{-1} \\&(0) \exists! A^{-1}, B^{-1} \\&(1)\;I^{-1} =I \\&(2)\;(AB)^{-1} = B^{-1}A^{-1} \\&(3)\;(A^\mathrm{T})^{-1} =(A^{-1})^\mathrm{T} \\&(4)\; (A^{-1})^{-1} = A \end{aligned}
기호에 익숙하지 못한 분들을 위해, (0)에서 등장하는 ∃!\exists!라는 기호는 "유일하게 존재한다"라는 뜻입니다. 즉 (0)이 말하고자 하는 바는 어떤 행렬의 역행렬이 존재한다면, 그 역행렬은 유일하다는 것이죠.
<(0)의  증명>LetAB=BA=I=AC=CA,  B≠C⟹B=BI=B(AC)=(BA)C=IC=C이는  B≠C에  모순∴B=C \begin{aligned} &<(0)의 \;증명> \\&Let \quad AB =BA=I=AC=CA,\; B \neq C \\ \Longrightarrow& B = BI = B(AC) = (BA)C=IC = C \\ &이는\; B \neq C 에 \;모순 \\ &\therefore B = C \end{aligned}
(0)을 위와 같이 증명할 수 있다면 나머지의 증명은 (0)을 바탕으로 쉽게 할 수 있습니다. 어렵지 않으니 증명 연습이 필요하시다면 해보시길 추천드립니다.
여기까지 기나긴 행렬의 연산 파트가 끝이 났습니다. 다음 글에는 선형 방정식 Ax=bAx = b에 대한 집중 탐구를 해보도록 하겠습니다. 여러분들도 보람찬 겨울 방학 되길 바랍니다!

댓글