最大熵原理

相关数学知识:
1、拉格朗日乘子法
2、拉格朗日对偶性
3、凸函数
4、Jensen 不等式
5、经验分布
---

参考资料1:皮果提的文章《最大熵学习笔记》系列

https://blog.csdn.net/itplus/article/details/26550597

其他参考资料:

李航·统计学习方法笔记·第6章 logistic regression与最大熵模型(2)·最大熵模型
https://blog.csdn.net/tina_ttl/article/details/53542004

2、条件熵定义的最原始形式要记住

\[ H(Y|X)=\sum_{x\in X} p(x)H(Y|X=x) \]

或者写成这样

\[ H(Y|X)=\sum_{i=1}^{n} p(x_i)H(Y|X=x_i) \]

这里又假设随机变量 \(Y\)\(m\) 个取值,将 \(H(Y|X=x_i)\) 用定义式 \(H(Y|X=x_i) = - \sum_{j=1}^{m} p(y_j|X=x_i)\log p(y_j|X=x_i)\) 代入上式,得

\[ H(Y|X)=\sum_{i=1}^{n} p(x_i)H(Y|X=x_i) = \sum_{i=1}^{n} p(x_i)\left(- \sum_{j=1}^{m} p(y_j|X=x_i) \log p(y_j|X=x_i)\right)=-\sum_{i=1}^{n}p(x_i) \sum_{j=1}^{m} p(y_j|x_i) \log p(y_j|x_i) \]


\[ H(Y|X)=\sum_{i=1}^{n} p(x_i)H(Y|X=x_i) =-\sum_{i=1}^{n}p(x_i) \sum_{j=1}^{m} p(y_j|x_i) \log p(y_j|x_i) \]

  • 条件熵表示在已知随机变量 \(X\) 的条件下,\(Y\)条件概率分布的熵对随机变量 \(X\)的数学期望。
  • 熵是数学期望(信息量的数学期望),条件熵也是数学期望,是数学期望的数学期望,有点拗口,不妨把定义多看几遍,就清楚了。

3、最大熵原理的理解

  • 这里讨论的分类模型是概率模型,区别于决策函数模型;
  • 最大熵原理的字面理解:在(满足约束条件的)所有可能的概率模型中(在概率空间里),找熵最大(最不确定,最随机)的概率模型,认为是最好的概率模型;

  • 已知的信息,我们在建模的时候,写成了约束的样子,除了已知的知识以外,其余的信息不能做任何假设,即做“等概率”处理,“等概论”即“熵最大”;
  • “熵最大”是什么“熵”呢?上面介绍的“条件熵”,即 \(H(Y|X)\) 最大。

    4、最大熵模型的理解

  • 利用最大熵原理选择一个最好的分类模型,这个分类模型输入一个 \(x\) 可以得到关于输出 \(y\) 的条件概率 \(p(y|x)\) ,取最大,作为最终的分类预测的结果;
  • 这些分类模型中,在满足已知信息的前提下(作为约束),条件熵最大的模型就是最好的分类模型;
  • 下面这一点不好理解:输入 \(x\) 和输出 \(y\) 之间的关系,使用特征函数 \(f(x, y)\) 来表示,可以想象 \(x\) 取某个值的时候,\(y\) 就有一个值与之对应,这正是输入变量和输出变量的关系,用特征函数来刻画。
  • 经验分布:通过在训练数据集进行统计得到的分布。我们需要计算的是(1)联合概率分布(2)边缘分布,只要是经验分布,我们在表示概率的时候,都在上面加上“一弯”进行区别。

\[ \sum_{x,y}\widetilde P(x,y)f(x,y) = \sum_{x,y}P(x,y)f(x,y) \]

  • 左边 \(E_{\widetilde P}(f) = \sum_{x,y}\widetilde P(x,y)f(x,y)\) 表示特征函数 \(f(x,y)\) 在训练数据集上关于经验分布 \(\widetilde P(x,y)\) 的数学期望
  • 右边 \(E_{P}(f) =\sum_{x,y}P(x,y)f(x,y)\) 表示特征函数 \(f(x,y)\) 在模型上关于理论分布 \(P(x,y)\) 的数学期望

如果模型能够获取训练数据中的信息,那么就可以假设这两个期望值相等。

\(P(x,y)\) 未知,\(P(y|x)\) 为所求,又有 \(P(x,y)=P(x)P(y|x)\)\(P(x)\) 也未知,但是可以用 \(\widetilde P(x)\) 代替,这样就有:

\[ \sum_{x,y}\widetilde P(x,y)f(x,y) = \sum_{x,y}\widetilde P(x)P(y|x)f(x,y) \]
这就是模型的约束条件。

有多少个特征函数,就有多少个约束条件。

于是最大熵模型就成为:

  • 目标函数:条件熵(希望取得最大值);
  • 约束条件1:有多少个特征函数,就有多少个约束条件
  • 约束条件2:条件概率之和为 1。
    使用拉格朗日乘子法(再次用到),引入拉格朗日乘子,写出拉格朗日函数。
    接下来利用拉格朗日对偶性,求解对偶问题
    即:原始问题是 $ \min_p \max_w$ 的,对偶问题是 \(\max_w \min_p\) 的。

最大熵模型的学习可以归结为对偶函数的极大化问题。

对偶函数的极大化等价于最大熵模型的极大似然估计。


(自己在学习的时候记下的笔记)

  • 分类问题的本质是求条件概率,回归的本质是求决策函数,最大熵模型用于分类问题,就是求条件熵,最大熵模型的基本假设就是,在满足约束条件的情况下,条件熵最大的模型就是最好的模型,正如一个著名的投资理念“鸡蛋不要放在一个篮子里”;

  • 目标函数是条件熵最大,即条件概率的期望最大。约束条件是联合分布的期望相等(有多少个特征函数,就有多少个等式,另外,条件概率之和为 1)。

  • 最大熵模型小结(来自刘建平)
    最大熵模型在分类方法里算是比较优的模型,但是由于它的约束函数的数目一般来说会随着样本量的增大而增大,导致样本量很大的时候,对偶函数优化求解的迭代过程非常慢,scikit-learn 甚至都没有最大熵模型对应的类库。但是理解它仍然很有意义,尤其是它和很多分类方法都有千丝万缕的联系。
    惯例,我们总结下最大熵模型作为分类方法的优缺点:
    最大熵模型的优点有:
    (1)最大熵统计模型获得的是所有满足约束条件的模型中条件熵极大的模型,作为经典的分类模型时准确率较高。
    (2)可以灵活地设置约束条件,通过约束条件的多少可以调节模型对未知数据的适应度和对已知数据的拟合程度
  • 最大熵模型的缺点有:
    (1)由于约束函数数量和样本数目有关系,导致迭代过程计算量巨大,实际应用比较难。
    参考资料:https://www.cnblogs.com/pinard/p/6093948.html
    最大熵模型采用了和 SVM 一样的套路,即拉格朗日数乘法。
    (将一个有约束的最优化问题,转换成一个无约束的最优化问题,并且)(https://www.matongxue.com/madocs/939.html

1、最大熵原理是概率模型学习的一个准则;
2、最大熵原理认为:要选择的概率模型首先必须满足已经有的事实(即约束条件),在没有更多信息的情况下,那些不确定的部分都是“等可能的”。
3、最大熵原理通过条件熵的最大化来表示等可能性
4、最大熵模型表示的是对于给定的输入 \(X\),以条件概率 \(P(Y|X)\) 输出 \(Y\);给定一个训练数据集,学习的目标是利用最大熵模型选择最好的分类模型
5、公式的推导:
从训练数据集可以得到:

(1)联合分布 \(P(Y|X)\) 的经验分布:\(\widetilde P(X=x,Y=y) = \frac{v(X=x,Y=y)}{N}\)
(2)边缘分布 \(P(X)\) 的经验分布:\(\widetilde P(X=x) = \frac{v(X=x)}{N}\)

其中 $v(X=x,Y=y) $ 表示训练样本中 \((x,y)\) 出现的频数;\(v(X=x)\) 表示训练数据集中输入 \(x\) 出现的频数,\(N\) 表示训练样本容量。

(3)特征函数 $
f(x,y)=\begin{cases}
1, & x 与 y 满足某一事实 \
0, & 否则 \
\end{cases}
$

(4)特征函数 \(f(x,y)\) 关于经验分布(训练数据集的分布)$\widetilde P(X,Y) $ 的期望值:
\[ E_{\widetilde P}(f) = \sum_{x,y}\widetilde P(x,y)f(x,y) \]

(5)特征函数 \(f(x,y)\) 关于模型 \(P(Y|X)\) 与经验分布 $\widetilde P(X) $ 的期望值:

\[ E_{P}(f) =\sum_{x,y} \widetilde P(x)P(y|x)f(x,y) \]

如果模型能够获取从训练数据集中的信息,那么就可以假设这两个期望值相等。

\[ E_{P}(f) = E_{\widetilde P}(f) \]
即:
\[ \sum_{x,y} \widetilde P(x)P(y|x)f(x,y) = \sum_{x,y}\widetilde P(x,y)f(x,y) \]

上面的两个等式作为条件概率的最大熵的约束条件。如果有 \(n\) 个特征函数,那么就有 \(n\) 个约束条件。

联合熵:两个变量 \(X\)\(Y\) 的联合熵的表达式:

\[ H(X,Y) = -\sum_{i=1}^{n}p(x_i,y_i) \log p(x_i,y_i) \]

条件熵:条件熵类似于条件概率,它度量了我们的 \(Y\) 在知道了 \(X\) 以后剩下的不确定性:

\[ H(Y|X) = -\sum_{i=1}^{n}p(x_i,y_i) \log p(y_i|x_i) = \sum_{j=1}^{n}H(y|x_j) \]

《统计学习方法》这本书 P61上是这样叙述的:
设有随机变量 \((X,Y)\),其联合概率分布为:
\[ P(X = x_i,Y=y_j) = p_{ij},i=1,2,\cdots,n;j=1,2,\cdots,m \]

条件熵 \(H{Y|X}\) 表示在已知随机变量 \(X\) 的条件下随机变量 \(Y\) 的不确定性。
随机变量 \(X\) 给定的条件下 \(Y\) 的条件熵 \(H(Y|X)\) ,定义为 \(X\) 给定的条件下 \(Y\) 的条件概率分布的熵对 \(Y\) 的数学期望:
\[ H(Y|X) = -\sum_{i=1}^{n}p_i H(Y|X=x_i) \]

这里 \(p_i = P(X=x_i),i=1,2,\cdots,n\)
熵与条件熵之差称之为互信息。

(理解条件熵:条件熵即按一个新的变量的每个值对原变量进行分类,比如《统计学习方法》中将是否同意贷款按照申请人是否有自己的房子分为两类。然后在每一个小类里面,都计算熵,然后每一个熵乘以各个类别的概率,然后求和。我们用另一个变量对原变量分类后,原变量的不确定性就会减小了,因为新增了 \(Y\) 的信息。不确定程度减少了多少就是信息的增益。)

用下面这个图很容易明白他们的关系。左边的椭圆代表 \(H(X)\),右边的椭圆代表 \(H(Y)\),中间重合的部分就是我们的互信息或者信息增益 \(I(X,Y)\), 左边的椭圆去掉重合部分就是 \(H(X|Y)\),右边的椭圆去掉重合部分就是 \(H(Y|X)\)。两个椭圆的并就是 \(H(X,Y)\)

image.png

信息增益:\(g(D,A) = H(D) - H(D,A)\)也叫互信息
关于熵的一些等式:
(1)条件熵的定义:\(H(Y|X) = H(X,Y)-H(X)\)
(2)\(H(Y|X) = H(Y)-I(X,Y)\) 即 $I(X,Y)= H(Y)-H(Y|X) \(; (3)对偶式:\)H(X|Y) = H(X)-I(X,Y)$ 即 $H(X|Y)= H(X)-I(X,Y) \(; (4)\)I(X,Y) = H(X) + H(Y) - H(X,Y)$
(5)一个性质:\(H(X|Y) \le H(X),H(Y|X)\le H(Y)\)

经验条件熵如何计算:\(H(D|A)\)

\[ \begin{equation}\begin{split} H(D|A) &= -\sum_{i,k}p(D_k,A_i)\log p(D_k,A_i) \\ &= -\sum_{i,k}p(A_i)p(D_k|A_i)\log p(D_k,A_i)【这一步把 p(D_k|A_i) 化开】\\ &= -\sum_{i=1}^{n}\sum_{k=1}^{K} p(A_i)p(D_k,A_i) \log p(D_k,A_i) \\ &= -\sum_{i=1}^{n} p(A_i) \sum_{k=1}^{K} p(D_k|A_i) \log p(D_k|A_i) \\ &= -\sum_{i=1}^{n} \frac{|D_i|}{|D|}\sum_{k=1}^{K} \frac{|D_{ik}|}{|D_i|} \log \frac{|D_{ik}|}{|D_i|} \end{split}\end{equation} \]

分清楚是对于某个特征的所有取值的熵(条件熵,是个期望),还是对于某个熵的某个取值的熵。

\[ \begin{equation}\begin{split} H(Y|X) &= -\sum_{x \in X}H(Y|X=x) \\ &= -\sum_{x \in X} p(x) \sum_{y \in Y} p(y|x) \log p(y|x) \\ &= -\sum_{x \in X} \sum_{y \in Y} p(x,y) \log p(y|x) \end{split}\end{equation} \]

\[ H(Y|X=x) = -\sum_{y \in Y} P(y|x) \log P(y|x) \]

关于各种熵的参考资料:https://zhuanlan.zhihu.com/p/35423404

猜你喜欢

转载自www.cnblogs.com/liweiwei1419/p/9927411.html