2017년 5월 19일 금요일

Backpropagation

Backpropagation

$$L = -\sum_j y_j \log p_j, \\
p_j = \frac{e^{o_j}}{\sum_k e^{o_k}},$$ where $o$ is a vector.
$$\frac{\partial p_j}{\partial o_i} = p_i(1 - p_i),\quad i = j$$
and
$$ \frac{\partial p_j}{\partial o_i} = -p_i p_j,\quad i \neq j.$$
$$ \begin{eqnarray*}
\frac{\partial L}{\partial o_i} &=& -\sum_ky_k\frac{\partial \log p_k}{\partial o_i}=-\sum_ky_k\frac{1}{p_k}\frac{\partial p_k}{\partial o_i}\\
&=&-y_i(1-p_i)-\sum_{k\neq i}y_k\frac{1}{p_k}({{-p_kp_i}})\\
&=&-y_i(1-p_i)+\sum_{k\neq i}y_k({{p_i}})\\
&=&-y_i+y_ip_i+\sum_{k\neq i}y_k({p_i})\\
&=&p_i\left(\sum_ky_k\right)-y_i\\
&=&p_i-y_i
\end{eqnarray*} $$

또는 다음과 같이 표현되기도 함.
$$ \frac{\partial L_i }{ \partial f_k } = p_k - \mathbb{1}(y_i = k) $$
(즉, 정확한 라벨(k)에 대한 score 값에 대해서, 해당 도출된 확률($p_k$)의 역을 이용해서 gradient가 표시되며, 이는 loss를 줄일 수 있는 방향을 나타낸다는 직관적인 해석 가능.)
$$ \frac{dy}{dx}= y(1-y) $$
  • CS231n에서 나온 binary logistic regression classifier의 log likelihood 관련 loss function에 대한 derivative 계산
$$ L_i = \sum_j y_{ij} \log(\sigma(f_j)) + (1 - y_{ij}) \log(1 - \sigma(f_j)), $$ where $\sigma(\cdot)$ is the sigmoid function.

$$ \begin{eqnarray*}
L_i &=& \sum_j y_{ij} \log(\frac{1}{1+e^{-f_j}}) + (1 - y_{ij}) \log(1 - \frac{1}{1+e^{-f_j}})\\
&=& \sum_j (-1)y_{ij} \log(1+e^{-f_j}) + (1 - y_{ij})(\log(e^{-f_j}) - \log(1+e^{-f_j}))\\
&=& \sum_j (-1)y_{ij} \log(1+e^{-f_j}) + (1 - y_{ij})(-f_j) + (y_{ij} -1)\log(1+e^{-f_j}))\\
&=& \sum_j f_j(y_{ij}-1) + (-1)\log(1+e^{-f_j}))\\
&=& \sum_j f_jy_{ij} + (-1)(f_j+\log(1+e^{-f_j}))\\
&=& \sum_j f_jy_{ij} + (-1)\log(e^{f_j}+1)
\end{eqnarray*} $$
Therefore,
$$ \begin{eqnarray*}
\frac{\partial L_i}{\partial f_j} &=& \sum_j y_{ij} + (-1)\frac{1}{e^{f_j}+1}(e^{f_j})\\
&=&\sum_j y_{ij} + (-1)\frac{1}{1 + \frac{1}{e^{f_j}}}\\
&=& \sum_j y_{ij} + (-1)\frac{1}{1 + e^{-f_j}} \\
&=& \sum_j y_{ij} - \sigma(f_j)
\end{eqnarray*} $$

댓글 없음:

댓글 쓰기