损失函数,也称为代价函数目标函数,是一个用于量化神经网络预测值与真实值之间差异的函数。

  • 输入:模型的预测输出和真实的标签。

  • 输出:一个标量值(一个数字),这个值代表了模型在当前参数下“犯错”的严重程度。

  • 核心思想损失值越低,说明模型的预测越准确;损失值越高,说明预测越糟糕。

损失函数的核心作用

1. 为模型提供学习和优化的目标
2. 为模型参数更新提供方向和幅度(指南针+尺子)

神经网络是通过梯度下降算法来学习的。而梯度下降的关键就是计算梯度

  • 梯度是什么? 梯度是损失函数对于每个模型参数的偏导数的集合。它指出了损失函数在当前位置增长最快的方向

  • 损失函数的作用:为了找到下降的方向,我们计算损失函数关于权重的梯度:∇L(w)。这个梯度明确地告诉我们:

    • 方向:为了减小损失,每个参数应该向哪个方向调整(增加还是减少)。

    • 幅度:梯度的大小也暗示了调整的幅度应该有多大。梯度大的地方,说明参数稍微改动一点,损失就会变化很大,因此需要更大的调整步伐。

没有损失函数,梯度下降法就无从谈起。

 评估模型性能的衡量标准

在训练过程中和训练结束后,我们需要一个客观的标准来评判模型的好坏。损失函数就是这个标准。

  • 训练监控:通过观察训练集上的损失随着训练轮数(epoch)的下降情况,我们可以判断模型是否正在学习,以及学习速度如何。

  • 模型选择与比较

    • 验证集上计算损失,可以帮助我们进行超参数调优(例如,选择学习率、网络层数等)。选择在验证集上损失最小的那组超参数。

    • 测试集上计算损失(以及其他相关指标,如准确率),可以最终、客观地评估模型的泛化能力,并与其他模型进行比较。


常见的损失函数

不同的任务需要不同的损失函数,选择正确的损失函数至关重要。

1. 回归任务(预测一个连续值)
  • 均方误差(MSE)

    • 公式MSE = (1/n) * Σ(预测值 - 真实值)²

    • 特点:对异常值敏感,因为误差被平方了。惩罚大的错误非常严厉。

    • 适用场景:大部分回归问题,如预测房价、温度等。

  • 平均绝对误差(MAE)

    • 公式MAE = (1/n) * Σ|预测值 - 真实值|

    • 特点:对异常值不如MSE敏感,更加稳健。

    • 适用场景:当数据中含有较多异常值时。

2. 分类任务(预测一个离散类别)
  • 交叉熵损失

    • 这是分类任务中最最重要和常用的损失函数。

    • 思想:衡量模型输出的概率分布真实的概率分布(通常是one-hot编码)之间的差异。

    • 二分类交叉熵损失:用于输出是0/1的问题(如判断垃圾邮件)。

    • 多分类交叉熵损失:用于输出有多个类别的问题(如手写数字识别、图像分类)。

    • 特点:当模型的预测概率与真实标签完全一致时,损失为0;差异越大,损失越高。它非常鼓励模型对自己的正确预测拥有高置信度。

  • Hinge Loss(合页损失)

    • 主要用于支持向量机(SVM),但也可以在神经网络中使用。

    • 特点:不仅要求分类正确,还要求正确类别的置信度要比其他类别高出一个间隔(margin)。


四、总结

将训练一个神经网络想象成训练一个盲人射手打靶

  1. 射手:神经网络模型。

  2. 弓箭和姿势:模型的参数(权重和偏置)。

  3. 靶心:完美的预测(真实标签)。

  4. 射箭:模型进行一次预测。

  5. 损失函数报靶员。每次射箭后,报靶员会告诉射手:

    • 你射得有多偏?(损失值)

    • 偏向哪个方向?(梯度的方向)

    • 偏了多少厘米?(梯度的大小)

  6. 梯度下降算法:射手根据报靶员的信息,系统地调整他的姿势(模型参数),目标是让下一箭射得更准(损失更低)。

如果没有这个报靶员(损失函数),射手就永远不知道自己射得怎么样,也就无法通过练习来进步。

因此,损失函数是连接模型“当前表现”与“理想表现”之间的桥梁,是驱动整个机器学习过程的核心引擎。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐