热重启的随机梯度下降

看了CSDN的一些博客感觉讲的都不是很清晰,这里简单分析一下:
首先基于热重启的学习率衰减策略可以说是余弦退火衰减策略的进化。余弦退火学习率衰减策略在整个训练过程持续衰减直到学习率为0,那么当损失函数的值陷入局部最优值的时候,越来越小的学习率显然难以跳出局部最优值。而热重启很好地解决了这个问题,先摆上公式和图像:
在这里插入图片描述
在这里插入图片描述
首先利用大白话讲一下为什么叫“热重启”,“重启”指的是每间隔 T i T_i Ti次迭代学习率重启一次,并且每次重启后的状态与之前相同(就好比电脑重启一个道理,暂且我们认定电脑只含有一个操作系统,电脑在运行状态后重新启动是windows系统重启后还是windows,不可能原来是windows系统重启后变为Linux),“热”指的是学习率重启后模型参数仍然是前一次运行状态下更新得到的参数。这样分析就很好理解该方法的原理了,那么 η m i n \eta_{min} ηmin指的是每个运行状态下学习率所能衰减到的最小值, η m a x \eta_{max} ηmax即为最大值也是每个重启时刻的初始学习率, T i T_i Ti则为重启周期, T c u r T_{cur} Tcur为迭代次数,pytorch官网的描述为:When T c u r T_{cur} Tcur = = = T i T_{i} Ti, set η t \eta_t ηt = = = η m i n \eta_{min} ηmin. When T c u r T_{cur} Tcur = = = 0 0 0 after restart, set η t \eta_t ηt = = = η m a x \eta_{max} ηmax. T c u r T_{cur} Tcur = = = T i T_{i} Ti,代入上述公式得到学习率即为 η m i n \eta_{min} ηmin;重启后令 T c u r T_{cur} Tcur = = = 0 0 0,代入上述公式得到学习率即为 η m a x \eta_{max} ηmax,然后每个周期内学习率是余弦式衰减。
另外pytorch封装的方法与上述所讲有所不同:torch.optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0, T_mult=1, eta_min=0, last_epoch=-1, verbose=False)
optimizer:选择的优化器
T_0(重点):即上述所说的 T i T_i Ti,但是pytorch中指的是累加批次,而不是训练次数,是每T_0个批次训练热重启一次。
T_mult:周期扩大因子,默认为1。如果不为1,则每次热重启周期都会扩大为前一次的T_mult倍,使得学习率衰减的越来越缓慢。
eta_min:即 η m i n \eta_{min} ηmin

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值