弹性反向传播

来源:互联网 发布:ndcg java 编辑:程序博客网 时间:2024/05/23 14:52

弹性反向传播算法学习笔记

Resilient backppropagation

正常使用的反向传播算法有两个缺点待解决,其一为学习过程中学习率的选择较难,一旦学习率选择不当会造成学习效果不好;其二为反向传播算法的梯度弥散作用,即距离输出层越远的神经元学习的速度越慢。
Martin Riedmiller也因此提出了弹性反向传播算法(Rprop)

1、学习率

反向传播算法中的学习率为用户提前设定的固定的η,并在整个网络中使用单一的η,因此就会出现学习率选择的问题,而在Rprop中,每一个可优化的权重都对应着一个单独的η,不同的权重的学习率不同,并且这些学习率并不是由用户指定,而是由程序自动的设定,这些学习率在程序执行过程中也并不是静态不变的,而是每一个学习时间点学习率都在不断地更新,即enter image description here

2、权重的更新

在一般的反向传播算法中,学习过程中权重的改变量是由误差函数对该权重的偏导(即梯度)所决定,直观上很有道理,However,We incorporate every jagged feature of the error surface,It is at least questionable.这句看不懂,总之有问题就是了啦啦啦而在Rprop中,权重的变化量enter image description here直接等于学习率enter image description here,因此误差函数的梯度并不影响权重的变化值,在Rprop中梯度仅仅影响权重变化值的符号,即影响权重变化的方向。

3、算法细节

综上,我们已经知道了训练过程中权重的改变量直接等于每个权重对应的学习率,而权重的改变量的符号则取决于误差函数的梯度的符号,误差函数得梯度只决定权值更新的方向,不决定权值更新的强度,如果误差函数的梯度为正,则我们就需要降低相应的权重,可以使减去enter image description here,如果梯度为负数,则就应该增大相应的权重来使误差函数逼近最小值,如下式所示:

至此已经明确了权重如何更新,接下来说明一下学习率enter image description here如何更新。
此时首先应当考虑一下如何t和(t-1)两个时间点的梯度的符号会如何变化,总共有两种情况。
如果(t-1)和t两个时间点误差函数的梯度符号不同,说明在t时我们已经越过了最小值,说明上一次权值的更新步跨太大,则enter image description here就应当比更小来使得对于最低值的搜索更加精确,在数学层面上,我们使上一步的学习率和一个大于0小于1的值相乘来得到当前的学习率。然而,当两次的符号相同,说明还未到达误差函数的最低点,可以使相应的学习率增加一些来加快学习的步伐,因此我们可以使上一步的学习率乘以一个大于一的来得到当前的学习率。
如下式所示:

原创粉丝点击