深度学习优化策略

 

指数移动平均

指数移动平均(Exponential Moving Average, EMA)也叫权重移动平均(Weighted Moving Average),是一种权重的平均方法,该可以方法给予近期数据更高的权重

定义

EMA:vt=βvt1+(1β)θt

其中,vt1t1时刻的影子权重,是此前时刻的平均值,θt为当前时刻的权重,β为权值,一般取值范围在0.90.999

 

本质

当前时刻的权重可以近似认为是之前梯度和,即

(1)θt=θ0in1gi

那么EMA的影子权重可以表示为

(2)vn=θ0i=0n1(1βni)gi

可以看做是对每次的梯度加权,将学习率动态的减小

动态学习率

Pytorch中的自带的OneCycleLR可以动态的设置学习率,其使用方法较为简单,只需在现有的代码中加入两行代码即可实现。

首先,使用OneCycleLR在定义优化器后定义lr_scheduler

其中,函数的参数有:

其次,在原代码梯度反传后更新学习率

同时,可以通过optimizer.param_groups[0]['lr']获取训练过程中的学习率