[Deep Learning - 딥러닝]수학 배경 지식(벡터, 행렬, 연쇄법칙, 합성함수, 미분, 기울기)
이번 포스팅은 딥러닝을 이해하기 위해 선행학습으로 수학 내용을 정리했습니다. 수학에 대한 깊이 있는 내용 보다는 간단한 정의 위주로 정리했으며, 깊은 내용은 타 사이트를 참고 바랍니다.
Vector and Matrix: 벡터와 행렬
벡터는 크기와 방향을 가진 양입니다. 벡터는 숫자가 일렬로 늘어선 집합으로 표현할 수 있으며, 파이썬에서 1차원 배열로 numpy.array()함수를 이용해 처리할 수 있습니다.
행렬은 숫자가 2차원 형태(사각형 형상)로 파이썬에서 numpy.array()함수를 이용해 처리할 수 있습니다.
Dot product: 벡터의 내적
벡터의 내적은 두 벡터에서 대응하는 원소들의 곱을 모두 더한 것입니다. 벡터의 내적의 수식은 다음과 같습니다.
벡터의 내적은 ‘두 벡터가 얼마나 같은 방향으로 향하고 있는가’를 나타냅니다. 벡터의 길이가 1일 때 같은 방향이면 두 벡터의 내적은 1이 되고, 반대 방향일 경우 벡터의 내적은 -1이 됩니다.
Matrix Multiplication: 행렬의 곱
결과 값 1행 1열은 A행렬 1행과 B행렬 1열의 연산한 결과입니다. 그리고 A행렬의 열과 B행렬의 행의 크기가 같아야 행렬의 곱이 수행됩니다. 또한 결과는 A행렬의 행과 B행렬의 열의 크기로 됩니다.
Derivative and slope: 미분과 기울기
신경망 학습의 목표는 손실을 최소화하는 매개변수를 찾는 것입니다. 이때 손실(비용) 함수를 미분하여 기울기를 이용해 최소화하는 매개변수를 찾습니다.
독립변수가 하나일 경우, 즉 x라는 변수 하나에 대해 미분의 수식은 다음과 같습니다.
함수 f(x)에 대해서 x의 변화량에 대한 y의 변화량을 뜻하며, x가 한없이 작아질 경우 비용함수 그래프에 한 점에 가까워 지고, 이는 그래프의 기울기가 됩니다.
이번에는 여러 개의 변수(다변수)에 대한 수식입니다.
- 비용함수 그래프 L은 스칼라
- x는 벡터이며 함수 L=f(x)
- xi는 x의 i번째 원소를(차원) 의미하며 xi에 대한 L의 미분을 의미함
이처럼 벡터의 각 원소에 대한 미분을 정리한 것이 기울기(gradient)입니다. 벡터와 마찬가지로 행렬에서도 기울기를 적용할 수 있습니다. W가 m*n 행렬이면, L=g(W) 함수의 기울기는 다음과 같습니다(L의 W에 대한 기울기).
W의 형상과(m*n)과 기울기의 형상은(m*n)으로 같습니다. 이 성질은 매개변수 갱신과 연쇄 법칙에 이용됩니다.
Chain Rule: 연쇄 법칙
연쇄 법칙은 비용 함수의 결과로 얻은 오차를 기반으로 가중치를 조정하는 오차역전파(back propagation)을 이해하기 위한 사전 내용입니다.
신경망의 각 계층마다 미분을 하는 변수가 다릅니다. 이를 위해서는 사용되는 법칙이 연쇄 법칙 입니다.
연쇄 법칙이란 합성함수로 수식은 다음과 같습니다.
연쇄법칙을 이용해 x에 대한 z의 미분은 y=f(x)의 미분과 z=g(y)의 미분을 곱하면 구할 수 있습니다.
계산 그래프 및 편 미분
계산 그래프에서는 연산을 노드로 나타내고 그 처리 결과가 순서대로 흐릅니다. 이것이 계산 그래프의 순전파입니다. 계산 그래프를 이용하면 계산을 시각적으로 파악할 수 있습니다.
기울기는 순전파와 반대 방향으로 전파되며, 이 전파가 역전파입니다. 이 역전파는 정답과 비교하여 오차인 L(Loss)를 반환하고 이 그래프에 대해 각 변수에 대해 편미분을 수행하여 기울기를 구합니다.
덧셈노드
곱셈노드
분기노드
MatMul 노드
글이 도움되셨다면 공감 부탁 드립니다.
감사합니다.
[Reference]
밑바닥부터 딥러닝2