熵、信息量、KL散度、交叉熵、最大熵
如果两个模型的概率分布是不一样的,所以在衡量模型的差异的时候,不能直接定性衡量两个模型之间的差异,而是需要定量的衡量两个模型的差异(比如极大似然估计、最小二乘法和交叉熵)
信息量可以理解成一个事件从不确定变成确定的难度程度(概率)(或者说事件对某个人带来的价值大小)。难度越大,信息量越大。比如,阿根廷进入8强到赢得决赛的难度为\frac{1}{2^3},则信息量为3比特,再比如中国队从8强赢得决赛的难度为\frac{1}{2^{10}},则信息量为10比特。
公式为:I(i)=-log_2p_i,log以2为底因为最后要以比特表示信息量
熵衡量一个系统中的所有事件从不确定到确定的难度大小。对整体的概率模型进行一个衡量,衡量结果能反映出这个概率模型的不确定程度/混乱程度,熵是信息量的期望。
事件的不确定性越高,则信息量越高,即信息量函数f与概率P成负相关,即f(P)=log\frac{1}{P}=-log(P)
两个独立事件所产生的信息量等于各自信息量之和,即f(P_1,P_2)=f(P_1)+f(P_2)
信息熵表示的是信息量的期望,即H(P)=E[-log(P)]=\displaystyle\sum_XP(X)f(X)=-\displaystyle\sum_XP(X)logP(X)
可以证明:0 \le H(P) \le log\abs{X},所以当且仅当X的分布为均匀分布时有H(P)=log\abs{X},即P(X)=\frac{1}{\abs{X}}$时熵最大
Max Entropy
原理:学习概率模型时,在所有可能的概率分布(模型)中,熵最大的分布(模型)是最好的模型(概率最均匀)期望的约束表示为:E[f(X)]=\displaystyle\sum_XP(X)f(X)=\tau,其中f(X)是约束条件,E(f(X))是一个常数。
假设有k个约束条件:
即求解约束最优化问题:
利用拉格朗日乘子法求解:
解得:
H(p)=-Ep[logp]=\left\{ \begin{matrix} H(p)=-\int_xP(x)logP(x)dx \\ H(p)=-\displaystyle\sum_xP(x)logP(x) \end{matrix} \right.
香农熵就是在连续分布和离散分布中,对信息量的期望
公式为:熵=事件的概率x事件信息量的和,即各事件对系统贡献的信息量H(x)=-\displaystyle \sum_{i=1}^nP(x_i)log{P(x_i)}
比如,对于二分类(或者是二项分布)的任务,H(x)=-P(x)logP(x)-(1-P(x))log(P(x))
通信/编码角度的理解
对于同一随机变量x,有两个独立的概率分布,我们可以用KL散度来衡量两个分布的差异。机器学习中,当我们不知道一个模型时,没办法直接求熵,需要依靠相对熵来计算两个模型的差异,也就是loss值(P往往表示样本的真实分布,Q表示预测模型的分布)
令
则相对熵可以写成以下形式:
根据吉布斯不等式,D_{KL}中H(P,Q)-H(P)≥0
仅当两个模型完全相等时D(P||Q)=0,有差异时D(P||Q)>0
交叉熵越小,表示两个模型越相近,或者说转码不会有过多冗余比特
因为P的熵是确定的,所以求KL散度(相对熵)变成了求交叉熵的问
上述讨论的相对熵是在事件数(样本量)一样的情况下,当模型事件数量(样本量)不一样的时候取事件数多的那个
在分类问题中,通常使用交叉熵损失度量标签的真实分布和由分类器预测的分布之间的差异。要找两个模型最优值,就是要找交叉熵最小的情况。
一般来说以P为样本数据分布,Q为待优化的预测分布
在机器学习当中,我们对模型的训练实际上就是一个参数估计的过程。我们对模型的参数进行调整的过程就是调整模型Q(X)来逼近真实数据P(X)的优化过程
极大似然估计
等价于最小化负对数似然
这与逻辑回归中,用极大似然估计推出的损失函数在形式上是一样的,但是实际意义上是不一样的
log(xyz)=log(x)+log(y)+log(z);熵中则是为了计算概率对应的信息量引入-log