常用损失函数loss(均方误差、交叉熵)

本文介绍了深度学习中常用的误差度量方法,包括均方误差(MSE)在线性回归问题中的应用,以及交叉熵(Crossentropy)的概念及其在分类问题中的作用。交叉熵实际上是KL散度的一种形式,常用于衡量预测概率分布与实际标签分布之间的差异。在优化过程中,最小化交叉熵等同于最小化KL散度,是评估模型性能的关键指标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、均方误差(Mean Squared Error)

表示预测数据和原始数据对应点误差的平方和的均值,常用于线性回归问题。

公式:loss=\frac{1}{2m}\sum\limits_{i=1}^{m}{​{​{({​{y}_{i}}-\hat{y_{i}})}^{2}}}

m表示样本数量。

二、交叉熵(cross entropy):

极其有意思的现象:A和B的交叉熵 = A与B的KL散度 - A的熵。

信息论

1、信息量

含义:越不可能发生(概率p(x)越小)的事件发生了,其信息量就越大。 

公式:I(x)=-log(p(x))

表示:负对数函数。

2、熵

含义:所有信息量的期望。

公式:H(X)=-\sum\limits_{i=1}^{n}{p({​{x}_{i}})log(p({​{x}_{i}}))}

不确定性越大熵越大。

相对熵&KL散度(Kullback-Leibler (KL) divergence)

含义:衡量同一个随机变量 x 的两个单独的概率分布 P(x) 和 Q(x)的差异,KL散度值越小表示两个分布越接近,其就像两个分布之间的距离。

公式:{​{D}_{KL}}(p||q)=\sum\limits_{i=1}^{n}{p({​{x}_{i}})log(\frac{p({​{x}_{i}})}{q({​{x}_{i}})})}

交叉熵(cross entropy):

含义:和KL散度一样衡量两个分布的差异性,常用于分类问题。

公式:H(p,q)=-\sum\limits_{i=1}^{n}{p({​{x}_{i}})log(q({​{x}_{i}})}

深度学习中为什么使用交叉熵

目的:求目标值与预测值之间的差距。

对于深度学习中使用交叉熵作为损失函数,其实和采用KL散度没有区别,计算交叉熵更简便。

KL散度公式变形:

{​{D}_{KL}}(p||q) =\sum\limits_{i=1}^{n}{p({​{x}_{i}})log(\frac{p({​{x}_{i}})}{q({​{x}_{i}})})} \\ =\sum\limits_{i=1}^{n}{p({​{x}_{i}})[log(p({​{x}_{i}}))-log(q({​{x}_{i}}))]} \\ =\sum\limits_{i=1}^{n}{p({​{x}_{i}})log(p({​{x}_{i}}))}\sum\limits_{i=1}^{n}{p({​{x}_{i}})log(q({​{x}_{i}}))} \\ =-H(p(x))+[-\sum\limits_{i=1}^{n}{p({​{x}_{i}})log(q({​{x}_{i}}))}] \\

公式后半部分恰好为交叉熵,其中熵H(p(x))是不变的。

注:对于深度学习优化时,最小化KL散度等同于最小化交叉熵。

单分类交叉熵

多分类交叉熵

### 关于交叉熵误差 #### 概念 交叉熵是一种衡量两个概率分布之间差异性的指标,在机器学习领域常用于分类任务中的损失函数。它反映了模型预测的概率分布与真实标签之间的距离[^1]。 #### 数学定义 对于离散随机变量 \(X\) 其对应的概率分布 \(P(X)\) 以及估计分布 \(Q(X)\)交叉熵可以表示为: \[ H(P, Q) = - \sum_{x} P(x) \log(Q(x)) \] 其中,\(P(x)\) 是真实的概率分布,而 \(Q(x)\) 则是由模型给出的预测分布[^2]。 #### 计算方法 在二元分类问题中,假设样本的真实标签为 \(y_i \in \{0, 1\}\),模型输出的预测值为 \(\hat{y}_i\) (经过激活函数如 sigmoid 后得到),则单个样本上的交叉熵损失可写成如下形式: \[ L(y_i, \hat{y}_i) = -( y_i \cdot \log (\hat{y}_i ) + (1-y_i) \cdot \log(1-\hat{y}_i )) \] 而对于多类别的分类问题(假设有 K 类别),如果采用 softmax 函数作为最后一层,则交叉熵损失变为: \[ L(Y,\hat{Y})=-\frac{1}{N}\sum^N_{n=1}\sum^K_{k=1}[ Y_k^{(n)} \log \hat{Y}_k ^{(n)} ] \] 这里 \( N \) 表示训练集大小;\(K\) 表示类别数;\(Y_k^{(n)}\) \(\hat{Y}_k^{(n)}\) 分别代表第 n 个样本属于 k 类的实际值预测值[^3]。 以下是实现上述两种情况下的 Python 实现: ```python import numpy as np def binary_cross_entropy_loss(y_true, y_pred): epsilon = 1e-7 # 防止 log(0) y_pred_clipped = np.clip(y_pred, epsilon, 1 - epsilon) loss = -np.mean(y_true * np.log(y_pred_clipped) + (1 - y_true) * np.log(1 - y_pred_clipped)) return loss def categorical_cross_entropy_loss(y_true, y_pred): epsilon = 1e-7 y_pred_clipped = np.clip(y_pred, epsilon, 1 - epsilon) loss = -np.sum(y_true * np.log(y_pred_clipped)) / y_true.shape[0] return loss ``` #### 应用场景 交叉熵广泛应用于各种监督学习任务之中,尤其是在涉及分类的任务里表现优异。例如图像识别、自然语言处理等领域都常用到此概念来优化神经网络参数以提高准确性[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值