7.3.4 最大熵模型的学习(书上P98)
学习有三件事:
- 1.哪些是已/未知的信息;
- 2.目的是什么;
- 3.如何实现目的?
- 1.已知信息:
要从T的N个样本中训练出概率分布模型,并且要满足n个特征函数(约束);
2.目的:用上面训练所得的概率分布函数就可以通过x得到y的类了;
-
3.如何实现目的:具体说就是怎么来实现这个概率分布函数的训练,就是用最大熵,进而转为了约束最优化问题:
与之前学习的最大熵模型比较:
目标函数:第一个求的是最小值,而第二个求的是最大值(不过加个负号就变最小值了);
约束条件:第一个的约束条件既可以是等式也可以是不等式,而第二个的约束条件只能是等式
然后就变成了求解有约束的最小化问题:
转为拉格朗日乘子法来进行求解
什么情况下原始问题和对偶问题是相同解:kkt条件?
仿射函数就是最高次数为1的函数,x为条件概率分布(一次项)
统计学的凹凸函数:
这里和高数学的不一样,要注意
“严格”是指上面的那个不等式没有等号存在
所带来的结果:
P,Q为两个不同的概率分布
把上面的式子展开后并进行变号可以得到:
p,q互换位置对于这个函数没有影响——>只用关注其中一个即可,也就是
根据图像:
可以得到不等式:
但是前面说了P,Q不同,所以关于0的等号不可能成立;
又由于λ1,2都是大于等于0的,所以原来<0的不等式成立。
这样一来,f(x)就是一个严格的凸函数,那么就可以通过对偶问题解决原始问题了。
7.3.5 如何利用对偶问题解决原始问题
-
解决步骤:
先化为对偶问题,然后通过偏导数求其内部极小化,进而得到了概率密度函数ψ(w),对于n+1个w,他们都跟着一个条件概率分布记为Pw
从拉格朗日函数出发:
对于这里的P^(x)是可以通过经验分布得到的,然后对后面的式子求偏导,
得到了下面的公式:
一共有三部分(三块),他们的偏导数分别为:
那么最后就是让①+②+③=0就可以求得解了,也就是下面的公式:
为了计算方便,最好每一项都能有个P^(x)的求和,不过对于其单独求和(就像这里的第二项)都等于1,所以只用前面乘个1就可以了,那么第三项就变成了:
简化后变成了:
这样就可以求得条件概率表达式了:
进而整理可得:
红字是说还有个概率求和=1的约束条件还没用,所以用起来进而让分母用特征函数和N个拉格朗日乘子表示出来:
这个式子里边有对y求和,所以y就没了,只剩下x了
称Zw(x)为规范化因子
用规范化因子来表示所得解:
完整流程:
拉格朗日乘子的解在不同问题下有着不同的解法,将倒数第二步的w带回刚得到的条件概率中就完成了解