简介

本篇博客简要介绍了常见的损失函数和L1、L2正则化

  • 回归任务:从经典的 OLS、MSE 到应对异常值的 Huber Loss;
  • 分类任务:交叉熵家族(BCE/CCE)与 SVM 的灵魂 Hinge Loss;
  • 概率度量:衡量分布差异的 KL 散度 及其应用。

回归任务损失函数

OLS

  • 全称:Ordinary Least Squares,普通最小二乘法
  • 逻辑:我们要找到一条直线(参数 θ\thetaθ),使得所有样本点的误差平方和

J(θ)=∑ni=1(hθ(xi)−yi)2正规方程:θ=(XTX)−1XTy \begin{align} & J(\theta) = \underset{i = 1}{\overset{n}{\sum}}\Big(h_\theta(x_i) - y_i\Big)^2 \\ & 正规方程: \theta = (X^T X)^{-1} X^T y \end{align} J(θ)=i=1n(hθ(xi)yi)2正规方程:θ=(XTX)1XTy

  • 关系:MSE=1nOLS\text{MSE} = \frac{1}{n}\text{OLS}MSE=n1OLS
  • 特殊:OLS可以不通过梯度下降求解,可以直接通过矩阵运算 (正规方程) 求出最优解

MSE

  • 全称:Mean Squared Error,均方误差
  • 本质:MSE是最小二乘法的均值形式
  • 优点:收敛快
  • 适用:适用于大多数回归任务,特别是在假设误差服从正态分布的情况下。
  • 计算:通过抽样 m 个样本,多次计算MSE。小样本抽样 m 多次计算的效率和结果要好于大样本 m 少量计算的效率和结果

MSE=1n∑i=1n(yi−pi)2 \begin{align} & \text{MSE} = \frac{1}{n}\overset{n}{\underset{i = 1}{\sum}}(y_i - p_i)^2\\ \end{align} MSE=n1i=1n(yipi)2

MAE

  • 全称:Mean Absolute Error,平均绝对误差
  • 适用:MAE 对异常值不敏感,因此在存在大量噪声或异常值的数据集中表现较好

MAE=1n∑i=1n∣yi−pi∣yi:真实值pi:预测值 \begin{align} & \text{MAE} = \frac{1}{n}\overset{n}{\underset{i = 1}{\sum}}\Big|y_i - p_i\Big| \\ & y_i: 真实值 \\ & p_i:预测值 \end{align} MAE=n1i=1nyipiyi:真实值pi:预测值

RMSE

  • 全称:Root Mean Square Error,均方根误差

RMSE=MSE=1n∑i=1n(yi−pi)2 \begin{align} & \text{RMSE} = \sqrt{\text{MSE}} = \sqrt{\frac{1}{n}\overset{n}{\underset{i = 1}{\sum}}(y_i - p_i)^2} \\ \end{align} RMSE=MSE=n1i=1n(yipi)2

Huber Loss

  • 问题:MSE 害怕异常值,MAE梯度恒定,不好收敛
  • 本质:MSE 和 MAE 的结合体。误差小时用 MSE,误差大时用 MAE

Lδ(y,p)={12(y−p)2for ∣y−p∣≤δδ(∣y−p∣−12δ)otherwise L_{\delta}(y, p) = \begin{cases} \frac{1}{2}(y - p)^2 & \text{for } |y - p| \leq \delta \\ \delta (|y - p| - \frac{1}{2}\delta) & \text{otherwise} \end{cases} Lδ(y,p)={21(yp)2δ(yp21δ)for ypδotherwise

  • 当误差小于阈值 δ\deltaδ 时,像 MSE 一样快(二阶导);
  • 当误差很大时(可能是异常值),自动切换成 MAE 模式(一阶导),防止梯度爆炸。

分类任务损失函数

BCE - 二元交叉熵

  • 全称:Binary Cross Entropy
  • 应用:只做二选一
  • 场景:垃圾邮件分类、word2vec负采样的核心

L=−[ylog⁡(p)+(1−y)log⁡(1−p)] L = - [y \log(p) + (1 - y) \log(1 - p)] L=[ylog(p)+(1y)log(1p)]

CCE - 多分类交叉熵

  • 全称:Categorical Cross Entropy
  • 应用:从多个类别选一个

L=−∑i=1nyilog⁡(pi)Lt=−∑Ci=1yt , i∗log⁡(yt , i)yt , i∗:真实标签的 one-hot 编码yt , i:模型预测的概率 \begin{align} & L = - \sum_{i=1}^{n} y_i \log(p_i) \\ & L_t = -\underset{i = 1}{\overset{C}{\sum}}y_{t\,,\,i}^*\log(y_{t\,,\,i}) \\ \\ & y_{t\,,\,i}^* : 真实标签的\,\text{one-hot}\,编码 \\ & y_{t\,,\,i} : 模型预测的概率 \end{align} L=i=1nyilog(pi)Lt=i=1Cyt,ilog(yt,i)yt,i:真实标签的one-hot编码yt,i:模型预测的概率

Hinge Loss

  • 应用:SVM
  • 要求:不仅要求分类正确,还要求离边界“越远越好”。如果不满足一定的“间距(Margin)”,就会产生损失。

L=max⁡(0,1−y⋅p)y∈{+1,−1}p:模型的原始输出 \begin{align} & L = \max(0, 1 - y \cdot p) \\ \\ & y \in \{+1, -1\} \\ & p :模型的原始输出 \end{align} L=max(0,1yp)y{+1,1}p:模型的原始输出

  • 如果预测正确且离边界很远(y⋅p>1y \cdot p > 1yp>1),Loss 为 0
  • 如果预测正确但离边界太近(0<y⋅p<10 < y \cdot p < 10<yp<1),划分对了,距离太近,轻微惩罚
  • 如果分错了(y⋅p<0y \cdot p < 0yp<0),重罚

KL散度

  • 注意:不能叫做距离,因为 DKL(P∣∣Q)≠DKL(Q∣∣P)D_{KL}(P || Q) \neq D_{KL}(Q || P)DKL(P∣∣Q)=DKL(Q∣∣P)
  • 公式:DKL(P∥Q)=∑iP(xi)log⁡P(xi)Q(xi)D_{KL}(P \parallel Q) = \sum_{i} P(x_i) \log \frac{P(x_i)}{Q(x_i)}DKL(PQ)=iP(xi)logQ(xi)P(xi)
  • 本质:衡量的是两个概率分布 PPPQQQ 之间的差异
  • 应用:生成模型、知识蒸馏、强化学习

L1、L2正则化

  • 目的:防止过拟合
  • 本质:就是在损失函数中加一个惩罚项,防止模型学习了噪声导致参数变得过拟合
  • L1正则化:Lasso,无论参数大小,惩罚力度相同,可以让一些参数的权重变为0。可以用作特征筛选,也可以增大模型的稀疏性
  • L2正则化:权重衰减 (weight decay),参数越大,惩罚力度越大。可以控制参数大小,防止过分依赖某些特征

L(w)=Ldata(w)+λ⋅Ω(w)L(w)=Ldata(w)+λ∑iwi2=Ldata(w)+λ∣∣w∣∣22L(w)=Ldata(w)+λ∑i∣wi∣=Ldata(w)+λ∣∣w∣∣1λ⋅Ω(w):惩罚项(1):L2正则化(2):L1正则化 \begin{align} & L(w) = L_{\text{data}}(w) + \lambda \cdot \Omega(w) \\ & \tag{1} L(w) =L_{\text{data}}(w) + \lambda\underset{i}{\sum}w_i^2 = L_{\text{data}}(w) + \lambda ||w||_2^2 \\ & \tag{2} L(w) =L_{\text{data}}(w) + \lambda\underset{i}{\sum}|w_i| = L_{\text{data}}(w) + \lambda ||w||_1 \\ \\ & \lambda \cdot \Omega(w): 惩罚项 \\ & (1): \text{L}2正则化 \\ & (2): \text{L}1正则化 \end{align} L(w)=Ldata(w)+λΩ(w)L(w)=Ldata(w)+λiwi2=Ldata(w)+λ∣∣w22L(w)=Ldata(w)+λiwi=Ldata(w)+λ∣∣w1λΩ(w):惩罚项(1):L2正则化(2):L1正则化(1)(2)

结语

  • 损失函数不仅是一个数学公式,它更代表了我们对问题的“容忍度”:
    • MSE 对误差零容忍,MAE 显得更为佛系
    • Hinge Loss 则在正确之外还追求一份“安全感”。
  • 在实际调优中,选择损失函数往往比调整学习率更为关键,因为它直接决定了模型的上限与鲁棒性。
  • 本人水平有限,笔记中难免存在理解偏差或表述不当之处。真诚期待各位技术前辈在评论区指正讨论,你的每一条反馈都是我进化的动力

更多推荐