• 隐马尔可夫模型


    马尔可夫过程

    • 无后效性随机过程
    • 定义:(t_n)时刻的状态(x_n)的条件分布,仅仅与前一个状态(x_{n-1})有关,即(P(x_n|x_1,cdots,x_{n-1})=p(x_n|x_{n-1}))
    • 时间和状态的取值都是离散的马尔可夫过程称为马尔可夫链

    隐马尔可夫模型

    隐马尔可夫模型(lambda)可以用三元符号表示

    [lambda=(A,b,pi) ]

    其中,(A)是状态转移概率矩阵,(B)是观测概率矩阵,(pi)是初始状态概率向量

    • 包括概率计算问题、预测问题、学习问题三个基本问题:
      • 概率计算问题:给定模型(lambda),计算观测序列(O)出现的概率,可用前向和后向算法求解
      • 预测问题:也称为解码问题,已知模型参数和观测序列(O),计算最可能的隐状态(I),可用维特比算法
      • 学习问题:给定观测序列(O),估计模型(lambda)的参数,可使用Baum-Welch算法进行参数学习
    • 中文分词
      • 有监督:对语料进行标注得到语料所有的隐状态信息,然后使用简单计数法对模型概率分布进行极大似然估计
      • 无监督:Baum-Welch算法,同时优化隐状态序列和模型对应概率分布
    • 对联合概率(P(x,y))进行建模

    概率计算问题

    前向算法

    前向概率定义:
    给定模型(lambda),定义到时刻(t)部分观测序列为(o_1,o_2,cdots,o_t)且状态为(q_i)的概率为前向概率,记作:

    [alpha_t(i)=P(o_1,o_2,cdots,o_t,i_t=q_i|lambda) ]

    观测序列概率的前向算法:

    • 输入:模型(lambda),观测序列(O)

    • 输出:观测序列概率(P(O|lambda))

      1. 初始化前向概率,是初始时刻的状态(i_1=q_i)和观测(o_1)的联合概率

      [alpha_1(i)=pi_ib_i(o_1),qquad i=1,2,cdots,N ]

      1. 递推:对(t=1,2,cdots,T-1),

      [alpha_{t+1}(i)=left[sum limits_{j=1}^N alpha_t(j)a_{ji} ight]b_i(o_{t+1}) ]

      其中,(a_{ji})是转移概率,(b_i)是发射概率

      1. 终止

      [P(O|lambda)=sumlimits_{i=1}^N alpha_T(i) ]

    后向算法

    后向概率定义:
    给定模型(lambda),定义在时刻(t)状态为(q_i)的条件下,从(t+1)(T)的部分观测序列为(o_{t+1},o_{t+2},cdots,o_T)的概率为后向概率,记作:

    [eta_t(i)=P(o_{t+1},o_{t+2},cdots,o_T|i_t=q_i,lambda) ]

    观测序列概率的后向算法:

    • 输入:模型(lambda),观测序列(O)

    • 输出:观测序列概率(P(O|lambda))

      1. 初始化后向概率,对最终时刻的所有状态(q_i)规定(eta_T(i)=1)

      [eta_T(i)=1,qquad i=1,2,cdots,N ]

      1. 递推:对(t=T-1,T-2,cdots,1),

      [eta_{t}(i)=sum limits_{j=1}^N a_{ij}b_j(o_{t+1})eta_{t+1}(i) ]

      其中,(a_{ij})是转移概率,(b_j)是发射概率

      1. 终止

      [P(O|lambda)=sumlimits_{i=1}^N pi_ib_i(o_1)eta_1(i) ]

    学习问题

    监督学习算法

    假设已给训练数据集包含(S)个长度相同的观测序列和对应的状态序列({(O_1,I_1),cdots,(O_S,I_S)}),那么模型参数可以用极大似然估计求得

    但是人工标注数据代价高,所以会利用非监督学习方法

    Baum-Welch算法

    此时隐马尔可夫模型可以看做一个含有隐变量的概率模型

    [P(O|lambda)=sum_IP(O|I,lambda)P(I|lambda) ]

    其中,(I)是状态序列,不可观测。它的参数学习可以用EM算法实现。

    1. 确定完全数据的对数似然函数
      所有观测数据写成(O=(o_1,o_2,cdots,o_T)),所有隐数据写成(I=(i_1,i_2,cdots,i_T)),完全数据是((O,I)=(o_1,cdots,o_T,i_1,cdots,i_T))。完全数据的对数似然函数是(log P(O,I|lambda))

    2. EM算法的E步:求(Q)函数(Q(lambda,overline{lambda})=sum_I[log P(O,I|lambda)|O,overline{lambda}])

      [Q(lambda,overline{lambda})=sum_Ilog P(O,I|lambda)P(O,I|overline{lambda}) ]

      其中(overline{lambda})是当前参数估计值,(lambda)是要最大化的参数。

      [P(O,I|lambda)=pi_{i_1}b_{i_1}(o_1)a_{i_1 i_2}b_{i_2}(o_2)cdots a_{i_{T-1}i_T}b_{i_T}(o_T) ]

      于是,(Q)函数可以写成:

      [egin{aligned} Q(lambda,overline{lambda}) &=sum_I log pi_{i_1}P(O,I|overline{lambda}) + sum_I left(sum limits_{t=1}^{T-1}log a_{i_t i_{t+1}} ight)P(O,I|overline{lambda}) + sum_I left(sum limits_{t=1}^{T}log b_{i_t}(o_t) ight)P(O,I|overline{lambda}) end{aligned}]

    3. EM算法的M步:极大化(Q)函数求模型参数(A,B,pi)。由于要极大化的参数单独出现在三项中,所以只需对各项分别极大化,利用拉格朗日乘子法,得到(pi_i,a_{ij},b_j(k))

    预测问题

    近似算法

    在每个时刻(t)选择在该时刻最有可能出现的状态(i_t^*),从而得到一个状态序列,将它作为预测的结果

    优点是计算简单,缺点是不能保证预测状态序列整体是最有可能的序列,因为预测的状态序列可能有实际不发生的部分,可能存在转移概率为0的相邻状态。

    维特比算法

    用动态规划求概率最大路径(最优路径)。最优路径具有这样的特性:如果最优路径在时刻(t)通过节点(i^*_t),那么这一路径从节点(i^*_t)到终点(i^*_T)的部分路径,对于从(i^*_t)(i^*_T)的所有可能的部分路径来说,必须是最优的。根据这一原理,我们只需从时刻(t=1)开始,递推地计算在时刻(t)状态为(i)的各条部分路径的最大概率,直到得到时刻(t=T)状态为(i)的各条路径的最大概率。时刻(t=T)的最大概率即为最优路径的概率(P^*),最优路径的终结点(i^*_T)也同时得到。之后,从后向前逐步求得节点,得到最优路径。

    最大熵马尔可夫模型

    • 去除了隐马尔可夫模型中观测状态相互独立的假设,考虑了整个观测序列

    • 直接对标注的后验概率(P(y|x))进行建模

    • 最大熵马尔可夫模型建模如下

      [p(x_{1cdots n}|y_{1cdots n})=prod limits_{i=1}^n p(x_i|x_{i-1}, y_{1 cdots n})​ ]

      对于(p(x_i)​),不仅考虑了(p(x_{i-1})​),还考虑了(y_{1cdots n}​)

      其中(p(x_i|x_{i-1},y_{1cdots n}))会在局部归一化,即枚举(x_i)的所有取值,计算公式为

      [p(x_i|x_{i-1},y_{1 cdots, n})=frac{exp(F(x_i, x_{i-1}, y_{1cdots n}))}{Z(x_{i-1}, y_{1 cdots n})} ]

      其中(Z)为归一化因子(Z(x_{i-1}, y_{1 cdots n}) = sum_{x_i}exp(F(x_i, x_{i-1}, y_{1 cdots n})))(F)(x_i, x_{i-1}, y_{1,cdots n})所有特征线性相加

    • 标注偏置问题:由于局部归一化,隐状态会倾向于转移到那些后续状态可能更少的状态上去,以提高整体的后验概率

    • 条件随机场使用全局归一化

      [p(x_{1cdots n}|y_{1cdots n})=frac{1}{Z(y_{1cdots n})}prod limits_{i=1}^n exp{F(x_i|x_{i-1}, y_{1 cdots n})} ]

  • 相关阅读:
    什么是DI
    什么是IOC?
    什么是spring框架?spring框架到底有什么用?spring框架到底做了些什么?
    JSP中动态include和静态include的区别?
    jsp静态include和动态include区别
    Request对象的主要方法有哪些?
    如何防止重复提交
    JSTL 标签大全详解
    序列化对象为xml字符串
    ASP.NET获取客户端的相关信息
  • 原文地址:https://www.cnblogs.com/weilonghu/p/11924920.html
Copyright © 2020-2023  润新知