행렬미분에서는 입력과 출력의 shape을 먼저 확인한다.
| 함수 | 미분 대상 | 결과 |
|---|---|---|
| 스칼라 $f$ | 스칼라 $x$ | 도함수 |
| 스칼라 $f$ | 벡터 $x$ | 그래디언트 $\nabla_xf$ |
| 벡터 $y$ | 벡터 $x$ | 야코비안 $J$ |
| 스칼라 $f$ | 벡터 $x$를 두 번 미분 | 헤시안 $H$ |
그래디언트는 함수가 가장 빠르게 증가하는 방향이다.
$$ \nabla_x f=\begin{bmatrix}\partial f/\partial x_1&\cdots&\partial f/\partial x_n\end{bmatrix}^T $$
자주 사용하는 공식은 다음과 같다.
$$ \nabla_x(a^Tx)=a $$
$$ \nabla_x(x^TAx)=(A+A^T)x $$
$A$가 대칭이면 $\nabla_x(x^TAx)=2Ax$이다.
벡터함수 $y=f(x)$의 야코비안은 각 출력이 각 입력에 얼마나 민감한지 나타낸다.
$$ J_{ij}=\frac{\partial y_i}{\partial x_j} $$
헤시안은 그래디언트를 한 번 더 미분한 행렬이다.
$$ H_{ij}=\frac{\partial^2f}{\partial x_i\partial x_j} $$
헤시안의 고유값은 최적점 주변의 곡률을 설명한다.
합성함수 $L(y(x))$는 연쇄법칙으로 미분한다. 신경망의 역전파는 출력층에서 입력층 방향으로 국소 미분을 곱해 그래디언트를 전달하는 과정이다.
선형층 $Z=XW+b$에서 상류 그래디언트를 $G=\partial L/\partial Z$라고 하면
$$ \frac{\partial L}{\partial W}=X^TG $$