机器学习算法--梯度下降法

来源:互联网 发布:淘宝下单卖家不发货 编辑:程序博客网 时间:2024/06/05 23:52

因为项目的需要,最近学习人工神经网络方面的知识,从最基本的神经元开始,学习了基本的梯度下降。

参考了几篇牛人的博客:

http://www.cnblogs.com/ronny/p/ann_01.html

http://www.cnblogs.com/ronny/p/ann_02.html

http://www.cnblogs.com/ronny/p/ann_03.html

http://blog.chinaunix.net/uid-25267728-id-4678802.html

第一篇博客写得很详细,对本人的理解有非常大的帮助,但在阅读的过程中,对\(  \bigtriangleup w_i\)的推导不是很详细,当时没能立即理解。

事后自己有尝试推导了一遍,加深对算法的理解。




定义误差:\(  \Large E(w) = \frac{1}{2}  \sum_{d \in D}  (t_d - o_d)^2 \)

其中:\(d\)代表了一个样本实例,\(o_{d}\)表示感知器的输出,\(t_{d}\)代表我们预想的输出。


而随机梯度下降的思想是根据每个单独的训练样本来更新权值,这样我们上面的梯度公式就变成了:

\( \Large \frac {\partial E} {\partial w_i}  = \frac {1} {2} \frac{\partial (t - o) ^ 2} {\partial w_i } = -(t - o) \frac {\partial o} {\partial w_i } \)

\( \Large = -(t - o) \frac {\partial [( 1+e ^{-net}  ) ^{-1} ]  } {\partial w_i  }   \)

\( \Large = (t - o) ( 1+e ^{-net}  ) ^{-2}  \frac {\partial ( 1+e ^{-net}  )  } {\partial w_i  }   \)

\( \Large = (t - o) ( 1+e ^{-net}  ) ^{-2}  \frac {\partial e ^{-net}  } {\partial w_i  }   \)

\( \Large = (t - o) ( 1+e ^{-net}  ) ^{-2}  e ^{-net}  \frac {\partial (-net)  } {\partial w_i  }   \)

\( \Large = - (t - o) ( 1+e ^{-net}  ) ^{-2}  e ^{-net}  \frac {\partial (net)  } {\partial w_i  }   \)

\( \Large = - (t - o) ( 1+e ^{-net}  ) ^{-2}  e ^{-net} x_i   \)

\( \Large = - (t - o) o^2 e ^{-net} x_i   \)

\( \Large = - (t - o) o^2 (o^{-1} - 1) x_i   \)

\( \Large = - (t - o) o (1 - o) x_i   \)

\( \Large = (t - o) o (o - 1) x_i   \)

0 0
原创粉丝点击