熵(信息熵)、交叉熵和相对熵(KL散度)、条件熵,谨记,无论设什么熵,都是一个期望。
熵(信息熵)
信息熵有两个含义:1.系统包含的信息量的期望 2.定量描述该系统所需的编码长度的期望
公式推导
定性推导:
设$h(x)$为$x$包含的信息量,如果我们有俩个不相关的事件$x$和$y$,那么我们观察到的俩个事件同时发生时获得的信息量应该等于观察到的事件各自发生时获得的信息量之和,即:$h(x,y) = h(x) + h(y)$,由于$x$,$y$是俩个不相关的事件,则满足$p(x,y) = p(x) \times p(y)$.那么要想让$h(x,y) = h(x) + h(y)$,$h(x)$就只能是$\log p(x)$,为了让信息量为非负,我们在其前面加负号,得到信息量公式:
定量推导:
参考该博客
这个很牛逼!!!!!开始推导:
首先说明信息量的定义,谨记x是个概率值,不是事件:
- 信息量是概率的递减函数,记为$f(x)$,$x\in[0,1]$
- $f(1)=0,f(0)=+∞$
- 独立事件(概率之积)的信息量等于各自信息量之和:$f (x_1 \times x_2)=f(x_1)+f(x_2),x_1,x_2\in[0,1]$
积分得:
令$x=1$,得$C=0$,故
而$\frac{f(1)^\prime}{\log_ae}$是个常数,令为1,则
证毕!!!
编码推导:
参考此处
首先需要知道的是Karft不等式:$\sum r^{-l_i}\le1$,其中$r$是进制数,一般取二进制,$l_i$表示第$i$个信息的码长.问题可以转化为:
由拉格朗日乘数法:
根据拉格朗日法则求极值得:
由上面公式得:
一式带入二式得:$\sum r^{-l_i} = \sum \frac{p_i}{\lambda \times \ln r} = \frac{1}{\lambda \times \ln r} = 1$
因此:$\lambda = \frac{1}{\ln r}$
最终得:$l_i = \log r \frac{\lambda \times \ln r}{p_i}=\log r\frac{1}{p_i}$,正好是熵!!!
则公式信息熵:
自然是系统信息量的期望,或称为编码长度的期望.
交叉熵和相对熵(KL散度)
现在有两个分布,真实分布p和非真实分布q,我们的样本来自真实分布p,按照真实分布p来编码样本所需的编码长度的期望为(信息熵):
按照不真实分布q来编码样本所需的编码长度的期望为(交叉熵):
注意:$H(p,q)≠H(q,p)!!!$而KL散度(相对熵)为:
它表示两个分布的差异,差异越大,相对熵越大。
附加:JS散度:可以看到KL散度是不对称的,因此引入JS散度
条件熵
条件熵表示特定特征条件下样本的不确定性。案例见此,公式表达为:
X表示总体样本的某个特征,条件熵和其他熵最大的不同就是条件熵和特征有关,其他熵只和Label有关,和特征无关。
联合熵
表示X和Y是同一个分布中的两个特征,没有特征和Label之分.
联合熵和条件熵的关系:
注意,要和条件熵的符号区分。