互联网科技程序员机器学习与数据挖掘

《机器学习技法》学习笔记12——神经网络

2017-08-30  本文已影响91人  033a1d1f0c58

http://blog.csdn.net/u011239443/article/details/76680704

动因

单隐藏层神经网络:

单隐藏层神经网络做“与”运算:

但是单隐藏层神经网无法做异或运算:

可以看到上面最右边的图,就算是映射到高维的空间中,依旧是线性不可分的。我们可以使用多层的神经网络来解决这个问题:

神经网络假说

神经网络基本上的模型为:

由于阶梯函数不好求导优化;整个网络的激活函数都是线性函数的话,和只使用一个线性函数没太多的区别;所以我们更多使用S形函数,这里使用双曲正切函数,写作tanh:

我的可以得到新的基本模型:

神经网络学习

我们学习的目标的:学习到各层之间的w,使得最终输出的误差最小。记误差为:


那么我们是想使用(随机)梯度下降来计算:

我们先来看下对于最后一层w该如何计算:

如果不是最后一层:

如何计算δ呢?我们先来想想s和e的关系:

于是,我们由链式求导可以得到以下递推的公式:

这样一来我们就可以从最后一层开始计算得到前一层,一直到第一层。这就是著名的“反向传播”:

对于每一条数据我们都经过13的步骤,向前传播一次,再向后传播一次,这样十分耗时。`mini-batch`的策略,让一批数据并行的进行13的步骤,将各个$x_i{l−1}δ_jl$的平均值代入步骤4。

优化与正则化

我们知道随机梯度下降/梯度下降我们只能找到局部的最优解。所以神经网络模型的效果,对于w的初始化十分敏感。过大的w值会使得在S函数上的变化变得很小,导致梯度消失。建议对w进行随机的小数值取值。

复杂的神经网络会产生过拟合,需要引入正则化:

这里写图片描述
上一篇下一篇

猜你喜欢

热点阅读