深度学习基础之-1.6均方差损失(MSE)

均方差函数(MSE Mean Square Error)

计算预测值和真实值之间的欧式距离。预测值和真实值越接近,两者的均方差就越小
均方差函数常用于线性回归(linear regression),即函数拟合(function fitting)。

公式

J ( w , b ) = 1 2 m ∑ i = 1 m ( a i − y i ) 2 J(w,b)=\frac{1}{2m} \sum_{i=1}^m (a_i-y_i)^2 J(w,b)=2m1i=1m(aiyi)2

工作原理

要想得到预测值a与真实值y的差距,最朴素的想法就是用 E r r o r = a i − y i Error=a_i-y_i Error=aiyi

对于单个样本来说,这样做没问题,但是多个样本累计时, a i − y i a_i-y_i aiyi有可能有正有负,误差求和时就会导致相互抵消,从而失去价值。所以有了绝对值差的想法,即 E r r o r = ∣ a i − y i ∣ Error=|a_i-y_i| Error=aiyi

假设有三个样本的标签值是 y = [ 1 , 1 , 1 ] y=[1,1,1] y=[1,1,1]

样本标签值样本预测值绝对值损失函数均方差损失函数
[ 1 , 1 , 1 ] [1,1,1] [1,1,1] [ 1 , 2 , 3 ] [1,2,3] [1,2,3] ( 1 − 1 ) + ( 2 − 1 ) + ( 3 − 1 ) = 3 (1-1)+(2-1)+(3-1)=3 (11)+(21)+(31)=3 ( 1 − 1 ) 2 + ( 2 − 1 ) 2 + ( 3 − 1 ) 2 = 5 (1-1)^2+(2-1)^2+(3-1)^2=5 (11)2+(21)2+(31)2=5
[ 1 , 1 , 1 ] [1,1,1] [1,1,1] [ 1 , 3 , 3 ] [1,3,3] [1,3,3] ( 1 − 1 ) + ( 3 − 1 ) + ( 3 − 1 ) = 4 (1-1)+(3-1)+(3-1)=4 (11)+(31)+(31)=4 ( 1 − 1 ) 2 + ( 3 − 1 ) 2 + ( 3 − 1 ) 2 = 8 (1-1)^2+(3-1)^2+(3-1)^2=8 (11)2+(31)2+(31)2=8
4/3=1.338/5=1.6

可以看到5比3已经大了很多,8比4大了一倍,而8比5也放大了某个样本的局部损失对全局带来的影响,用不通俗的语言说,就是“对某些偏离大的样本比较敏感”,从而引起监督训练过程的足够重视,以便差异化回传的误差。

实际案例

假设有一组数据如下,我们想找到一条拟合的直线:

在这里插入图片描述
下面四张图,前三张显示了一个逐渐找到最佳拟合直线的过程。

  1. 第一张,用均方差函数计算得到Loss=0.5559
  2. 第二张,直线向上平移一些,误差计算Loss=0.1651,比图一的误差小很多
  3. 第三张,又向上平移了一些,误差计算Loss=0.02441,此后还可以继续尝试平移(改变b值)或者变换角度(改变w值),得到更小的Loss值
  4. 第四张,偏离了最佳位置,误差值Loss=0.1336,这种情况,算法会让尝试方向反向向下
    在这里插入图片描述
    我们把四张图叠加在一起看一下,绿色的线是第三张图Loss值最小的情况。
    在这里插入图片描述
    比较第二张和第四张图,由于均方差的Loss值都是正值,如何判断是向上移动还是向下移动呢?

在实际的训练过程中,是没有必要计算Loss值的,因为Loss值会体现在反向传播的过程中。我们来看看均方差函数的导数:
∂ J ∂ a i = a i − y i \frac{\partial{J}}{\partial{a_i}} = a_i-y_i aiJ=aiyi
虽然 ( a i − y i ) 2 (a_i-y_i)^2 (aiyi)2永远是正数,但是 a i − y i a_i-y_i aiyi却可以是正数(直线在点下方时)或者负数(直线在点上方时),这个正数或者负数被反向传播回到前面的计算过程中,就会引导训练过程朝正确的方向尝试。

在上面的例子中,我们有两个变量,一个w,一个b,这两个值的变化都会影响最终的Loss值的。

我们假设该拟合直线的方程是y=3x+1,当我们固定w=3,把b值从0到2变化时,看看Loss值的变化:
在这里插入图片描述
我们假设该拟合直线的方程是y=3x+1,当我们固定b=1,把w值从2到4变化时,看看Loss值的变化:
在这里插入图片描述

损失函数值的3D示意图

横坐标为w,纵坐标为b,二者的组合会形成一个损失函数值,用三维图的高度来表示,最后形成一个碗状。该三维图到底面上的投影与下面的2D示意图类似。
在这里插入图片描述

损失函数值的2D示意图

横坐标为w,纵坐标为b,二者的组合会计算出一个损失函数值,存放在矩阵中,最后把矩阵中相近的损失函数值的连线会形成椭圆。
在这里插入图片描述

https://github.com/microsoft/ai-edu/blob/master/B-教学案例与实践/B6-神经网络基本原理简明教程/03.1-均方差损失函数.md

### 关于二维MSE损失函数 #### 定义与公式 均方误差(Mean Squared Error, MSE)是一种常用的回归问题损失函数,用于衡量模型预测值与真实值之间的差异。对于二维情况下的MSE,其计算方式是对每一对预测值和真实值分别按维度求平方差并取平均。具体而言,假设存在一组样本数据 \( \{(x_1^{(i)}, y_1^{(i)}), (x_2^{(i)}, y_2^{(i)})\} \),其中 \( i = 1, 2, ..., n \) 表示第 \( i \) 个样本,则二维MSE可以表示为: \[ \text{MSE}_{2D} = \frac{1}{n} \sum_{i=1}^{n} ((y_1^{(i)} - \hat{y}_1^{(i)})^2 + (y_2^{(i)} - \hat{y}_2^{(i)})^2) \] 这里的 \( y_1^{(i)} \) 和 \( y_2^{(i)} \) 是目标的真实值,而 \( \hat{y}_1^{(i)} \) 和 \( \hat{y}_2^{(i)} \) 则是对应的预测值[^4]。 #### 应用场景 在机器学习领域,尤其是涉及多维输出的任务中,二维MSE被广泛应用于评估模型性能以及优化参数调整过程。例如,在图像处理任务中的超分辨率重建、光流估计等问题上,由于这些任务通常需要同时考虑多个特征维度上的精度,因此采用二维甚至更高维度形式的MSE作为评价标准显得尤为重要[^5]。 另外,在深度学习框架下解决物理模拟相关问题时——比如前面提到过的利用卷积神经网络(CNNs)进行流体力学仿真分析案例里也会涉及到此类度量工具的应用情景[^1]。 #### 实现方法 以下是基于Python语言的一个简单实现例子,展示了如何在一个小型数据集上计算二维MSE: ```python import numpy as np def mse_2d(y_true, y_pred): """ Calculate Mean Squared Error for 2-dimensional outputs. Parameters: y_true : array-like of shape (n_samples, 2) Ground truth (correct) target values. y_pred : array-like of shape (n_samples, 2) Estimated target values. Returns: float: The mean squared error between `y_true` and `y_pred`. """ diff_sq_sum = np.sum((y_true[:,0]-y_pred[:,0])**2 + (y_true[:,1]-y_pred[:,1])**2) return diff_sq_sum / len(y_true) # Example usage if __name__ == "__main__": true_values = np.array([[1.0, 2.0], [3.0, 4.0]]) predicted_values = np.array([[1.1, 1.9], [2.8, 4.1]]) result = mse_2d(true_values, predicted_values) print(f"The 2D-MSE Loss is {result}") ``` 上述代码片段定义了一个名为`mse_2d`的功能函数,它接收两个形状相同的数组作为输入参数,并返回它们之间依据前述公式的均方误差数值结果[^6]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值