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

时间:2021-07-04 20:55:12

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

动因

单隐藏层神经网络:

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

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

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

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

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

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

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

神经网络假说

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

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

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

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

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

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

神经网络学习

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

《机器学习技法》学习笔记12——神经网络
那么我们是想使用(随机)梯度下降来计算:

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

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

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

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

如果不是最后一层:

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

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

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

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

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

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

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

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

对于每一条数据我们都经过1~3的步骤,向前传播一次,再向后传播一次,这样十分耗时。mini-batch的策略,让一批数据并行的进行1~3的步骤,将各个 xl1iδlj 的平均值代入步骤4。

优化与正则化

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

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

  • L1,不好求导。
  • L2,本质上是在对原来的w根据一定比例缩小,然而原来w中大权重缩小后还是比原来小的权重大。
  • 权消去正则化:

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

  • 根据验证集的结果,早点停止迭代。

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