深度学习-交叉熵Cross-Entropy
交叉熵在深度学习中是常用的一个概念,是分类任务的基础损失函数,现代计算机视觉、自然语言处理模型训练的基石。可见交叉熵在深度学习中占着核心地位,本章详细讲解交叉熵完整体系概念公式推导过程: 信息量 →信息熵→ 相对熵(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)=−logp(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=ax ,1<a1 < a1<a ,y∈(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]=>a−n∈(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) 表示事件的概率,−logp(xi)-\log p(x_{i})−logp(xi) 表示事件的信息量。
信息熵公式(香农熵公式):H(x)=−∑i=ip(xi)logp(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)logP(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)logP(xi)Q(xi)=Ex∼PlogP(x)Q(x)=Ex∼P[logP(x)−logQ(x)]=Ex∼P[logP(x)]−Ex∼P[logQ(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)=Ex∼PlogQ(x)P(x)=Ex∼P[logP(x)−logQ(x)]=Ex∼P[logP(x)]−Ex∼P[logQ(x)]
公式推导结果: DKL(P∣∣Q)=Ex∼P[logP(x)]−Ex∼P[logQ(x)]=∑iP(xi)logP(xi)−∑iP(xi)logQ(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)=Ex∼P[logP(x)]−Ex∼P[logQ(x)]=∑iP(xi)logP(xi)−∑iP(xi)logQ(xi)
-
x∼Px∼Px∼P 表示xxx 只能取分布 PPP 定义内的数值,不会出现规则外的值,称 xxx服从分布 PPP
-
P(xi)P(x_i)P(xi) 固定概率权重
-
全部概率总和为 1,∑xP(xi)=1\sum_{x}P(x_i)=1∑xP(xi)=1
-
计算期望必须用 PPP 加权 , P(xi)P(x_i)P(xi)作为概率质量函数(连续型随机变量(概率密度函数)
交叉熵
-
KL散度公式: DKL(P∣∣Q)=∑iP(xi)logP(xi)−∑iP(xi)logQ(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)
-
信息熵公式: 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散度公式
-
KL散度公式: DKL(P∣∣Q)=−H(P)−∑iP(xi)logQ(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)
-
−∑iP(xi)logQ(xi)-\sum_i P(x_i) \log Q(x_i)−∑iP(xi)logQ(xi) 是交叉熵公式记: H(P,Q)=−∑iP(xi)logQ(xi)H(P,Q)=-\sum_i P(x_i) \log Q(x_i)H(P,Q)=−∑iP(xi)logQ(xi)
-
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)
-
大白话: 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.50,P(x2)=0.30,P(x3)=0.20
-
信息量 I(x1)=−logP(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)=−logP(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)=−logP(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)logP(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.5∗0.3+0.3∗0.52+0.2∗0.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.10,Q(x2)=0.20,Q(x3)=0.70
-
信息量 I(x1)=−logQ(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)=−logQ(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)=−logQ(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)logQ(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.5∗1.0+0.3∗0.69+0.2∗0.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.737−0.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[logQ(x)]=−∑i=iP(xi)logQ(xi)H(P,Q)=- \mathbb {E_{x∼P}} [ \log Q(x)] =- \sum_{i=i} P(x_{i}) \log Q(x_{i})H(P,Q)=−Ex∼P[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(xj−max(z))exp(xi−max(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] 假设类别kkk 则xk=1x_k=1xk=1其他都是xx=0x_x=0xx=0
-
交叉熵损损失函数:H(P,Q)=−∑i=iP(xi)logQ(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)logQ(xk)=−logQ(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=−logQ(xk)l_k=-\log Q(x_{k})lk=−logQ(xk)
-
平均损失函数公式: l=−1N∑iNlogQ(xi)l= - \frac{1}{N}\sum_i^N \log Q(x_{i})l=−N1∑iNlogQ(xi)
二分类
只有两类,损失函数公式:H(P,Q)=−∑i=iP(xi)logQ(xi)=−[p0logQ(x0)+p1logQ(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_0p0和p1p_1p1表示 类别0,类别1的概率,p0+p1=1p_0+p_1=1p0+p1=1 ,Q(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=1−y
-
简化公式 令: Q(x0)=y^Q(x_{0})=\hat yQ(x0)=y^ ,则 Q(x1)=1−y^Q(x_{1})=1-\hat yQ(x1)=1−y^ 带入原公式
-
H(P,Q)=−[ylogy^+(1−y)log(1−y^)]H(P,Q)=-[y \log \hat y+(1-y) \log (1-\hat y)]H(P,Q)=−[ylogy^+(1−y)log(1−y^)]
最大似然估计 MLE
原式似然函数
- 最大似然: 寻找参数 θ\boldsymbol{\theta}θ,使得当前观测到的这批样本出现的概率最大。用个例子来说明这个概念
抛硬币例子
-
假设硬币正面概率为 θ\thetaθ,单个样本概率函数 p(x;θ)=θp(x;\theta)=\thetap(x;θ)=θ
-
做实验:连续抛 3 次,结果:正、正、反(观测数据固定不变)。
-
联合概率(似然): l(θ)=θ∗θ∗(1−θ)=θ2(1−θ)l(\theta)=\theta * \theta *(1-\theta)= \theta^2 (1-\theta)l(θ)=θ∗θ∗(1−θ)=θ2(1−θ)
-
求θ=?\theta=?θ=? 值是多少时, l(θ)l(\theta)l(θ)值达到顶峰。
-
假设θ=0.5\theta=0.5θ=0.5 ,l(θ=0.5)=0.52(1−0.5)=0.125l(\theta=0.5)=0.5^2(1-0.5)=0.125l(θ=0.5)=0.52(1−0.5)=0.125
-
假设θ=0.7\theta=0.7θ=0.7 ,l(θ=0.7)=0.72(1−0.7)=0.147l(\theta=0.7)=0.7^2(1-0.7)=0.147l(θ=0.7)=0.72(1−0.7)=0.147
-
θ=0.7\theta=0.7θ=0.7 比 θ=0.5\theta=0.5θ=0.5, l(θ)l(\theta)l(θ)值更好,其实最优解是θ=正面次数总次数=23=0.667\theta=\frac{正面次数}{总次数}=\frac{2}{3}=0.667θ=总次数正面次数=32=0.667 ,l(θ=0.667)=0.6672∗0.333=0.148l(\theta=0.667)=0.667^2 * 0.333=0.148l(θ=0.667)=0.6672∗0.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(x−u)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}^m∏i=1m表示连续相乘
对数似然函数
-
很多个小于 1 的小数不停相乘, 计算机浮点数精度有限,取对数之后 累乘 → 累加
-
数学求导极大简化 对数性质:ln(ab)=lna+lnb\ln(ab)=\ln a+\ln bln(ab)=lna+lnb
-
优化目标等价,最大化似然 等于 最大化对数似然,最优参数完全不变,不会改变求解结果
-
完美对接深度学习损失函数
对数似然推导
-
L(θ)=∏i=1mp(xi;θ)L(\theta)=\prod_{i=1}^m p(x_i;\theta)L(θ)=∏i=1mp(xi;θ) 等式两边同时取自然对数 ln\lnln
-
lnL(θ)=ln∏i=1mp(xi;θ)\ln L(\theta)= \ln \prod_{i=1}^m p(x_i;\theta)lnL(θ)=ln∏i=1mp(xi;θ) , 对数性质:乘积的对数 = 对数相加 ln∏i=1mp(xi;θ)=∑i=1mlnp(xi;θ)\ln \prod_{i=1}^m p(x_i;\theta)=\sum_{i=1}^m \ln p(x_i;\theta)ln∏i=1mp(xi;θ)=∑i=1mlnp(xi;θ)
-
lnL(θ)=∑i=1mlnp(xi;θ)\ln L(\theta) = \sum_{i=1}^m \ln p(x_i;\theta)lnL(θ)=∑i=1mlnp(xi;θ) ,定义对数似然 ℓ(θ)\ell(\theta)ℓ(θ)
-
ℓ(θ)=lnL(θ)=∑i=1mp(xi;θ)\ell(\theta)=ln L(\theta) = \sum_{i=1}^m p(x_i;\theta)ℓ(θ)=lnL(θ)=∑i=1mp(xi;θ)
对数似然:ℓ(θ)=∑i=1mlnp(xi;θ)\ell(\theta) = \sum_{i=1}^m \ln p(x_i;\theta)ℓ(θ)=∑i=1mlnp(xi;θ)
转为深度学习损失
机器学习使用梯度下降最小化目标,但我们目标是最大化 ℓ(θ)\ell(\theta)ℓ(θ)
-
最大化 ℓ(θ)\ell(\theta)ℓ(θ) ⟺ \iff⟺ 最小化 −ℓ(θ)-\ell(\theta)−ℓ(θ)
-
ℓ(θ)=−∑i=1mlnp(xi;θ)\ell(\theta) = - \sum_{i=1}^m \ln p(x_i;\theta)ℓ(θ)=−∑i=1mlnp(xi;θ)
-
批量训练一般再除以样本数量做平均
-
ℓ(θ)=−1m∑i=1mlnp(xi;θ)\ell(\theta) = - \frac{1}{m} \sum_{i=1}^m \ln p(x_i;\theta)ℓ(θ)=−m1∑i=1mlnp(xi;θ)
最大似然估计MLE 公式: ℓ(θ)=−1m∑i=1mlnp(xi;θ)\ell(\theta) = - \frac{1}{m} \sum_{i=1}^m \ln p(x_i;\theta)ℓ(θ)=−m1∑i=1mlnp(xi;θ)
求最大似然估计值(标准 MLE 求解方法)
抛硬币例子
- MLE公式 ℓ(θ)=−1m∑i=1mlnp(xi;θ)\ell(\theta) = - \frac{1}{m} \sum_{i=1}^m \ln p(x_i;\theta)ℓ(θ)=−m1∑i=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)ℓ(θ)求导 , lnx\ln xlnx 求导公式 ddxlnx=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[θ2−1−θ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}=0−31[θ2−1−θ1]=0=>θ2−1−θ1=0 解方程求出θ\thetaθ
- 2θ=11−θ=>θ=2−2θ\frac{2}{\theta}=\frac{1}{1-\theta}=>\theta=2-2\thetaθ2=1−θ1=>θ=2−2θ
- θ=23\theta=\frac{2}{3}θ=32
更多推荐
所有评论(0)