弹性反向传播
来源:互联网 发布:ndcg java 编辑:程序博客网 时间:2024/05/23 14:52
弹性反向传播算法学习笔记
Resilient backppropagation
正常使用的反向传播算法有两个缺点待解决,其一为学习过程中学习率的选择较难,一旦学习率选择不当会造成学习效果不好;其二为反向传播算法的梯度弥散作用,即距离输出层越远的神经元学习的速度越慢。
Martin Riedmiller也因此提出了弹性反向传播算法(Rprop)
1、学习率
反向传播算法中的学习率为用户提前设定的固定的η,并在整个网络中使用单一的η,因此就会出现学习率选择的问题,而在Rprop中,每一个可优化的权重都对应着一个单独的η,不同的权重的学习率不同,并且这些学习率并不是由用户指定,而是由程序自动的设定,这些学习率在程序执行过程中也并不是静态不变的,而是每一个学习时间点学习率都在不断地更新,即
2、权重的更新
在一般的反向传播算法中,学习过程中权重的改变量是由误差函数对该权重的偏导(即梯度)所决定,直观上很有道理,However,We incorporate every jagged feature of the error surface,It is at least questionable.这句看不懂,总之有问题就是了啦啦啦
而在Rprop中,权重的变化量直接等于学习率,因此误差函数的梯度并不影响权重的变化值,在Rprop中梯度仅仅影响权重变化值的符号,即影响权重变化的方向。
3、算法细节
综上,我们已经知道了训练过程中权重的改变量直接等于每个权重对应的学习率,而权重的改变量的符号则取决于误差函数的梯度的符号,误差函数得梯度只决定权值更新的方向,不决定权值更新的强度,如果误差函数的梯度为正,则我们就需要降低相应的权重,可以使减去,如果梯度为负数,则就应该增大相应的权重来使误差函数逼近最小值,如下式所示:
至此已经明确了权重如何更新,接下来说明一下学习率如何更新。
此时首先应当考虑一下如何t和(t-1)两个时间点的梯度的符号会如何变化,总共有两种情况。
如果(t-1)和t两个时间点误差函数的梯度符号不同,说明在t时我们已经越过了最小值,说明上一次权值的更新步跨太大,则就应当比更小来使得对于最低值的搜索更加精确,在数学层面上,我们使上一步的学习率和一个大于0小于1的值相乘来得到当前的学习率。然而,当两次的符号相同,说明还未到达误差函数的最低点,可以使相应的学习率增加一些来加快学习的步伐,因此我们可以使上一步的学习率乘以一个大于一的来得到当前的学习率。
如下式所示:
- 弹性反向传播
- 弹性反向传播(RProp)和均方根反向传播(RMSProp)
- 反向传播
- 反向传播
- 反向传播
- 反向传播
- 反向传播网络实现
- 反向传播BP算法
- BP反向传播算法
- [BP]反向传播
- 反向传播BP算法
- 反向传播BP算法
- 反向传播BP算法
- 反向传播算法
- 反向传播算法
- 反向传播神经网络 BPNN
- 神经网络-反向传播算法
- 5.3 误差反向传播
- jqgrid实现客户端导出Excel、txt、word、json等数据格式的文件
- 每天一个 Linux 命令(38):cal 命令
- 『ORACLE』 数据库quiesce模式(11g)
- 代码片1
- scrollowview 嵌套gridview回到顶部最完美解决
- 弹性反向传播
- C++之函数的默认值参数说明
- (服务端)极光推送根据别名和分组名进行推送
- 似然函数 极大似然估计
- bzoj 1455 罗马游戏
- linux驱动开发之字符设备--内核和用户空间数据的交换(sysfs)
- oracle之表空间到用户创建删除
- xml
- [BZOJ1048][HAOI2007]分割矩阵 记忆化搜索