Posts 행렬과 벡터
Post
Cancel

행렬과 벡터

개요

딥러닝에 중요하게 사용되는 벡터와 행렬의 개념, 그리고 연산 방법에 대해서 알아본다.

스칼라 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}\]
This post is licensed under CC BY 4.0 by the author.

딥 러닝 - 6. 학습(2) 경사 하강법 Gradient Descent

M1 맥에서 Konlpy 사용 시 JDK 문제 - JAVA_HOME 환경변수 설정, ARM64 JDK

Loading comments from Disqus ...