zoukankan      html  css  js  c++  java
  • 最大熵模型学习

    最大熵模型

    1.最大熵原理

    最大熵原理认为,学习概率模型时,在所有可能的概率模型(分布)中,熵最大的模型是最好的模型。通常用约束条件来确定概率模型的集合,所以,最大熵原理也可以表述为在满足约束条件的模型集合中选取熵最大的模型。

    最大熵原理认为,要选择的概率模型首先必须满足已有的事实,即约束条件。在没有更多的情况下,那些不确定的部分都是“等可能的”。最大熵原理通过熵的最大化来表示等可能性。“等可能”不容易操作,而熵是一个可优化的数值指标。

    假设离散随机变量(X)的概率分布是(P(X)),则其熵是$$H(P)=-sum_{x}P(x)log P(x)$$
    熵满足下列不等式:$$0 leq H(P) leq log|X| $$
    式中,(|X|)(X)的取值个数,而且当且仅当X的分布是均匀分布时右边的等号成立。这也就是说,当(X)服从均匀分布时,熵最大。

    2.最大熵模型定义

    最大熵模型是分类模型,首先需明确该模型用条件分布(P(Y|X))表示。

    下面推导该模型的约束条件:
    给定一个训练数据集 $$T = lbrace(x_1,y_1),(x_2,y_2),...,(x_n,y_n) brace$$
    联合分布(P(X,Y)),边缘分布(P(X))的经验分布可以分别表示为:

    [ ilde{P}(X=x,Y=y)=frac{v(X=x,Y=y)}{N} ]

    [ ilde{P}(X=x)=frac{v(X=x)}{N} ]

    定义特征函数(f(x,y)):

    [f(x,y)={ egin{array}{rcl} 1, & x mbox{与} y mbox{满足某一事实}\ 0,& mbox{否则} end{array} ]

    描述输入(x)和输出(y)之间的某一事实。

    特征函数(f(x,y))关于经验分布( ilde{P}(X,Y))的期望值:

    [E_{ ilde{P}}(f)=sum_{x,y} ilde{P}(x,y)f(x,y) ]

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

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

    观察上面的两个等式,如果两个期望值相等,那么说明模型(P(Y|X))能够获取样本中的所有信息。正如第一部分所提到的“约束条件”,这里对最大熵模型的约束条件就是

    [E_{p}(f)=E_{ ilde{P}}(f) ]

    [sum_{x,y} ilde{P}(x,y)f(x,y)=sum_{x,y} ilde{P}(x)P(y|x)f(x,y) ]

    在满足此约束条件的模型集合中,熵最大的模型就是我们需要的最大熵模型!

    最大熵模型规范定义如下:

    假设所有满足约束条件的模型集合为

    [mathcal{C}equiv left{Pin mathcal{P}|E_{p}(f_i)=E_{ ilde{P}}(f_i),i = 1,2,...,n ight} ]

    定义在条件概率分布(P(Y|X))上的条件熵为

    [H(P)=-sum_{x,y} ilde{P}(x)P(y|x)log P(y|x) ]

    则模型集合(mathcal{C})中条件熵最大的模型称为最大熵模型。式中的对数为自然对数。

    3.最大熵模型的学习

    形式化为最优化问题:

    [{min}_{Pin mathcal{C}} -H(P)=sum_{x,y} ilde{P}(x)P(y|x)log P(y|x) ]

    [s.t. E_P(f_i)-E_{ ilde{P}}(f_i)=0,i = 1,2,...,n ]

    [sum_{y}P(y|x)=1 ]

    为了方便求解,这里将其定义为最小化了。

    引入拉格朗日乘子,定义拉格朗日函数(L(P,w))来求解最小化问题:

    (L(P,w)equiv -H(p)+w_0(1-sum_yP(y|x)+sum_{i=1}^{n}w_i(E_{ ilde{P}}f(i)-E_P(f_i)))
    (qquad qquad =sum_{x,y} ilde{P}(x)P(y|x)log P(y|x)+w_0(1-sum_{y}P(y|x)))
    (qquad qquad quad +sum_{i=1}^{n}w_i(sum_{x,y} ilde{P}(x,y)f(x,y)-sum_{x,y} ilde{P}(x)P(y|x)f(x,y)))

    最优化的原始问题是$$min_{Pin mathcal{C}} max_{w} L(P,w)$$
    根据拉格朗日对偶性,将原始问题转化为对偶问题:$$max_{w} min_{Pin mathcal{C}} L(P,w)$$

    具体的求解思路为:

    首先求解对偶函数,也就是对偶问题内部的极小化问题:(min_{Pin mathcal{C}} L(P,w)),将其解记为:$$P_w = arg min_{Pin mathcal{C}} L(P,w)=P_w(y|x)$$
    然后求解对偶问题外部的极大化问题(max_w Phi(w)),将解记为(w^*)

    求解对偶函数:

    (L(P,w))(P(y|x))的偏导数并令其等于0,解得:

    [P(y|x)=exp(sum{i=1}^{n}w_i f_i(x,y)-(1-w_0))=frac{exp(sum{i=1}^{n}w_i f_i(x,y))}{exp(1-w_0)} ]

    由$$sum_yP(y|x)=1$$

    [Rightarrow sum_y frac{exp(sum_{i=1}^{n}w_i f_i(x,y))}{exp(1-w_0)} = 1 ]

    [Rightarrow exp(1-w_0)=sum_yexp(sum_{i=1}^{n}w_i f_i(x,y)) ]

    于是,

    [P_w(y|x)=frac{1}{Z_w(x)}exp(sum_{i=1}^{n}w_if_i(x,y)) ]

    其中

    [Z_w(x)=sum_yexp(sum_{i=1}^{n}w_i f_i(x,y)) ]

    求解最大熵模型的参数向量

    已知训练数据的经验概率分布 ( ilde{P}(X,Y)) ,条件概率分布(P(Y|X))的对数似然函数表示为$$L_{ ilde{P}}(P_w)=logprod_{x,y}P(y|x)^{ ilde{P}(x,y)}=sum_{x,y} ilde{P}(x,y)log P(y|x)$$
    可以证明对偶函数的极大化等价于最大熵模型((P(Y|x)))的极大似然估计。所以我们使用极大似然估计学习模型参数。

    (igstar)
    综上,最大熵模型为$$P_w(y|x)=frac{1}{Z_w(x)}exp(sum_{i=1}^{n}w_if_i(x,y))$$
    其中,

    [Z_w(x)=sum_yexp(sum_{i=1}^{n}w_i f_i(x,y)) ]

    对数似然函数为:

    [L(w)=sum_{x,y} ilde{P}(x,y)sum_{i=1}^{n}w_if_i(x,y)-sum_x ilde{P}(x)log Z_w(x) ]

    用来学习模型参数,即求对数似然函数的极大值(widehat{w})

  • 相关阅读:
    pg_dump后数据导入报错 -- invalid byte sequence for encoding "UTF8": 0xe5 0xb1
    mysql中的read_only和super_read_only
    pg_repack安装和使用
    winform 使用Thread.Sleep界面卡死 使用 Application.DoEvents 方法防止UI假死
    mysql 使用ifnull 来对应 sql server isnull函数
    计算两个经纬度的距离
    .net framework webapi添加swagger
    LINQto实体中不支持指定类型成员“Date”
    html5跳转小程序wx-open-launch-weapp踩坑
    vue同时校验两个表单
  • 原文地址:https://www.cnblogs.com/jiaxinwei/p/12707082.html
Copyright © 2011-2022 走看看