데이터를 벡터와 행렬로 표기하는 법
딥러닝에서 행렬과 벡터는 어떤 식으로 쓰일까?
딥러닝에서 모든 데이터는 숫자들의 묶음인 스칼라, 벡터, 행렬, 텐서로 표현된다.
- 벡터(Vector): 하나의 데이터를 한줄로 세운 것
- 행렬(Matrix): 여러 개의 데이터를 쌓아 올린 것
- 텐서(Tensor): 행렬을 여러 겹 쌓은 것
신경망의 기본 연간: 행렬 곱 (Matrix Multiplication)
신경망의 각 층이 하는 일은 입력 데이터에 가중치를 곱하고 편향을 더하는 것이다.
$y = Wx + b$
- $W$는 가중치 행렬이고, $b$ 는 편향, $x$는 입력 벡터이다.
- 수만 개의 파라미터를 일일이 계산하는 대신, 행렬 곱을 사용하면 수만 개의 연산을 한 번에 병렬로 처리가 가능하다.
표기
수학적 표기
데이터 1: $x_1 = \begin{bmatrix} 1 \\ 2 \end{bmatrix}$
데이터 2: $x_2 = \begin{bmatrix} 3 \\ 4 \end{bmatrix}$
행렬 $X$: $[x_1, x_2] = \begin{bmatrix} 1 & 3 \\ 2 & 4 \end{bmatrix}$
- 데이터 하나를 세로 열 벡터로 본다.
- 여러 개의 데이터를 쌓을 때는 이 세로 막대기들을 옆으로 나란히 붙인다.
- 이 경우 행렬의 크기는 (특징 수 X 데이터 개수)가 된다.
- 이 방식은 데이터가 늘어날수록 옆으로 길어지기 때문에 가독성이 떨어져 딥러닝 실무에서는 잘 쓰지 않는다.
딥러닝 실무 표기
데이터 1: $x_1 =$ $[1, 2]$
데이터 2: $x_2 =$ $[3, 4]$
행렬 $X$: $\begin{bmatrix} x_1 \\ x_2 \end{bmatrix}$ $=$ $\begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}$
- 실제로 접하는 대부분의 시스템에서는 데이터를 가로로 본다.
- 새로운 데이터가 들어오면 아래로 차곡차곡 쌓는다.
- 이를 디자인 행렬이라 부른다.
- 이 경우 행렬의 크기는 (데이터 개수 X 특징 수)가 된다.
- 배치 크기가 바로 이 행렬의 세로 길이를 의미한다.
아래로 쌓는 이유
- 데이터의 추가: 새로운 데이터를 추가하는 경우 기존 행렬 아래에 줄만 하나 더 추가하면 되기에 직관적이다.
- 메모리 구조: 컴퓨터 메모리는 1차원 직선 형태이다. 행 단위로 저장을 하면 1번 데이터의 모든 정보를 한 번에 읽어오기 유리하다.
- 병렬 연산: GPU는 이 행렬을 통째로 가져가서 각 행에 대해 똑같은 연산을 동시에 수행한다.
Leave a comment