Loss Function Explained For Noobs (How Models Know They Are Wrong)
TL;DR · AI 摘要
损失函数是机器学习模型评估预测错误程度的核心机制,通过量化预测与真实值的差距指导模型优化。
核心要点
- 损失函数通过量化预测与真实值的差距,指导模型优化。
- 均方误差(MSE)常用于回归问题,如房价预测。
- 损失函数的反馈机制类似于打靶游戏中的距离反馈。
结构提纲
按章节快速跳转。
- §引言
文章指出初学者在学习机器学习时,常对损失函数的原理感到困惑。
损失函数用于衡量模型预测与真实值之间的差距,是模型学习的核心机制。
MSE是回归问题中最常用的损失函数,用于量化预测值与真实值的平方差。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- 损失函数
- 定义与作用
- 衡量预测与真实值的差距
- 指导模型优化
- 常见类型
- 均方误差(MSE)
金句 / Highlights
值得收藏与分享的关键句。
损失函数通过量化预测与真实值的差距,指导模型优化。
均方误差(MSE)常用于回归问题,如房价预测。
损失函数的反馈机制类似于打靶游戏中的距离反馈。
为新手解释损失函数(模型如何知道自己错了) - KDnuggets
publ: 2026年6月19日
- 博客热门文章
- 主题 人工智能 职业建议 计算机视觉 数据工程 数据科学 语言模型 机器学习 MLOps NLP 编程 Python SQL
- 数据集
- 活动
- 资源 快速参考指南 推荐 技术简报
- 广告
加入新闻通讯
#header end
/ad_wrapper
为新手解释损失函数(模型如何知道自己错了)
这是一个简单的指南,用于理解机器学习中的损失函数以及模型如何从错误中学习。
作者:
Kanwal Mehreen
,KDnuggets 技术编辑和内容专家,2026年6月19日发布于
机器学习
<div class="addthis_native_toolbox"></div>
# 引言
我知道,当初学者开始学习机器学习时,事情起初似乎很简单。你跟随一个教程,它要求你加载一个数据集,训练一个模型,然后你看到类似这样的内容:loss = "mse" 或 criterion = nn.CrossEntropyLoss() 。
就这样,教程开始谈论方程、梯度、优化和希腊字母。如果你曾经点头表示理解,但其实并不清楚损失函数的作用,你并不孤单。损失函数通常被反向解释。大多数教程从公式开始,而他们应该从概念开始。本文是我在新手系列的一部分,我将努力使你更容易理解。那么,我们开始吧。
# 什么是损失函数?
损失函数是机器学习模型知道自己错误的方式。这其实就是整个概念。模型做出一个预测。损失函数将该预测与正确答案进行比较。然后它给模型一个数字,表示“你的错误有多严重”。
高损失意味着模型非常错误。
低损失意味着模型接近正确。
在训练过程中,模型不断调整自己以减小损失。
这就是学习发生的方式。如果你玩过飞镖游戏,它非常相似。你投掷飞镖。为了改进,你需要反馈。你需要知道你的飞镖是稍微偏离了,离得很远,太高了,还是太偏左了。没有这些反馈,你无法改进。因此,中心点基本上就是正确答案,飞镖就是预测。你测量飞镖与中心点之间的距离。损失函数测量飞镖落地的距离。这个距离成为模型的反馈信号。如果你喜欢可视化,它看起来会是这样。
就像距离中心点的远近很重要一样,投得太近和偏离太远是不一样的。同样地,对于模型来说,仅仅知道答案是错误的并不够。模型需要知道它失败的程度,以便改进。
现在我们已经了解了损失函数是什么以及为什么我们需要它,让我们看看机器学习中使用的一些常见损失函数。
def mean_squared_error(predictions, actuals):
squared_errors = [(p - a) ** 2 for p, a in zip(predictions, actuals)]
return sum(squared_errors) / len(squared_errors)现在,我知道从错误中计算平均值在直觉上是有意义的,但理解为什么我们要对它们进行平方可能会让人感到困惑。这是出于两个原因:
- 平方可以将每一个错误变为正数。+3 的错误和 -3 的错误一样糟糕,平方后两者都变为 9,这样它们就不会相互抵消了。平方对大的错误惩罚比对小的错误惩罚更严厉。这对于许多使用场景来说是很有好处的。例如,如果你在预测房价,预测错误 1000 美元和预测错误 200,000 美元应该分别受到相应的惩罚。
# 平均绝对误差
另一个常见的损失函数是平均绝对误差(MAE)。MAE 同样衡量预测值和实际值之间的差距,但它不会对误差进行平方。相反,它只是取绝对值。
下面是用 Python 编写的函数:
def mean_absolute_error(predictions, actuals):
absolute_errors = [abs(p - a) for p, a in zip(predictions, actuals)]
return sum(absolute_errors) / len(absolute_errors)因此,它对大的错误进行惩罚,但不像 MSE 那样严厉。
- 10 的误差成本是 10,20 的误差成本是 20。如果你的数据自然存在一些异常值,并且你不想让模型对它们过度反应,MAE 是一个不错的选择。
让我展示一个快速的图表,比较 MSE 和 MAE 曲线。
# 交叉熵损失
到目前为止,我们讨论了预测数字的问题。但许多机器学习问题是关于预测类别的。
这封电子邮件是垃圾邮件还是不是?
这是一张狗、猫还是鱼的图片?
某笔交易是欺诈性的还是不是?
对于分类任务,模型通常会输出类似以下的概率:
狗: 70%
猫: 20%
鱼: 10%如果图片确实是狗,这是一个好的预测。但如果它是猫,那么模型需要因为给正确答案分配了较低的概率而受到惩罚。
因此,直觉是:
- 正确且自信 —— 损失低
- 正确但不确定 —— 损失中等
- 错误且自信 —— 损失高
这就是为什么交叉熵被广泛用于分类。它不仅关心模型是否正确,还关心模型的置信度。
# 损失与准确率
现在我们已经了解了不同的损失函数,我也想澄清损失和准确率之间的区别。它们并不是一回事。
准确率告诉你有多少预测是正确的。
但损失告诉你模型的错误有多严重。
如果你有两个模型 —— 模型 A 和模型 B —— 它们都正确预测了 100 个预测中的 90 个,它们的准确率是相同的。但一个模型可能在正确答案上非常自信,而在错误答案上只是稍微错误,而另一个模型可能在许多例子上只是勉强正确,而在错误时却非常自信。
在这种情况下,准确率是相同的,但损失是不同的。
# 训练循环
一旦模型有了一个损失值,它就可以进行改进。训练循环如下:
- 模型进行预测。损失函数衡量错误。优化器更新模型。模型再次尝试。损失希望变得更小。
在训练模型时,我们也会绘制损失随时间变化的曲线。起初,模型会犯很多错误,预测能力较差,因此损失较高。但随着训练的进行,损失会下降,模型的预测能力也会提高。
一条健康的训练曲线通常如下所示:
初始损失较高 → 快速下降 → 逐渐趋于平稳
如下面的图所示。
趋于平稳是正常的。这意味着模型已经学会了简单的模式,现在正在做出较小的改进。但如果训练损失下降的同时,验证损失开始上升,这可能是过拟合的警告信号——这意味着模型可能正在记忆训练数据,而不是学习可以泛化的模式。
# 最后的想法
损失函数是模型的错误分数。
它告诉模型其预测错误的程度,并为训练提供一个明确的目标:让这个数字变小。
一旦你理解了损失函数,许多其他机器学习的概念将变得更容易理解——包括梯度下降、反向传播、优化、过拟合和评估指标。
你不需要从可怕的公式开始。从这个想法开始:
- 模型进行猜测。损失函数对猜测进行评分。模型更新自身以减少这个评分。
这就是机器学习的核心。
损失是模型知道自己错误的方式。
训练是它学习如何减少错误的方式。
这将我们带到了本文的结尾。我们将继续在我们的新手系列中介绍一些有趣的概念。
Kanwal Mehreen 是一位机器学习工程师和技术作家,对数据科学以及人工智能与医学的交汇点有着浓厚的热情。她合著了电子书《如何利用 ChatGPT 最大化生产力》。作为 2022 年 Google Generation Scholar(亚太地区),她倡导多样性和学术卓越。她还被认定为 Teradata 技术多样性学者、Mitacs Globalink 研究学者和哈佛 WeCode 学者。Kanwal 是变革的坚定倡导者,她创立了 FEMCodes 以赋能 STEM 领域的女性。
关于此主题的更多内容
- 为新手解释人工智能
- 如何使用 pivot_table 函数进行高级数据汇总…
- 我们在真实数据集上使用了 5 种异常值检测方法:它们…
- 10 分钟内了解 7 个必须知道的机器学习算法
- 用三个难度级别解释大型语言模型
- 5 分钟内解释 5 个机器学习模型
<hr class="grey-line"><br> <div><h3>我们推荐的 5 个免费课程</h3><br> </div>
Mailchimp for WordPress v4.13.0 - https://wordpress.org/plugins/mailchimp-for-wp/
/ Mailchimp for WordPress 插件
你可以从这里开始编辑。
如果评论已关闭。
<= 上一篇
#content end
<script type="text/javascript">kda_sid_write(kda_sid_n);</script>
最新文章
- 为新手解释损失函数(模型如何知道自己是错误的)实用 SQL 技巧每位数据科学家都应该知道的 Python 字典技巧和窍门你应该始终记住的高级连接技术:LATERAL 连接、半连接、反连接如何(以及为什么)我构建了一个 AI 助手使用 OpenAI Codex 的 5 个有趣项目
热门文章
- 将 Claude Code 与本地模型配对
- 为你的创业点子获得资金的 7 个最佳方法
- 2026 年成为 LLM 工程师的路线图
- 低成本的本地智能代理编程:Claude Code + Ollama + Gemma4
- Anthropic 的 Claude 技能构建完整指南
- 如何(以及为什么)我构建了一个 AI 助手
- 使用 Python 的 sktime 构建时间序列机器学习模型
- 使用 OpenAI Codex 的 5 个有趣项目
- 停止在 Pandas 中编写循环:尝试 7 种更快的替代方法
- 5 个有用的 Python 脚本,用于自动化无聊的 PDF 任务
#content_wrapper end
© 2026
Guiding Tech Media
|
关于
联系
广告
隐私
服务条款
发布于 2026 年 6 月 19 日 by
blank
不,谢谢!
/.main_wrapper
<script defer type="text/javascript" src="https://s7.addthis.com/js/300/addthis_widget.js#pubid=gpsaddthis"></script>
noptimize
/noptimize