【NLP_模型超参数浅析】learing_rate
发布日期:2021-06-29 02:15:46 浏览次数:2 分类:技术文章

本文共 1478 字,大约阅读时间需要 4 分钟。

参数与超参数

首先,科普一下参数与超参数的区别。

  • 参数:模型可以自动学习出的变量,如深度学习模型的权重,偏差等。
  • 超参数:根据经验确定的参数,超参数不同,模型不同。如深度学习模型的学习速率,迭代次数,层数,每层神经元的个数等。

问题及解决

  • 问题:训练过程中,模型recall为持续0,precision持续为1。
  • 可能的解决方法:调整参数值,其中,包括学习率。

在中,超参数设置如下:

maxlen = 256epochs = 1000batch_size = 16bert_layers = 12learing_rate = 1e-5 # bert_layers越小,学习率应该要越大crf_lr_multiplier = 0.1  # CRF层的学习率,必要时扩大,如1000
  • 注意:这里的“learing_rate” 指bert层的学习率,而“crf_lr_multiplier”指crf层的学习率,具体见 你的CRF层的学习率可能不够大

对于上文中一例:经过多次实验,发现 CRF 层的学习率为主体学习率的 100 倍以上时,转移矩阵开始变得合理起来(BERT 主体学习率为0.00001、CRF 层的学习率为0.01,即 1000 倍)。


浅析learing_rate

  • 学习率

用于控制梯度下降中参数更新的幅度(速度)

学习率过小,能保证收敛性,但会大大降低模型的优化速度,需要更多轮的迭代才能达到比较理想的优化效果。

如果幅度过大,可能导致参数的“摆动”特性。

为了更好地设置学习率,可以逐步减小已经设置好的学习率。

 深度学习入门--学习率的独立设置

  • 初始学习率

初始学习率:一个比较笨的方法就是从0.0001开始尝试,然后用0.001,每个量级的学习率都去跑一下网络,然后观察一下loss的情况,选择一个相对合理的学习率,但是这种方法太耗时间了,能不能有一个更简单有效的办法呢?—— 如何找到最优学习率? 

从自己和其他人一般的经验来看,学习率可以设置为3、1、0.5、0.1、0.05、0.01、0.005,0.005、0.0001、0.00001具体需结合实际情况对比判断,小的学习率收敛慢,但能将loss值降到更低

https://www.bilibili.com/read/cv6788702/ 学习率的调整方法

  • 不断调整学习率

学习率的选择策略在网络的训练过程中是不断在变化的,在刚开始的时候,参数比较随机,所以我们应该选择相对较大的学习率,这样loss下降更快;

当训练一段时间之后,参数的更新就应该有更小的幅度,所以学习率一般会做衰减,衰减的方式也非常多,比如到一定的步数将学习率乘上0.1,也有指数衰减等。

训练全过程并不是使用一个固定值的学习速度,而是随着时间的推移让学习率动态变化。刚开始训练时,离下山地点的最优值还很远,可使用较大的学习率下得快一点,当快接近最优值时为避免跨过最优值,下山速度要放缓,即应使用较小学习率训练,具体情况下因为我们也不知道训练时的最优值,所以具体的解决办法是:在每次迭代后,使用估计的模型的参数来查看误差函数的值,如果相对于上一次迭代,错误率减少了,就可以增大学习率如果相对于上一次迭代,错误率增大了,那么应该重新设置上一轮迭代的值,并且减少学习率到之前的50%。因此,这是一种学习率自适应调节的方法。在Caffe、Tensorflow等深度学习框架中都有很简单直接的学习率动态变化设置方法。

https://www.bilibili.com/read/cv6788702/ 学习率的调整方法

 

 

 

转载地址:https://blog.csdn.net/YWP_2016/article/details/115460750 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【Python_环境配置】Pycharm创建虚拟环境
下一篇:【NLP_模型超参数浅析】batchsize

发表评论

最新留言

不错!
[***.144.177.141]2024年04月22日 04时02分55秒