AIUnlimited
🌳

AI基础

🌱
AI 种子

从零开始

🌿
AI 萌芽

打好基础

🌳
AI 枝干

付诸实践

🏕️
AI 树冠

深入探索

🌲
AI 森林

精通AI

🔨

AI精通

✏️
AI 草图

从零开始

🪨
AI 雕刻

打好基础

⚒️
AI 匠心

付诸实践

💎
AI 打磨

深入探索

🏆
AI 杰作

精通AI

📘

AI实战

📖
理解开源模型

开源模型的基础知识和资源

🎯
问题到模型任务

将业务问题转化为模型任务

⚡
跑通第一个模型

30分钟快速看到第一个结果

🔧
微调与评测

微调模型并评估性能

🚀
应用系统

构建实际AI应用系统

🎨
生成式AI

探索AIGC的开源模型

🤖
Agent智能体

学习Agent框架和MCP工具

📐
基础补充

LLM基础知识和评测

🎓

Claude 学院

🤖
Claude 101 入门

用 Claude 学习 AI 基础知识

💻
Claude Code 101 入门

让 Claude 成为你的结对编程伙伴

🤝
Claude Cowork 入门

与 Claude 协作完成复杂项目

⚙️
Claude 平台 101

使用 Claude API 构建应用

实验室

已加载 7 个实验
🧬神经网络沙盒🤖AI 还是人类?🥋提示工程道场🏁算法竞速🧠AI 知识挑战🏗️系统设计画布
🎯模拟面试进入实验室→
🚀

职业发展

🚀
面试发射台

开启你的旅程

🌟
行为面试精通

掌握软技能

💻
技术面试

通过编程轮次

🤖
AI与ML面试

ML面试精通

🏆
Offer与未来

拿下最好的Offer

立即开始
AIUnlimited

AI 教育平台

沪ICP备18025655号-11

学习

  • AI基础
  • AI实战
  • Claude学院
  • 实验室
  • 职业发展

社区

  • 关于
  • 常见问题

支持

  • 服务条款
  • 隐私政策
  • 联系我们
AI & 工程学习计划›🌿 AI 萌芽›课程›损失函数与优化器
📉
AI 萌芽 • 中级⏱️ 15 分钟阅读

损失函数与优化器

损失函数和优化器

反向传播为我们提供了梯度——但是梯度是什么?在反向传播运行之前,我们需要一个数字来捕获模型的错误程度。该数字来自损失函数。一旦我们有了梯度,优化器就会决定如何更新权重。它们共同构成了学习循环。

什么是损失函数?

损失函数(也称为成本函数)采用模型的预测和真实答案,并返回一个衡量“错误”的数字。训练的目标是最小化这个数字。

可以把它想象成高尔夫球的得分——越低越好。损失为 0 意味着预测完美。

U 形曲线,y 轴显示损失,x 轴显示权重值,球向最小值滚动
训练就像在损失的地形上滚球下坡,寻找最低点。

回归损失函数 - MSE

在预测连续值(房价、温度)时,我们使用 均方误差 (MSE):

MSE = (1/n) × Σ(predicted - actual)²

平方有两个作用:它使所有错误都为正,并且不成比例地惩罚大错误。预测房价下跌 10 万英镑,平方误差比下跌 1 万英镑要差 100 倍。

🤯

MSE 的历史可以追溯到 1795 年 Carl Friedrich Gauss 提出的——比神经网络早两个多世纪。他用它来追踪小行星谷神星的轨道。

分类损失函数 - 交叉熵

在预测类别(是否为垃圾邮件、猫与狗)时,我们使用交叉熵损失。它衡量模型的预测概率与真实标签的距离。

如果正确答案是“猫”并且模型显示 99% 是猫,则损失很小。如果说10%的猫,损失是巨大的。交叉熵有一个有用的属性:当模型确信错误时,它会变得“无限”不高兴,从而创建一个强大的梯度来纠正错误。

二元交叉熵适用于二类问题。 分类交叉熵通过比较概率分布来处理多个类别。

🧠小测验

为什么 MSE 不是分类任务的糟糕选择?

梯度下降 - 滚下坡

定义了损失函数后,我们可以可视化损失景观——一个表面,其中每个点代表一组权重,高度就是损失。训练意味着找到最低的山谷。

梯度下降是让我们达到目标的算法:

  1. 计算当前位置的梯度(斜率)。
  2. 向相反方向迈出一步(下坡)。
  3. 重复。

每个步骤的大小由学习率控制——可以说是深度学习中最重要的超参数。

学习率困境

  • 太高: 你越过了山谷,来回弹跳或完全偏离。
  • 太低: 你会痛苦地缓慢地爬行,并且可能会陷入浅的局部最小值。
  • 恰到好处: 您稳步收敛到一个好的解决方案。
🤔
Think about it:

想象一下,徒步走下一座雾蒙蒙的山,你只能感觉到脚下的斜坡。走下山坡,却看不到全貌。你怎么可能会陷入一个不是最深山谷的小洼地呢?这就是局部最小值问题。

梯度下降的风味

批量梯度下降

每次更新前使用整个数据集计算梯度。对于大型数据集来说准确但速度慢得令人痛苦 - 想象一下在纠正单个拼写错误之前重新阅读图书馆中的每一本书。

随机梯度下降 (SGD)

在每个单个示例之后更新权重。速度快但噪音大——道路曲折蜿蜒。噪声实际上可以帮助逃脱局部最小值,这是一个令人惊讶的好处。

小批量梯度下降

第 7 课,共 16 课已完成 0%
←反向传播

讨论

登录 参与讨论

实用的最佳点。计算小批量**(通常为 32-512 个示例)的梯度。平衡速度和稳定性,几乎是所有现代训练所使用的。

现代优化器

普通 SGD 有局限性。研究人员开发了更智能的优化器,可以随时适应。

SGD 与动量

就像一个重球滚下坡,动量会在一致的方向上积累速度并抑制振荡。如果梯度保持指向同一方向,动量就会加速。如果它不断改变方向,动量就会使它变得平滑。

阿达格勒

调整每个参数的学习率。经常更新的权重会得到更小的步长;很少更新的权重会得到更大的步长。非常适合稀疏数据(如文本),但随着时间的推移,学习率可能会缩小到零。

Adam(自适应矩估计)

结合动量和每参数自适应率。它保持梯度(一阶矩)和梯度平方(二阶矩)的运行平均值。 Adam 是当今大多数从业者的默认选择。

🧠小测验

Adam相对于基本SGD有什么优势?

学习率表

现代训练通常不会固定学习率,而是安排它:

  • 逐步衰减: 每 N epoch 将速率减半。
  • 余弦退火: 沿着余弦曲线平滑减小,有时会进行热重启。
  • 预热: 从很小的速率开始,逐渐增加,然后衰减。用于 Transformer 训练。

直觉:尽早采取大步骤进行广泛探索,然后再采取小步骤进行微调。

渐变裁剪 - 安全栏

有时梯度会爆炸(正如我们在反向传播课程中看到的那样)。 梯度裁剪在更新步骤之前限制梯度大小。如果梯度超过阈值,则按比例缩小。这是训练 RNN 和 Transformer 时的标准做法。

🧠小测验

梯度裁剪可以防止什么?

🤯

Adam 优化器论文(Kingma & Ba,2014)被引用超过 150,000 次,使其成为所有计算机科学领域被引用次数最多的论文之一。

要点

  • 损失函数 量化模型的错误程度 - MSE 用于回归,交叉熵用于分类。
  • 梯度下降通过重复与梯度相反的步骤来最小化损失。
  • 学习率控制步长,对于正确学习至关重要。
  • Adam 是首选优化器,结合了动量和自适应速率。
  • 学习率计划和梯度裁剪是重要的训练稳定器。
🤔
Think about it:

如果您正在训练一个模型,并且损失在几个时期后停止减少,您会首先研究什么 - 学习率、损失函数还是数据?为什么?


📚 进一步阅读

  • Andrej Karpathy - 训练神经网络的秘诀 - 损失调试和优化器选择的实用智慧
  • 3Blue1Brown - 梯度下降 - 梯度下降如何导航损失景观的令人惊叹的视觉直觉
  • 梯度下降优化算法概述 (Ruder, 2016) - SGD、Adam 和朋友们的综合比较