栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

交叉熵损失函数

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

交叉熵损失函数

引入

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

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_afrac{1}{P(x)}=-log_aP(x) qquad(1) I(x)=loga​P(x)1​=−loga​P(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=1∑n​p(xi​)loga​p(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 ( P 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)}logfrac{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)-H_{PQ}(x) qquad(4) DKL​(p∣∣q)=i=1∑n​p(xi​)logQ(xi​)P(xi​)​=i=1∑n​[P(xi​)logp(Pi​)−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)}logfrac{P(x_1)}{Q(x_1)}+{p(x_2)}logfrac{P(x_2)}{Q(x_2)}=1times{logfrac{1}{0.7}}approx0.36 DK​L(p∣∣q)=p(x1​)logQ(x1​)P(x1​)​+p(x2​)logQ(x2​)P(x2​)​=1×log0.71​≈0.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 ( 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)}logfrac{P(x_i)}{Q(x_i)}\=sum_{i=1}^n[P(x_i)logp(P_i)-P(x_i)logQ(x_i)]\=H_{p}(X)+[-{sum_{i=1}^n[P(x_i)logQ(x_i)]} qquad(5) DKL​(p∣∣q)=i=1∑n​p(xi​)logQ(xi​)P(xi​)​=i=1∑n​[P(xi​)logp(Pi​)−P(xi​)logQ(xi​)]=Hp​(X)+[−i=1∑n​[P(xi​)logQ(xi​)](5)
对于确定的概率分布, H P ( X ) H_P(X) HP​(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)]}=-(1times log(0.7))approx0.36 H(P,Q)=−i=1∑n​[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=xi)=p(xi) P(X=xi)=p(xi),如果 p p p有参数 θ θ θ决定,得到X的一些具体取值的集合 x ∈ X x∈X x∈X后,在这些观察值上的似然函数就是:
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−θ)(1−y)(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)=logprod_{i=1}^Np_theta(y_i)=logprod_{i=1}^Ntheta^{y_i}(1-theta)^{(1-{y_i})}\=sum_{i=1}^N[y_ilogtheta+(1-y_i)log(1-theta)] qquad(9) l(θ)=logi=1∏N​pθ​(yi​)=logi=1∏N​θyi​(1−θ)(1−yi​)=i=1∑N​[yi​logθ+(1−yi​)log(1−θ)](9)
似然函数 l ( θ ) l(theta) l(θ)是目标函数,加上符号亏变成损失函数。对比交叉熵公式,这个损失函数就是 y i y_i yi​与 θ theta θ的交叉熵。
多分类问题
  假设观察到的数据有 K ( K > 2 ) K(K>2) K(K>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=1∏K​(ϕ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)logphi_k qquad(10) l(ϕ)=logp(yi​)=k=1∑K​I(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}logphi_{i,k} qquad(11) l(ϕ)=k=1∑K​I(yi​=k)yi,k​logϕ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}logphi_{i,k} qquad(12) l(ϕ)=N1​k=1∑K​yi,k​logϕi,k​(12)
加上负号,目标函数变为损失函数,与交叉熵形式一致。

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/829491.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号