데이터과학 탐구노트 – Mathematical Basis #1. 행렬과 벡터
‘데이터과학 탐구노트’ 시리즈는 카페지기 커피사유가 7년동안 아마추어 프로그래밍을 취미삼아 즐기다가, 부랴부랴 시작한 ‘데이터과학’ 공부 일지입니다.
막상 데이터과학을 시작하니 처음 맞닥뜨리는 것은 바로 행렬. 일반적으로 행렬은 예전 개정 이전의 고등학교 교육 과정에 있었는데, 지난 번 개정이었나, 지지난번 개정이었나 여튼 개정하면서 빠져버린 안타까운 수학 지식들이다. 게다가, 행렬적으로 접근하는 벡터의 기술이나 연산의 경우도 함께 빠져버린 덕에, 처음 이들을 보고 필자는 당황할 수 밖에 없었다. 하지만 다행히도 Coursera 강좌에서 잘 소개해주고 있기에, 여튼 어떻게든 배워서 이렇게 정리할 수 있게 되었다.
행렬
행렬의 정의
행렬(行列, Matrix)란 별 것이 아니고, 그냥 단지 수 또는 식을 직사각형의 형태로 배열해놓은 것을 일컫는 용어이다. 예시를 통하여 살펴보자면, 다음의 것들은 모두 행렬이다.
$\begin{bmatrix} a & b \\ c & d \end{bmatrix}$, $\begin{bmatrix} -1 & 10 \\ 5 & 7 \over 2 \end{bmatrix}$, $\begin{bmatrix} x^{2} + 5x + 10 & -2x \\ 10 & e^{x} \end{bmatrix}$
데이터과학에서는, 특히 그 중에서 머신러닝 분류기나 딥 러닝의 분야에서는, 행렬이 특히 어떤 함수를 표현하거나 연산하는데 있어 특효약 수준으로 탁월하기 때문에 이를 즐겨 사용한다. 어떤 장점이 있길래 이들을 그렇게나 애용하는지는 추후에 천천히 살펴보기로 하고, 우선은 행렬에 대한 기초 연산을 도대체 어떻게 하는지부터 살펴보기로 하자.
행렬의 성분, 행과 열, 그리고 크기
하지만 행렬에 대한 기초 연산을 설명하기 전에 먼저 선행되어야 할 것이 있으니, 행렬을 어떻게 기호로 쓰고, 그 내부에 있는 성분(원소)들을 어떻게 기호로 표현하는지, 그리고 이 행렬의 크기를 어떻게 측정하는지를 행렬의 행과 열에 대한 정의와 함께 살펴보는 것이 바로 그것이다.
행렬의 성분과, 행렬을 기호로 쓰는 방법
일반적으로 수학적 기호로 행렬은 보통 알파벳 대문자의 형태로 표현한다. 즉, 이를테면:
$A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}$
의 식인 셈이다.
행렬의 성분(Entry)이라 함은, 행렬 안에 늘어져있는 개개의 구성 요소들을 지시하는 용어이다. 이를테면 위에 제시한 행렬 $A$에 대하여, 그 성분에는 1, 2, 3, 4가 있는 셈이다. 실제로 기호로, 행렬 속 어느 특정 위치에서의 성분을 기호로 지시할 수 있는데, 이것에 대해서는 행렬의 행과 열에 대해서 살펴보면서 알아보도록 하자.
행렬의 행과 열, 그리고 특정 행과 열 위치의 성분 표현법
행렬에서 행(行, Row)이나 열(列, Column)을 생각할 적에는 그냥 우리가 흔히 쓰는 일반적인 표(Table)를 생각하는 게 편하다. 표에서 어떤 칸의 위치를 이야기할 때 우리는 흔히들 몇 행 몇 열 칸이라고 이야기하는데, 행렬도 별 다를 것이 없다.
이를테면 다음과 같은 행렬이 있다고 하자.
$A = \begin{bmatrix} 10 & -2 & 7 \\ 4 & 9 & -2 \end{bmatrix}$
위의 행렬 $A$에서, 1행 2열의 성분는 무엇인가? 그렇다. 바로 -2이다.
한번 더 해보자, 행렬 $A$에서, 2행 1열의 성분은 무엇인가? 그렇다. 바로 4이다.
하지만 수학자들은 행렬에서 저 4를 지칭하고 싶을 때, ‘행렬 $A$의 2행 1열의 성분’이라는 더럽게 기나긴 설명을 붙이는 것을 좋아하지 않기 때문에, 다음의 기호를 통해서, 어떤 행렬의 특정 성분을 표현하기로 약속해버렸다. 그들이 약속한 기호에 따르면, 행렬 $A$의 2행 1열의 성분이 4라는 사실은 다음의 기호로 표시할 수 있다.
$a_{ 2 1 } = 4$
여기서 $a_{ 2 1 }$은 어떤 특정한 함수나 연산자의 표시가 아니다. 그냥 기호일 뿐이고, $b_{ 2 1 }$이나 $x_{ 2 1 }$과 같이 표현해도 상관이 없다. 하지만 일반적으로 어떤 행렬의 성분이라는 것을 표시해주기 위해, 그 행렬의 문자의 소문자를 사용하여 표시하는 것이 관례이다. 즉, 예컨대 행렬 $A$의 $i$행 $j$열 성분은 $a_{i j}$와 같이 표현하는 식이다.
몇 가지 연습을 통해 익숙해져보기로 하자.
앞서 제시했던 행렬 $A$를 생각해보기로 하자. $a_{1 1}$은 얼마인가? 그렇다. 10이다. $a_{2 3}$은 얼마인가? 그렇다. -2이다. 그렇다면, $a_{3 2}$는 얼마인가? 그렇다. 정의되지 않았다.
막상, 복잡해보이는 것도 뜯어보면 단순한 경우가 많은 것 같다.
행렬의 크기
수학자들은 온갖 것에 이름과 용어를 갖다 붙이기를 좋아한다. 이름을 붙이는 특성은 인류 전체의 보편적 특성일지도 모르겠지만, 수학자들은 그러한 욕망이 특히나 심한 편이다. 이들은 행렬에 대해서, 그 ‘크기’라는 것을 정의해놓았는데, 사실 이 행렬의 크기라 하는 것은 별로 어려운 것은 다행히도 아니다.
행렬의 크기에 대하여 논할 적에도 마찬가지로, 앞서 행렬의 행과 열을 설명하던 때와 마찬가지인, 표를 떠올리면 굉장히 편하다. 표의 크기를 이야기한다고 생각해보자. 예컨대, 20행 3열의 표를 떠올려보라고 한다면, 머릿속에 3칸이 옆으로 늘어서는 20개의 줄로 이루어진 표가 생각날 것이다. 그렇다. 표의 크기를 표현할 적에 우리는 행의 개수와 열의 개수를 이용하여 표의 크기를 표현했다. 이러한 논의는 똑같이 행렬에도 적용된다. 즉, 행렬의 크기 역시, 행렬에서 행과 열의 개수를 이용하여 행렬의 크기를 표현한다는 것이다. 이를테면
$B = \begin{bmatrix} 3 & 7 & 10 \\ -4 & 11 & 22 \end{bmatrix}$
로 정의된 행렬 $B$가 있다면, 이 행렬 $B$의 크기는 ‘2행 3열’인 셈이다. 하지만 우리의 귀차니스트인 수학자들은 이렇게 말하기도 싫어서, 영미권의 한 단어를 이용하여 이것도 축약해버리는데다가 크기를 표현하는 기호도 만들어버린다. 그들이 표현한 바에 따르면, 위의 행렬 $B$의 크기는 다음의 기호로 쓰고, 다음과 같이 읽는다.
$2 \times 3$, 2 by 3
즉, 우리가 흔히 표의 크기를 표현할 때 $4 \times 5$ 크기의 표라고 하는 것처럼, 행렬의 크기도 마찬가지로 $\times$ 기호를 사용하여 표현하는데, 영미권에서 행렬이 처음 창작되었던 만큼, 읽어버릴 때는 영단어 ‘by’를 사용하여 읽어버리는 것이다. 보통은 크기를 읽을 때, 숫자까지 영어로 읽어버리는 경우가 대다수이다. 즉, 위의 $2 \times 3$를 읽으면, two-by-three와 같이 읽어야 되는 식이다.
몇 가지 예제를 통하여 연습해보도록 하자.
- What’s the size of matrix $A$, defined as $A = \begin{bmatrix} 3 \\ 1 \\ 2 \end{bmatrix}$?
-> Answer: It’s $3 \times 1$ matrix. - What’s the size of matrix $B$, defined as $B = \begin{bmatrix} 2 & 7 & 1 \\ 3 & 3 & -1 \\ 0.1 & 4.5 & 7 \end{bmatrix}$?
-> Answer: It’s $3 \times 3$ matrix.
좋다! 이제 행렬의 기본 연산을 살펴볼 차례가 되었다.
행렬의 기본 연산 – 행렬합, 행렬차, 행렬의 스칼라곱, 행렬곱
일반적인 실수 체계에서의 사칙 연산을 생각해보면, 우리는 크게 기본적으로는 덧셈, 뺄셈, 곱셈, 나눗셈의 4연산을 가지고 초등학교 때부터 놀곤(혹은 고통받곤) 했다. 행렬의 경우도 이들 기본적인 사칙 연산이나 다름없는 4가지 연산이 정의가 되는데, 실수 체계와는 약간 다른 점이 있다.
행렬에서 기본 연산이란 행렬합, 행렬차 연산과 행렬의 스칼라곱, 행렬곱을 일컫는 용어이다. 합과 차 연산은 기본적으로 실수의 덧셈, 뺄셈과 비슷하고, 행렬의 스칼라곱의 경우는 곱셈과 비슷하지만 행렬곱의 경우는 완전히 다르다.
행렬합
행렬합(行列合, Matrix Addition)이란 실수 연산으로 치면 덧셈에 대응되는 행렬에서의 연산으로, 크기가 같은 두 행렬의 각 성분을 합한 성분을 가지는 새로운 행렬을 얻어내는 연산이라고 할 수 있다.
이를테면 다음과 같은 $2 \times 3$ 행렬 2개, 행렬 $A$와 행렬 $B$가 다음과 같이 정의되어 있다고 하자.
$A = \begin{bmatrix} 1 & 3 & -2 \\ 5 & -10 & 7 \end{bmatrix}$
$B = \begin{bmatrix} 2 & -5 & 8 \\ -1 & 3 & 11 \end{bmatrix}$
이 때, 행렬 $A$와 행렬 $B$를 합한 행렬 $C$를 행렬 $A$, 행렬 $B$의 행렬합이라 하고, 이는 두 행렬의 각 성분들의 합을 성분으로 가지는 행렬이 된다. 즉,
$C = \begin{bmatrix} 3 & -2 & 6 \\ 4 & -7 & 18 \end{bmatrix}$
주의해야 할 것은, 행렬합은 서로 크기가 다른 행렬 사이에는 정의되지 않는 연산이라는 것이다. 예컨대, $2 \times 3$ 행렬과 $3 \times 3$ 행렬은 행렬합이 정의되지 않는다.
당연하게도, 행렬합에서는 교환 법칙이 성립한다.
몇 가지 예제를 통하여 복습해보기로 하자.
- let $A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}$ and $B = \begin{bmatrix} -1 & 0 \\ 0 & 1 \end{bmatrix}$, what matrix must be equal to $A + B$?
-> Answer: $A + B = \begin{bmatrix} 0 & 2 \\ 3 & 5 \end{bmatrix}$ - let $A = \begin{bmatrix} -1 & 0 & 6 \\ 2 & 3 & 5 \end{bmatrix}$ and $B = \begin{bmatrix} 3 & 3 & 7 \\ -1 & 0 & 0 \end{bmatrix}$, what matrix must be equal to $A + B$?
-> Answer: $A + B = \begin{bmatrix} 2 & 3 & 13 \\ 1 & 3 & 5 \end{bmatrix}$ - let $A = \begin{bmatrix} -1 \\ 0 \end{bmatrix}$ and $B = \begin{bmatrix} 1 & 2 \end{bmatrix}$, what matrix must be equal to $A + B$?
-> Answer: It’s not defined.
행렬차
행렬차(行列差, Matrix Subtraction)이란 실수 연산으로 치면 뺄셈에 대응되는 행렬에서의 연산으로, 크기가 같은 두 행렬의 각 성분들의 차로 얻어지는 성분을 가지는 새로운 행렬을 얻어내는 연산이라고 할 수 있다.
이를테면 앞서 살펴본 두 행렬 $A$, $B$를 생각해보면, 즉 다음의 두 행렬에 대해서,
$A = \begin{bmatrix} 1 & 3 & -2 \\ 5 & -10 & 7 \end{bmatrix}$
$B = \begin{bmatrix} 2 & -5 & 8 \\ -1 & 3 & 11 \end{bmatrix}$
행렬 $A$에서 행렬 $B$를 뺀 행렬 $D$를 행렬 $A$에서 행렬 $B$의 행렬차라 하고, 이는 행렬 $A$의 성분에서 행렬 $B$의 성분을 뺀 성분들로 구성된 행렬이 된다. 즉,
$D = \begin{bmatrix} -1 & -8 & -10 \\ 6 & -13 & -4 \end{bmatrix}$
역시 주의해야 할 것은, 행렬차 역시도 서로 크기가 다른 행렬 사이에서는 정의되지 않는 연산이라는 것이다. $2 \times 3$ 행렬과 $3 \times 3$ 행렬은 서로 간에 행렬차가 정의되지 않는다.
당연히 행렬차에서는 교환 법칙이 성립하지 않는다.
예제를 통해 복습해보기로 하자.
- let $A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}$ and $B = \begin{bmatrix} -1 & 0 \\ 0 & 1 \end{bmatrix}$, what matrix must be equal to $A – B$?
-> Answer: $A – B = \begin{bmatrix} 2 & 2 \\ 3 & 3 \end{bmatrix}$ - let $A = \begin{bmatrix} -1 & 0 & 6 \\ 2 & 3 & 5 \end{bmatrix}$ and $B = \begin{bmatrix} 3 & 3 & 7 \\ -1 & 0 & 0 \end{bmatrix}$, what matrix must be equal to $A – B$?
-> Answer: $A – B = \begin{bmatrix} -4 & -3 & -1 \\ 3 & 3 & 5 \end{bmatrix}$ - let $A = \begin{bmatrix} -1 \\ 0 \end{bmatrix}$ and $B = \begin{bmatrix} 1 & 2 \end{bmatrix}$, what matrix must be equal to $A – B$?
-> Answer: It’s not defined.
행렬의 스칼라곱
행렬의 스칼라곱(Scalar Multiplication of Matrix)이란, 실수 연산으로 치자면 곱셈과 비슷하지만 약간 다른 연산으로, 어떤 행렬의 각 성분을 곱해지는 실수만큼 배(倍)하는 행렬 연산이다.
이를테면 어떤 행렬 $E$가 다음과 같이 정의되어 있다고 하자.
$E = \begin{bmatrix} 1 & -2 \\ 3 & 0 \end{bmatrix}$
이 때, 실수 3을 이 행렬에 스칼라곱해버리면, 이 결과로 얻어진 행렬은 $3 \times \begin{bmatrix} 1 & -2 \\ 3 & 0 \end{bmatrix}$나 $\begin{bmatrix} 1 & -2 \\ 3 & 0 \end{bmatrix} \times 3$ 또는 $3 \begin{bmatrix} 1 & -2 \\ 3 & 0 \end{bmatrix}$ 또는, $3E$로 쓸 수 있으며, 그 결과는 다음과 같다.
$3E = \begin{bmatrix} 3 & -6 \\ 9 & 0 \end{bmatrix}$
한 편, 보통 절댓값이 0과 1 사이인, 분수로 표현될 수 있는 실수를 스칼라곱하는 경우, 이들을 나눗셈 연산자를 이용하여 표현하기도 한다. 예컨대, ${1 \over 4} \begin{bmatrix} 1 & -2 \\ 3 & 0 \end{bmatrix}$를, $\begin{bmatrix} 1 & -2 \\ 3 & 0 \end{bmatrix} / 4$와 같은 식으로 표현할 수도 있다.
행렬의 스칼라곱의 결과는 행렬의 크기에 무관하다. 하지만 그 결과는 스칼라곱 이전의 행렬과 같다는 점에 주의하자. 이를테면 $0 \times \begin{bmatrix} 1 & -2 \\ 3 & 0 \end{bmatrix}$는 실수 0이 아니고, 모든 성분이 0인 $2 \times 2$ 행렬인 $\begin{bmatrix} 0 & 0 \\ 0 & 0 \end{bmatrix}$가 된다는 것이다.
몇 가지 예제로써 복습해보기로 하자.
- let $A = \begin{bmatrix} -1 & 3 \end{bmatrix}$, what matrix must be equal to $-2A$?
-> Answer: $-2A = \begin{bmatrix} 2 & -6 \end{bmatrix}$ - let $A = \begin{bmatrix} 2 & 5 & 0 \\ -1 & 4 & 3 \end{bmatrix}$, what matrix must be equal to $A/3$?
-> Answer $A/3 = \begin{bmatrix} {2 \over 3} & {5 \over 3} & 0 \\ {-1 \over 3} & {4 \over 3} & 1 \end{bmatrix}$ - let $A = \begin{bmatrix} 3 & 3 & -1 \\ 2 & 4 & 7 \\ 0 & 12 & 3 \end{bmatrix}$, what matrix must be equal to $0 \times A$?
-> Answer $0 \times A = \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix}$
행렬곱
행렬곱(行列곱, Matrix Multiplication)은 좀 특이한 행렬 연산으로, 대응되는 실수 연산을 찾아보기는 힘들다. 행렬곱의 경우는 그 연산의 결과로 행렬이 얻어지는데, 행렬곱이 정의되는 행렬의 크기는 앞서 다루었던 행렬합, 행렬차, 행렬의 스칼라곱과는 다소 다르다.
두 행렬의 행렬곱(Matrix Product)은 전자(前者) 행렬의 열 개수와 후자(後者) 행렬의 행의 개수가 동일한 경우에만 정의되고, 그 결과로 나오는 행렬은 전자 행렬의 행 개수와 동일한 개수의 행을 가지고, 후자 행렬의 열 개수와 동일한 개수의 열을 가진다.
행렬곱은 그 행과 열에 해당하는 전자 행렬의 행과 후자 행렬의 열의 각 성분들에 대하여, 이들의 곱합으로 구성된다.
수학적인 정의로써 수식을 이용하여 위 두 사실을 표현하여 보겠다.
$m \times r$ 행렬인 행렬 $A$와 $r \times n$ 행렬인 행렬 $B$가 있다면, 그 행렬곱 $AB$는 $m \times n$ 행렬이다.
두 행렬 $A$, $B$가 $A = \begin{bmatrix} a_{11} & a_{12} & … & a_{1r} \\ a_{21} & a_{22} & … & a_{2r} \\ … & … & … & … \\ a_{m1} & a_{m2} & … & a_{mr} \end{bmatrix}$, $B = \begin{bmatrix} b_{11} & b_{12} & … & b_{1n} \\ b_{21} & b_{22} & … & b_{2n} \\ … & … & … & … \\ b_{r1} & b_{r2} & … & b_{rn} \end{bmatrix}$로 정의된다면,
행렬곱 $C = AB$는 다음의 $m \times n$ 행렬로 정의된다.
$C = \begin{bmatrix} c_{11} & c_{12} & … & c_{1n} \\ c_{21} & c_{22} & … & c_{2n} \\ … & … & … & … \\ c_{m1} & c_{m2} & … & c_{mn} \end{bmatrix}$
이 때, $i = 1, 2, …, m$, $j = 1, 2, … , n$에 대하여, 행렬 $C$의 각 성분은 다음과 같이 정의된다.
$c_{ij} = a_{i1} b_{ij} + a_{i2} b_{2j} + … + a_{ir} b_{rj} = \sum_{k=1}^r {a_{ik} b_{kj}}$
곧, $C = \begin{bmatrix} a_{11} b_{11} + … + a_{1r} b_{r1} & a_{11} b_{12} + … + a_{1r} b_{r2} & … & a_{11} b_{1n} + … + a_{1r} b_{rn} \\ a_{21} b_{11} + … + a_{2r} b_{r1} & a_{21} b_{22} + … + a_{2r} b_{r2} & … & a_{21} b_{1n} + … + a_{2r} b_{rn} \\ … & … & … & … \\ a_{11} b_{11} + … + a_{1r} b_{r1} & a_{m1} b_{12} + … + a_{mr} b_{r2} & … & a_{m1} b_{1n} + … + a_{mr} b_{rn} \end{bmatrix}$이다.
이렇게 말하면 도대체 무슨 소리인지 알기가 어려우니, 예시를 통해서 설명하기로 하자.
예컨대 다음과 같은 두 $2 \times 2$ 행렬 $A$, $B$가 있다고 하자.
$A = \begin{bmatrix} 1 & -1 \\ 2 & 3 \\ 3 & 6 \end{bmatrix}$
$B = \begin{bmatrix} 4 & -2 & 1 \\ 5 & 0 & 2 \end{bmatrix}$
이 때, 행렬곱 $AB$는 다음과 같다. 쉽게 생각하려면, 행렬곱의 $i$행 $j$열 성분은 전자 행렬의 $i$번째 행과 후자 행렬의 $j$번째 열의 벡터 스칼라곱과 비슷하다고 생각할 수 있다. (고등학교 기하와 벡터에 나오는 그 벡터의 ‘내적’ 말이다)
$AB = \begin{bmatrix} 1 \times 4 + (-1) \times 5 & 1 \times (-2) + (-1) \times 0 & 1 \times 1 + -1 \times 2 \\ 2 \times 4 + 3 \times 5 & 2 \times (-2) + 3 \times 0 & 2 \times 1 + 3 \times 2 \\ 3 \times 4 + 6 \times 5 & 3 \times (-2) + 6 \times 0 & 3 \times 1 + 6 \times 2 \end{bmatrix} = \begin{bmatrix} -1 & -2 & -1 \\ 27 & -4 & 8 \\ 42 & -6 & 15 \end{bmatrix}$
행렬곱 연산은 교환 법칙이 일반적으로 성립하지 않는다. 이는 실수에서의 곱셈은 교환 법칙이 성립했던 것과는 대조적이다. 왜 행렬곱에서 교환 법칙이 성립하지 않는지를 위 예시로 든 행렬 $A$와 행렬 $B$의 행렬곱 $AB$에서 전자 행렬과 후자 행렬을 교환한 행렬곱 $BA$로써 알아보도록 하자.
$BA = \begin{bmatrix} 4 \times 1 + (-2) \times 2 + 1 \times 3 & 4 \times (-1) + (-2) \times 3 + 1 \times 6 \\ 5 \times 1 + 0 \times 2 + 2 \times 3 & 5 \times (-1) + 0 \times 3 + 2 \times 6 \end{bmatrix} = \begin{bmatrix} 3 & -4 \\ 11 & 7 \end{bmatrix}$
이 결과를 앞서 계산한 행렬곱 $AB$와 비교해보자. 일단 그 결과 행렬의 크기부터가 다르다. 확실히, 일반적으로 $AB = BA$라 할 수 없으니, 행렬곱에서는 교환 법칙이 일반적으로 성립하지 않는다.
몇 가지 예제를 통하여, 이제 행렬곱을 계산하는 연습을 해 보도록 하자.
- let $A = \begin{bmatrix} 1 & 2 \end{bmatrix}$ and $B = \begin{bmatrix} 0 \\ 3 \end{bmatrix}$, what matrix must be equal to $AB$? What about $BA$? Does Matrix Multiplication have commutative property, according to those results?
-> Solution And Answer: $AB = \begin{bmatrix} 1 \times 0 + 2 \times 3 \end{bmatrix} = \begin{bmatrix} 6 \end{bmatrix}$, $BA = \begin{bmatrix} 0 \times 1 & 0 \times 2 \\ 3 \times 1 & 3 \times 2 \end{bmatrix} = \begin{bmatrix} 0 & 0 \\ 3 & 6 \end{bmatrix}$, Therefore Matrix Multiplication doesn’t have commutative property, according to those results. - let $A = \begin{bmatrix} 2 & 3 \\ -1 & 2 \end{bmatrix}$ and $B = \begin{bmatrix} 0 & 5 \\ 2 & 7 \end{bmatrix}$, what matrix must be equal to $AB$?
-> Solution And Answer: $AB = \begin{bmatrix} 2 \times 0 + 3 \times 2 & 2 \times 5 + 3 \times 7 \\ (-1) \times 0 + 2 \times 2 & (-1) \times 5 + 2 \times 7 \end{bmatrix} = \begin{bmatrix} 6 & 31 \\ 4 & 9 \end{bmatrix}$ - let $A = \begin{bmatrix} 3 & -2 & 7 \\ 0 & 0 & -1 \end{bmatrix}$ and $B = \begin{bmatrix} 1 & 0 \end{bmatrix}$, what matrix must be equal to $BA$?
-> Answer: It’s not defined.
정사각행렬, 영행렬, 대각행렬, 단위행렬, 전치행렬
특정한 몇몇 행렬의 경우는 특이한 기능을 하기 때문에, 이들을 부르는 이름이 별도로 존재한다. 정사각행렬, 영행렬, 대각행렬, 단위행렬, 전치행렬 등이 그 대표 주자들인데, 하나씩 살펴보도록 하자.
정사각행렬
정사각행렬(正四角行列)이란 행과 열의 개수가 같은 행렬이다. 직관적으로 말하자면, 정사각형 형태로 생긴 행렬인 셈이다. 따라서 다음의 행렬들은 모두 정사각행렬이다.
$\begin{bmatrix} 1 \end{bmatrix}$, $\begin{bmatrix} 0 & -1 \\ 2 & 7 \end{bmatrix}$, $\begin{bmatrix} 3 & 3 & 8 \\ -1 & 0 & 6 \\ 4 & -5 & 9 \end{bmatrix}$
영행렬
영행렬이란 모든 성분이 0인 행렬이다. 즉, 다음의 행렬들은 모두 영행렬이다.
$\begin{bmatrix} 0 \end{bmatrix}$, $\begin{bmatrix} 0 & 0 \end{bmatrix}$, $\begin{bmatrix} 0 & 0 \\ 0 & 0 \\ 0 & 0 \end{bmatrix}$, $\begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix}$
보통 영행렬은 주어지는 행렬과 크기가 같은 것으로 보고, 기호 $O$로 표시한다.
영행렬은 행렬합과 행렬차에 대한 항등원이다. 즉, 어떤 임의의 행렬 $A$에 대하여, 이와 크기가 같은 영행렬을 합하거나 빼도 그 결과는 행렬 $A$와 동일하다. 즉, $A + O = O + A = A$가 성립한다. 이 부분은 직관적으로 받아들일 수 있으므로, 별도의 예시를 들지는 않겠다.
대각행렬
대각행렬이란 정사각행렬 중에서, 행과 열의 번호가 동일한 성분을 제한 나머지 모든 성분이 0인 행렬이다. 수학적으로는, 어떤 정사각행렬 $A$에 대하여, 그 ‘행과 열의 번호가 동일한 성분’인 성분 $a_{i i}$를 제외한 나머지 성분이 모두 0인 행렬이다. 다음의 행렬들은 모두 대각행렬이다.
$\begin{bmatrix} 1 & 0 & 0 \\ 0 & -3 & 0 \\ 0 & 0 & 7 \end{bmatrix}$, $\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}$
대각행렬이 아니더라도, 정사각행렬에서 ‘행과 열의 번호가 동일한 성분’을 일반적으로 행렬의 대각성분이라고 한다. 즉, 대각행렬은 대각성분을 제외한 나머지 성분들이 모두 0인 정사각행렬이라고 정의할 수도 있다.
단위행렬
단위행렬이란 대각행렬 중에서도, 그 대각성분이 모두 1인 대각행렬을 말한다. 즉, 다음의 행렬들은 모두 단위행렬이다.
$\begin{bmatrix} 1 \end{bmatrix}$, $\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}$, $\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}$
단위행렬은 일반적으로 기호 $I$로 표시하며, 그 크기는 일반적으로 주어진 행렬과 행렬곱이 성립하도록 주어진다고 생각한다.
단위행렬은 정사각행렬의 행렬곱에 대한 항등원이다. 즉, 어떤 임의의 정사각행렬 $A$의 왼쪽에 단위행렬을 곱하든, 오른쪽에 단위행렬을 곱하는, 그 결과는 원 행렬 $A$와 같다. 즉, $IA = AI = A$이다.
단위행렬이 정사각행렬의 행렬곱에 대한 항등원이 맞는지 한 가지 예시로써 확인해보자. 행렬 $A$가 다음과 같이 정의된다고 하자.
$A = \begin{bmatrix} 1 & 2 & 7 \\ 3 & -1 & 0 \\ 0 & 1 & 1 \end{bmatrix}$
우선 $IA$부터 계산해보자.
$IA = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 2 & 7 \\ 3 & -1 & 0 \\ 0 & 1 & 1 \end{bmatrix} = \begin{bmatrix} 1 \times 1 + 0 \times 3 + 0 \times 0 & 1 \times 2 + 0 \times (-1) + 0 \times 1 & 1 \times 0 + 0 \times 0 + 0 \times 1 \\ 0 \times 1 + 1 \times 3 + 0 \times 0 & 0 \times 2 + 1 \times (-1) + 0 \times 1 & 0 \times 7 + 1 \times 0 + 0 \times 1 \\ 0 \times 1 + 0 \times 3 + 1 \times 0 & 0 \times 2 + 0 \times (-1) + 1 \times 1 & 0 \times 7 + 0 \times 0 + 1 \times 1 \end{bmatrix} = \begin{bmatrix} 1 & 2 & 7 \\ 3 & -1 & 0 \\ 0 & 1 & 1 \end{bmatrix}$
다음으로 $AI$를 계산해보자.
$AI = \begin{bmatrix} 1 & 2 & 7 \\ 3 & -1 & 0 \\ 0 & 1 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix} 1 \times 1 + 2 \times 0 + 7 \times 0 & 1 \times 0 + 2 \times 1 + 7 \times 0 & 1 \times 0 + 2 \times 0 + 7 \times 1 \\ 3 \times 1 + (-1) \times 0 + 0 \times 0 & 3 \times 0 + (-1) \times 1 + 0 \times 0 & 3 \times 0 + (-1) \times 0 + 0 \times 1 \\ 0 \times 1 + 1 \times 0 + 0 \times 0 & 0 \times 0 + 1 \times 1 + 1 \times 0 & 0 \times 0 + 1 \times 0 + 1 \times 1 \end{bmatrix} = \begin{bmatrix} 1 & 2 & 7 \\ 3 & -1 & 0 \\ 0 & 1 & 1 \end{bmatrix}$
위의 예제로, $IA = AI = A$임을 확인할 수 있다.
전치행렬
전치행렬이란, 주어진 행렬의 성분들을 각각 행과 열을 바꾸어서 만들어낸 행렬이다. 수학적으로는, 어떤 행렬 $A$가 있을 때, 이 행렬의 원소 $a_{ij}$를 $b_{ji}$에 대응시켜 만들어낸 행렬 $B$를 행렬 $A$의 전치행렬이라 하고, 기호로는 $A^{T}$로 쓴다.
직관적으로 이야기하자면, 전치행렬은 어떤 행렬을 왼쪽 아래에서 오른쪽 위로 뒤집은 행렬이라고 생각할 수 있다.
예시를 통해 살펴보자. 행렬 $A$가 다음과 같이 정의되어 있다고 하자.
$A = \begin{bmatrix} 1 & 0 & 7 \\ 2 & 3 & 6 \end{bmatrix}$
이 때, 이 행렬 $A$의 전치행렬 $A^{T}$는 다음과 같다.
$A^{T} = \begin{bmatrix} 1 & 2 \\ 0 & 3 \\ 7 & 6 \end{bmatrix}$
벡터
이 부분에 대해서는 독자 여러분들이 대한민국 고등학교 교육 과정 상의 ‘기하와 벡터’를 학습하여 관련 지식이 있다는 전제 하에 쓰여졌음을 알립니다.
벡터와 행렬
고등학교 ‘기하와 벡터’에서 우리가 배운 벡터는 평면 벡터와 공간 벡터가 있었다. 결국은 방향과 크기를 가지는 양이라고도 할 수 있는 이 벡터는, 우리는 어떤 시점에서 종점으로 향하는 유향선분으로써 벡터를 기하적으로 도식한다는 것도 배웠고, 직교좌표계에서 공간, 또는 평면에서의 벡터의 성분법에 대하여 배웠다.
여기서 다룰 내용은 벡터와 행렬 사이의 관계에 관한 것인데, 그 이전에 우선 벡터의 성분법을 먼저 복습을 좀 해 보도록 하자. 2차원 벡터에 해당하는 평면 벡터를 예로 들자.
위의 그림에서 벡터 $A$를 주목하자. 평면 직교좌표계에서, 우리는 벡터 $A$의 시점을 원점으로 일치시켰을 때, 그 종점인 점 $A$의 $x$좌표를 벡터 $A$의 $x$성분이라 하고, 점 $A$의 $y$좌표를 벡터 $A$의 $y$성분이라고 하며, 모든 평면 벡터의 경우는 두 개의 직교 좌표축 성분으로써 표현할 수 있다는 것을 배웠다.
또한, 우리는 3차원에서 공간 벡터의 경우는, $xyz$ 직교 좌표계에서 $x$성분과 $y$성분, 그리고 $z$ 성분으로써 표현할 수 있다는 것도 배웠다.
한데, 선형 대수학에서는 벡터의 정의를 3차원 이상으로 확장시켜버린다. 어떻게 이것이 가능한 것일까? 우리는 고등학교 교육 과정에서 기하적으로 대응될 수 있는, 적어도 3차원 공간 안에서의 벡터에 대해서 다루었지만, 선형 대수학에서는 벡터를 행렬의 일부로 본다.
선형 대수학에서 벡터란 $1 \times n$ 행렬을 말하는 것이다. 즉, 다음의 행렬들은 모두 벡터이다.
$\begin{bmatrix} 1 \\ 2 \end{bmatrix}$, $\begin{bmatrix} 0 \\ 0 \\ -1 \end{bmatrix}$, $\begin{bmatrix} 0 \\ -1 \\ 4 \\ 5 \\ 7 \end{bmatrix}$
이 행렬이 어떻게 우리가 기존에 알고 있는 벡터와 대응된다는 것일까? 간단하다. 우리가 흔히 생각하는 벡터의 각 성분들이 행렬의 각 행의 성분들에 대응되는 것이다. 즉, 이를테면
공간 벡터 $A = (1, -1, 0) = \begin{bmatrix} 1 \\ -1 \\ 0 \end{bmatrix}$
인 식이다. 이와 같은 방법으로 생각하면, 임의의 n차원 벡터까지 생각해낼 수 있다.
벡터의 내적과 행렬곱
우리는 고등학교 때, 평면 혹은 공간 벡터의 내적, 즉 벡터의 스칼라곱에 대하여 배운 바가 있다. 그 때 우리는 평면 벡터의 내적과 공간 벡터의 내적은, 각 대응 성분들의 곱합으로 계산할 수 있다는 것을 배웠다.
행렬을 사용하여 내적을 계산하는 것도 별반 다른 일은 아니다. 이미 우리가 행렬을 선형 대수학적으로 $1 \times n$ 크기의 모든 행렬이라고 정의했지만, 우리가 기존에 알고 있던 평면, 공간 벡터의 내적 계산법과 유사한 행렬곱을 사용하면 빠르게 벡터의 내적을 계산해낼 수 있다.
임의의 두 벡터의 내적이 정의되려면, 우선 두 벡터에 대응되는 행렬의 크기는 동일해야 한다. (즉, 두 벡터를 행렬로 표현하였을 때, 그 행렬의 크기가 동일하다는 말이다)
벡터 $A = \begin{bmatrix} a_1 \\ a_2 \\ … \\ a_n \end{bmatrix}$, 벡터 $B = \begin{bmatrix} b_1 \\ b_2 \\ … \\ b_n \end{bmatrix}$에 대하여, 벡터 $A$와 벡터 $B$의 내적 $A \cdot B = det(A^{T}B)$
참고: 위의 수식에서 사용된 det는 이 행렬의 행렬식을 계산하겠다는 표시인데, 행렬식은 여기서 다루기에는 너무 복잡하다. 독자 여러분들이 알아서 Google링을 하셔야겠지만, 그래도 참고할 수 있을 사이트 몇 군데를 첨부해둔다.
– 수학방 – 연립일차방정식이 해를 가질 조건
– ratsgo’s blog – 행렬식(determinant)
예시와 함께 살펴보도록 하자. 이를테면 두 벡터 $A$, $B$가 다음과 같이 정의되어 있다고 하자.
$A = \begin{bmatrix} 1 \\ 0 \\ -1 \\ 2 \end{bmatrix}$
$B = \begin{bmatrix} -1 \\ 2 \\ 3 \\ 0 \end{bmatrix}$
이 때, 위에 정의된 바와 같이 내적을 계산하면,
$A \cdot B = det(A^{T}B) = det(\begin{bmatrix} 1 & 0 & -1 & 2 \end{bmatrix} \begin{bmatrix} -1 \\ 2 \\ 3 \\ 0 \end{bmatrix}) = det(\begin{bmatrix} 1 \times (-1) + 0 \times 2 + (-1) \times 3 + 2 \times 0 \end{bmatrix}) = det(\begin{bmatrix} -5 \end{bmatrix}) = 5$
즉, 실질적으로 우리가 평면, 혹은 공간 벡터에 대해 내적을 행할 적의 식과 유사하다. 이 방법으로 평면 공간 벡터에 대한 내적을 계산해서, 합리적인지를 살펴보도록 하자.
공간 벡터 $A$, $B$가 다음과 같이 정의된다고 하자.
$A = \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix}$
$B = \begin{bmatrix} -1 \\ 3 \\ 4 \end{bmatrix}$
우선 우리가 알고 있는 일반적인 공간 벡터의 내적을 활용하면 $A = (1, 0, 0)$, $B = (-1, 3, 4)$이므로 $A \cdot B = 1 \times (-1) + 0 \times 3 + 0 \times 4 = -1$.
다음으로 행렬로 정의된 내적을 사용하면
$A \cdot B = det(A^{T}B) = det(\begin{bmatrix} 1 & 0 & 0 \end{bmatrix} \begin{bmatrix} -1 \\ 3 \\ 4 \end{bmatrix}) = det(\begin{bmatrix} 1 \times (-1) + 0 \times 3 + 0 \times 4 \end{bmatrix}) = det(\begin{bmatrix} -1 \end{bmatrix}) = -1$
즉, 두 방법으로의 계산 결과가 일치하기 때문에, 행렬로 위와 같이 정의된 벡터의 내적은 납득할 만 하다.
이상으로 해서 앞으로 잠깐은 활용할 수 있을 행렬과 벡터에 대한 기본 개념과 각종 연산, 상관관계 등을 정리했다. 다음 Mathematical Basis에서는 무엇을 연재할지는 모르겠지만, 어쨌거나 다음에 또 머신러닝이나 데이터과학 쪽을 공부하다가 수학적 베이스가 필요해지는 순간이 오면, 한 번 더 정리하게 될 것 같다.