[기계학습 #3] 벡터와 행렬
신경망이 학습하는 과정에 대한 간단한 설명은 아래에 링크로 걸어두었습니다.

이번 글에서는 "다음" 글에서 보겠다고 했던 것 중에 행렬에 대해 설명하도록 하겠습니다. 행렬을 설명하기 이전에 벡터에 대해 설명을 하고, 행렬로 넘어가도록 하겠습니다.
벡터란 무엇인가
수학적으로 벡터란, 벡터 공간의 원소입니다. 그러면 벡터 공간이라는 것은 무엇이냐? 집합 \(V \)가 다음의 성질들을 만족할 경우, \(V \)를 벡터 공간이라고 합니다.
- \(\forall \vec{u}, \vec{v} \in V, \vec{u} + \vec{v} \in V \) : 벡터 공간은 합에 의해 닫혀 있다.
- \(\forall a \in \reals, \forall \vec{u} \in V \implies a\vec{u} \in V \) : 벡터 공간은 스칼라곱에 의해 닫혀 있다.
- \(V \)는 합에 의해 아벨군을 이룬다.
- \(\forall a \in \reals, \forall \vec{u}, \vec{v} \in V, a(\vec{u} + \vec{v}) = a\vec{u} + a\vec{v} \) : 스칼라곱의 벡터 합에 대한 분배 법칙이 성립한다.
- \(\forall a, b \in \reals, \forall \vec{u} \in V, (a + b)\vec{u} = a\vec{u} + b\vec{u}\) : 스칼라의 합을 벡터에 곱하는 것도 분배 법칙이 성립한다.
- \(\forall a, b \in \reals, \forall \vec{u} \in V, a(b\vec{u}) = (ab)\vec{u} \) : 스칼라곱의 결합 법칙이 성립한다.
- \(\forall \vec{u} \in V, \exists 1 \in \reals such that 1 \cdot \vec{u} = \vec{u} \) : 스칼라곱의 항등원이 존재한다.
아벨군의 정의는 다음의 글에서 확인하실 수 있습니다.

예를 들어서, 모든 실수 함수의 집합 \(F \)도 벡터 공간입니다. 임의의 실수 함수 2개의 합도 실수 함수이며, 실수 함수는 합에 의해 아벨군을 이루고, 분배 법칙이 성립하며, 스칼라의 곱셈에 대해서도 결합 법칙이 성립하며, 항등원 1이 존재하기 때문입니다. 이는, 고등학교 물리에서 흔히 배우는 방식인, 크기와 방향성을 갖는 물리량이라는 정의보다 넓은 정의라고 할 수 있습니다.
또한, 실수의 집합 \(\reals \)의 원소만을 스칼라로 사용하는 대신 복소수 집합 \(\mathbb{C} \)을 스칼라로 사용하여 정의할 수도 있습니다.
배열은 벡터다
수학적으로는 위에 서술한 정의가 벡터에 대한 알맞은 정의입니다. 하지만, 우리가 기계학습을 다룰 때에는 저 정도로 추상적인 정의가 필요하지는 않습니다. 우리가 앞으로 다룰 벡터는 모두 기본적으로, 배열의 형태를 취합니다. 먼저, 배열이 벡터인지를 확인 해 보도록 하겠습니다.
자료형과 크기가 어떠한 형태로 정해져 있는 모든 배열들의 집합을 \(A \)라고 합시다. 이때, 배열의 합과 스칼라곱을 다음과 같이 정의합시다.
- 두 배열을 합한다는 것은, 배열을 인덱스별로 합한다는 것을 의미합니다. 다시 말해, 크기가 \(n \)인 두 배열 \(Arr1, Arr2 \)에 대해서, \(Arr3 = Arr1 + Arr2 \)이면, \(Arr3[i] = Arr1[i] + Arr2[i] (i = 0, 1, 2, ..., n) \)입니다.
- 어떤 배열에 스칼라를 곱한다는 것은, 해당 배열의 모든 값을 스칼라만큼 곱한다는 뜻입니다. 다시 말해, 크기가 \(n \)인 배열 \(Arr \), 실수 \(r \)에 대해서, \(Arr2 = r \cdot Arr \)이면, \(Arr2[i] = r \cdot Arr[i] (i = 0, 1, 2, ..., n) \)입니다.
합과 스칼라곱의 정의에 의해, 배열의 집합 \(A \)는 합과 스칼라곱에 의해 닫혀 있습니다. 또한, 실수는 덧셈에 대해서 아벨군이므로, 배열의 집합 \(A \) 또한 합의 정의에 의해 아벨군이 됩니다. 실수는 덧셈과 곱셈 사이의 분배 법칙이 성립하므로, 배열의 집합 \(A \)도 분배 법칙이 성립합니다. 스칼라곱의 결합 법칙이 성립하는 것도 쉽게 보일 수 있습니다. 마지막으로, 스칼라곱에 대한 항등원 1이 존재합니다. 결론적으로, \(A \)는 벡터 공간입니다.
따라서, 이후 연재에서 논하는 벡터의 경우, 그것이 어떠한 배열이라고 생각하시면 쉬울 것입니다.
행렬이란 무엇인가
벡터에 대해 알아봤으니, 이번에는 행렬에 대해 알아봐야겠습니다. 행렬은 말 그대로, 행과 열에 숫자를 채워넣은 것입니다. 수학적으로는 다음과 같이 표현할 수 있겠죠.
\[i, j \in \mathbb{N}, 1 \le i \le m, 1 \le j \le n, a_{ij} \in \mathbb{F}\\ \mathbf{A} : (i, j) \mapsto a_{ij}\]
위 식에서 \(\mathbb{F} \)는 체입니다. 이 연재에서는 대부분 \(\reals \)에 대해서만 다룰 것입니다. 결국, 행렬도 어떠한 형태의 함수라고 할 수 있습니다. [1] 행렬에 대한 해석은 여러가지로 할 수 있겠으나, 여기서는 그 중 몇가지만 다루어보도록 하겠습니다.
행렬 들여다보기
이 파트에서는 행렬을 여러가지 방법으로 해석 해 볼까합니다. 첫 번째로, 행렬을 연립방정식으로 생각 해 봅시다. 예를 들어서, 아래의 연립 방정식이 주어졌다고 합시다.
\[\begin{cases} 2x + 3y = 5 \\ 4x - 3y = 1 \end{cases}\]
물론, 소거법이나 대입법을 통해서도 쉽게 구할 수 있는 연립 방정식입니다. 그런 방식으로 해를 구하면, \((x, y) = (1, 1) \)이라는 해를 얻습니다. 그런데, 행렬로는 다른 방식의 표기를 강구 해 볼 수 있습니다.
계수들을 모아서 다음과 같은 행렬을 만들어 봅시다.
\[\begin{pmatrix} 2 & 3 \\ 4 & -3 \end{pmatrix} \]
그러면, 위의 연립 방정식은 행렬곱으로 나타낼 수 있습니다.
\[\begin{pmatrix} 2 & 3 \\ 4 & -3 \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} 5 \\ 1 \end{pmatrix} \]
뭐, 행렬을 알려준다고 하더니 행렬이 뭔지도 모르는채로 행렬을 활용하는 방법을 서술하니까 당황스러울 수도 있겠습니다. 그렇지만, 많은 교재들이 연립방정식으로부터 행렬에 대한 설명을 시작합니다.
또 한편으로는, 위의 표기가 전혀 직관적이지 않은 것이 아닙니다. 계수들을 형태 그대로 모아 놓고, 변수들을 한 번에 쓴 후에, 우변의 상수들을 모아놓은 것에 불과하기 때문에, 사실은 연립 방정식을 정리 해 놓은 것에 불과합니다.
그러면, 위처럼 나타낸다는 사실로부터, 다음의 결론을 추론할 수 있겠습니다.
\[\begin{pmatrix} a_{11} & a_{12} & ... & a_{1n} \\ a_{21} & a_{22} & ... & a_{2n} \\ ... \\ a_{n1} & a_{n2} & ... & a_{nn} \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \\ ... \\ x_n \end{pmatrix} = \begin{pmatrix} a_{11} x_{1} + a_{12} x_{2} + ... + a_{1n} x_{n} \\ a_{21} x_{1} + a_{22} x_{2} + ... + a_{2n} x_{n} \\ ... \\ a_{n1} x_{1} + a_{n2} x_{2} + ... + a_{nn} x_{n} \end{pmatrix} \]
도대체 왜 이런 결론이 나오느냐? 위에서 우리는 연립 방정식을 이렇게도 쓸 수 있다고 말했습니다.
\[\begin{pmatrix} 2 & 3 \\ 4 & -3 \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} 5 \\ 1 \end{pmatrix} \]
그런데, 사실 상 좌변은 그냥 그 자체로도 쓸 수는 있을 것입니다.
\[\begin{pmatrix} 2x + 3y \\ 4x - 3y \end{pmatrix} = \begin{pmatrix} 5 \\ 1 \end{pmatrix} \]
그러니까, 좌변만 모아서 보면, 행렬과 벡터의 곱에 대한 결론을 얻을 수 있습니다.
여기서부터, 행렬들의 곱에 대해 서술하겠습니다. 위처럼 해석하면, 행렬곱은 이런 의미를 갖습니다.
\[\begin{cases} 2u + 3v = 5 \\ 4u - 3v = 1 \end{cases}\]
\[\begin{cases} x + y = u \\ 3x - 2y = v \end{cases}\]
위와 같이 연립 방정식이 2개가 있을 때, 이를 위에서 배운 것처럼 다시 표기하면,
\[\begin{pmatrix} 2 & 3 \\ 4 & -3 \end{pmatrix} \begin{pmatrix} u \\ v \end{pmatrix} = \begin{pmatrix} 5 \\ 1 \end{pmatrix} \]
\[\begin{pmatrix} 1 & 1 \\ 3 & -2 \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} u \\ v \end{pmatrix} \]
이제, 아래의 식을 위에 다시 써 보면,
\[\begin{pmatrix} 2 & 3 \\ 4 & -3 \end{pmatrix} \begin{pmatrix} 1 & 1 \\ 3 & -2 \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} 5 \\ 1 \end{pmatrix} \]
여기서 앞의 계수 행렬에 주목 해 봅시다. 행렬이 곱해진 꼴이 나왔죠? 이게 행렬곱입니다. 보면, \((x, y) \mapsto (u, v)\) 과정이 내포되어 있습니다. 그러니까, 애초에 행렬곱이라는 것은 합성함수의 느낌을 갖고 있습니다. 합성함수의 느낌을 이해한다면, 행렬곱이 일반적으로 교환 법칙이 성립하지 않음은 바로 이해할 수 있습니다. 그리고, 행렬곱의 연산 과정이 다음과 같을 것이라는 점도 계산을 통해 알 수 있습니다. 실제로 \(u \)와 \(v \)에 넣어보면 됩니다.
\[\begin{pmatrix} a & b \\ c & d \end{pmatrix} \begin{pmatrix} p & q \\ r & s \end{pmatrix} = \begin{pmatrix} ap + br & aq + bs \\ cp + rd & cq + rs \end{pmatrix} \]
또한, 위의 연립 방정식을 거꾸로 해석 해 볼 수도 있습니다. 원래, \((x, y) \)가 가리킬 벡터를 생각 해 봅니다. \((u, v) \)의 관점에서는 그 벡터가 어떻게 바뀔까요? \((x, y) = (1, 0) \)이라고 해 봅시다. 그러면, \((u, v) = (1, 3) \)이 됩니다. 즉, \(\hat{i} \)가 \((1, 3) \)으로 옮겨 감을 알 수 있습니다. \((x, y) = (0, 1) \) 넣어 봅시다. 여기에서 우리는 \(\hat{j} \)가 \((1, -2) \)로 옮겨 감을 알 수 있습니다. 애초에 과정 자체를 보면, 한 쪽에 1, 다른 쪽에 0을 넣는 것이므로, \(x \) 앞의 계수로 \((u, v) \)의 \(u \)축 방향 기준축이, \(y \) 앞의 계수로 \((u, v) \)의 \(v \)축 방향 기준축이 옮겨가게 되는 것입니다. 이에 대해서는 아래의 영상을 참고하는 것을 추천 드립니다.
이렇게 해석하면, 행렬곱은 좌표 변환을 2번 한 것이 됩니다. 그런데, 좌표 변환을 할 때마다, 기준이 달라지므로, 교환 법칙은 일반적으로 성립하지 않을 것임을 알 수 있습니다.
지금까지 행렬의 곱에 대해서 얘기했는데, 합과 차도 쓰겠습니다. 행렬의 합과 차는 쉽습니다. 그냥 원소 별로 더하면 됩니다. 이것 또한, 연립 방정식으로의 사고와 좌표 변환으로의 사고에서 쉽게 도출 해 낼 수 있습니다.
\[\begin{pmatrix} 2 & 3 \\ 1 & 4 \end{pmatrix} + \begin{pmatrix} 1 & 0 \\ -1 & 1 \end{pmatrix} = \begin{pmatrix} 3 & 3 \\ 0 & 5 \end{pmatrix} \]
마치며...
오늘 글에서는 벡터와 행렬에 대해 알아봤습니다. 물론, 여기에서는 간단하게 짚기만 했습니다. 그렇지만, 이 정도 감만 익히는 것도, 이후의 연재를 읽을 때에는 도움이 될 것이라고 생각합니다.
다음 내용은 방향 도함수와 전미분에 대한 내용이 될 것입니다. 이에 대한 수학적인 기술만 끝이나면, 이제 우리는 인공 신경망에 대해 알아볼 준비가 끝나게 됩니다.
참고문헌
[1] K. Hoffman and R. A. Kunze, Linear algebra. Taipei: Pearson Education Taiwan Ltd., 2011.