实验不同的学习速率

转于:https://blog.csdn.net/lqfarmer/article/details/77689148

实验不同的学习速率


学习速率是控制更新步长大小的超参数。随着学习速率的增加,振荡次数也在增加。如图2所示,随着学习速率的增加,存在很多混乱或随机噪声。图2中的所有曲线都是针对MNIST数据集训练,采用单层神经网络。

我们可以从图中推断,高学习速率更有可能使整个模型爆炸,导致数值更新不稳定,如上溢或下溢,这也是运行这些实验时,得到的一些经验性的结果。事实上,NAN在第一个epoch之后就会出现这种情况。

图2. 不同学习速率下,loss per epoch。资料来源:Siddha Ganju。

图2显示不同学习速率下,loss per epoch的曲线。比较两种不同的损失函数,即交叉熵和分类误差。这些图显示,在较低的学习速率下,提升(improvement)是线性的(学习速率.01)。当学习速率较高时,几乎可以看到指数级跳跃(学习速率1和.5)。更高的学习速率能够使损失衰减地更快,但缺点是较的jump,可能会使模型训练陷入局部极小值,然后陷入更差的损失函数值。

这种现象经常被看作是在图中的振荡,表明所学习的参数主要是弹跳,不能稳定,使梯度朝着全局最小方向前进。如果验证曲线紧跟训练曲线变换,则网络是正确训练。然而,验证和训练曲线之间的差距比较大,表明网络在训练集上过度拟合(学习速率.01)。可以通过使用dropout或其他正则化技术来减少过度拟合的出现的几率。

对每个连接使用单独的自适应的学习速率


       具有多个层的网络是常见的。每个层都有不同的输出或输入数量,这会导致冲击效应,这一效应是由于同时更新一个单元(unit)的输入权重产生,这一更新的目的旨在纠正相同错误(如全局学习速率的情况)。另外,梯度的幅值对于不同的层也是不同的,特别是如果初始权重很小(始终是初始化的情况)。因此,针对不同的权重值,合适的学习速率可能存在很大的差异。

       这个问题的一个解决方案是设置全局学习速率,并将其乘以一个局部增益,这个关于每个权重的局部增益凭经验确定。为了强化网络的性能,收益应处于在合理的预定范围内。当使用独立的自适应学习速率时,应将整个批次用于学习,或者应使用更大的batch size,以确保梯度符号的变化并不是主要是由于小批量的抽样误差或随机波动导致。这写per-weight自适应学习速率也可以与动量相结合。(有关更多信息,请参见第6b节,神经网络,Coursera。)

迁移学习的学习速率


       迁移学习旨在修改现有的预训练模型以供另一应用使用。这种模型的重用是必要的,因为用于训练目的的相当大的数据集在应用程序域中相对较少。微调(Fine-tuning)是一种迁移学习方式,网络的一部分被修改,比如,网络的最后一层被修改以得到特性的应用的输出,等等。还有其他类型的迁移学习方法

       由于网络被预先训练,网络已经获得了大部分需要的信息,因此微调所需的时间要少得多,而且只能在微调阶段来提纯(refine)知识。

       微调时,我们降低整体学习速率,同时提高切片(最后一层或新层)的学习速率。例如,在开源Caffe框架中,base_lr应该在求解器prototxt中减少,而对于新引入的层,lr_mult应该增加。这有助于实现整体模型的缓慢变化,同时,在新的层中使用新的数据,不会导致剧烈的变化。经验法则是使学习过的层的学习速率保持在比其他静态层(全局学习速率)小至少10倍以上。(静态层是指?不是指未修改的网络部分吗)
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值