机器学习——最大熵模型

2019-03-01  本文已影响0人  Vophan

说到做到,今晚绝对更完最大熵模型,这个东西是开始啃机器学习算法后,第一次让我觉得难受的一个模型,但是真正理解后的喜悦,也是很令人开心的。废话不多说,我们开始吧。

什么是最大熵模型

首先,我们先说一下最大熵原理,引用我在知乎看到的一个观点,我来解释一下什么是最大熵原理:

最大熵原理就是说:如果你不知道什么事,就不要瞎比比。而在机器学习里,就是如果没有数据说明,就不要随便为模型加假设。

这里,其实我们就可以看出来:

其实,最大熵原理是应该应用在所有的机器学习模型上的原则。

而最大熵模型,则是引用了最大熵原理的想法来实现一个机器学习的分类模型。

原理

和最大熵原理相似的,最大熵模型就是说:

如果你有数据,请通过你的数据建立先验信息(在这里叫做约束条件),剩下的部分,请让他们均匀分布,也就是让他们的熵最大。

因为我们如果要搭建一个最大熵模型来实现分类,那么我们定义模型为p(y|x)(参考感知机和逻辑回归),然后我们就要让这个模型在符合约束条件的基础上,选择熵最大的模型,这样我们就得到了最终的分类模型。

那么,我们怎么建立我们的约束条件呢?
这里我们要提到一个叫做特征函数的东西,也正是这个东西,一直让我想不明白。现在我们来解释一下:
首先,我们看一下,统计学习方法对特征函数的定义:
f(x,y) = \left \{ \begin{aligned} 1, & \ 当 \ x、y \ 满足某一事实.\\ 0, & \ 不满足该事实.\\ \end{aligned}\right .
当时我看到这里时,就一直有一个疑惑:
模型(条件概率)如何体现这个约束条件呢?也就是说如何表现出它符合约束条件呢?
同时,我又觉得:这个特征函数是个什么鬼呢?
首先,我们先解释一下这个特征函数的问题:

开始,我总是纳闷,这算哪门子特征函数,知道晚上,我才反应过来,这不是离散数学中集合论里面的指示函数吗?结果我一查:


果然如此:指示函数也叫作特征函数,也就是用来指示元素是否属于某一个子集。那么,我们就知道怎么来表示约束条件了:
\begin{aligned} \widetilde{P}(X = x,Y = y) &= \frac{count(X=x,Y= y)}{N}\\ \widetilde{P}(X = x) &= \frac{count(X=x)}{N} \end{aligned}
E _{\widetilde{P}}(f) = \sum_{x,y}\widetilde{P}(x ,y)f(x,y) = \frac{1}{N} \sum_{x,y}f(x,y)
E_P(f) =\sum_{x,y}P(x,y)f(x,y) \approx \sum_{x,y}\widetilde{P}(x)P(y|x)f(x,y)
E _{\widetilde{P}}(f)实际上代表了训练数据之中符合特征函数的数据的占比
E_P(f)实际上代表的是模型先验数据中符合约束条件的占比
现在先验数据中的符合约束条件的占比等于训练数据中符合特征函数的数据占比,实际上就说明了:模型已经符合约束条件。
如果这里还没有看懂,可以参看这篇文章:
maximium entropy

确定了约束条件,求取最大熵的情况其实就是:求取有约束条件下的最值:很容易我们就想到了拉格朗日乘子法,将有约束化为无约束。

拉格朗日乘子法

按照拉格朗日乘子法:我们现在应该求偏导,等于0,然后最终得到参数 原始问题
对偶问题
剩下的就很简单了:

最后,我们可以证明:
对偶函数的极大化等价于第一步求解出的P的极大似然估计,所以将最大熵模型写成更一般的形式.
网图
这篇文章就先说到这里:
至于后面的迭代方法,看心情
Dont Panic
上一篇 下一篇

猜你喜欢

热点阅读