데이터를 벡터와 행렬로 표기하는 법

딥러닝에서 행렬과 벡터는 어떤 식으로 쓰일까?

딥러닝에서 모든 데이터는 숫자들의 묶음인 스칼라, 벡터, 행렬, 텐서로 표현된다.

  • 벡터(Vector): 하나의 데이터를 한줄로 세운 것
  • 행렬(Matrix): 여러 개의 데이터를 쌓아 올린 것
  • 텐서(Tensor): 행렬을 여러 겹 쌓은 것

딥러닝에서 행렬과 벡터는 어떤 식으로 쓰일까?

딥러닝에서 모든 데이터는 숫자들의 묶음인 스칼라, 벡터, 행렬, 텐서로 표현된다.

  • 벡터(Vector): 하나의 데이터를 한줄로 세운 것
  • 행렬(Matrix): 여러 개의 데이터를 쌓아 올린 것
  • 텐서(Tensor): 행렬을 여러 겹 쌓은 것(스칼라, 행렬, 벡터도 텐서에 포함)

신경망의 기본 연산: 행렬 곱 (Matrix Multiplication)

신경망의 각 층이 하는 일은 입력 데이터에 가중치를 곱하고 편향을 더하는 것이다.

$y = f(Wx + b)$

  • $W$는 가중치 행렬이고, $b$ 는 편향, $x$는 입력 벡터이다.
  • $f$는 신경망의 기본 연산($y = Wx + b$)에 비선형성을 추가하여 복잡한 데이터를 학습할 수 있도록 해야 한다.(만약 3x3 행렬일 경우, 3x3 행렬 안의 9개의 스칼라 좌표에 동시다발적으로 활성화함수($f$)를Projection한다고 생각을 하면 된다.)
  • 수만 개의 파라미터를 일일이 계산하는 대신, 행렬 곱을 사용하면 수만 개의 연산을 한 번에 병렬로 처리가 가능하다.

표기

수학적 표기

데이터 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