개요
역전파를 계산하기 위해서는 함수 $y=f(x)$에 대해 $\partial L/\partial y$가 주어질 때 $\partial L/\partial x$를 계산할 수 있어야 합니다. 미분의 연쇄법칙을 사용하면 다음과 같이 유도할 수 있습니다.
\[ \frac{\partial L}{\partial x} = \frac{\partial y}{\partial x} \frac{\partial L}{\partial y} \]
또는 $x$와 $y$가 벡터인 경우에는
\[ \frac{\partial L}{\partial x_i} = \sum_{j} \frac{\partial y_j}{\partial x_i} \frac{\partial L}{\partial y_j} \]
이 글에서는 다양한 함수에 대해 위와 같은 역전파 공식을 유도해보겠습니다.
Softmax
\[ y_i = \frac{e^{x_i}}{\sum_{k} e^{x_k}} \]
\begin{align*}
\frac{\partial L}{\partial x_i} &= \sum_{j} \frac{\partial y_j}{\partial x_i} \frac{\partial L}{\partial y_j} \\
&= \sum_{j} \frac{\partial}{\partial x_i} \left( \frac{e^{x_j}}{\sum_{k} e^{x_k}} \right) \frac{\partial L}{\partial y_j} \\
&= \sum_{j} \left[ \frac{1}{\sum_{k} e^{x^k}} \frac{\partial e^{x_j}}{\partial x_i} - \frac{e^{x_j}}{\left(\sum_{k} e^{x_k}\right)^2} \frac{\partial}{\partial x_i} \left( \sum_{k} e^{x_k} \right) \right] \frac{\partial L}{\partial y_j} \\
&= \sum_{j} \left[ \frac{e^{x_j}}{\sum_{k} e^{x^k}} \delta_{ij} - \frac{e^{x_i} e^{x_j}}{\left(\sum_{k} e^{x_k}\right)^2} \right] \frac{\partial L}{\partial y_j} \\
&= \sum_{j} (y_i \delta_{ij} - y_i y_j) \frac{\partial L}{\partial y_j} \\
&= y_i \left( \frac{\partial L}{\partial y_i} - \sum_{j} y_j \frac{\partial L}{\partial y_j} \right)
\end{align*}
Layer Normalization
정규화되지 않는 차원들을 인덱스 $i$로 묶고, 정규화되는 차원들을 인덱스 $j$로 묶으면 다음과 같이 표현할 수 있습니다.
\[ y_{ij} = \frac{x_{ij} - \mu_i}{\sqrt{\sigma_i^2 + \epsilon}} \gamma_j + \beta_j \]
여기서 $\mu_i$와 $\sigma_i^2$은 각각 평균과 분산으로, 다음과 같이 계산됩니다. $N$은 정규화되는 차원들의 원소 개수입니다.
\begin{align*}
\mu_i &= \frac{1}{N} \sum_{k} x_{ik} \\
\sigma^2 &= \frac{1}{N} \sum_{k} (x_{ik} - \mu_i)^2
\end{align*}
이때 $x_{ij}$에 대한 각각의 미분은
\begin{align*}
\frac{\partial \mu_i}{\partial x_{ij}} &= \frac{1}{N} \frac{\partial}{\partial x_{ij}} \sum_{k} x_{ik} \\
&= \frac{1}{N} \\
\frac{\partial \sigma_i^2}{\partial x_{ij}} &= \frac{1}{N} \frac{\partial}{\partial x_{ij}} \sum_{k} (x_{ik} - \mu_i)^2 \\
&= \frac{2}{N} \sum_{k} (x_{ik} - \mu_i) \frac{\partial}{\partial x_{ij}} (x_{ik} - \mu_i) \\
&= \frac{2}{N} \sum_{k} (x_{ik} - \mu_i) \left( \delta_{jk} - \frac{1}{N} \right) \\
&= \frac{2}{N} \left[ (x_{ij} - \mu_i) - \frac{1}{N} \sum_{k}(x_{ik} - \mu_i) \right] \\
&= \frac{2}{N} (x_{ij} - \mu_i)
\end{align*}
따라서 $x_{ij}$에 대한 역전파 공식은 다음과 같습니다.
\begin{align*}
\frac{\partial L}{\partial x_{ij}} &= \sum_{k} \frac{\partial y_{ik}}{\partial x_{ij}} \frac{\partial L}{\partial y_{ik}} \\
&= \sum_{k} \gamma_k \left[ \frac{1}{\sqrt{\sigma_i^2 + \epsilon}} \frac{\partial (x_{ik} - \mu_i)}{\partial x_{ij}} - \frac{x_{ik} - \mu_i}{2\sqrt{\sigma_i^2 + \epsilon}^3} \frac{\partial (\sigma_i^2 + \epsilon)}{\partial x_{ij}} \right] \frac{\partial L}{\partial y_{ik}} \\
&= \sum_{k} \gamma_k \left[ \frac{\delta_{jk} - 1/N}{\sqrt{\sigma_i^2 + \epsilon}} - \frac{(x_{ij} - \mu_i)(x_{ik} - \mu_i)}{N\sqrt{\sigma_i^2 + \epsilon}^3} \right] \frac{\partial L}{\partial y_{ik}} \\
&= \frac{1}{N\sqrt{\sigma_i^2 + \epsilon}} \sum_{k} \gamma_{k} \left( N\delta_{jk} - 1 - \frac{x_{ij} - \mu_i}{\sqrt{\sigma_i^2 + \epsilon}} \frac{x_{ik} - \mu_i}{\sqrt{\sigma_i^2 + \epsilon}} \right) \frac{\partial L}{\partial y_{ik}}
\end{align*}
편의상 $z_{ij} = (x_{ij} - \mu_i) / \sqrt{\sigma_i^2 + \epsilon}$로 두면
\begin{align*}
\frac{\partial L}{\partial x_{ij}} &= \frac{1}{N\sqrt{\sigma_i^2 + \epsilon}} \sum_{k} \gamma_k (N\delta_{jk} - 1 - z_{ij} z_{ik}) \frac{\partial L}{\partial y_{ik}} \\
&= \frac{1}{N\sqrt{\sigma_i^2 + \epsilon}} \left( N \gamma_j \frac{\partial L}{\partial y_{ij}} - \sum_{k} \gamma_k \frac{\partial L}{\partial y_{ik}} - z_{ij} \sum_{k} \gamma_k z_{ik} \frac{\partial L}{\partial y_{ik}} \right)
\end{align*}
한편 $\gamma_j$와 $\beta_j$에 대한 역전파 공식은
\begin{align*}
\frac{\partial L}{\partial \gamma_j} &= \sum_{i} z_{ij} \frac{\partial L}{\partial y_{ij}} \\
\frac{\partial L}{\partial \beta_j} &= \sum_{i} \frac{\partial L}{\partial y_{ij}}
\end{align*}