交叉熵在深度学习中是常用的一个概念,是分类任务的基础损失函数,现代计算机视觉、自然语言处理模型训练的基石。可见交叉熵在深度学习中占着核心地位,本章详细讲解交叉熵完整体系概念公式推导过程: 信息量 →信息熵→ 相对熵(KL 散度) → 交叉熵推导 → 交叉熵损失函数 → 最大似然 →深度学习损失

交叉熵 Cross-Entropy

信息量

信息量来衡量一个事件的不确定性,一个事件发生的概率越大,不确定性越小,则其携带的信息量就越小。

XXX是一个离散型随机变量,其取值为集合X=x0,x1,…,xnX=x_0,x_1,…,x_nX=x0,x1,,xn,则其概率分布函数为p(x)p(x)p(x)

则定义事件X=x0X=x_0X=x0 的信息量为:

I(x0)=−log⁡p(x0)I(x_0)=-\log p(x_0)I(x0)=logp(x0)p(x0)=1p(x_0)=1p(x0)=1时表示该事件必定发生,其信息量为0。

  • P(xi)↓⟹I(xi)↑P(x_i) ↓⟹ I(x_i)↑P(xi)↓⟹I(xi) ,其中 p(x0)p(x0)p(x0)概率越小 ,信息量越大

  • P(xi)↑⟹I(xi)↓P(x_i) ↑⟹ I(x_i) ↓P(xi)↑⟹I(xi) ,其中 p(x0)p(x0)p(x0)概率越大,信息量越少

  • 公式推导: 指数 y=axy=a^xy=ax1<a1 < a1<ay∈(0,1]y∈(0,1]y(0,1] ,求xxx的取值范围?当0<=n0<=n0<=n时 有: 1an∈(0,1]=>a−n∈(0,1]\frac {1}{a^n}∈(0,1]=>a^{-n}∈(0,1]an1(0,1]=>an(0,1]xxx取值范围 x∈(−∞,0]x∈(-\infty,0]x(,0]

信息量是衡量某个事件的不确定性,而熵是衡量一个系统(所有事件)的不确定性。

信息熵

熵用来衡量一个系统的混乱程度,代表系统中信息量的总和;熵值越大,表明这个系统的不确定性就越大。

熵就是所有事件信息量的概率加权平均, 即信息量的期望H(x)=E[I(x)]=−∑i=inp(xi)log⁡(p(xi))H(x)=\mathbb{E}[ I(x)] = -\sum_{i=i}^{n} p(x_{i}) \log(p(x_{i}))H(x)=E[I(x)]=i=inp(xi)log(p(xi)),其中p(xi)p(x_i)p(xi) 表示事件的概率,−log⁡p(xi)-\log p(x_{i})logp(xi) 表示事件的信息量。

信息熵公式(香农熵公式):H(x)=−∑i=ip(xi)log⁡p(xi)H(x)=- \sum_{i=i} p(x_{i}) \log p(x_{i})H(x)=i=ip(xi)logp(xi)

熵是信息量的期望值,是一个随机变量不确定性的度量,熵值越大,随机变量的取值就越难确定,系统也就越不稳定;熵值越小,随机变量的取值也就越容易确定,系统越稳定。

相对熵

相对熵也称为KL散度,表示同一个随机变量的两个不同分布间的距离,定义: 设 P(x)P(x)P(x) 是真实分布,Q(x)Q(x)Q(x) 是近似 / 模型分布,两者定义域相同。

相对熵公式: DKL(P∣∣Q)=∑iP(xi)log⁡P(xi)Q(xi)D_{KL}(P||Q)=\sum_{i} P(x_i) \log \frac {P(x_i)} {Q(x_i)}DKL(P∣∣Q)=iP(xi)logQ(xi)P(xi)

  • 如果P(xi)P(x_i)P(xi)Q(xi)Q(x_i)Q(xi) 概率分布相同,则其相对熵等于0

  • DKL(P∣∣Q)≠DKL(Q∣∣P)D_{KL}(P||Q)≠ D_{KL}(Q||P)DKL(P∣∣Q)=DKL(Q∣∣P) 也就是相对熵不具有对称性。

  • DKL(P∣∣Q)>0D_{KL}(P||Q) > 0DKL(P∣∣Q)>0

总的来说,相对熵是用来衡量同一个随机变量的两个不同分布之间的距离。

公式推导: DKL(P∣∣Q)=∑iP(xi)log⁡P(xi)Q(xi)=Ex∼Plog⁡P(x)Q(x)=Ex∼P[log⁡P(x)−log⁡Q(x)]=Ex∼P[log⁡P(x)]−Ex∼P[log⁡Q(x)]D_{KL}(P||Q)= \sum_i P(x_i) \log \frac {P(x_i)} {Q(x_i)} = \mathbb{E_{x∼P}} \log\frac{P(x)}{Q({x})} = \mathbb{E_{x∼P}} [\log {P(x)}-\log Q(x)]=\mathbb {E_{x∼P}}[\log P(x)] - \mathbb {E_{x∼P}}[ \log Q(x)]DKL(P∣∣Q)=iP(xi)logQ(xi)P(xi)=ExPlogQ(x)P(x)=ExP[logP(x)logQ(x)]=ExP[logP(x)]ExP[logQ(x)]

公式推导结果: DKL(P∣∣Q)=Ex∼P[log⁡P(x)]−Ex∼P[log⁡Q(x)]=∑iP(xi)log⁡P(xi)−∑iP(xi)log⁡Q(xi)D_{KL}(P||Q)=\mathbb {E_{x∼P}}[\log P(x)] - \mathbb {E_{x∼P}}[ \log Q(x)]=\sum_i P(x_i) \log P(x_i) - \sum_i P(x_i) \log Q(x_i)DKL(P∣∣Q)=ExP[logP(x)]ExP[logQ(x)]=iP(xi)logP(xi)iP(xi)logQ(xi)

  • x∼Px∼PxP 表示xxx 只能取分布 PPP 定义内的数值,不会出现规则外的值,称 xxx服从分布 PPP

  • P(xi​)P(x_i​)P(xi) 固定概率权重

  • 全部概率总和为 1,∑xP(xi)=1\sum_{x}P(x_i)=1xP(xi)=1

  • 计算期望必须用 PPP 加权 , P(xi)P(x_i)P(xi)作为概率质量函数(连续型随机变量(概率密度函数)

交叉熵

  1. KL散度公式: DKL(P∣∣Q)=∑iP(xi)log⁡P(xi)−∑iP(xi)log⁡Q(xi)D_{KL}(P||Q)=\sum_i P(x_i) \log P(x_i) - \sum_i P(x_i) \log Q(x_i)DKL(P∣∣Q)=iP(xi)logP(xi)iP(xi)logQ(xi)

  2. 信息熵公式: H(x)=−∑i=ip(xi)log(p(xi))H(x)=- \sum_{i=i} p(x_{i}) log(p(x_{i}))H(x)=i=ip(xi)log(p(xi)) 带入KL散度公式

  3. KL散度公式: DKL(P∣∣Q)=−H(P)−∑iP(xi)log⁡Q(xi)D_{KL}(P||Q)= - H(P) - \sum_i P(x_i) \log Q(x_i)DKL(P∣∣Q)=H(P)iP(xi)logQ(xi)

  4. −∑iP(xi)log⁡Q(xi)-\sum_i P(x_i) \log Q(x_i)iP(xi)logQ(xi) 是交叉熵公式记: H(P,Q)=−∑iP(xi)log⁡Q(xi)H(P,Q)=-\sum_i P(x_i) \log Q(x_i)H(P,Q)=iP(xi)logQ(xi)

  5. KL散度公式: DKL(P∣∣Q)=H(P,Q)−H(P)D_{KL}(P||Q)=H(P,Q)-H(P)DKL(P∣∣Q)=H(P,Q)H(P)

  6. 大白话: KL 散度 = 交叉熵 − 信息熵(真实熵)

例子

  • 信息熵 - 概率分布 P(x1)=0.50,P(x2)=0.30,P(x3)=0.20P(x_1)=0.50,P(x_2)=0.30,P(x_3)=0.20P(x1)=0.50P(x2)=0.30P(x3)=0.20

  • 信息量 I(x1)=−log⁡P(x1)=−log⁡(0.50)=0.30I(x_1)= -\log P(x_1) = -\log (0.50)=0.30I(x1)=logP(x1)=log(0.50)=0.30

  • 信息量 I(x2)=−log⁡P(x2)=−log⁡(0.30)=0.52I(x_2)= -\log P(x_2) = -\log (0.30)=0.52I(x2)=logP(x2)=log(0.30)=0.52

  • 信息量 I(x3)=−log⁡P(x3)=−log⁡(0.20)=0.69I(x_3)= -\log P(x_3) = -\log (0.20)=0.69I(x3)=logP(x3)=log(0.20)=0.69 信息熵H(x)H(x)H(x): H(x)=−∑i=iP(xi)log⁡P(xi)=0.5∗0.3+0.3∗0.52+0.2∗0.69=0.444H(x)=- \sum_{i=i} P(x_{i}) \log P(x_{i})= 0.5 * 0.3+0.3 * 0.52+0.2* 0.69= 0.444H(x)=i=iP(xi)logP(xi)=0.50.3+0.30.52+0.20.69=0.444

  • 交叉熵- 概率分布 Q(x1)=0.10,Q(x2)=0.20,Q(x3)=0.70Q(x_1)=0.10,Q(x_2)=0.20,Q(x_3)=0.70Q(x1)=0.10Q(x2)=0.20Q(x3)=0.70

  • 信息量 I(x1)=−log⁡Q(x1)=−log⁡(0.10)=1.0I(x_1)= -\log Q(x_1) = -\log (0.10)=1.0I(x1)=logQ(x1)=log(0.10)=1.0

  • 信息量 I(x2)=−log⁡Q(x2)=−log⁡(0.20)=0.69I(x_2)= -\log Q(x_2) = -\log (0.20)=0.69I(x2)=logQ(x2)=log(0.20)=0.69

  • 信息量 I(x3)=−log⁡Q(x3)=−log⁡(0.70)=0.15I(x_3)= -\log Q(x_3) = -\log (0.70)=0.15I(x3)=logQ(x3)=log(0.70)=0.15交叉熵H(x)H(x)H(x): H(P,Q)=−∑i=iP(xi)log⁡Q(xi)=0.5∗1.0+0.3∗0.69+0.2∗0.15=0.737H(P,Q)=- \sum_{i=i} P(x_{i}) \log Q(x_{i})= 0.5 * 1.0+0.3 * 0.69+0.2 * 0.15= 0.737H(P,Q)=i=iP(xi)logQ(xi)=0.51.0+0.30.69+0.20.15=0.737

KL 散度 = 交叉熵 − 信息熵(真实熵) DKL(P∣∣Q)=H(P,Q)−H(P)=0.737−0.444=0.293D_{KL}(P||Q)=H(P,Q)-H(P)=0.737-0.444=0.293DKL(P∣∣Q)=H(P,Q)H(P)=0.7370.444=0.293

交叉熵损失函数

KL 散度 DKL(P∣∣Q)=H(P,Q)−H(P)D_{KL}(P||Q)=H(P,Q)-H(P)DKL(P∣∣Q)=H(P,Q)H(P)

  • PPP 真实标签(概率)分布(固定不变,与模型参数无关)H(P)H(P)H(P) 是常数

  • QQQ 模型输出的预测分布

  • 最小化 KL 散度等价于最小化交叉熵 H(P,Q)H(P,Q)H(P,Q),因此深度学习直接用交叉熵做损失

  • 交叉熵损失函数:H(P,Q)=−Ex∼P[log⁡Q(x)]=−∑i=iP(xi)log⁡Q(xi)H(P,Q)=- \mathbb {E_{x∼P}} [ \log Q(x)] =- \sum_{i=i} P(x_{i}) \log Q(x_{i})H(P,Q)=ExP[logQ(x)]=i=iP(xi)logQ(xi)

多分类交叉熵

多分类任务中输出的是目标属于每个类别的概率,所有类别概率的和为1,其中概率最大的类别就是目标所属的分类。softmax 函数能将一个向量的每个分量映射到[0,1] 区间,并且对整个向量的输出做了归一化,保证所有分量输出的和为1,正好满足多分类任务的输出要求。

softmax公式

  • 输入向量 z=[x1,x2,...,xn]z=[x_1,x_2,...,x_n]z=[x1,x2,...,xn],共有NNN个元素

  • ai=softmax(z)i=exp(xi)∑j=1Nexp(xj)a_i=softmax(z)_i=\frac{exp(x_i)}{\sum_{j=1}^{N} exp(x_j)}ai=softmax(z)i=j=1Nexp(xj)exp(xi) ,其中 ex=exp(x)e^x=exp(x)ex=exp(x)

  • aia_iai 输出 a∈(0,1)a∈(0,1)a(0,1)

改进版 softmax(z)i=exp(xi−max(z))∑j=1Nexp(xj−max(z))softmax(z)_i=\frac{exp(x_i-max(z))}{\sum_{j=1}^{N} exp(x_j - max(z))}softmax(z)i=j=1Nexp(xjmax(z))exp(ximax(z))

softmax(z)softmax(z)softmax(z)将输入向量转换成概率分布 把它当作交叉熵QQQ预测分布

多分类

  • 向量经过softmaxsoftmaxsoftmax函数处理输出 QQQ预测概率分布,真实熵PPP 设定一个独热向量 p=[x1,x2,...xn]p=[x_1,x_2,...x_n]p=[x1,x2,...xn] 假设类别kkkxk=1x_k=1xk=1其他都是xx=0x_x=0xx=0

  • 交叉熵损损失函数:H(P,Q)=−∑i=iP(xi)log⁡Q(xi)H(P,Q) = - \sum_{i=i} P(x_{i}) \log Q(x_{i})H(P,Q)=i=iP(xi)logQ(xi)PPP独热向量 P(xk)=1P(x_{k})=1P(xk)=1

  • 交叉熵损失函数公式: H(P,Q)=−P(xk)log⁡Q(xk)=−log⁡Q(xk)H(P,Q) = - P(x_{k}) \log Q(x_{k})=- \log Q(x_{k})H(P,Q)=P(xk)logQ(xk)=logQ(xk),单个样本损失:lk=−log⁡Q(xk)l_k=-\log Q(x_{k})lk=logQ(xk)

  • 平均损失函数公式: l=−1N∑iNlog⁡Q(xi)l= - \frac{1}{N}\sum_i^N \log Q(x_{i})l=N1iNlogQ(xi)

二分类

只有两类,损失函数公式:H(P,Q)=−∑i=iP(xi)log⁡Q(xi)=−[p0log⁡Q(x0)+p1log⁡Q(x1)]H(P,Q) = - \sum_{i=i} P(x_{i}) \log Q(x_{i})=-[p_0 \log Q(x_{0})+p_1 \log Q(x_{1})]H(P,Q)=i=iP(xi)logQ(xi)=[p0logQ(x0)+p1logQ(x1)]p0p_0p0p1p_1p1表示 类别0,类别1的概率,p0+p1=1p_0+p_1=1p0+p1=1Q(x0)+Q(x1)=1Q(x_{0}) + Q(x_{1})=1Q(x0)+Q(x1)=1

  • 简化公式 令: p0=yp_0=yp0=y ,则 p1=1−yp_1=1-yp1=1y

  • 简化公式 令: Q(x0)=y^Q(x_{0})=\hat yQ(x0)=y^ ,则 Q(x1)=1−y^Q(x_{1})=1-\hat yQ(x1)=1y^ 带入原公式

  • H(P,Q)=−[ylog⁡y^+(1−y)log⁡(1−y^)]H(P,Q)=-[y \log \hat y+(1-y) \log (1-\hat y)]H(P,Q)=[ylogy^+(1y)log(1y^)]

最大似然估计 MLE

原式似然函数

  • 最大似然: 寻找参数 θ\boldsymbol{\theta}θ,使得当前观测到的这批样本出现的概率最大。用个例子来说明这个概念

抛硬币例子

  1. 假设硬币正面概率为 θ\thetaθ,单个样本概率函数 p(x;θ)=θp(x;\theta)=\thetap(x;θ)=θ

  2. 做实验:连续抛 3 次,结果:正、正、反(观测数据固定不变)。

  3. 联合概率(似然): l(θ)=θ∗θ∗(1−θ)=θ2(1−θ)l(\theta)=\theta * \theta *(1-\theta)= \theta^2 (1-\theta)l(θ)=θθ(1θ)=θ2(1θ)

  4. θ=?\theta=?θ=? 值是多少时, l(θ)l(\theta)l(θ)值达到顶峰。

  5. 假设θ=0.5\theta=0.5θ=0.5l(θ=0.5)=0.52(1−0.5)=0.125l(\theta=0.5)=0.5^2(1-0.5)=0.125l(θ=0.5)=0.52(10.5)=0.125

  6. 假设θ=0.7\theta=0.7θ=0.7l(θ=0.7)=0.72(1−0.7)=0.147l(\theta=0.7)=0.7^2(1-0.7)=0.147l(θ=0.7)=0.72(10.7)=0.147

  7. θ=0.7\theta=0.7θ=0.7θ=0.5\theta=0.5θ=0.5l(θ)l(\theta)l(θ)值更好,其实最优解是θ=正面次数总次数=23=0.667\theta=\frac{正面次数}{总次数}=\frac{2}{3}=0.667θ=总次数正面次数=32=0.667l(θ=0.667)=0.6672∗0.333=0.148l(\theta=0.667)=0.667^2 * 0.333=0.148l(θ=0.667)=0.66720.333=0.148 顶峰

  • p(x;θ)p(x;\theta)p(x;θ) 是样本概率函数,θ\thetaθ是参数,生成概率函数如 p(x;u,δ2)=12πδexp⁡(−(x−u)22δ2)p(x;u,\delta^2)=\frac {1}{\sqrt{2\pi \delta}} \exp(-\frac{(x-u)^2}{2 \delta ^2})p(x;u,δ2)=2πδ1exp(2δ2(xu)2) 此时 θ=u,δ2\theta = u,\delta^2θ=u,δ2

似然函数 L(θ)=p(x;θ)=∏i=1mp(xi;θ)L(\theta)=p(\boldsymbol x;\theta)=\prod_{i=1}^m p(x_i;\theta)L(θ)=p(x;θ)=i=1mp(xi;θ) 其中∏i=1m\prod_{i=1}^mi=1m表示连续相乘

对数似然函数

  • 很多个小于 1 的小数不停相乘, 计算机浮点数精度有限,取对数之后 累乘 → 累加

  • 数学求导极大简化 对数性质:ln⁡(ab)=ln⁡a+ln⁡b\ln(ab)=\ln a+\ln bln(ab)=lna+lnb

  • 优化目标等价,最大化似然 等于 最大化对数似然,最优参数完全不变,不会改变求解结果

  • 完美对接深度学习损失函数

对数似然推导

  1. L(θ)=∏i=1mp(xi;θ)L(\theta)=\prod_{i=1}^m p(x_i;\theta)L(θ)=i=1mp(xi;θ) 等式两边同时取自然对数 ln⁡\lnln

  2. ln⁡L(θ)=ln⁡∏i=1mp(xi;θ)\ln L(\theta)= \ln \prod_{i=1}^m p(x_i;\theta)lnL(θ)=lni=1mp(xi;θ) , 对数性质:乘积的对数 = 对数相加 ln⁡∏i=1mp(xi;θ)=∑i=1mln⁡p(xi;θ)\ln \prod_{i=1}^m p(x_i;\theta)=\sum_{i=1}^m \ln p(x_i;\theta)lni=1mp(xi;θ)=i=1mlnp(xi;θ)

  3. ln⁡L(θ)=∑i=1mln⁡p(xi;θ)\ln L(\theta) = \sum_{i=1}^m \ln p(x_i;\theta)lnL(θ)=i=1mlnp(xi;θ) ,定义对数似然 ℓ(θ)\ell(\theta)(θ)

  4. ℓ(θ)=lnL(θ)=∑i=1mp(xi;θ)\ell(\theta)=ln L(\theta) = \sum_{i=1}^m p(x_i;\theta)(θ)=lnL(θ)=i=1mp(xi;θ)

对数似然:ℓ(θ)=∑i=1mln⁡p(xi;θ)\ell(\theta) = \sum_{i=1}^m \ln p(x_i;\theta)(θ)=i=1mlnp(xi;θ)

转为深度学习损失

机器学习使用梯度下降最小化目标,但我们目标是最大化 ℓ(θ)\ell(\theta)(θ)

  • 最大化 ℓ(θ)\ell(\theta)(θ)   ⟺  \iff 最小化 −ℓ(θ)-\ell(\theta)(θ)

  • ℓ(θ)=−∑i=1mln⁡p(xi;θ)\ell(\theta) = - \sum_{i=1}^m \ln p(x_i;\theta)(θ)=i=1mlnp(xi;θ)

  • 批量训练一般再除以样本数量做平均

  • ℓ(θ)=−1m∑i=1mln⁡p(xi;θ)\ell(\theta) = - \frac{1}{m} \sum_{i=1}^m \ln p(x_i;\theta)(θ)=m1i=1mlnp(xi;θ)

最大似然估计MLE 公式: ℓ(θ)=−1m∑i=1mln⁡p(xi;θ)\ell(\theta) = - \frac{1}{m} \sum_{i=1}^m \ln p(x_i;\theta)(θ)=m1i=1mlnp(xi;θ)

求最大似然估计值(标准 MLE 求解方法)

抛硬币例子

  • MLE公式 ℓ(θ)=−1m∑i=1mln⁡p(xi;θ)\ell(\theta) = - \frac{1}{m} \sum_{i=1}^m \ln p(x_i;\theta)(θ)=m1i=1mlnp(xi;θ)
  • 概率函数 p(x;θ)=θp(x;\theta)=\thetap(x;θ)=θ ,抛 3 次m=3m=3m=3 ,测数据[正、正、反]=[θ,θ,1−θ][\theta,\theta,1-\theta][θ,θ,1θ] 带入MLE公式
  • ℓ(θ)=−13[ln⁡θ+ln⁡θ+ln⁡(1−θ)]=−13[2ln⁡θ+ln⁡(1−θ)]\ell(\theta) = - \frac{1}{3} [ \ln \theta +\ln \theta + \ln (1-\theta)]= - \frac{1}{3} [ 2\ln \theta + \ln (1-\theta)](θ)=31[lnθ+lnθ+ln(1θ)]=31[2lnθ+ln(1θ)]
  • ℓ(θ)\ell(\theta)(θ)求导 , ln⁡x\ln xlnx 求导公式 ddxln⁡x=f(x)′f(x)\frac{d}{dx} \ln x= \frac{f(x)'}{f(x)}dxdlnx=f(x)f(x)
  • ℓ(θ)′=−13[2θ−11−θ]\ell(\theta)'=-\frac{1}{3}[\frac{2}{\theta}- \frac{1}{1-\theta}](θ)=31[θ21θ1]
  • 极小值条件令导数 =0=0=0
  • −13[2θ−11−θ]=0=>2θ−11−θ=0-\frac{1}{3}[\frac{2}{\theta}- \frac{1}{1-\theta}]=0=>\frac{2}{\theta}- \frac{1}{1-\theta}=031[θ21θ1]=0=>θ21θ1=0 解方程求出θ\thetaθ
  • 2θ=11−θ=>θ=2−2θ\frac{2}{\theta}=\frac{1}{1-\theta}=>\theta=2-2\thetaθ2=1θ1=>θ=22θ
  • θ=23\theta=\frac{2}{3}θ=32

更多推荐