自然语言处理系列之隐马尔可夫模型(HMM)

  • 定义
    Q 是所有可能的状态的集合,V是所有可能的观测的集合。

    Q={q1,q2,...,qN},V={v1,v2,...,vM}

    其中, N 是可能的状态数, M 是可能的观测数。
    状态 q 是不可见的,观测 v 是可见的。应用到词性标注系统,词就是 v ,词性就是 q
    I 是长度为 T 的状态序列, O 是对应的观测序列。
    I={i1,i2,...,iT},O={o1,o2,...,oT}

    A 为状态转移概率矩阵:
    A=[aij]N×N

    其中,
    aij=P(it+1=qj|it=qi),i=1,2,...,N;j=1,2,...,N

    是在时刻 t 处于状态 qi 的条件下在时刻 t+1 转移到状态 qj 的概率。
    这实际在表述一个一阶的HMM,所作的假设是每个状态只跟前一个状态有关。
    B 是观测概率矩阵:
    B=[bj(k)]N×M

    其中,
    bj(k)=P(ot=vk|it=qj),k=1,2,...,M;j=1,2,...,N

    是在时刻t处于状态qj的条件下生成观测vk的概率(也就是所谓的“发射概率”)。
    这实际上在作另一个假设,观测是由当前时刻的状态决定的,跟其他因素无关,这有点像Moore自动机。
    π是初始状态概率向量:
    π=(πi)

    其中,
    π=P(i1=qi),i=1,2,...,N

    是时刻t=1处于状态 qj 的概率。
    隐马尔可夫模型由初始状态概率向量 π 、状态转移概率矩阵A和观测概率矩阵 B 决定, π A 决定状态序列, B 决定观测序列。因此,隐马尔可夫模型 λ 可以用三元符号表示,即
    λ={A,B,π}

    状态转移概率矩阵 A 与初始状态概率向量 π 确定了隐藏的马尔可夫链,生成不可观测的状态序列。观测概率矩阵 B 确定了如何从状态成观测,与状态序列综合确定了如何产生观测序列。
    从定义可知,隐马尔可夫模型作了两个基本假设:
    (1)齐次马尔可夫性假设,即假设隐藏的马尔可夫链在任意时刻 t 的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关。
    P(it|it1,ot1,...,i1,01)=P(it|it1),t=1,2,...,T

    从上式左右两边的复杂程度来看,齐次马尔可夫性假设简化了许多计算。
    (2)观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关。
    P(ot|it,oT,iT1,oT1,...,it+1,ot+1,it,ot,...,i1,o1)=P(ot|it)

    简化了计算。

  • 推倒

    P(i1,i2,...,in|o1,o2,...,on)=P(o1,o2,...,on|i1,i2,...,in)P(i1,i2,...,in)P(o1,o2,...,on)(11)P(o1,o2,...,on|i1,i2,...,in)P(i1,i2,...,in)(12)j=1np(oj|ij)P(ij+1|ij)(13)

    由于 P(o1,o2,...,on) 是常量,所以求式1-1的问题可以转化为求式1-2的问题。
    由假设1和2可把求式1-2的问题转化为求式1-3的问题。
    由上可知,隐马尔的求解问题可以转化为求:
    max(j=1np(oj|ij)P(ij+1|ij)

    求解上述问题有两种方式,一种是枚举,当状态的集合和观测结合特别大时,这种方法显然不可行。一种可以有效求解的方法就是 Viterbi 算法,下一章节将用这个算法来进行求解。

  • 参考资料:《统计机器学习》,李航

猜你喜欢

转载自blog.csdn.net/lionel_fengj/article/details/70196647