损失函数

损失函数

用来量化模型预测值和真实标签之间的差异

交叉熵损失函数

一般用于分类任务
计算:比如三分类问题,一个样本标签的one-hot向量为 $y = [0,0,1]^T$ , 模型预测的标签分布为 $[0.3,0.3,0.4]^T$ , 则它们的交叉熵为 $-(0 * log(0.3) + 0 * log(0.3) + 1 * log(0.4)) = -log(0.4)$

在机器学习和深度学习中,softmax 函数和交叉熵损失函数是两个常用的概念,它们通常一起使用在分类问题中。

Softmax 函数

Softmax 函数是一种将一个向量或一组实数转换成概率分布的函数。给定一个向量 ( z ),其中 ( z ) 的每个元素 ( z_i ) 都是实数,softmax 函数定义如下:

[
\text{softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}}
]

其中,( K ) 是类别的数量,( e ) 是自然对数的底数。Softmax 函数的输出是一个概率分布,每个类别都有一个概率值,这些概率值的和为 1。

交叉熵损失函数(Cross-Entropy Loss)

交叉熵损失函数是衡量模型预测的概率分布与真实标签的概率分布之间的差异的一种方法。在分类问题中,如果 ( y ) 是一个 one-hot 编码的标签向量,( \hat{y} ) 是模型预测的概率分布,交叉熵损失函数定义如下:

[
\text{Cross-Entropy Loss} = -\sum_{c=1}^{K} y_{o,c} \log(\hat{y}_c)
]

其中,( y_{o,c} ) 是 one-hot 编码中第 ( c ) 个类别的标签值(0 或 1),( \hat{y}_c ) 是模型预测的第 ( c ) 个类别的概率。

损失函数分类

在机器学习中,损失函数(Loss Function)是衡量模型预测值与实际值差异的函数,用于指导模型训练过程中的参数更新。以下是一些常见的损失函数:

  1. 均方误差(Mean Squared Error, MSE)

    • 用于回归问题,计算预测值与实际值之差的平方的平均值。
    • 公式:[ \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 ]
    • 其中,( y_i ) 是真实值,( \hat{y}_i ) 是预测值,( n ) 是样本数量。
  2. 交叉熵损失(Cross-Entropy Loss)

    • 用于分类问题,特别是二分类或多分类问题。
    • 公式:[ \text{Cross-Entropy} = -\sum_{c=1}^{M} y_{o,c} \log(p_{o,c}) ]
    • 其中,( M ) 是类别数,( y_{o,c} ) 是真实标签的独热编码,( p_{o,c} ) 是模型预测为第 ( c ) 类的概率。
  3. 对数损失(Logarithmic Loss)

    • 与交叉熵损失类似,常用于二分类问题。
    • 公式:[ \text{Log Loss} = -\frac{1}{n} \sum_{i=1}^{n} [y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i)] ]
    • 其中,( y_i ) 是二分类的真实标签(0或1),( \hat{y}_i ) 是模型预测的概率。
  4. 绝对值误差(Mean Absolute Error, MAE)

    • 用于回归问题,计算预测值与实际值之差的绝对值的平均值。
    • 公式:[ \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| ]
  5. Hinge损失(Hinge Loss)

    • 常用于支持向量机(SVM)中,用于最大化决策边界的宽度。
    • 公式:[ \text{Hinge Loss} = \max(0, 1 - y_i \cdot \hat{y}_i) ]
    • 其中,( y_i ) 是真实标签,( \hat{y}_i ) 是模型的预测值。
  6. 平方Hinge损失(Squared Hinge Loss)

    • Hinge损失的变体,对较大的误差给予更大的惩罚。
    • 公式:[ \text{Squared Hinge Loss} = \max(0, 1 - y_i \cdot \hat{y}_i)^2 ]
  7. Huber损失(Huber Loss)

    • 结合了MSE和MAE的优点,对小误差使用平方损失,对大误差使用线性损失。
    • 公式:[ \text{Huber Loss} = \begin{cases}
      \frac{1}{2} (y_i - \hat{y}_i)^2 & \text{for } |y_i - \hat{y}_i| \le \delta, \
      \delta (|y_i - \hat{y}_i| - \frac{1}{2} \delta) & \text{otherwise}
      \end{cases} ]
    • 其中,( \delta ) 是一个超参数,控制损失函数从平方项到线性项的过渡。
  8. 三元损失(Triplet Loss)

    • 常用于深度学习中的度量学习,特别是在人脸识别等任务中。
    • 目标是使相似样本的距离比不相似样本的距离小。
  9. IoU损失(Intersection over Union Loss)

    • 用于目标检测和分割问题,衡量预测的边界框与真实边界框的重叠程度。
  10. Focal损失(Focal Loss)

    • 用于解决类别不平衡问题,特别是对于容易分类的样本减少其权重,而对难以分类的样本增加其权重。

这些损失函数各有其特点和适用场景,选择合适的损失函数可以帮助提高模型的性能和泛化能力。

过/欠拟合

梯度下降法

梯度下降法就是一种通过求目标函数的导数来寻找目标函数最小化的方法

  1. 批量梯度下降法(BGD)在每次迭代时要计算每个样本上损失函数的梯度并求和
  2. 随机梯度下降法(SGD)为了减少每次迭代的

损失函数、代价函数、目标函数

  • 损失函数 Loss Function 通常是针对单个训练样本而言,给定一个模型输出 $\hat{y}$ 和一个真实 $y$ ,损失函数输出一个实值损失 $L=f(y_i, \hat{y_i})$
  • 代价函数 Cost Function 通常是针对整个训练集(或者在使用 mini-batch gradient descent 时一个 mini-batch)的总损失 $J=\sum_{i=1}^{N} f(y_i,\hat{y_i})$
  • 目标函数 Objective Function 是一个更通用的术语,表示任意希望被优化的函数,用于机器学习领域和非机器学习领域(比如运筹优化)

损失函数
https://cs-lb.github.io/2024/04/14/深度学习/损失函数/
作者
Liu Bo
发布于
2024年4月14日
许可协议