这里开始转为网课的计数方式了。。。改正好麻烦的⌓‿⌓
7.2 最大熵模型简介
-
模型定义:
用 条件熵 是因为要用下输入变量X来获得Y对应的类别;不用联合概率分布是因为这里的模型用的是判别方法,所得到的是条件概率分布(已知X的条件下Y的概率分布)
- 实现方式:计算在X=x时每个Y对于每个类的取值概率,并选出其中最大的那个作为类,在出现等概率的时候可以任选一个作为其类;
-
算式讲解:
集合C算式中花体的P代表所有概率分布,而后面的E...为约束条件,此处共有n个
-
例子:
用特征函数f(x,y)来描述输入x与输出y之间的事实
对于刚刚的例子可以得到对应的特征函数值:
反例:三打白骨精,这里的“打”是动词,所以要再加一个特征函数f2来表示具体的语义环境——>此处的n=2;再运用特征函数来得到约束条件。
注意:经验分布为真实分布的一个估计值,所以此处的也只是真实的一个近似值?
对于每个特征函数,分别在真实分布和经验分布下求期望值并令他俩相等;
而对于真实分布,就等于所有p(x,y)fi(x,y)的求和:
由于求的是条件概率分布,那么p(x)就可以拿近似值替代,也就是经验分布也就有了第三条式子来作为特征函数的期望;其中的p~(x)和fi(x,y)都是可以求出/直接得到的,只有一个条件概率分布是未知的,不过可以通过此等式来对其进行一系列约束(n个),
这样求p(x)
p~(x=xi)就是x=xi的个数除以总的个数;将每个xi都求出来就可以得到经验分布了;
然后求p~(x,y)
这样就有了一大堆的 待选模型 了;
接着需要求 条件熵 (已知x的情况下y概率分布对应的熵)
公式推导过程:
把每个y的条件熵加权求和之后就得到了总的条件熵;和之前一样,p(xi)可以拿经验分布代替(加个~)然后把两个求和符号合并为一个就可以了
7.3.1 拉格朗日乘子法
-
原始问题:
其中f(x)下面的两条都是约束条件,共有k+l个。另外目标函数f(x)还带有n个未知量;求条件熵的最大值等价于求-条件熵的最小值,然后就统一为f(x);
为了简化上述问题,就用到了拉格朗日函数:
在每个约束项前面加了个拉格朗日乘子,α共有k个,β共有l个
7.3.2 原始问题
若是要求X,那么就在若干组α和β中找到使L最大的那组,进而让α和β确定下来,也就可以让函数只有X一个未知量了;
第二条函数中角标记为P是因为这是个原始问题,后边的分类是突出在有约束条件的情况下只有X的函数
证明展开式:若任何一个约束条件不满足就可以让θ->+∞
由于ci(x)<0,所以只有α=0时θ最大,又hj(x)=0,所以L最后只和x有关了。
展开后就是上面的第三个表达式,是一个极小极大问题
7.3.3 对偶问题
在这里X是已知的,α与β是未知的,所以求最优值就是对α与β求导;
这里的d比p好求,因为假设α,β已知的情况下求min的那个函数是很好求得(?)
这里的d是个极大极小问题
-
d和p的关系:
对于上面那个不等式仔细点讲就是下面这样:
左侧的最小值是通过对偶问题解得,右侧的最大值是通过原始问题解得
不难得到:
-
啥时候可以取等号:
只要满足上面圈起来的几个条件,就可以得到等号
-
KKT条件:
第一条代表L的偏导数为0
好累啊,今天先这样吧,明天再补后面的