
🎯 博主简介
CSDN 「新星创作者」 ,人工智能技术领域博主,码龄 5 年 ,累计发布
190+ 篇原创文章,博客总访问量30万+浏览。
🚀 持续更新 AI 前沿实战知识,专注于 AI 技术实战、RAG 系统、Agent 应用开发与大模型工程化落地。目前主要更新方向包括:
- 🦞 最新 OpenClaw 教程 ---从入门到精通|AI 智能助手/自动化/Skills 实战(原 Clawdbot/Moltbot)
- ✨ Agent 记忆系统 --- 长期记忆、上下文管理与个性化智能体设计
🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥以下系列正在火热更新中🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥- 📘 图解机器学习合集 --- 用图解方式系统梳理机器学习核心概念,持续更新中
同时也会持续分享 AI 编程、Java 后端、Spring 生态、Transformer、大模型基础、计算机视觉 等方向内容,内容会尽量结合自己的学习记录、项目实践和踩坑经验来整理。
📱GZH:安逸Ai(科技前沿新闻,Github热门项目,最新免费资料...)- 网页观看完整系列合集:🌐 Anyi AI 学习资源站

损失函数和梯度下降:模型是怎么被训练出来的?
数据准备好了,训练集、验证集、测试集分清楚了。
接下来一个问题:模型怎么从这些数据里学到东西?
说白了,训练模型就是两件事:先告诉它"你错得多离谱",再教它"怎么一步步改对"。这两个任务,分别由损失函数和梯度下降来完成。
今天咱们把这两个概念彻底搞懂。
损失函数------模型"犯错"的标尺
先想象一个场景:你在玩飞镖。
扔出去,镖扎在靶子上,离红心差了两环。这个差距就是你的"误差"。
模型也一样。它预测了一个结果(比如房价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码慢慢停稳。

到这里,模型训练的整个闭环就说清楚了:损失函数定义"什么是对",梯度下降指引"怎么走到对"。
搞懂这两个概念,你对模型训练的理解就上了一个台阶。不过实际项目中,还有很多坑等着你:比如模型在训练集上表现很好,到了测试集却崩了------这就是我们下一篇要聊的过拟合和欠拟合问题。