大数跨境

优化方法:更新模型参数的方法

优化方法:更新模型参数的方法 知识代码AI
2026-09-02
4
导读:优化方法:更新模型参数的方法一、优化方法的核心思想1. 什么是优化方法优化方法,指的是一个过程,这个过程的目的

优化方法:更新模型参数的方法


一、优化方法的核心思想

1. 什么是优化方法

优化方法,指的是一个过程,这个过程的目的就是,寻找模型在所有可能性中达到评估效果指标最好的那一个。换句话说,优化过程就是找到一个状态,这个状态能够让模型的损失函数最小,而这个状态就是模型的权重。[pdf_14]

2. 深度学习三大核心过程

过程
说明
模型表示
定义网络结构
方法评估
使用损失函数衡量模型效果(第11节)
优化方法
通过梯度下降等算法更新参数,使损失函数最小化(第13节)

3. 用下山路线规划理解梯度下降

梯度向量的方向即为函数值增长最快的方向,梯度的反方向则是函数减小最快的方向。

想象你在山顶,需要尽快到达半山腰的卫生间。怎么走最快?每走几步就改变方向,朝着当前最陡峭的方向(即坡度下降最快的方向)行走,并不断重复这个过程。这就是梯度下降的最直观表示。[pdf_14]


二、学习率(Learning Rate)

1. 学习率类比

下山过程中的"步子大小"就是算法中的学习率(learning rate)

学习率
比喻
后果
太大
步子太大,可能跑到别的山谷中(局部极小值)或在最小值附近来回震荡
无法收敛到最优值
太小
步伐太小,需要很长时间才能到达目的地
训练速度
合适
步伐适中,稳步接近目的地
理想状态

2. 收敛判断

在实际开发中,如果损失函数在一段时间内没有什么变化,我们就认为是到达了需要的"最低点",就可以认为模型已经训练收敛了,从而结束训练。[pdf_14]


三、三种梯度下降方法

1. 批量梯度下降法(BGD)

核心思想:每次使用全部样本计算梯度并更新参数。

损失函数公式

其中 m 表示样本数量。

梯度更新公式

其中 α 为学习率。

特点:所有样本都计算完后整体更新参数,更新方向稳定,但计算量大。[pdf_14]

2. 随机梯度下降法(SGD)

核心思想:每计算一个样本之后就要更新一次参数。

梯度更新公式

优点

  • 训练速度大幅提升
  • 只需要训练集中的一部分数据,就可以实现接近使用全部数据训练的效果

缺点

  • 训练数据中存在错误样本或噪声数据时,优化方向可能偏离理想方向
  • 最极端情况下,模型无法得到全局最优,陷入局部最优

总结:SGD 选择了用损失很小一部分精确度和增加一定数量的迭代次数为代价,换取了最终总体的优化效率的提高。[pdf_14]

3. 小批量梯度下降法(MBGD)⭐ 最常用

核心思想:每次使用一个固定数量的数据(batch)进行优化。

batch size:这个固定数量称为 batch size,一般为 2 的 n 次方(如 32、128、512 等)。

batch size 大小
优点
缺点
越小
更新速度越快,容易逃离局部最优
梯度震荡严重,不利于收敛,受噪声影响大
越大
梯度震荡小,训练结果更稳定,训练时间相对更短
泛化能力差,容易陷入局部最优,可能爆显存

实践经验

  • 图像任务:batch size 倾向于设置得稍微小一点
  • NLP 任务:可以适当设置得大一些
  • 具体数值需要根据项目特点,采用经验或不断尝试的方法去设置[pdf_14]

四、三种梯度下降方法对比

方法
每次更新使用的数据量
更新频率
稳定性
速度
BGD
(批量梯度下降)
全部样本
最稳定
SGD
(随机梯度下降)
1 个样本
最高
不稳定
MBGD
(小批量梯度下降)
batch size 个样本
适中
适中
适中

Mini-batch 的方法是目前主流使用最多的一种方式。[pdf_14]


五、训练流程的抽象框架

将第11~13节的内容串联起来,深度学习模型训练的最根本、最关键的过程:

# 1. 设置模型
net = LeNet()

# 2. 设置损失函数
criterion = nn.CrossEntropyLoss()

# 3. 设置优化器
optimizer = optim.SGD(net.parameters(), lr=0.01, momentum=0.9)

# 4. 开始训练
for epoch in range(30):          # 训练多个 epoch
    for i, data in enumerate(traindata):
        inputs, labels = data
        
        # ① 梯度清零
        optimizer.zero_grad()
        
        # ② 前向传播:获得模型输出
        outputs = net(inputs)
        
        # ③ 计算损失
        loss = criterion(outputs, labels)
        
        # ④ 反向传播:计算梯度
        loss.backward()
        
        # ⑤ 优化:更新参数
        optimizer.step()

五个核心步骤梯度清零 → 前向传播 → 计算损失 → 反向传播 → 优化更新。[pdf_14]


六、核心要点总结

概念
要点
优化方法的目的
找到使损失函数最小的模型权重
梯度下降
沿梯度的反方向更新参数,使损失函数最小化
学习率(α)
控制参数更新的步长,太大无法收敛,太小训练太慢
BGD
每次用全部样本更新,最稳定但最慢
SGD
每次用 1 个样本更新,速度快但易受噪声影响
MBGD
每次用 batch size 个样本更新,最常用
batch size
通常为 2 的 n 次方(32、128、512 等),需根据任务调整
训练收敛
损失函数在一段时间内无明显变化时,认为训练完成

七、每课一练

问题:batch size 越大越好吗?

解答

不是。 batch size 并非越大越好,需权衡取舍:

  1. batch size 太大

    • 训练过程容易一直沿着一个方向走,陷入局部最优
    • 泛化能力差
    • 可能造成内存溢出(爆显存)
  2. batch size 太小

    • 每个 batch 之间差异大,梯度震荡严重
    • 不利于模型收敛
    • 易受噪声数据影响
  3. 最佳实践

    • 采用 mini-batch 方式,根据任务特点选择合适的 batch size
    • 图像任务偏向小一点,NLP 任务可适当大一些
    • 需要通过实验不断尝试来找到合适的值[pdf_14]

八、小结

  1. 优化方法的目的:找到使损失函数最小的模型权重。
  2. 梯度下降:沿着梯度的反方向更新参数,以最快速度减小损失函数。
  3. 学习率:控制"步子大小",太大则震荡,太小则太慢。
  4. 三种梯度下降方法:BGD(全部样本)、SGD(单个样本)、MBGD(小批量样本)。
  5. MBGD(小批量梯度下降)是目前使用最多的优化方法。
  6. batch size:通常为 2 的 n 次方,不是越大越好,需要权衡收敛速度与泛化能力。
  7. 训练五步法:梯度清零 → 前向传播 → 计算损失 → 反向传播 → 优化更新。


【声明】内容源于网络
0
0
知识代码AI
技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
内容 403
粉丝 0
知识代码AI 技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
总阅读6.6k
粉丝0
内容403