CV调参技巧

一、学习率衰减

1、重启学习率

余弦退火(Cosine Annealing)

\gamma _t = \gamma_{min} + 0.5*(\gamma_{max}-\gamma_{min})(1+cos(\pi * T_{cur}/T_i))

 每隔一段时间重启学习率,在单位时间内能收敛到多个局部最小值,可以得到很多个模型做集成。

# 余弦退火
torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min=0, last_epoch=-1)

 参数:

optimizer: 优化器

T_max: 回到初始学习率的周期,每半个周期降到eta_min

eta_min: 最小学习率, 默认0

last_epoch: 最后的epoch的索引,默认0

# 余弦退火重启
torch.optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0, T_mult=1, eta_min=0, last_epoch=- 1, verbose=False)

 

参数:

optimizer: 优化器

T_max: 第一次回到初始学习率的epoch

T_mult: 乘以T_max的数,即周期翻倍

eta_min: 最小学习率, 默认0

last_epoch: 最后的epoch的索引,默认0

2、梯度衰减

torch.optim.lr_scheduler.StepLR

torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=- 1, verbose=False)

 torch.optim.lr_scheduler.ExponentialLR

torch.optim.lr_scheduler.ExponentialLR(optimizer, gamma, last_epoch=- 1, verbose=False)

 二、正则化

 L1/L2正则化、权重衰减、EarlyStop、DropOut、BN/LN/GN、标签平滑、各种数据增强等

--Flooding(ICML2020--Do We Need Zero Training Loss Afer Achieving Zero Training Error?)

         当模型拟合能力很好并达到较小训练误差,如果继续训练模型降低损失,模型更易把一些噪声或无用信息当做特征学习进来,从而泛化能力很差。

        通过找到损失函数的一个平衡点解决权衡问题,提出‘flooding’方法使loss先正常下降到flooding level(超参,设置的训练损失阈值)附近,当训练损失低于这个阈值进行梯度上升。

一行代码即可实现,且可与任何随机优化器以及正则化方法搭配。

公式:         \hat{J(\theta)} = \left | J(\theta) - b \right |+b

代码:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值