개요
딥러닝에 중요하게 사용되는 벡터와 행렬의 개념, 그리고 연산 방법에 대해서 알아본다.
스칼라 Scalar
우선 스칼라라는 단어에 대해서 짚고 넘어가자. 스칼라는 우리가 흔히 생각하는 단일한 수이다. 예를 들어 3, -5.4 등이 있겠다.
행렬
개념
행렬은 스칼라 수를 직사각형 형태로 배열한 것이다. 아래는 2×3 행렬의 예시이다.
\[\begin{bmatrix} 1 & -4 & 6 \\ 3 & 7 & -9 \end{bmatrix}\]행렬의 크기는 m×n 혹은 (m, n) 형태로 나타낸다. 이때 m은 행렬의 행 개수, n은 열 개수를 의미한다. 위 행렬의 경우에는 행이 2개, 열이 3개이기 때문에 2×3 행렬이다.
행렬의 연산
행렬에서 일어나는 연산에 대해 알아보자.
덧셈과 뺼셈
크기가 같은 행렬은 서로 더하거나 뺄 수 있다.
이 때, 같은 위치에 있는 수끼리 더하고 뺀다.
\[\begin{bmatrix} 1 & -4 & 6 \\ 3 & 7 & -9 \end{bmatrix} + \begin{bmatrix} 2 & 3 & 5 \\ 6 & -4 & 4 \end{bmatrix} = \begin{bmatrix} 3 & -1 & 11 \\ 9 & 3 & -5 \end{bmatrix}\] \[\begin{bmatrix} 1 & -4 & 6 \\ 3 & 7 & -9 \end{bmatrix} - \begin{bmatrix} 2 & 3 & 5 \\ 6 & -4 & 4 \end{bmatrix} = \begin{bmatrix} -1 & -7 & 1 \\ -3 & 11 & -13 \end{bmatrix}\]스칼라배 곱셈
행렬에 일반적인 스칼라 수를 곱할 수 있다. 이 때, 행렬 내 각각의 요소에 스칼라 수를 곱해준다.
\[3 \cdot \begin{bmatrix} 2 & 3 & 5 \\ 6 & -4 & 4 \end{bmatrix} = \begin{bmatrix} 6 & 9 & 15 \\ 18 & -12 & 12 \end{bmatrix}\]내적 Dot Product
행렬끼리 곱하는 방법에는 내적과 외적이 있다. 지금은 우선 Dot product라고도 하는 내적에 대해서만 이야기해보려고 한다.
우선 내적을 행하기 위해서는 두 행렬 간의 크기가 꼭 같을 필요는 없지만, 한가지 중요한 조건이 있다.
예를 들어 m×n 행렬과 n×k 행렬을 서로 내적하면, m×k 행렬이 결과값으로 나온다. 이때 알 수 있는 사실은 앞 행렬의 열 개수와 뒤 행렬의 행 개수가 같아야 한다는 사실이다.
\[\begin{bmatrix} 1 & -4 & 6 \\ 3 & 7 & -9 \end{bmatrix} \cdot \begin{bmatrix} 2 & 3 & 5 \\ 6 & -4 & 4 \end{bmatrix} =\;???\]위와 같은 2×3 행렬과 2×3 행렬의 내적은 앞 행렬의 열 개수가 3, 뒤 행렬의 행 개수가 2로 서로 다르기 때문에 계산할 수 없다.
\[\begin{bmatrix} 1 & -4 & 6 \\ 3 & 7 & -9 \end{bmatrix} \cdot \begin{bmatrix} 2 & 6 \\ 3 & -4\\ 5 & 4 \end{bmatrix} = \begin{bmatrix} 1\cdot2 + (-4)\cdot3 + 6\cdot5 & 1\cdot6 + (-4)\cdot(-4) + 6\cdot4 \\ 3\cdot2 + 7\cdot3 + (-9)\cdot5 & 3\cdot6 + 7\cdot(-4) + (-9)\cdot4 \\ \end{bmatrix} = \begin{bmatrix} 20 & 46 \\ -18 & -46\\ \end{bmatrix}\]이 내적은 2×3 행렬과 3×2 행렬의 내적이기 때문에, 연산이 가능하다. 연산 결과로 나오는 행렬의 크기는 앞 행렬의 행 크기와 뒤 행렬의 열 크기를 따라간다. 그렇기 때문에 이 경우에는 2×2 행렬의 결과로 나온다.
내적 연산은 앞 행렬의 행과 뒤 행렬의 열 간의 요소를 각각의 위치에 따라 곱해준 뒤, 이를 합하는 것의 반복으로 이루어진다.
\[\begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} \cdot \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{bmatrix} = \begin{bmatrix} a_{11} \cdot b_{11} + a_{12} \cdot b_{21} & a_{11} \cdot b_{21} + a_{12} \cdot b_{22} \\ a_{21} \cdot b_{11} + a_{22} \cdot b_{21} & a_{21} \cdot b_{21} + a_{22} \cdot b_{22} \end{bmatrix}\]행렬의 요소를 a_ij 형태로 나타낼 때, i는 행, j는 열을 의미한다.
b_21은 b 행렬의 2번째 행, 1번째 열에 있는 요소인 것이다.
전치 Transpose
행렬의 전치는 행렬을 뒤집는 것이라고 볼 수 있겠다.
\[\begin{bmatrix} 2 & 3 & 5 \\ 6 & -4 & 4 \end{bmatrix}^T = \begin{bmatrix} 2 & 6 \\ 3 & -4\\ 5 & 4 \end{bmatrix}\]이렇게 행과 열이 서로 뒤바뀐다.
벡터
개념
벡터는 행렬 중 특수한 행렬으로, 한줄짜리 행렬이라고 볼 수 있겠다.
열벡터와 행벡터
열벡터는 크기가 1×n으로, 1개의 열로 이루어진 벡터이다.
\[\begin{bmatrix} a_{11} & a_{12} & a_{13} \end{bmatrix}\]행벡터는 크기가 n×1으로, 1개의 행으로 이루어진 벡터이다.
\[\begin{bmatrix} b_{11} \\ b_{21} \\ b_{31} \\ \end{bmatrix}\]