交叉熵损失函数

引入

交叉熵是信息论中的概念,主要用于度量两个概率分布之间的差异。

1.信息量与信息熵

  信息量是事件发生概率的度量,信息量的大小与信息发生的概率成反比,即一个事件发生的概率越低,所包含的信息量越大。假设某一事件发生的概率为 P ( x ) P(x) P(x),其信息量为
I ( x ) = l o g a 1 P ( x ) = − l o g a P ( x ) ( 1 ) I(x)=log_a\frac{1}{P(x)}=-log_aP(x) \qquad(1) I(x)=logaP(x)1=logaP(x)(1)
计算时 a {\it a} a一般取 2 , e , 10 {\it 2,e,10} 2,e,10
  信息熵是在结果出现之前对可能产生的信息量的期望,考虑该随机变量的所有可能的取值,即所有可能发生事件所带来的信息量的期望。假设 X X X是一个有限个值的随机变量,其概率分布为:
P ( X = x i ) = p ( x i ) , i = 1 , . . . , N ( 2 ) P(X=x_i)=p(x_i),i=1,...,N \qquad(2) P(X=xi)=p(xi),i=1,...,N(2)
则其信息熵为:
H ( x ) = − ∑ i = 1 N p ( x i ) l o g a p ( x i ) ( 3 ) H(x)=-\sum_{i=1}^N{p(x_i)log_ap(x_i)} \qquad(3) H(x)=i=1Np(xi)logap(xi)(3)
例1:抛硬币时,p(正面朝上)=p(反面朝上)=0.5,则其信息量和信息熵的大小分别为:
I ( x 正 ) = I ( x 反 ) = − l o g 2 ( 0.5 ) = 1 I(x_正)=I(x_反)=-log_2(0.5)=1 I(x)=I(x)=log2(0.5)=1
H ( x ) = − 0.5 l o g 2 ( 0.5 ) − 0.5 l o g 2 ( 0.5 ) = 1 H(x)=-0.5log_2(0.5)-0.5log_2(0.5)=1 H(x)=0.5log2(0.5)0.5log2(0.5)=1
  当随机系统中各个事件概率相等的时候,系统的熵最大,也就是不确定性最大,而随着某个事件的概率逐渐增大,对立事件概率越来越小,这种情况下系统的不确定性越来越小,最终趋向于0,也就是成为一个没有随机因素的系统。

2.相对熵(KL散度)

  如果对于同一个随机变量X有两个单独的概率分布 P ( X ) P(X) P(X)(样本的真实分布)和 Q ( X ) Q(X) Q(X)(样本的预测分布),可以用KL散度衡量这俩个概率分布之间的差异,公式为:
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g P ( x i ) Q ( x i ) = ∑ i = 1 n [ P ( x i ) l o g P ( x i ) − P ( x i ) l o g Q ( x i ) ] = H P P ( X ) − H P Q ( X ) ( 4 ) D_{KL}(p||q)=\sum_{i=1}^n{p(x_i)}log\frac{P(x_i)}{Q(x_i)}\\=\sum_{i=1}^n[P(x_i)logP(x_i)-P(x_i)logQ(x_i)]=H_{PP}(X)-H_{PQ}(X) \qquad(4) DKL(pq)=i=1np(xi)logQ(xi)P(xi)=i=1n[P(xi)logP(xi)P(xi)logQ(xi)]=HPP(X)HPQ(X)(4)
这里的log是以e为底的对数。
  KL散度越小,表示 P ( X ) P(X) P(X)(样本的真实分布)和 Q ( X ) Q(X) Q(X)(样本的预测分布)的分布更加接近。可以通过反复训练 Q ( X ) Q(X) Q(X)使 Q ( X ) Q(X) Q(X)的分布逼近 P ( X ) P(X) P(X)
  例题2:在一个二分类任务中(例如猫狗分类),x1={猫},x2={狗},例如一张动物照片的真实分布P(X)=[1,0],预测分布Q(X)=[0.7,0.3],则KL散度为:
D K L ( p ∣ ∣ q ) = p ( x 1 ) l o g P ( x 1 ) Q ( x 1 ) + p ( x 2 ) l o g P ( x 2 ) Q ( x 2 ) = 1 × l o g 1 0.7 ≈ 0.36 D_KL(p||q)={p(x_1)}log\frac{P(x_1)}{Q(x_1)}+{p(x_2)}log\frac{P(x_2)}{Q(x_2)}=1\times{log\frac{1}{0.7}}\approx0.36 DKL(pq)=p(x1)logQ(x1)P(x1)+p(x2)logQ(x2)P(x2)=1×log0.710.36

交叉熵

1.交叉熵概念

  将KL散度公式展开:
D K L ( p ∣ ∣ q ) = ∑ i = 1 n P ( x i ) l o g P ( x i ) Q ( x i ) = ∑ i = 1 n [ P ( x i ) l o g p ( P i ) − P ( x i ) l o g Q ( x i ) ] = H P P ( X ) + [ − ∑ i = 1 n [ P ( x i ) l o g Q ( x i ) ] ( 5 ) D_{KL}(p||q)=\sum_{i=1}^n{P(x_i)}log\frac{P(x_i)}{Q(x_i)}\\=\sum_{i=1}^n[P(x_i)logp(P_i)-P(x_i)logQ(x_i)]\\=H_{PP}(X)+[-{\sum_{i=1}^n[P(x_i)logQ(x_i)]} \qquad(5) DKL(pq)=i=1nP(xi)logQ(xi)P(xi)=i=1n[P(xi)logp(Pi)P(xi)logQ(xi)]=HPP(X)+[i=1n[P(xi)logQ(xi)](5)
对于确定的概率分布, H P P ( X ) H_{PP}(X) HPP(X)信息熵是一个定值。
  在机器学习中,由于KL散度表示真实概率分布与预测概率分布的差异,越小表示预测的结果越好,所以最小化KL散度的值;交叉熵等于KL散度加信息熵(常量),相比KL散度更加容易计算,所以一般在机器学习中直接用交叉熵做loss。
例3.题目同例2,计算交叉熵。
H ( P , Q ) = − ∑ i = 1 n [ P ( x i ) l o g Q ( x i ) ] = − ( 1 × l o g ( 0.7 ) ) ≈ 0.36 H(P,Q)=-{\sum_{i=1}^n[P(x_i)logQ(x_i)]}=-(1\times log(0.7))\approx0.36 H(P,Q)=i=1n[P(xi)logQ(xi)]=(1×log(0.7))0.36

2.为什么使用交叉熵作为损失函数

2.1似然函数

  假设离散随机变量 X X X具有概率质量函数 p p p,即 P ( X = x i ) = p ( x i ) P(X=x_i)=p(x_i) P(X=xi)=p(xi),如果 p p p有参数 θ θ θ决定,得到X的一些具体取值的集合 x ∈ X x∈X xX后,在这些观察值上的似然函数就是:
L ( θ ∣ x ) = P θ ( x ) = P θ ( X = x ∣ θ ) ( 6 ) L(\theta|x)=P_\theta(x)=P_\theta(X=x|\theta) \qquad(6) L(θx)=Pθ(x)=Pθ(X=xθ)(6)
最大似然法就是通过最大化 L ( θ ∣ x ) L(θ|x) L(θx)获得 θ θ θ,即找到一组x使得 P θ ( X = x ) P_θ(X=x) Pθ(X=x)最大的参数。
假如 X X X是连续随机变量,那么它的一组取值的集合 x x x的似然函数是:
L ( θ ∣ x ) = f θ ( x ) = f θ ( X = x ∣ θ ) ( 7 ) L(\theta|x)=f_\theta(x)=f_\theta(X=x|\theta) \qquad(7) L(θx)=fθ(x)=fθ(X=xθ)(7)
f θ f_θ fθ X X X的概率密度函数。

2.2分类器中的损失函数

  在机器学习的分类问题中。在二分类问题中,预测值y的取值是二选一,y属于伯努利分布,则有:
p θ ( x ) = θ y ( 1 − θ ) ( 1 − y ) ( 8 ) p_\theta(x)=\theta^y(1-\theta)^{(1-y)} \qquad(8) pθ(x)=θy(1θ)(1y)(8)
假设数据集为 D = ( ( x 1 , y 1 ) , . . . , ( x N , y N ) ) D=((x_1,y_1),...,(x_N,y_N)) D=((x1,y1),...,(xN,yN)),则似然函数为:
l ( θ ) = l o g ∏ i = 1 N p θ ( y i ) = l o g ∏ i = 1 N θ y i ( 1 − θ ) ( 1 − y i ) = ∑ i = 1 N [ y i l o g θ + ( 1 − y i ) l o g ( 1 − θ ) ] ( 9 ) l(\theta)=log\prod_{i=1}^Np_\theta(y_i)=log\prod_{i=1}^N\theta^{y_i}(1-\theta)^{(1-{y_i})}\\=\sum_{i=1}^N[y_ilog\theta+(1-y_i)log(1-\theta)] \qquad(9) l(θ)=logi=1Npθ(yi)=logi=1Nθyi(1θ)(1yi)=i=1N[yilogθ+(1yi)log(1θ)](9)
似然函数 l ( θ ) l(\theta) l(θ)是目标函数,加上负号就变成损失函数。对比交叉熵公式,这个损失函数就是 y i y_i yi θ \theta θ的交叉熵。
多分类问题
  假设观察到的数据有 K ( K > 2 ) K(K>2) KK>2个分类, y y y对应的分布为多元分布,每个类对应的分布参数为 ϕ 1 , ϕ 2 , . . . , ϕ K \phi_1,\phi_2,...,\phi_K ϕ1,ϕ2,...,ϕK,且 p ( y = i ) = ϕ i , ∑ i = 1 K ϕ i = 1 p(y=i)=\phi_i,\sum_{i=1}^{K}\phi_i=1 p(y=i)=ϕi,i=1Kϕi=1其中
p ( y i ) = ( ϕ ) I ( y i = 1 ) . . . ( ϕ K ) I ( y i = k ) = ∏ i = 1 K ( ϕ K ) I ( y i = k ) p(y_i)=(\phi)^{I(y_i=1)}...(\phi_K)^{I(y_i=k)}=\prod_{i=1}^K(\phi_K)^{I(y_i=k)} p(yi)=(ϕ)I(yi=1)...(ϕK)I(yi=k)=i=1K(ϕK)I(yi=k)
y i y_i yi的对数似然为:
l ( ϕ ) = l o g p ( y i ) = ∑ k = 1 K I ( y i = k ) l o g ϕ k ( 10 ) l(\phi)=logp(y_i)=\sum_{k=1}^KI(y_i=k)log\phi_k \qquad(10) l(ϕ)=logp(yi)=k=1KI(yi=k)logϕk(10)
其中 I ( y i = k ) I(y_i=k) I(yi=k)中只有一项等于1,其余为0,就是 y i y_i yi的one-hot编码。将 y i y_i yi的one-hot编码记作 y i , k y_{i,k} yi,k,则 ϕ k \phi_k ϕk记作 ϕ i , k \phi_{i,k} ϕi,k,似然函数变为
l ( ϕ ) = ∑ k = 1 K I ( y i = k ) y i , k l o g ϕ i , k ( 11 ) l(\phi)=\sum_{k=1}^KI(y_i=k)y_{i,k}log\phi_{i,k} \qquad(11) l(ϕ)=k=1KI(yi=k)yi,klogϕi,k(11)
那么所有N个样本的平均对数似然为:
l ( ϕ ) = 1 N ∑ k = 1 K y i , k l o g ϕ i , k ( 12 ) l(\phi)=\frac1{N}\sum_{k=1}^Ky_{i,k}log\phi_{i,k} \qquad(12) l(ϕ)=N1k=1Kyi,klogϕi,k(12)
加上负号,目标函数变为损失函数,与交叉熵形式一致。

信息量、熵和交叉熵
交叉熵损失函数
交叉熵损失详解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值