迁移学习|ResNet18

一、导入库

二、设置随机种子

三、数据增强和数据加载

四、加载预训练模型

五、定义损失函数和优化器

六、学习率调度器

七、训练模型

八、可视化训练过程

九、总结

1. 常见优化器概述

1.1 随机梯度下降(SGD: Stochastic Gradient Descent)

简介: SGD 是最基本的优化算法,通过在每个小批量(mini-batch)数据上计算梯度并更新模型参数。

优点:

  • 简单易实现。
  • 对大规模数据集和高维参数空间表现良好。

缺点:

  • 对学习率敏感,需要精心调整。
  • 可能在鞍点和局部最优点处停滞。
  • 收敛速度较慢,尤其是在非凸优化问题中。

适用场景:

  • 基础模型训练。
  • 需要精细控制训练过程的场景。

1.2 带动量的 SGD(SGD with Momentum)

简介: 在标准 SGD 的基础上引入动量概念,利用之前梯度的累积来加速收敛并减少震荡。

优点:

  • 提高了收敛速度。
  • 有助于跨越鞍点和陡峭的局部最优点。

缺点:

  • 需要调节动量参数,增加了超参数的复杂性。

适用场景:

  • 大多数深度学习任务,尤其是卷积神经网络(CNN)等。

1.3 自适应矩估计(Adam: Adaptive Moment Estimation)

简介: Adam 结合了动量和 RMSProp 的优点,利用一阶矩(均值)和二阶矩(未中心化的方差)来动态调整学习率。

优点:

  • 对学习率不敏感,适合各种网络结构。
  • 通常具有较快的收敛速度。
  • 内部有偏差校正,适用于小批量数据。

缺点:

  • 在某些情况下可能导致收敛到次优点。
  • 需要更多的内存来存储一阶和二阶矩。

适用场景:

  • 各类深度学习任务,特别是自然语言处理(NLP)和生成对抗网络(GAN)等需要快速收敛的场景。

1.4 RMSProp

简介: RMSProp 通过对每个参数使用不同的学习率,适应性地调整学习率大小,解决了 Adagrad 的学习率单调下降的问题。

优点:

  • 适用于非平稳目标。
  • 通常比 SGD 收敛更快。

缺点:

  • 对超参数(如学习率和衰减率)敏感。
  • 可能在某些任务上表现不如 Adam。

适用场景:

  • 循环神经网络(RNN)和需要处理非平稳数据的任务。

1.5 AdamW

简介: AdamW 改进了 Adam 的权重衰减方式,将权重衰减从梯度更新中分离出来,解决了 Adam 在使用 L2 正则化时的一些问题。

优点:

  • 更好地结合了权重衰减和 Adam 的自适应学习率特性。
  • 在一些任务上表现优于 Adam。

缺点:

  • 类似于 Adam,需要更多的内存。
  • 需要调节额外的权重衰减参数。

适用场景:

  • Transformer 模型和需要严格控制正则化的场景。

2. 如何选择合适的优化器

选择优化器时,需要根据具体任务、模型结构、数据集特点以及训练资源等因素进行权衡。以下是一些建议:

2.1 模型复杂度和规模

  • 大型模型(如 ResNet、Transformer):通常推荐使用 Adam 或 AdamW,因其自适应学习率特性能更有效地处理大规模参数。
  • 中小型模型:SGD 或带动量的 SGD 也是不错的选择,尤其是在需要严格控制训练过程时。

2.2 数据集大小和特性

  • 大规模数据集:SGD 和带动量的 SGD 更加适合,因其在大数据集上表现稳定。
  • 小规模或稀疏数据集:Adam 更具优势,因其在小批量数据上能更好地调整学习率。

2.3 训练速度和资源

  • 需要快速原型验证:Adam 是理想选择,因其收敛速度快,适合快速实验。
  • 资源有限:SGD 相对更节省内存,适合资源受限的环境。

2.4 收敛性质

  • 需要精确收敛:SGD 和带动量的 SGD 通常能更好地收敛到更优解。
  • 对超参数敏感度低:Adam 具有较强的自适应能力,对学习率不敏感。

3. 超参数调节建议

不同优化器有不同的超参数,需要根据具体情况进行调节:

3.1 学习率(Learning Rate)

  • SGD:常用范围在 0.01 到 0.1。可以使用学习率调度器(如 StepLR、ReduceLROnPlateau)动态调整。
  • Adam:常用初始学习率为 0.001,可以在需要时调低。
  • RMSProp:初始学习率通常设置为 0.01。

3.2 动量(Momentum)

  • 仅适用于带动量的 SGD。
  • 常用值在 0.8 到 0.99 之间。

3.3 权重衰减(Weight Decay)

  • 控制正则化强度,常用值在 1e-4 到 1e-3 之间。
  • AdamW 中的权重衰减与 L2 正则化结合更为有效。

3.4 其他参数总结

  • Adam 的 β 参数:常用默认值 β1=0.9, β2=0.999。
  • RMSProp 的 α 参数:通常设置为 0.99 或 0.9。
  • SGD:适用于需要严格控制训练过程的大规模模型,具有良好的收敛性质,但对学习率敏感。
  • Adam:具有自适应学习率特性,适用于快速实验和各种模型,但可能在某些情况下收敛到次优点。
  • AdamW:改进了 Adam 的权重衰减方式,适用于需要严格控制正则化的场景。
  • RMSProp:适用于处理非平稳目标的问题,如循环神经网络(RNN)。
  • 学习率调度器早停等技术可以进一步提升训练效果和稳定性。
相关推荐
机器之心4 分钟前
全球图生视频榜单第一,爱诗科技PixVerse V5如何改变一亿用户的视频创作
人工智能·openai
新智元5 分钟前
2025年了,AI还看不懂时钟!90%人都能答对,顶尖AI全军覆没
人工智能·openai
思辨共悟6 分钟前
Python的价值:突出在数据分析与挖掘
python·数据分析
湫兮之风9 分钟前
OpenCV: Mat存储方式全解析-单通道、多通道内存布局详解
人工智能·opencv·计算机视觉
无名客011 分钟前
sentinel限流常见的几种算法以及优缺点
算法·sentinel·限流
机器之心16 分钟前
Claude不让我们用!国产平替能顶上吗?
人工智能·openai
程序员柳20 分钟前
基于YOLOv8的车辆轨迹识别与目标检测研究分析软件源代码+详细文档
人工智能·yolo·目标检测
算家计算21 分钟前
一站式高质量数字人动画框架——EchoMimic-V3本地部署教程: 13 亿参数实现统一多模态、多任务人体动画生成
人工智能·开源
API流转日记31 分钟前
Gemini-2.5-Flash-Image-Preview 与 GPT-4o 图像生成能力技术差异解析
人工智能·gpt·ai·chatgpt·ai作画·googlecloud
martinzh31 分钟前
切块、清洗、烹饪:RAG知识库构建的三步曲
人工智能