ML——损失函数总结

各种损失函数(Loss Function)总结,持续更新


综述

  • 损失函数(Loss Function)又称为代价函数(Cost Function)
  • 损失函数用于评估预测值与真实值之间的不一致程度
  • 损失函数是模型的优化目标函数,(神经网络训练的过程就是最小化损失函数的过程)
  • 损失函数越小,说明预测值越接近于真实值,模型表现越好

各种损失函数介绍

平方损失函数

最常用的回归损失函数

  • 基本形式
    $$loss = (y - f(x))^{2}$$
  • 对应模型
    • 线性回归
      • 使用的均方误差来自于平方损失函数
        $$loss = \frac{1}{m}\sum_{i=1}^{m}(y_{i} - f(x_{i}))$$

绝对值损失函数

最常用的回归损失函数

  • 基本形式
    $$loss = |y - f(x)|$$

对数似然损失函数(交叉熵损失函数)

最常见的损失函数,又名交叉熵损失函数

  • 基本形式
    $$loss=L(P(Y|X))=-logP(Y|X)$$
  • 二分类中对于单个样本的损失一般写为:
    $$loss(x_i) = -y_ilogy_i’ - (1-y_i)log(1-y_i’)$$
  • 写成最容易看清楚的形式为:
    $$
    \begin{align}
    loss(x_i) &= -logy_i’, &\quad y_i = 1 \\
    loss(x_i) &= -log(1-y_i’), &\quad y_i = 0
    \end{align}
    $$
    • \(y_i\) 为样本 \(x_i\)的真实类别
    • \(y_i’\) 为样本\(x_i\)在模型中的预测值(这个值在二分类中为Sigmoid函数归一化后的取值,代表样本分类为\(y_i=1\)的概率)
  • 凡是极大似然估计作为学习策略的模型,损失函数都为对数似然损失函数
    • 因为极大化似然函数等价于极小化对数似然损失函数
    • <<统计学习方法>>第十二章中LR使用的是极大似然估计但是对应的损失函数是逻辑斯蒂损失函数,这里可以证明LR中对数似然损失函数和逻辑斯蒂损失函数完全等价,证明见统计学习方法212页笔记
  • 对应模型
    • 所有使用极大似然估计的模型
    • 最大化后验概率等价于最小话对数似然损失函数
      $$\theta^{\star} = \arg\max_{\theta} LL(\theta) = \arg\min_{\theta} -LL(\theta) = \arg\min_{\theta} -logP(Y|X) = \arg\min_{\theta} -\sum_{i=1}^{m}logp(y_{i}|x_{i})$$

逻辑斯蒂损失函数

LR模型的损失函数

  • 基本形式
    $$loss=L(y,f(x))=log(1+e^{-yf(x)})$$
  • 在LR和最大熵模型中与对数似然损失函数等价(可以带入\(f(x)=wx\)并分\(Y=1 or Y=-1\)两种情况分别证明)
  • 对应模型
    • 逻辑回归模型
    • 最大熵模型

指数损失函数

提升方法的损失函数

  • 基本形式
    $$loss=L(y,f(x))=e^{-yf(x)}$$
  • 对应模型
    • 提升方法

0-1损失函数

最理想的损失函数,但是不光滑,不可导

  • 基本形式
    $$loss=L(y,f(x))=0, if yf(x)>0 \\
    loss=L(y,f(x))=1, if yf(x)<0$$
  • 在由\(f(x)\)符号判断样本的类别的二分类问题中
    • 分类正确时总有\(yf(x)>0\),损失为0
    • 分类错误时总有\(yf(x)<0\),损失为1
  • 在特定的模型中,比如要求\(f(x)=y\)才算正确分类的模型中
    • 0-1损失函数可定义为如下
      $$loss=L(y,f(x))=0, if y=f(x) \\
      loss=L(y,f(x))=1, if y\neq f(x)$$

合页损失函数

支持向量机的损失函数

  • 基本形式
    $$loss=L(y,f(x))=[1-yf(x)]_{+}$$
  • \([z]_{+}\)表示
    • \(z>0\)时取\(z\)
    • \(z\leq 0\)时取0
  • 对应模型
    • 支持向量机

感知机的损失函数

感知机特有的损失函数<<统计学习方法>>

  • 基本形式
    $$loss=L(y,f(x))=[-yf(x)]_{+}$$
  • 与合页损失函数对比
    • 相当于函数图像整体左移一个单位长度
    • 合页损失函数比感知机的损失函数对学习的要求更高
    • 这使得感知机对分类正确的样本就无法进一步优化(分类正确的样本损失函数为0),学到的分类面只要能对样本正确分类即可(不是最优的,而且随机梯度下降时从不同点出发会有不同结果)
    • 而SVM则需要学到最优的才行,因为即使分类正确的样本,依然会有一个较小的损失,此时为了最小化损失函数,需要不断寻找,直到分类面为最优的分类面位置
  • 对应模型
    • 感知机

感知损失函数

与感知机没有任何关系

  • 基本形式
    $$L(y,f(x))=1, if \left | y-f(x)\right |>t \\
    L(y,f(x))=0, if \left | y-f(x)\right |< t$$
  • 这里”感知”的意思是在一定范围内认为\(y\approx f(x)\),满足小范围差距时,损失函数为0

Focal Loss

论文原文为: ICCV 2017: Focal Loss for Dense Object Detection

  • 主要是为了解决正负样本严重失衡的问题
  • 是交叉熵损失函数的一种改进
  • 回归交叉熵损失函数的表达式为:
    $$
    \begin{align}
    loss(x_i) &= -logy_i’, &\quad y_i = 1 \\
    loss(x_i) &= -log(1-y_i’), &\quad y_i = 0
    \end{align}
    $$
  • Focal Loss的损失函数如下
    $$
    \begin{align}
    loss(x_i) &= -(1-y_i’)^\gamma logy_i’, &\quad y_i = 1 \\
    loss(x_i) &= -y_i^\gamma log(1-y_i’), &\quad y_i = 0
    \end{align}
    $$
    • \(\gamma\)的取值在原始论文中使用了 0, 0.5, 1, 2, 5 等
    • 当 \(\gamma > 0\) 时显然有
      • 分类输出与真实标签越大的样本,他们的损失权重越大
      • 分类输出与真实标签越接近的样本,他们的损失权重越小
      • 以上两点给了模型重视分类错误样本的提示
    • \(\gamma = 0\)时Focal Loss退化为交叉熵损失函数
    • \(\gamma\) 越大,说明, 分类错误的样本占的损失比重越大
  • 实际使用中, 常加上\(\alpha\)平衡变量
    $$
    \begin{align}
    loss(x_i) &= -\alpha(1-y_i’)^\gamma logy_i’, &\quad y_i = 1 \\
    loss(x_i) &= -(1-\alpha)y_i^\gamma log(1-y_i’), &\quad y_i = 0
    \end{align}
    $$
    • \(\alpha\) 用于平衡正负样本的重要性
    • \(\gamma\) 用于加强对难分类样本的重视程度
  • 假设正样本数量太少, 负样本数量太多, 那么该损失函数将降低负样本在训练中所占的权重, 可以理解为一种困难样本挖掘
    • 困难样本挖掘的思想就是找到分类错误的样本(难以分类的样本), 然后重点关注这些错误样本
  • 原论文中的实验结果:

不同模型的损失函数

决策树的损失函数

  • 决策树有两个解释
    • if-then规则
    • 条件概率分布
  • <<统计学习方法>>: 决策树的损失函数是对数似然
    • 决策树可以看作是对不同概率空间的划分

Loss Function vs Cost Function

  • 损失函数(Loss Function)应用于一个特定的样本计算误差
  • 成本函数(Cost Function)是对所有样本而言的误差