pytorch-解决过拟合之动量与学习率衰减

目录

  • [1. momentum动量](#1. momentum动量)
  • [2. pytorch增加momentum](#2. pytorch增加momentum)
  • [3. 学习率衰减](#3. 学习率衰减)
  • [4. 学习率衰减的方式](#4. 学习率衰减的方式)
    • [4.1 loss连续几次无改善衰减](#4.1 loss连续几次无改善衰减)
  • [4.2 步进式衰减](#4.2 步进式衰减)

1. momentum动量

下图给出了梯度公式和增加了动量的梯度公式,β z k z^k zk其中的 z k z^k zk就是上次的梯度,而β决定了 w k + 1 w^{k+1} wk+1更偏向于上次梯度还是本次梯度。也就是说梯度增加了动量后,梯度更新要同时考虑上次的惯性和本次的梯度。

未加动量

加了动量

从两幅图可以看出加了动量比未加动量要平滑的多,未加动量很难找到全局极小值,而加了动量后找到全局极小值的概率要大的多。

2. pytorch增加momentum

如图中SGD优化器增加momentum参数,而Adam优化器是不支持输入动量参数的

3. 学习率衰减

下图为三种学习率模型曲线的不同表现,学习率太低训练比较慢,比如本来4天训完,结果可能10天才能训完,学习率太高loss震荡比较厉害很难找到极小值。

所谓学习率衰减就是开始使用较大的学习率,之后使用一定的策略使学习率不断减小,比如:有60k数据每训练10k学习率减小1/2

4. 学习率衰减的方式

4.1 loss连续几次无改善衰减

torch.optim.lr_scheduler.ReduceLROnPlateau函数的功能是,当loss在patience个连续epoch后没有改善时,就减小学习率factor倍

python 复制代码
CLASS torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', factor=0.1, patience=10, threshold=0.0001, threshold_mode='rel', cooldown=0, min_lr=0, eps=1e-08, verbose='deprecated')

optimizer-优化器

mode-min或max,min:当度量的量停止减小时,减小学习率,max:当度量的量停止增大时,减小学习率,默认min

factor-每次减少倍率

4.2 步进式衰减

比如:每30k衰减0.1

相关推荐
haiyu_y5 小时前
Day 54 Inception 网络及其思考
人工智能·pytorch·深度学习
GG向前冲6 小时前
【深度学习】利用GPU跑Pytorch框架深度学习配置全流程
人工智能·pytorch·深度学习
学习是生活的调味剂7 小时前
在大模型开发中,是否需要先完整学习 TensorFlow,再学 PyTorch?
pytorch·学习·tensorflow·transformers
蹦蹦跳跳真可爱58916 小时前
Python----大模型(GPT-2模型训练加速,训练策略)
人工智能·pytorch·python·gpt·embedding
xwill*16 小时前
π∗0.6: a VLA That Learns From Experience
人工智能·pytorch·python
重生之我要成为代码大佬1 天前
深度学习1-安装pytorch(无独立显卡版本)
人工智能·pytorch·深度学习·机器学习
All The Way North-1 天前
[实战分享] PyTorch实战:手机价格区间分类(95%准确率)+ 模型保存/加载/loss波动全解析
pytorch·深度学习·实战教程·全连接神经网络案例·手机价格区间分类·神经网络全过程
不错就是对1 天前
【Agent-lightning】 - 1_环境搭建
人工智能·pytorch·深度学习·机器学习·chatgpt·transformer·vllm
Dfreedom.2 天前
从 model(x) 到__call__:解密深度学习框架的设计基石
人工智能·pytorch·python·深度学习·call
njsgcs2 天前
用modelscope运行grounding dino
人工智能·pytorch·深度学习·modelscope·groundingdino