《图解机器学习-第四章》:损失函数和梯度下降:模型是怎么被训练出来的?

🎯 博主简介

CSDN 「新星创作者」 ,人工智能技术领域博主,码龄 5 年 ,累计发布 190+ 篇原创 文章,博客总访问量 30万+ 浏览。

🚀 持续更新 AI 前沿实战知识,专注于 AI 技术实战、RAG 系统、Agent 应用开发与大模型工程化落地

目前主要更新方向包括:

损失函数和梯度下降:模型是怎么被训练出来的?

数据准备好了,训练集、验证集、测试集分清楚了。

接下来一个问题:模型怎么从这些数据里学到东西?

说白了,训练模型就是两件事:先告诉它"你错得多离谱",再教它"怎么一步步改对"。这两个任务,分别由损失函数和梯度下降来完成。

今天咱们把这两个概念彻底搞懂。

损失函数------模型"犯错"的标尺

先想象一个场景:你在玩飞镖。

扔出去,镖扎在靶子上,离红心差了两环。这个差距就是你的"误差"。

模型也一样。它预测了一个结果(比如房价100万),真实值是120万,差了20万。

损失函数就是专门度量这个差距的。

预测和真实差距越大,损失函数的值就越大。模型一看损失值这么高,就知道自己"考砸了"。

关键在于:损失函数必须对错误敏感。

错得少,惩罚小;错得多,惩罚重。这样模型才知道自己到底有多离谱。

就像期末考试,选择题全错扣50分,只错一道扣5分。这个"评分标准"就是损失函数------它决定了模型每次犯错后承受多大的"心理压力"。

损失函数不是只有一个。不同任务类型,要用不同的"评分标准"。

常见损失函数------不同任务用不同的尺子

考试的时候,语文有作文评分标准,数学有步骤分标准。

机器学习也一样:回归任务和分类任务,用的损失函数完全不同。

回归任务:预测具体数值

比如预测房价、预测温度。这类任务用得最多的是两种损失函数:

MSE(均方误差)------把每个预测的误差平方后求平均。

为什么要平方?因为误差有正有负,直接相加会互相抵消。平方一下全变成正的,还能放大惩罚大误差。

你可以理解成:错1米=扣1分,错10米=扣100分。错得越多,惩罚增长得越快。

MAE(平均绝对误差)------直接算每个误差的绝对值求平均。

这个更直观:错1米扣1分,错10米扣10分。不会因为错太多就罚得特别狠。

分类任务:预测属于哪一类

比如判断一张图片是猫还是狗。这类任务用交叉熵损失

交叉熵听起来吓人,本质就是一句话:如果模型很有把握预测对,损失就低;如果模型很有把握却预测错了,损失就很高。

你可能会想,模型很有把握却预测错了,这不是更该罚吗?

没错,交叉熵就是这样设计的。它专门"惩罚"那种"自信满满却答错"的情况。

选错损失函数,就像用语文标准批改数学题。结果肯定是乱的。

我第一次做房价预测项目的时候,因为用的是分类任务的损失函数,模型训练了三天结果完全跑偏。后来换成MSE,才算正常收敛。所以在实际工作中,第一步往往是确定用哪个损失函数。选对了,后面的优化才有意义。

损失函数告诉我们"错在哪",接下来模型要问:"那我怎么改?"

这就要靠梯度下降了。

梯度下降------在山谷中找最低点

先说一个概念:梯度

梯度听起来数学,其实很简单。它就是函数变化最快的方向。

爬山的時候,你环顾四周,找到最陡的那个坡。那个方向就是梯度。

下山呢?反着走就行。

梯度下降就是这么回事:每次都沿着最陡的下坡方向走一步,慢慢降到最低点。

类比一下,你在山地里蒙着眼睛下山。脚底下能感觉到哪个方向最陡。

每次你问自己:"往哪边走最陡?"

然后迈一小步。

重复一万次,你大概率已经到山脚了。

这就是梯度下降的核心思路:不是一步到位,而是小步快跑。

学习率:这一步迈多大

有个关键参数叫学习率,它决定每一步迈多大。

学习率太大,会出现什么情况?

就像下山的时候迈步太大,结果迈过最低点,跑到对面山坡上去了。然后又迈回来,又迈过去......在两个山坡之间来回蹦跶,始终落不了地。

震荡,不收敛。

学习率太小呢?能收敛,但慢得离谱。本来1000步能搞定的事,要走10万步。

就像你下山的时候每步只挪一厘米,稳是稳了,但时间全浪费了。

好的学习率,就是既能快速下山,又不会迈过头。这个值通常靠经验来调,0.001、0.01、0.1都是常见的起始点。

局部最优:可能掉进小坑里

还有一个问题。真实的损失函数曲面,往往不是干干净净的一个碗。它可能是这样:一个大山谷旁边有个小坑。

如果你恰好掉进小坑里出不来,就永远到不了真正的最低点。这就是局部最优问题。

怎么解决?随机梯度下降是一个办法。

三种梯度下降------速度与精度的权衡

刚才说的梯度下降,每次怎么计算梯度?这里有三种策略。

第一种:批量梯度下降。

把整个训练集全部喂进去,一次性算出所有样本的梯度,然后更新一次参数。

优点是梯度计算稳定,方向准确。缺点是慢。训练集有100万条数据,每更新一次要看完全部100万条。

第二种:随机梯度下降。

每次只看一个样本,算出梯度,立刻更新参数。

快是真快。但问题是方向不稳定------这一个样本说往东,下一个样本说往西。模型参数会晃来晃去,像喝醉了一样。

不过这种"晃"有时候是好事。晃得足够大,能从局部最优的小坑里跳出来。

第三种:小批量梯度下降。

每次看一小批样本,比如32个或64个。方向比随机稳定,速度比批量快,还能保持一点跳出局部最优的可能性。

这是深度学习最主流的选择。

做个类比。你要复习考试:

  • 批量梯度下降:把1000道题全做完,对一遍答案,再改。
  • 随机梯度下降:做一道,对一道,改一道。
  • 小批量梯度下降:做32道,对一遍答案,改一道,再做下一批。

第三种方式效率最高,所以成了工业界标配。

但即便用了小批量,下山的过程中还是会有各种问题。比如在陡坡处震荡、有的参数更新快有的慢。这些问题催生了一系列优化算法。

优化算法------让下山更聪明

动量法:带着惯性滑行

普通梯度下降遇到陡坡会震荡。就像你开车下山,坡陡的时候要来回打方向盘。

动量法的思路是:**不仅看当前坡度,还记住之前的下山方向。**有了惯性,你在下坡的时候会自然滑行,减少来回摇摆。

类比一下,滑雪的时候你不会每一步都重新判断方向,而是顺着坡度顺势而下。遇到小坑怎么办?凭着惯性就冲过去了,不会卡在坑边动弹不得。

动量法正是这个原理:利用历史方向累积,帮助模型更稳更快地下山。

Adam:自动调整每一步的大小

普通的梯度下降,所有参数用同一个学习率。但实际情况往往是:有的参数需要大步调整,有的需要小步精细调整。

Adam这类自适应学习率方法,就是来解决这个问题的。它会自动观察每个参数的历史梯度,给频繁更新的参数降低学习率,给更新少的参数提升学习率

就像一个经验丰富的教练,知道你什么时候该大步快跑,什么时候该小步调整。

我之前训练NLP模型,试过手动调学习率,调了两个月效果都很一般。后来换成Adam,基本不用管学习率,模型自己就收敛得不错。Adam现在基本是深度学习的默认优化器,开箱即用,效果通常都不错。

学习率衰减:快到终点时小步走

训练初期,模型离最优解还很远,大步快跑没问题。但快到谷底的时候呢?大步可能会迈过头。

学习率衰减的思路是:随着训练进行,逐步降低学习率。一开始每步迈一米,快到终点时每步只迈一厘米。越接近最优解,步伐越精细。

这就像开车进停车场,一开始110码巡航,快到车位时60码、30码、10码慢慢停稳。


到这里,模型训练的整个闭环就说清楚了:损失函数定义"什么是对",梯度下降指引"怎么走到对"。

搞懂这两个概念,你对模型训练的理解就上了一个台阶。不过实际项目中,还有很多坑等着你:比如模型在训练集上表现很好,到了测试集却崩了------这就是我们下一篇要聊的过拟合和欠拟合问题。

相关推荐
进击的横打2 小时前
【人工智能】AI的三层金字塔逻辑
人工智能
oyyanghh2 小时前
AI编码模式实测:两款主流工具交互式开发能力对比
人工智能
代码小库2 小时前
【2026前端转 AI 全栈指南】第 1 章:前言 · 后端架构 · 章节导览
前端·人工智能·架构
极光代码工作室2 小时前
基于深度学习的手写数字识别系统
人工智能·python·深度学习·神经网络·机器学习
Tbisnic2 小时前
AI大模型学习第十三天:让AI学会查资料、记数据、看图和听声
人工智能·ai·大模型开发·rag·coze
blue_dou2 小时前
灵活拓展能力对决:多款CRM自定义与数据互通实测
大数据·人工智能
女神下凡2 小时前
这是 Cursor(Composer) 的五种核心交互模式
服务器·人工智能·windows·vscode·microsoft
AI创界者2 小时前
告别云端限制!Sulphur 2 本地文生视频/图生视频整合包,本地部署,解压即用,保姆级部署与工作流实战
人工智能·python·aigc·音视频
蓝星空20002 小时前
GPT-Image-2 实战教程:一段提示词生成专业分镜图(含 9 格脚本模板,附一键同款)
人工智能·gpt·image2·imagen