首页 > 编程知识 正文

NLP四十三模型调参技巧之Warmup and Decay

时间:2023-05-04 06:45:38 阅读:181901 作者:3620

Warmup and Decay是深度学习中模型调谐参数的常见trick。 本文简要介绍了如何在Warmup and Decay和keras_bert中使用。

warmup and decay是什么? Warmup and Decay是模型训练期间学习率的调整策略。

Warmup是ResNet论文中提到的学习率预热方法,在训练开始时首先选择较小的学习率使用,训练几个epoches或steps (如4个epoches,10000steps ),并预设

同样,Decay是一种学习率衰减方法,训练到一定的epoches或steps后,如线性函数或馀弦函数等指定将学习率降低到指定值。 一般来说,使用Warmup and Decay时,学习率会从小到大递减。

由于刚开始训练时会随机初始化模型的权重(weights ),因此此时选择较大的学习率可能会导致模型不稳定(振动)。 选择Warmup预热学习率方式,可以减小开始训练的几个epoches或几个steps内学习率,预热小的学习率下模型逐渐稳定,模型相对稳定后训练到某个阶段(例如如果直接使用较大的学习率,就会破坏这种稳定性。 用我们通常的话来说,接近损失函数的局部最优值点。 为了接近这个局部最佳值点,我们慢慢来。

如何在keras_bert中使用Warmup and Decay? keras_bert提供了优化程序AdamWarmup类,参数的定义如下:

classadamwarmup (keras.optimizers.optimizer ) : ' ' adamoptimizerwithwarmup.defaultparametersfollowthoseprovidedided ewilldecaylinearlytozeroindecaysteps.warmup _ steps 3360 learningratewillincreaselineer irstwarmupsteps.learning _ rate : oat,0 beta1. generallycloseto1. beta _ 2200beta1. generallycloseto1. epsilon : float=0. fuzz factor.if ` none `, defaults to `K.epsilon ` ) . weight _ decay : float=0. weight decay.weight _ decay _ pattern 3360 alistofstrings.thesubstringofweightnamestobededern lean.whethertoapplytheamsgradvariantofthisalgorithmfromthepaper ' ontheconvergenceofadadance mg dfh '.' ' ' ' def _ init min_lr=0.0,learning_rate=0.001,weight_decay_pattern=None,amsgrad=False,**kwargs ) :在此类中

Warmup预热学习率和学习率预热完成后的“衰减”(sin or exp decay )图表如下所示。

在keras_bert的官方文档中,使用Warmup and Decay的代码示例如下所示:

importnumpyasnpfromkeras _ bertimportadamwarmup, calc _ train _ steps train _ x=NP.random.standard _ normal (warmup _ steps=calc _ train _ steps (num _ exampll ) ) Warmup warmup_steps,lr=1e-3,min_lr=1e-5 ) Warmup and Decay实战笔者在文章NLP (三十四)中用keras-bert实现序列标注的任务

reduce _ lr=reducelronplateau (monitor=' val _ loss ',min_delta=0.0004,patience=2,factor=0.1,min_lr

人民日报命名实体识别数据集: micro avg F1=0.9182小时识别数据集: micro avg F1=0.8587CLUENER细粒度实体识别数据集: micro avg F1=0.7603学习率调整策略为Warmup and Decay ()

# add warmup total_steps,warmup _ steps=calc _ train _ steps (num _ example=len (input _ train ),batch_size ) optimizer=Adam warmup (total _ steps,warmup_steps,lr=1e-4,min_lr=1e-7 ) model=bertbilstmcrf ) max

人民日报命名实体识别数据集学习率调整预测1预测2预测3 avg warmup 0.92760.92170.92520.9248时间识别数据集学习率调整预测1预测2 avg warmup 0.89260.89340.88200.88200 根据Warmup0.76120.76290.76070.7616,使用Warmup and Decay可以在不同的数据集上产生不同程度的模型效果。

本项目已经开放源代码,代码地址为https://github.com/percent4/keras _ Bert _ sequence _ labeling。

正文到此结束。 谢谢您的阅读~

2021年3月27日上海浦东~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。