机器学习-损失函数

为什么使用损失函数

θ 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)

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

y i ^ = w i x i + b i \hat{y_i}=w_ix_i+b_i yi^=wixi+bi

∂ M S E ∂ w i = 2 x i ( w i x i + b i − y i ) = 2 x i ( y ^ i − y i ) \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 ^ ) = 1 n ∑ i = 1 n ( y i − y i ^ ) 2 L(y,\hat{y})=\frac{1}{n}\sum^n_{i=1}(y_i-\hat{y_i})^2 L(y,y^)=n1i=1n(yiyi^)2

∂ L ( y , y ^ ) ∂ w = 2 x ( w x + b − y ) = 2 x ( 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}_i y^i y i y_i yi相差越大,loss越大。
在这里插入图片描述

平均绝对误差(MAE)

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

y i ^ = w i x i + b i \hat{y_i}=w_ix_i+b_i yi^=wixi+bi

∂ M A E ∂ w i = { − x i , w i x i + b i − y i < 0 x i , w i x i + b i − y i > 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 = 1 1 + e − z a=\frac{1}{1+e^{-z}} a=1+ez1

z = w x + b z=wx+b z=wx+b

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

∂ M S E ∂ w i = ∂ M S E ∂ 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)x wiMSE=aMSEzawz=(ay)σ(z)x

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


L ( y , y ^ ) = 1 2 ( y ^ − y ) 2 L(y,\hat{y})=\frac{1}{2}(\hat{y}-y)^2 L(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)x wL(y,y^)=(y^y)σ(z)x

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

交叉熵损失函数(cross_entropy)

期望、方差和协方差

期望
离散: E x ∼ P [ f ( x ) ] = ∑ x P ( x ) f ( x ) E_{x\sim P}[f(x)]=\sum_{x}P(x)f(x) ExP[f(x)]=xP(x)f(x)
连续: E x ∼ 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)
期望是线性的 E x [ α f ( x ) + β g ( x ) ] = α E x [ f ( x ) ] + β E x [ 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)]
方差
V a r ( 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]
方差的平方根为标准差。
协方差
给出了两个变量的线性相关性的强度以及这些变量的尺度。
C o v ( 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 ) = − l o g ( P ( x ) ) I(x)=-log(P(x)) I(x)=log(P(x))

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

香浓熵

对整个概率分布中的不确定性总量进行量化。
H ( x ) = E x ∼ 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)来衡量这两个分布的差异。
D K L ( P ∣ ∣ Q ) = E x ∼ P [ l o g P ( x ) Q ( x ) ] = E x ∼ P [ l o g P ( x ) − l o g Q ( 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在离散型变量的情况下是相同的分布。
D K L ( P ∣ ∣ Q ) ≠ D K L ( Q ∣ ∣ P ) D_{KL}(P||Q)\ne D_{KL}(Q||P) DKL(PQ)=DKL(QP)

K L ( p ∣ ∣ q ) = E p [ − l o g ( q ( x ) p ( x ) ) ] ≥ − l o g [ E p q ( x ) p ( x ) ] = − l o g [ ∑ x ∣ p ( x ) > 0 p ( x ) q ( x ) p ( x ) ] = − l o g [ ∑ x ∈ X ] = − l o g 1 = 0 KL(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=0 KL(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 ) + D K L ( P ∣ ∣ Q ) H(P,Q)=H(P)+D_{KL}(P||Q) H(P,Q)=H(P)+DKL(PQ)
H ( P , Q ) = − E x ∼ P l o g Q ( x ) H(P,Q)=-E_{x\sim P}logQ(x) H(P,Q)=ExPlogQ(x)
针对Q最小化交叉熵等价于最小化KL散度,因为Q并不参与被省略的那一项。
信息论中, l i m x → 0 x l o g x = 0 lim_{x→0} x log x = 0 limx0xlogx=0

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

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

z = w x + b z=wx+b z=wx+b

c r o s s _ e n t r o p y = − y l o g a − ( 1 − y ) l o g ( 1 − a ) cross\_entropy=-yloga-(1-y)log(1-a) cross_entropy=yloga(1y)log(1a)

∂ c r o s s _ e n t r o p y ∂ w = ∂ c r o s s _ e n t r o p y ∂ a ∂ a ∂ z ∂ z ∂ w = ( − y a + 1 − y 1 − 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)x wcross_entropy=across_entropyzawz=(ay+1a1y)σ(z)x=(ay)x

L ( y , y ^ ) = − ( y ^ l o g y i + ( 1 − y ^ ) l o g ( 1 − y i ) ) 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})x wL(y,y^)=(yy^)x

多分类交叉熵损失函数
  1. softmax loss
    y i = s o f t m a x ( z i ) = e z i ∑ i = 1 n e z i y_i=softmax(z_i)=\frac{e^{z_i}}{\sum^n_{i=1}e^{z_i}} yi=softmax(zi)=i=1neziezi

L ( y , y ^ ) = − 1 n ∑ i = 1 n y ^ i l o g ( y i ) 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目标检测中正负样本比例严重失衡的问题。该损失函数降低了大量简单负样本在训练中所占的权重,也可理解为一种困难样本挖掘。
    y i = s o f t m a x ( z i ) = e z i ∑ i = 1 n e z i y_i=softmax(z_i)=\frac{e^{z_i}}{\sum^n_{i=1}e^{z_i}} yi=softmax(zi)=i=1neziezi

L ( y , y ^ ) = − 1 n ∑ i = 1 n y ^ i α i ( 1 − y i ) γ l o g ( y i ) 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 ^ ) = 1 n ∑ i = 1 n m a x ( 0 , 1 − y ^ i y i ) 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,分类用交叉熵。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值