本文主要是介绍数学基础 -- 均方误差(Mean Squared Error, MSE)与交叉熵(Cross-Entropy)的数学原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
均方误差(Mean Squared Error, MSE)与交叉熵(Cross-Entropy)的数学原理
1. 均方误差(Mean Squared Error, MSE)
均方误差主要用于回归问题,度量预测值与实际值之间的平均平方差。其数学公式为:
MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1i=1∑n(yi−y^i)2
- n n n:样本数量。
- y i y_i yi:实际值。
- y ^ i \hat{y}_i y^i:预测值。
原理:
- 误差:首先计算每个样本的预测值与实际值之间的差,即 y i − y ^ i y_i - \hat{y}_i yi−y^i。
- 平方:将误差进行平方,这样可以避免正负误差相互抵消,也使得较大的误差权重更大。
- 平均:对所有样本的平方误差求平均值,以获得整体的误差。
均方误差的值越小,说明模型的预测结果越接近实际值。由于平方的原因,MSE 对异常值(outliers)较为敏感。
2. 交叉熵(Cross-Entropy)
交叉熵损失函数通常用于分类问题,度量两个概率分布之间的差异。其数学公式根据任务的不同,分为二分类交叉熵和多分类交叉熵。
二分类交叉熵损失
在二分类问题中,假设输出结果为类别 y ∈ { 0 , 1 } y \in \{0, 1\} y∈{0,1},预测值为 y ^ \hat{y} y^,则交叉熵损失的公式为:
Binary Cross-Entropy = − 1 n ∑ i = 1 n [ y i ⋅ log ( y ^ i ) + ( 1 − y i ) ⋅ log ( 1 − y ^ i ) ] \text{Binary Cross-Entropy} = -\frac{1}{n} \sum_{i=1}^{n} \left[ y_i \cdot \log(\hat{y}_i) + (1 - y_i) \cdot \log(1 - \hat{y}_i) \right] Binary Cross-Entropy=−n1i=1∑n[yi⋅log(y^i)+(1−yi)⋅log(1−y^i)]
- y i y_i yi:实际类别标签(0 或 1)。
- y ^ i \hat{y}_i y^i:模型输出的预测概率。
多分类交叉熵损失
在多分类问题中,假设类别有 k k k 个,模型输出为一个概率分布 y ^ i = [ y ^ i 1 , y ^ i 2 , … , y ^ i k ] \hat{y}_i = [\hat{y}_{i1}, \hat{y}_{i2}, \dots, \hat{y}_{ik}] y^i=[y^i1,y^i2,…,y^ik],则多分类交叉熵损失的公式为:
Categorical Cross-Entropy = − 1 n ∑ i = 1 n ∑ j = 1 k y i j ⋅ log ( y ^ i j ) \text{Categorical Cross-Entropy} = -\frac{1}{n} \sum_{i=1}^{n} \sum_{j=1}^{k} y_{ij} \cdot \log(\hat{y}_{ij}) Categorical Cross-Entropy=−n1i=1∑nj=1∑kyij⋅log(y^ij)
- y i j y_{ij} yij:实际类别的 one-hot 编码表示,即如果样本 i i i 属于类别 j j j,则 y i j = 1 y_{ij} = 1 yij=1,否则 y i j = 0 y_{ij} = 0 yij=0。
- y ^ i j \hat{y}_{ij} y^ij:模型输出的预测概率,表示样本 i i i 属于类别 j j j 的概率。
原理:
- 信息熵:交叉熵源于信息论中的“熵”概念,表示一个概率分布与目标分布之间的不确定性。熵越大,模型的预测结果越不确定。
- 对数函数:使用对数函数是为了惩罚模型对于实际类别的错误预测,对数值越接近0,损失越大。
- 求和:交叉熵通过对所有样本和类别求和,得出整体的损失值。
交叉熵损失函数在分类问题中非常常用,因为它直接与概率相关,能够准确反映模型对分类任务的表现。交叉熵越小,说明模型预测的概率分布与实际类别分布越接近。
这篇关于数学基础 -- 均方误差(Mean Squared Error, MSE)与交叉熵(Cross-Entropy)的数学原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!