007、常用的损失函数

之——理解与扩展

目录

之——理解与扩展

杂谈

正文

扩展


杂谈

        损失函数(Loss Function)在机器学习和深度学习中起着关键作用。它是用来衡量模型预测值与真实值之间的差异的函数。训练一个机器学习模型的目标通常是最小化损失函数,使得模型的预测尽量接近真实值。以下是损失函数的意义和要点:

1. 衡量模型性能: 损失函数用来量化模型在训练数据上的性能。通过最小化损失函数,我们能够使模型的预测结果尽量接近实际观测值,从而提高模型的准确性。

2. 反映预测误差: 损失函数值越小,代表模型的预测结果与实际值越接近,反之则说明预测误差较大。机器学习算法的优化过程就是通过不断调整模型参数,使得损失函数值逐渐减小,从而改善模型的预测能力。

3. 不同任务有不同的损失函数: 不同的机器学习任务(如回归、分类、生成等)通常需要选择不同的损失函数。例如,均方误差(Mean Squared Error)常用于回归问题,交叉熵损失(Cross-Entropy Loss)常用于分类问题。选择合适的损失函数对模型的训练和性能至关重要。

4. 要平衡偏差和方差: 损失函数的选择需要平衡模型的偏差和方差。简单的损失函数可能导致模型欠拟合(高偏差),复杂的损失函数可能导致模型过拟合(高方差)。合适的损失函数可以帮助找到这个平衡点,使得模型在训练集和测试集上都有好的表现。

5. 正则化项与损失函数的结合: 在深度学习中,通常会在损失函数中加入正则化项,如L1正则化、L2正则化,以防止过拟合,提高模型的泛化能力。

6. 梯度下降优化: 梯度下降是常用的优化算法,通过计算损失函数对模型参数的梯度,来更新模型参数,使得损失函数逐渐减小。这个过程被称为损失函数的梯度下降优化。

综上所述,损失函数在机器学习中具有重要意义,选择合适的损失函数并结合适当的优化算法,是训练高效、准确模型的关键一步。

        见识过超级多损失函数,学界玩出各种花,但常用的只有前三个:


  1. L1
  2. L2
  3. 交叉熵
  4. huber robust(LI+L2)

正文

        偷懒版本,感谢前辈:

3个常用的损失函数_chnyi6_ya的博客-CSDN博客

        因为阶数越高梯度肯定变化性越好,但相应的反向传播的梯度计算的代价也就越大,所以既要最后收敛性的优点又要外围的计算代价小就有了robust损失:

        导数连续无阶跃断点。

print('三个经典loss'
      'L2 平方损失函数 (y’-y)^2/2,特点是梯度更新会随着距离增加而加大'
      'L1差不多,但梯度是常数,不会随着距离增大而加大'
      'robust结合了两者'
      '关于沐神为什么提了一嘴似然函数,个人感觉是:'
      '似然函数代表了当前输出这一loss值的情况下对应的参数是正确的概率或者说可能性评估,那么当loss为0时候参数当然是正确的概率最大'
      '因为最大似然估计的本质就是要找到使得概率最大的时候的参数值')

扩展

有待补充,看看chatgpt的想法:

007、常用的损失函数_第1张图片

        其他的一些适用情况:

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

    • 适用情况:回归问题,如线性回归。它测量了预测值与实际值之间的平方误差,对异常值敏感。
  2. 均方根误差 (Root Mean Squared Error, RMSE)

    • 适用情况:与 MSE 类似,但 RMSE 对误差的范围更敏感,因为它对误差进行了开方操作。
  3. 平均绝对误差 (Mean Absolute Error, MAE)

    • 适用情况:回归问题。与 MSE 不同,MAE 衡量了预测值与实际值之间的绝对误差,对异常值不太敏感。
  4. 交叉熵损失函数 (Cross-Entropy Loss)

    • 适用情况:分类问题,特别是二分类和多分类问题。对于分类任务,常见的损失函数包括二进制交叉熵和多分类交叉熵损失。
  5. 对数损失 (Log Loss)

    • 适用情况:与交叉熵损失类似,常用于二分类和多分类问题,尤其在逻辑回归和神经网络中。
  6. Hinge损失函数

    • 适用情况:支持向量机 (SVM) 中的线性分类。它鼓励正确分类的样本距离分类边界足够远,从而提高模型的泛化性能。
  7. Huber损失函数

    • 适用情况:回归问题,特别是对异常值比较敏感的情况。Huber损失是均方误差和平均绝对误差的折衷,它平衡了对异常值和非异常值的鲁棒性。
  8. Kullback-Leibler散度 (KL散度)

    • 适用情况:用于测量两个概率分布之间的差异,通常用于生成模型中的分布匹配,如变分自动编码器 (VAE)。
  9. 对抗性损失 (Adversarial Loss)

    • 适用情况:生成对抗网络 (GAN) 中。GAN 的生成器和判别器使用对抗性损失来进行博弈,以生成逼真的数据。
  10. 自定义损失函数

    • 适用情况:在某些情况下,你可能需要定义自己的损失函数,以满足特定任务的需求。这通常需要深入了解问题和模型架构。

你可能感兴趣的:(torch,神经网络,1024程序员节)