深度学习过程反向传播有关sigmoid的求导

2018-11-07  本文已影响0人  在做算法的巨巨

在深度学习的反向传播过程中,我们需要对激活函数进行求偏导,这里写一点如果激活函数是sigmoid函数时的推导过程。

Flow chart(Forward propagation)

input --> w_i --> h_i --> y_i=sigmoid(h_i) --> Error=\frac{1}{m}\sum^{m}_{i=1}(y_i-t_i)^2

Flow chart(Backward propagation)

output <-- w_i <--------------------------- \frac{\delta Error}{\delta w}

在经历一次前向传播后,我们会得到一个输出yi,同时我们回得到一个MSE作为与我们目标的误差反馈。深度学习中我们会对误差进行w的偏导,然后对w进行更新,这个步骤和梯度下降法的参数更新是一个原理。

\frac{\delta Error}{\delta w_i} = \frac{\delta Error}{\delta y_i} * \frac{\delta y_i}{\delta h_i} * \frac{\delta h_i}{\delta w}

其中,

\frac{\delta Error}{\delta y_i} = \frac{2}{m}(y_i - t_i)

\frac{\delta y_i}{\delta h_i} = \frac{\delta (\frac{1}{1+e^{-h_i}})}{\delta h_i} = \frac{e^{-h_i}}{(1+e^{-h_i})^2} = \frac{1+e^{-h_i}-1}{(1+e^{-h_i})^2} = \frac{1}{1+e^{-h_i}} - \frac{1}{(1+e^{-h_i})^2}

这里,y_i = sigmoid(h_i) = \frac{1}{1+e^{-h_i}}

所以,\frac{\delta y_i}{\delta h_i} = y_i - y_{i}^{2} = y_i(1-y_i)

h_i = b+\sum_{i=1}^{m}w_i*x_i
\frac{\delta h_i}{\delta w} = x_i

综上,\frac{\delta Error}{\delta w_i} = \frac{2}{m}(y_i - t_i)*y_i(1-y_i)*x_i

最后更新w_i, w_i = w_i - \alpha \frac{\delta Error}{\delta w_i}, \alpha是学习率。

上一篇下一篇

猜你喜欢

热点阅读