小白学习机器学习---第五章:神经网络

1. BP算法分析

如下图所示BP网络:

这里写图片描述

对样本 a = (x_k,y_k),其输出为 ^y_k,即是:

这里写图片描述

由此得出在样本 a 上的均方误差:

这里写图片描述

我们的目标是使所有样本得出的均方误差最小化,为此我们要找到最优的参数(即上图中的连接权(w, v)及对应阈值(θ, γ))。考虑梯度下降法。比如对于 w = w+Δw,梯度下降法调整式为:

这里写图片描述

式中,η 是学习率,他控制着算法迭代步长,直接关系着算法的收敛速度甚至收敛性。

对于图示BP网络,我们注意到Whj先影响到第j个输出层神经元的输入值βj,再影响到其输出值,最后影响到.

因此由链式求导法则可以写出下面的式子:

扫描二维码关注公众号,回复: 912009 查看本文章

这里写图片描述

其中,根据  (是隐层第h个神经元的输出):

这里写图片描述

当采用Sigmoid函数作为每个神经元的激活函数是,可以根据其导数性质:

这里写图片描述

由(5.3)与(5.4)有:

这里写图片描述

(只是单纯的将后面那两个求导式子的乘积令成Gj,方便书写)

于是将(5.10)和(5.8)代入(5.7)中,再代入(5.6)中,得出BP算法关于参数 w 的更新公式:

这里写图片描述

同样的方式可以推导出其他参数的更新公式,综上,可以得出BP算法中参数的更新公式如下:

这里写图片描述

其中:

这里写图片描述

经过上面的推导,给出标准BP算法如下图所示:

Algorithm 1. 标准BP算法
----
    输入: 训练集 D,学习率 η.
    过程: 
        1. 在(0,1)内随机初始化网络中所有权与阈值.
        2. Repeat:
        3.   for x_k,y_k in D:
        4.     根据当前参数和(5.3)计算出当前样本输出.
        5.     根据公式(5.10)计算出层神经元的梯度项 .
        6.     根据公式(5.15)计算出隐层神经元的梯度项 .
        7.     根据(5.11)~(5.14)更新,与阀值,
        8.    end for
        9. until 达到停止条件
    输出:(ω,θ) - 即相应的多层前馈神经网络.
----

学习率 控制着算法每一轮迭代中的更新步长,有时为了做精确调整,可令(5.11)与(5.12)里的学习率和(5.13)与(5.14)中的学习率不同。
需注意:BP算法的目标是要最小化训练集D上的累积误差:

---------------------------------①

正是由于其强大的表示能力,BP神经网络经常遭遇过拟合,其训练误差持续降低,但测试误差却可能上升,有两种策略常用来缓解BP网络的过拟合。

1.早停(early stopping):将数据分成训练集和验证集,训练集用来计算梯度,更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。


2.正则化(regularization):基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权与阈值的平方和,仍令Ek表示第K个训练样例上的误差,Wi表示连接权和阈值,则误差目标函数由①改变为

其中λ∈(0,1)用于对经验误差与网络复杂度进行折中,常通过交叉验证法来估计

(增加连接权与阈值的平方和这一项后,训练过程将会偏好比较小的连接权和阈值,使网络输出更加光滑,从而对过拟合有所缓解)

(摘自西瓜书,暂时看不懂。。。。我真是白痴)


下一节给出实现的3层神经网络代码~~~~
---------------------------------------------------------------------------------------------------


猜你喜欢

转载自blog.csdn.net/hx14301009/article/details/79742440