生活中我们经常听到人们说“不要把鸡蛋放到一个篮子里”,这样可以降低风险。深究一下,这是为什么呢?其实,这里边包含了所谓的最大熵原理(The Maximum Entropy Principle)。
最大熵原理
在已知约束的情况下,我们建模时应该满足这些约束,并且对其他条件作最复杂最一般的假设。这样会得出更贴近于真实的结果。一般来说,这种假设就是最大熵原理。因为熵最大信息量最大,不确定性最大。
最大熵原理认为,学习概率模型时,在所有可能的概率分布模型中,熵最大的模型,为最好的模型。
最大熵模型
将最大熵原理应用于分类问题,我们便得到了最大熵模型。我们的目标便是:利用最大熵原理选择一个最好的分类模型,即对于任意给定的输入x∈X,可以以概率p(y|x)输出y∈Y。
特征函数
我们对于实际的特征通常会采用特征函数的方法将其量化成数,这样我们才可以进行计算。我们通常采用二值定义的方式:
这样我们便可以使用这个函数值来计算我们的经验分布
经验分布
我们首先要明确一点,我们的最大熵模型是未知目标分布的。也就是说我们对于约束条件以外的分布并不可知,所以我们才用最大熵来假设等概同分布。
那第一个条件概率分布就已经是未知了,那还如何去计算后续的熵呢?要知道熵的计算公式都离不开概率。这时候我们就引入一个经验分布,就是将已经观察的数据作为经验,来模拟一下真实分布。感觉和我们计算概率的方法很接近,但是从严格的数学意义上来说,这并不能代表真实数据的分布情况,哪怕样本足够多。
有特征函数作为数据的输入源头,我们计算经验分布: f(x,y) = 1的个数/总个数。,原计算公式为:
约束条件
如果我们选择模型能够获取真实训练集中的信息,那么我们便可以假设这两个模型的期望值相等。这样便有:
其中这两个计算公式为:
当然这只是一个默认的约束条件,也就是最终选择的目标模型一定需要满足此条约束。但是不表示仅仅是这一条约束,我们对待实际问题需要区别处理。比如说我们我们已知骰子的1和6朝上概率为3/20,(假设骰子不均匀)那么这就是一个额外的条件约束。
为了帮助大家理解约束条件,这里还有比较完整详细的约束条件几何解释:
熵的计算
这是我们所要优化的目标,熵。我们的目的就是要将模型的熵提高到最大,来将此模型作为我们最终使用的模型。 假设满足所有约束条件的模型集合为:
我们将定义在概率分布P(Y|X)上的条件熵定义为:对条件熵不太熟悉的朋友可以看维基百科中对于的描述。
最大熵模型的学习
最大熵模型的学习过程就是一个求解最大熵模型的过程。我们将此过程也可以简化称为一种约束最优化的过程,等价约束最优化问题如下:
我们首先按照一般习惯,将此求最大问题转化为求最小问题。对原式取负就可以。 转化之后的公式如下:
然后就开始求解此约束条件的最优化问题:
由于原始问题是凸问题,所以其对偶问题与原始问题同解,我们便着力求解其对偶问题。这里我贴上《统计学习方法》里面的解法,帮助大家理解: