趋近智
我们已经知道神经网络由层层相互连接的神经元组成,并利用激活函数引入非线性。但网络究竟是如何学习的呢?它是如何从随机初始猜测变为做出有效预测的呢?这个过程始于量化其预测的错误程度。这就是损失函数的作用。
想象你在学玩飞镖。你投掷一枚飞镖(网络做出预测),它落在靶盘上的某个位置。损失函数就像一个计分规则,它告诉你你的飞镖(y^,预测值)距离靶心(y,实际目标值)有多远。自然地,目标是在多次投掷后,最小化这个“距离”或错误分数。
在深度学习中,损失函数(也称为成本函数或目标函数)计算一个单一的标量值,表示网络预测输出(y^)与给定输入数据的真实目标值(y)之间的差异。整个训练过程都围绕着最小化这个损失值。通过系统地调整网络的权重和偏置(我们很快将在梯度下降和反向传播中讨论),我们试图找到能产生最低损失的参数设置,这意味着根据我们选择的度量标准,预测值尽可能接近实际值。
损失函数的选择并非随意;它主要取决于你试图解决的问题类型,即是回归任务还是分类任务。
回归问题涉及预测连续的数值。例子包括预测房价、股票价值或温度。对于这些任务,损失函数衡量预测值与实际值之间的差异。
均方误差或许是回归问题中最常见的损失函数。它计算预测值与实际值之间平方差的平均值。
MSE的公式为: 均方误差=n1∑i=1n(yi−y^i)2 其中:
为什么要平方差值? 平方有两个目的:
对大误差的这种强惩罚使MSE对异常值敏感。如果你的数据集中包含一些具有异常大误差的点,它们可能会主导损失值,并在训练过程中显著影响生成的模型参数。然而,MSE在数学上很方便,特别是因为它的导数易于计算,这有助于基于梯度的优化方法。
平均绝对误差为回归损失提供了一个不同的视角。它不将差值平方,而是取它们的绝对值。
MAE的公式为: 平均绝对误差=n1∑i=1n∣yi−y^i∣ 在这里,误差贡献与差值呈线性关系。10的差值对总和贡献10,而2的差值贡献2。
因为MAE不平方误差,所以与MSE相比,它对异常值不那么敏感。单个大误差不会那么大程度地主导总损失。这使得MAE成为一个可能更好的选择,如果你的数据集包含你不想过度影响模型的显著异常值。主要缺点是绝对值函数在零点处梯度未定义,在其他地方是常数,这有时会使优化比MSE的光滑梯度稍不直接,尤其是在最小值附近。
下面的图表显示了MSE和MAE的损失贡献如何随绝对误差(∣y−y^∣)的增加而增加。注意MSE(蓝线)的上升速度远快于MAE(橙线),这反映了它对较大误差更强的惩罚。
预测误差增加时,均方误差(MSE)和平均绝对误差(MAE)的损失值比较。MSE呈二次方增长,而MAE呈线性增长。
分类问题涉及将输入数据分配到几个离散类别或分类中的一个。例子包括识别垃圾邮件(垃圾邮件/非垃圾邮件)、识别手写数字(0-9)或图像分类(猫/狗/鸟)。
对于分类问题,我们通常处理概率。网络输出一个关于可能类别的概率分布(例如,80%的几率是猫,15%的狗,5%的鸟)。我们需要一个损失函数来衡量预测概率分布与实际分布(真实类别具有100%的概率,其他类别为0%)的匹配程度。MSE和MAE通常不适用于此,因为它们不能有效地衡量概率分布之间的距离。标准选择是交叉熵损失。
交叉熵源于信息论,并提供了一种衡量两个概率分布之间差异的方法。在我们的语境中,这些是预测概率分布(来自网络的输出层,通常在Sigmoid或Softmax激活之后)和真实概率分布(表示实际标签)。较低的交叉熵值表示预测分布更接近真实分布。
交叉熵损失的具体形式取决于类别的数量。
用于二元分类任务,其中只有两个可能的输出类别(例如,0或1,真或假,垃圾邮件或非垃圾邮件)。这个损失函数通常与输出层中的Sigmoid激活函数一起使用,因为Sigmoid将输出压缩到0和1之间的值,表示正类别(类别1)的概率。
二元交叉熵(也称为对数损失)的公式为: 二元交叉熵损失=−n1∑i=1n[yilog(y^i)+(1−yi)log(1−y^i)] 其中:
让我们为一个单独的样本(n=1)进行分解:
BCE有效地惩罚那些自信地给出错误预测的情况。
用于多类别分类任务,其中每个样本属于 C 个可能类别中的一个(C>2)。这个损失函数通常与输出层中的Softmax激活函数配合使用。Softmax将网络对每个类别的原始输出分数(logits)转换为概率分布,其中所有概率之和为1。
多类别交叉熵的公式为: 多类别交叉熵损失=−n1∑i=1n∑j=1Cyijlog(y^ij) 其中:
[0, 0, 1, 0])。对于单个样本 i,因为只有一个 yij 值是1(对于真实类别 k),其余为0,所以内层求和简化为 −log(y^ik)。也就是说,该样本的损失仅仅是网络分配给正确类别的概率的负对数。网络会根据分配给正确类别的概率有多低而受到惩罚。
注: 有时你可能会遇到“稀疏多类别交叉熵”。它在数学上与CCE相同,但接受整数标签(例如,第3个类别为 2),而不是要求独热编码标签,这可以更节省内存。
选择合适的损失函数对成功的模型训练非常重要。主要的指导原则是你的任务性质:
既然我们有了一种利用损失函数精确衡量网络表现的方法,下一步就是找出如何调整网络参数(权重和偏置)以最小化这个损失。这个优化过程是本章其余部分的议题,将从核心算法:梯度下降开始。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造