机器学习-损失函数

本文深入解析了损失函数在机器学习中的作用,包括均方误差、平均绝对误差、交叉熵损失等常用损失函数的数学表达和特性,以及它们在回归和分类问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么使用损失函数

θj+1=θj−η∂J(θj)∂θj\theta_{j+1}=\theta_j-\eta\frac{\partial J(\theta_j)}{\partial \theta_j}θj+1=θjηθjJ(θj)

θj+1\theta_{j+1}θj+1:更新后的权重;η\etaη:学习率;∂J(θj)∂θj\frac{\partial J(\theta_j)}{\partial \theta_j}θjJ(θj):权重的梯度。
∂J(θj)∂θj\frac{\partial J(\theta_j)}{\partial \theta_j}θjJ(θj)<0时,θ\thetaθ向右;
∂J(θj)∂θj\frac{\partial J(\theta_j)}{\partial \theta_j}θjJ(θj)>0时,θ\thetaθ向左;
即,θ\thetaθ每次更新,都朝最小的方向。

损失函数的性质

  1. 连续可导,且导数不是处处为零。
  2. 非负。因为损失函数最小时,预测和真实值完全一致,损失函数为零,也就是说,损失函数最小为零,即非负。

常用的损失函数

均方误差(MSE)

均方误差是常用的回归损失函数。
MSE=1n∑i=1n(yi−yi^)2MSE=\frac{1}{n}\sum^n_{i=1}(y_i-\hat{y_i})^2MSE=n1i=1n(yiyi^)2

yi^=wixi+bi\hat{y_i}=w_ix_i+b_iyi^=wixi+bi

∂MSE∂wi=2xi(wixi+bi−yi)=2xi(y^i−yi)\frac{\partial MSE}{\partial w_i}=2x_i(w_ix_i+b_i-y_i)=2x_i(\hat{y}_i-y_i)wiMSE=2xi(wixi+biyi)=2xi(y^iyi)


L(y,y^)=1n∑i=1n(yi−yi^)2L(y,\hat{y})=\frac{1}{n}\sum^n_{i=1}(y_i-\hat{y_i})^2L(y,y^)=n1i=1n(yiyi^)2

∂L(y,y^)∂w=2x(wx+b−y)=2x(y^−y)\frac{\partial L(y,\hat{y}) }{\partial w}=2x(wx+b-y)=2x(\hat{y}-y)wL(y,y^)=2x(wx+by)=2x(y^y)

y^i\hat{y}_iy^iyiy_iyi相差越大,loss越大。
在这里插入图片描述

平均绝对误差(MAE)

MAE=1n∑i=1n∣yi−yi^∣MAE=\frac{1}{n}\sum^n_{i=1}|y_i-\hat{y_i}|MAE=n1i=1nyiyi^

yi^=wixi+bi\hat{y_i}=w_ix_i+b_iyi^=wixi+bi

∂MAE∂wi={−xi,wixi+bi−yi<0xi,wixi+bi−yi>0\frac{\partial MAE}{\partial w_i}=\left\{ \begin{aligned} -x_i,w_ix_i+b_i-y_i<0 \\ x_i,w_ix_i+b_i-y_i>0 \\ \end{aligned} \right. wiMAE={xi,wixi+biyi<0xi,wixi+biyi>0
在这里插入图片描述
MSE和MAE的区别:

  1. MSE比MAE更敏感,训练速度更快。
  2. MSE对于异常值也非常敏感,而MAE对异常值的抑制更好一点。

问题:分类问题能用MSE吗?
答案:是可以的,但是一般不用。
以逻辑回归为例:a=11+e−za=\frac{1}{1+e^{-z}}a=1+ez1

z=wx+bz=wx+bz=wx+b

MSE=12(a−y)2MSE=\frac{1}{2}(a-y)^2MSE=21(ay)2

∂MSE∂wi=∂MSE∂a∂a∂z∂z∂w=(a−y)σ′(z)x\frac{\partial MSE}{\partial w_i}=\frac{\partial MSE}{\partial a}\frac{\partial a}{\partial z}\frac{\partial z}{\partial w}=(a-y)\sigma^{'}(z)xwiMSE=aMSEzawz=(ay)σ(z)x

σ′(z)=(1−a)a\sigma'(z)=(1-a)aσ(z)=(1a)a


L(y,y^)=12(y^−y)2L(y,\hat{y})=\frac{1}{2}(\hat{y}-y)^2L(y,y^)=21(y^y)2

∂L(y,y^)∂w=(y^−y)σ′(z)x\frac{\partial L(y,\hat{y}) }{\partial w}=(\hat{y}-y)\sigma'(z)xwL(y,y^)=(y^y)σ(z)x

zzz较大或较小时,σ′(z)≈0\sigma'(z)\thickapprox0σ(z)0,所以训练的很慢,故一般不用MSE来作为分类问题的损失函数。
分类问题的损失函数,我们希望损失函数的导数为(a−y)x(a-y)x(ay)x

交叉熵损失函数(cross_entropy)

期望、方差和协方差

期望
离散: Ex∼P[f(x)]=∑xP(x)f(x)E_{x\sim P}[f(x)]=\sum_{x}P(x)f(x)ExP[f(x)]=xP(x)f(x)
连续:Ex∼p[f(x)]=∫p(x)f(x)E_{x\sim p}[f(x)]=\int p(x)f(x)Exp[f(x)]=p(x)f(x)
期望是线性的 Ex[αf(x)+βg(x)]=αEx[f(x)]+βEx[g(x)]E_{x}[\alpha f(x)+\beta g(x)]=\alpha E_{x}[f(x)]+\beta E_{x}[g(x)]Ex[αf(x)+βg(x)]=αEx[f(x)]+βEx[g(x)]
方差
Var(f(x))=E[(f(x)−E[f(x)])2]Var(f(x))=E[(f(x)-E[f(x)])^2]Var(f(x))=E[(f(x)E[f(x)])2]
方差的平方根为标准差。
协方差
给出了两个变量的线性相关性的强度以及这些变量的尺度。
Cov(f(x),g(y))=E[(f(x)−E[f(x)])(g(y)−E[g(y)])]Cov(f(x),g(y))=E[(f(x)-E[f(x)])(g(y)-E[g(y)])]Cov(f(x),g(y))=E[(f(x)E[f(x)])(g(y)E[g(y)])]

信息量

一个事件发生的概率越大,则信息量越小。(只处理单个的输出)I(x)=−log(P(x))I(x)=-log(P(x))I(x)=log(P(x))

例如:
事件A:锅考试及格的概率为P(xA)=0.1P(xA)=0.1P(xA)=0.1, I(xA)=−log(0.1)=3.3219I(xA)=-log(0.1)=3.3219I(xA)=log(0.1)=3.3219
事件B:盆小考试及格的概率为P(xB)=0.999P(xB)=0.999P(xB)=0.999, I(xB)=−log(0.999)=0.0014I(xB)=-log(0.999)=0.0014I(xB)=log(0.999)=0.0014

香浓熵

对整个概率分布中的不确定性总量进行量化。
H(x)=Ex∼P[I(x)]H(x)=E_{x\sim P}[I(x)]H(x)=ExP[I(x)]

KL散度

同一个随机遍x有两个单独的概率分布P(x)P(x)P(x)Q(x)Q(x)Q(x),可以使用KL(Kullback-Leibler(KL) divergence)来衡量这两个分布的差异。
DKL(P∣∣Q)=Ex∼P[logP(x)Q(x)]=Ex∼P[logP(x)−logQ(x)]D_{KL}(P||Q)=E_{x\sim P}[log\frac{P(x)}{Q(x)}]=E_{x\sim P}[logP(x)-logQ(x)]DKL(PQ)=ExP[logQ(x)P(x)]=ExP[logP(x)logQ(x)]
它是非负的;KL散度为零当且仅当P和Q在离散型变量的情况下是相同的分布。
DKL(P∣∣Q)≠DKL(Q∣∣P)D_{KL}(P||Q)\ne D_{KL}(Q||P)DKL(PQ)=DKL(QP)

KL(p∣∣q)=Ep[−log(q(x)p(x))]≥−log[Epq(x)p(x)]=−log[∑x∣p(x)>0p(x)q(x)p(x)]=−log[∑x∈X]=−log1=0KL(p||q)=E_p[-log(\frac{q(x)}{p(x)})]\ge-log[E_p\frac{q(x)}{p(x)}]=-log[\sum_{x|p(x)>0}p(x)\frac{q(x)}{p(x)}]=-log[\sum_{x\in{X}}]=-log1=0KL(pq)=Ep[log(p(x)q(x))]log[Epp(x)q(x)]=log[xp(x)>0p(x)p(x)q(x)]=log[xX]=log1=0

交叉熵

一个和KL散度密切联系的量。H(P,Q)=H(P)+DKL(P∣∣Q)H(P,Q)=H(P)+D_{KL}(P||Q)H(P,Q)=H(P)+DKL(PQ)
H(P,Q)=−Ex∼PlogQ(x)H(P,Q)=-E_{x\sim P}logQ(x)H(P,Q)=ExPlogQ(x)
针对Q最小化交叉熵等价于最小化KL散度,因为Q并不参与被省略的那一项。
信息论中,limx→0xlogx=0lim_{x→0} x log x = 0limx0xlogx=0

ppp是真实分布(在分类中对应类别标签),qqq是模型预测出来的概率分布,交叉熵是非对称的,描述的是假设一个预测的概率分布qqq服从的是真实分布ppp,所需要的平均信息量。(越小越好)
如果预测的分布qqq越接近真实的分布ppp,那么这个信息量就越小。
H(p,q)=−p(x)log(q(x))H(p,q)=-p(x)log(q(x))H(p,q)=p(x)log(q(x))

以逻辑回归为例:
a=11+e−za=\frac{1}{1+e^{-z}}a=1+ez1

z=wx+bz=wx+bz=wx+b

cross_entropy=−yloga−(1−y)log(1−a)cross\_entropy=-yloga-(1-y)log(1-a)cross_entropy=yloga(1y)log(1a)

∂cross_entropy∂w=∂cross_entropy∂a∂a∂z∂z∂w=(−ya+1−y1−a)σ′(z)x=(a−y)x\frac{\partial cross\_entropy}{\partial w}=\frac{\partial cross\_entropy}{\partial a}\frac{\partial a}{\partial z}\frac{\partial z}{\partial w}=(-\frac{y}{a}+\frac{1-y}{1-a})\sigma'(z)x=(a-y)xwcross_entropy=across_entropyzawz=(ay+1a1y)σ(z)x=(ay)x

L(y,y^)=−(y^logyi+(1−y^)log(1−yi))L(y,\hat{y})=-(\hat{y}logy_i+(1-\hat{y})log(1-y_i))L(y,y^)=(y^logyi+(1y^)log(1yi))

∂L(y,y^)∂w=(y−y^)x\frac{\partial L(y,\hat{y})}{\partial w}=(y-\hat{y})xwL(y,y^)=(yy^)x

多分类交叉熵损失函数
  1. softmax loss
    yi=softmax(zi)=ezi∑i=1neziy_i=softmax(z_i)=\frac{e^{z_i}}{\sum^n_{i=1}e^{z_i}}yi=softmax(zi)=i=1neziezi

L(y,y^)=−1n∑i=1ny^ilog(yi)L(y,\hat{y})=-\frac{1}{n}\sum^n_{i=1}\hat{y}_ilog(y_i)L(y,y^)=n1i=1ny^ilog(yi)

  1. focal loss
    Focal loss主要是为了解决one-stage目标检测中正负样本比例严重失衡的问题。该损失函数降低了大量简单负样本在训练中所占的权重,也可理解为一种困难样本挖掘。
    yi=softmax(zi)=ezi∑i=1neziy_i=softmax(z_i)=\frac{e^{z_i}}{\sum^n_{i=1}e^{z_i}}yi=softmax(zi)=i=1neziezi

L(y,y^)=−1n∑i=1ny^iαi(1−yi)γlog(yi)L(y,\hat{y})=-\frac{1}{n}\sum^n_{i=1}\hat{y}_i\alpha_i(1-y_i)^\gamma log(y_i)L(y,y^)=n1i=1ny^iαi(1yi)γlog(yi)

论文中α=0.25\alpha=0.25α=0.25,γ=2效果最好。
在这里插入图片描述
3. 合页损失hinge_loss
也叫铰链损失,是svm中使用的损失函数。
由于合页损失优化到满足小于一定gap距离就会停止优化,而交叉熵损失却是一直在优化,所以,通常情况下,交叉熵损失效果优于合页损失。
L(y,y^)=1n∑i=1nmax(0,1−y^iyi)L(y,\hat{y})=\frac{1}{n}\sum^n_{i=1}max(0,1-\hat{y}_iy_i)L(y,y^)=n1i=1nmax(0,1y^iyi)

总结

回归用MSE,分类用交叉熵。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值