?
神经网络中权重 \(w^{(l)}_{ij}\) 的改变将影响到接下来的网络层,直到输出层,最终影响损失函数
?
\(\color{red}{公式推导符号说明}\)
符号 | 说明 |
---|---|
\(n_l\) | 网络层数 |
\(y_j\) | 输出层第 \(j\) 类 标签 |
\(S_l\) | 第 \(l\) 层神经元个数(不包括偏置) |
\(g(x)\) | 激活函数 |
\(w^{(l)}_{ij}\) | 第 \(l\) 层第 \(j\) 个单元与第 \(l+1\) 层第 \(i\) 个单元之间的连接参数 |
\(b^{(l)}_i\) | 第 \(l+1\) 层第 \(i\) 个单元的偏置 |
\(z^{(l)}_i\) | 第 \(l\) 层第 \(i\) 个单元的输入加权和(包含偏置) |
\(a^{(l)}_i\) | 第 \(l\) 层第 \(i\) 个单元的激活值(输出值) |
\(\delta^{(l)}_i\) | 第 \(l\) 层第 \(i\) 个单元的梯度值 |
MSE 损失函数推导
\(\color{red}{基本公式}\)
\[
\begin{align*}
z^{(l+1)}_i &= b^{(l)}_i + \sum^{S_l}_{j=1}{w^{(l)}_{ij}a^{(l)}_j} \tag{1} \ g(x) &= \frac{1}{1 + e^{-x}} \tag{2}\ a^{(l)}_i &= g(z^{(l)}_i) \tag{3} \ J(\theta) &= \frac12{{\sum^{S_{n_l}}_{j=1}\big ({y_j - a^{(n_l)}_j}}}\big)^2 \tag{4}\ \delta^{(l)}_i &=\frac{\partial{J(\theta)}}{\partial{z^{(l)}_i}} \tag{5} \ \ \end{align*}
\]
梯度反向传播公式推导
\(\color{red}{初始条件}\)
\[
\begin{align*}
\delta ^{ (n_{ l }) }_{ i }&=\frac { \partial { J(\theta ) } }{ \partial { z^{ (n_{ l }) }_{ i } } } \\
&=\frac { 1 }{ 2 } \frac { \partial { } }{ \partial { z^{ (n_{ l }) }_{ i } } } \sum _{ j=1 }^{ S_{ n_l } } \left( y_{ j }-a^{ (n_{ l }) }_{ j } \right) ^{ 2 }\\
&=\frac { 1 }{ 2 } \frac { \partial { } }{ \partial { z^{ (n_{ l }) }_{ i } } } \sum _{ j=1 }^{ S_{ n_l } } \left( y_{ j }-g(z^{ (n_{ l }) }_{ j }) \right) ^{ 2 }\\
&=\frac { 1 }{ 2 } \frac { \partial { } }{ \partial { z^{ (n_{ l }) }_{ i } } } \left( y_{ i }-g(z^{ (n_{ l }) }_{ i }) \right) ^{ 2 }\\
&=-\left( y_{ i }-a^{ (n_{ l }) }_{ i } \right) g\prime (z^{ (n_{ l }) }_{ i })\\
\end{align*}
\]
\(\color{red}{递推公式}\)
\[
\begin{align*}
\delta ^{ (l) }_{ i }&=\frac { \partial { J(\theta ) } }{ \partial { z^{ (l) }_{ i } } } \\
&=\sum _{ j=1 }^{ S_{ l+1 } } \frac { \partial { J(\theta ) } }{ \partial { z^{ (l+1) }_{ j } } } \frac { \partial { z^{ (l+1) }_{ j } } }{ \partial { a^{ (l) }_{ i } } } \frac { \partial { a^{ (l) }_{ i } } }{ \partial { z^{ (l) }_{ i } } } \\
&=\sum_{ j=1 }^{ S_{ l+1 } } \frac { \partial { J(\theta ) } }{ \partial { z^{ (l+1) }_{ j } } } \frac { \partial { } }{ \partial { a^{ (l) }_{ i } } } \left( b^{ (l) }_{ j }+\sum _{ k=1 }^{ S_{ l } } w^{ (l) }_{ jk }a^{ (l) }_{ k }) \right) \frac { \partial { a^{ (l) }_{ i } } }{ \partial { z^{ (l) }_{ i } }} \\
&=\sum_{ j=1 }^{ S_{ l+1 } } \delta ^{ (l) }_{ j } w^{ (l) }_{ ji }g\prime (z^{ (l) }_{ i }) \\
&= g\prime (z^{ (l) }_{ i }) \sum_{ j=1 }^{ S_{ l+1 } } \delta ^{ (l+1) }_{ j } w^{ (l) }_{ ji } \\
\end{align*}
\]
\(\color{red}{损失函数关于权重和偏置的导数}\)
\[
\begin{align*}
\\frac { \partial { J(\theta ) } }{ \partial { w^{ (l) }_{ ij } } } &=\frac { \partial { J(\theta ) } }{ \partial { z^{ (l+1) }_{ i } } } \frac { \partial { z^{ (l+1) }_{ i } } }{ \partial { w^{ (l) }_{ ij } } } \\
&=\delta ^{ (l+1) }_{ i }\frac { \partial { z^{ (l+1) }_{ j } } }{ \partial { w^{ (l) }_{ ij } } } \\
&=\delta ^{ (l+1) }_{ i }\frac { \partial { } }{ \partial { w^{ (l) }_{ ij } } } \left( b^{ (l) }_{ i }+\sum _{ k=1 }^{ S_{ l } } w^{ (l) }_{ ik }a^{ (l) }_{ k }) \right) \\ &=\delta ^{ (l+1) }_{ i }a^{ (l) }_{ j }\\frac { \partial { J(\theta ) } }{ \partial { b^{ (l) }_{ i } } } &=\delta ^{ (l+1) }_{ i }
\end{align*}
\]
交叉熵损失函数推导
?
\(\color{red}{递推公式}\)
\[
\begin{align*}
g(x) &= \frac{1}{1 + e^{-x}}\quad \quad 激活函数 \a^{(l)}_{i} &= g\left(z^{(l)}_{i}\right) \z^{(l)}_{i} &= \left( \sum^{S_l}_{j=1}{w^{(l-1)}_{ij}a^{(l-1)}_i} \right ) + b^{(l-1)}_i \\frac { \partial { J(\theta ) } }{ \partial { z^{ (l) }_{ i } } }
&=\sum _{ j=1 }^{ S_{ l+1 } } \frac { \partial { J(\theta ) } }{ \partial { z^{ (l+1) }_{ j } } } \frac { \partial { z^{ (l+1) }_{ j } } }{ \partial { a^{ (l) }_{ i } } } \frac { \partial { a^{ (l) }_{i} } }{ \partial { z^{ (l) }_{ i } } }\\
\end{align*}
\]
其中
\[
\begin{align*}
\frac { \partial { z^{ (l+1) }_{ j } } }{ \partial { a^{ (l) }_{ i } } } &= w^{(l)}_{kj} \\frac { \partial { a^{ (l) }_{i} } }{ \partial { z^{ (l) }_{ i } } } &= z^{ (l) }_{ i } \left(1- z^{ (l) }_{ i }\right)
\end{align*}
\]
初始条件
\[
\begin{align*}
J \left( \theta \right ) &= -\sum^{s_l}_{i=1}y^t \space \ln \space y^p \y^p_j &= \frac{e^{a^N_j}}{\sum^{s_N}_{k=1}e^{a^L_k}} \\end{align*}
\]
\[
\begin{align*}
J \left( \theta \right ) &= -\sum^{s_l}_{i=1}y^t \space \ln \space y^p \y^p_j &= \frac{e^{a^N_j}}{\sum^{s_N}_{k=1}e^{a^L_k}} \\end{align*}
\]
softmax偏导数计算
\[
\begin{align*}
\frac{\partial y^p_j}{\partial a^N_i} =
\begin{cases}
-y^p_i \space y^p_j \quad \quad \quad\quad i \ne j\y^p_i \space (1-y^p_i) \quad \quad \space i =j
\end{cases}
\end{align*}
\]
求导链式法则如下
\[
\begin{align*}
\frac { \partial { J(\theta ) } }{ \partial { z^{ (N) }_{ i } } }
&= \frac { \partial { J(\theta ) } }{ \partial { a^{ (N) }_{ i } } } \frac { { \partial { a^{ (N) }_{ i } } } }{ \partial { z^{ (N) }_{ i } } }
\\
\frac { \partial { J(\theta ) } }{ \partial { a^{ (N) }_{ i } } }
&=\sum _{ j=1 }^{ S_{ N } } \frac { \partial { J(\theta ) } }{ \partial { y^{ (p) }_{ j } } } \frac { { \partial { y^{ (p) }_{ j } } } }{ \partial { a^{ (N) }_{ i } } } \\
\frac { \partial { J(\theta ) } }{ \partial { y^{ (p) }_{ j } } } &= -\frac{y^t_j}{y^p_j}
\end{align*}
\]
由上可知:
\[
\begin{align*}
\frac { \partial { J(\theta ) } }{ \partial { a^{ (N) }_{ i } } }
&= \frac { \partial { J(\theta ) } }{ \partial { y^{ (p) }_{ i } } } \frac { { \partial { y^{ (p) }_{ i } } } }{ \partial { a^{ (N) }_{ i } } } + \sum _{ j \ne i }^{ S_{ N } } \frac { \partial { J(\theta ) } }{ \partial { y^{ (p) }_{ j } } } \frac { { \partial { y^{ (p) }_{ j } } } }{ \partial { a^{ (N) }_{ i } } }
\ &= - \frac { y_{ i }^{ t } }{ y_{ i }^{ p } } y_{ i }^{ p }\left( 1-y_{ i }^{ p } \right) +\sum _{ j\ne i }^{ s_{ N } } -\frac { y_{ j }^{ t } }{ y_{ j }^{ p } } \left(- y_{ j }^{ p }y_{ i }^{ p } \right) \&= -y_{ i }^{ t }\left( 1-y_{ i }^{ p } \right) +\sum _{ j\ne i }^{ s_{ N } } \left( y_{ j }^{ t }y_{ i }^{ p } \right) \&= -y^t_i + \sum _{ j }^{ s_{ N } } \left( y_{ j }^{ t }y_{ i }^{ p } \right) \ &=y^p_i - y^t_i
\end{align*}
\]
由此可知反向传播迭代算法的初始值
\[
\begin{align*}
\frac { \partial { J(\theta ) } }{ \partial { z^{ (N) }_{ i } } }
&= \frac { \partial { J(\theta ) } }{ \partial { a^{ (N) }_{ i } } } \frac { { \partial { a^{ (N) }_{ i } } } }{ \partial { z^{ (N) }_{ i } } }
\\
&=\left( y^p_i - y^t_i \right) \cdot z^{ (l) }_{ i } \left(1- z^{ (l) }_{ i }\right) \\end{align*}
\]
原文地址:https://www.cnblogs.com/nowgood/p/backprop2.html