《统计学习方法》隐马尔可夫模型

这一节看的时间跨度比较大,先写着,后面再整理

HMM的概率图模型:

其中,白圈代表的是隐变量,带阴影的是观测变量,然后t就是时间次数,我在这里就理解为更新次数了。

1. 基本信息

        HMM模型最重要的三个东西:

        一个模型(包含:一个\pi,表示初始的概率分布;一个A,状态转移矩阵;一个B,发射矩阵。)

        两个假设(1.齐次马尔可夫假设;2.观察独立假设)

        三个问题(1.evaluation问题;2.Learning问题;3.Decoding问题)

       观测变量我们用字母o表示,每一个时间都会有一个观测变量,所以是o_1,o_2,o_3,......o_t个观测变量,其中这些o们的取值,我们用V来表示V=\left \{ v_1,v_2,......v_m \right \},V代表取值的集合

        隐变量我们用字母i来表示,每一个时间像观测变量一样,都会有一个对应的隐变量,我们说有i_1,i_2,i_3,......i_t个隐变量,其中这些i们的取值,我们用Q来表示Q= \left \{ q_1,q_2,......,q_m \right \},Q代表所有隐变量的取值的集合

        其中状态转移矩阵,我们这样定义:A=\left [ a_{ij} \right ],a_{ij}=P(i_{t+1}=q_{j}|i_{t}=q_{i}),aij就是观测变量从状态i变化到状态j的概率,属于不同时间下(t到t+1)的变化

        其中发射矩阵,我们这样定义:B=b_{j(k)},b_{j(k)}=P(o_t=v_k|i_t=q_j),bjk就是从隐变量k变化到观测变量j的概率,属于同一时间下(t)的变化

        齐次马尔可夫假设:P(i_{t+1}|i_{t},i_{t-1},i_{t-2},...,i_{1},o_{t},o_{t-1},o_{t-2},...,o_{1})=P(i_{t+1}|i_{t})=a_{t+1,t}(最后是将这个假设简化成状态转移矩阵的其中一个定义形式,这样可以方便表示),第i+1的隐变量变量的出现概率是只单独依赖于第i个隐变量变量

        观察独立假设:P(o_t|i_t,i_{t-1},...,i_{1},o_{t-1},...,o_{1})=P(o_t|i_t),第t个观测变量的出现概率只依赖于第t个隐变量

        Evaluation问题:P(O|\lambda),在给定的lambda的情况下,某一个观察变量(某一个句子)出现的概率有多大

        Learning问题:\lambda=argmaxP(O|\lambda),左边的lambda是新的lambda(待求的),右边的lambda是上一个时间的已经求出来的lambda,我们要使得某个句子出现的概率最大, 就需要调整lambda里面的三个东西,初始概率分布+状态转移矩阵+发射矩阵

        Decoding问题:argmaxP(I|O),这里分两步

                第一步叫预测:P(i_{t+1}|o_1,o_2,...,o_t):通过当前状态预测下一个隐状态概率

                第二步叫滤波:P(i_t|o_1,o_2,...,o_t):已知当前观测状态,求当前时刻的隐状态的概率

2. Evaluation问题

        给定模型\lambda = (A,B,\pi)和观测序列O=(o_1,o_2,...,o_T),计算在模型\lambda下观测序列O出现的概率为P(O|\lambda)

        P(A,B|C)=\frac{P(A,B,C)}{P(C)}=\frac{P(A,B,C)}{P(B,C)}*\frac{P(B,C)}{P(C)}=P(A|B,C)*P(B|C)

由上面的这个式子我们可以推断出下面这个式子是成立的:

P(O|\lambda)=\sum^I_{i}P(i,O|\lambda)=\sum^I_{i}P(O|i,\lambda)*P(i|\lambda)

        P(I|\lambda)=P(i_1,i_2,...,i_t|\lambda)=P(i_t|i_{t-1},...i_1,\lambda)*P(i_{t-1},...i_1|\lambda) = \pi_i_{1}*a_{i_{I}i_{2}}*...*a_{i_{T-1}i_{T}}

        然后采用齐次马尔可夫假设,简化上式变成P(i_t|i_{t-1})*P(i_{t-1},...,i_1|\lambda)

        再套用转移矩阵的表现形似,就像上面给出的齐次马尔可夫定义式一样:

a_{i_{t,t-1}}*P(i_{t-1},...,i_1|\lambda)

        不断套用上面的公式,化简P这一项,最终P(i|\lambda)=\pi(a_{i_1})*\prod^I_{i=2}a_{i_{t-1,t}}(这里面的\pi是一个初始联合概率)

        然后再看\sum^I_iP(o|i,\lambda),他是等于\sum^I_iP(o|i),因为\lambda在这里是肯定发生的,也就是上一代训练出来的(pi+A+B),所以他就是已知的,我们就把O传进去,构成观测独立假设的条件,接着直接套用观测独立假设来简化这个式子,同理上面,运用同样的手法,将一部分的式子用发射矩阵的定义式来表示出来:

\sum^I_iP(o|i)=\prod^T_{t=1}b_{i_t}(o_t)        

所以:P(o|\lambda)=\sum^I_{i=1}P(o,i|\lambda)=\sum^I_{i=1}\pi(a_{i_1})*\prod^T_{t=1}b_{i_t}(o_t)*\prod^I_{i=2}a_{i_{t-1,t}}这个时间复杂度太高了,对于高维的数据是挺难实现的,于是我们换另外一种方法去计算!!!!

3. 前向算法

        现在我们记迭代所有观测概率(截止t时刻)以及第i个状态的概率为\alpha_t(i)


        \alpha_t(i)=P(o_1,o_2,...,o_t,i_t=q_i|\lambda) 这个是小t时刻(橙色框框)

        \alpha_T(i)=P(o_1,o_2,...,o_T,i_t=q_i|\lambda) 这个是去到大T时刻(红色箭头)

        所以P(O,\lambda)=\sum^{N}_{i=1}P(o_1,...,o_T,i_t=q_i|\lambda)=\sum^{N}_{i=1}\alpha_T(i)

        现在是截止t时刻,我们可以表示出来,那么截止t+1时刻,我们应该用\alpha_T(i)凑出来t+1时刻的表达方式

\alpha_{t+1}(j)=P(o_1,...,o_t,o_{t+1},i_{t+1}=q_j|\lambda)=\sum^{N}_{i=1}P(o_1,...,o_t,o_{t+1},i_{t}=q_i,i_{t+1}=q_j|\lambda)

         这一步是硬塞一个i_t=q_i进来的,然后用积分(求和,因为状态是离散的)的形式给消掉

=\sum^{N}_{i=1}P(o_{t+1}|o_1,...,o_t,i_{t+1}=q_j,i_t=q_i,\lambda)*P(o_1,...,o_t,i_{t+1}=q_j,i_t=q_i|\lambda)

        接着用观测独立假设给消掉前面那一项,并且后面那一项,下面这个转换一下:

         后面那一项就变成下面这个公式,目的就是为了提一个i_{t+1}出来,再用齐次马尔可夫假设化简一下下面式子的前面一项,后面那一项就是\alpha_t(i)

P(o_1,...,o_t,i_{t+1}=q_j,i_t=q_i|\lambda)=P(i_{t+1}|o_1,...,o_t,i_t=q_i,\lambda)*P(o_1,...,o_t,i_t=q_i|\lambda)

        这样,我们就可以将t+1的式子和t联系起来了

        最终等于:

\alpha_{T+1}(i) = \sum^{N}_{i=1}P(o_{t+1}|i_{t+1})*P(i_{t+1}=q_j|i_t=q_i,\lambda)*\alpha_T(i)=\sum^{N}_{i=1}b_{j+1}(t+1)*a_{ij}*\alpha_T(i))

        最终:P(O|\lambda) = \sum^{N}_{i=1}\alpha_{T}(i)​​​​​​​

        例子:

        后向算法有点长,就没写下来了。

        总的来说,Evaluation问题就是给定一个\lambda(给定一个模型),然后就某一个观测序列出现的概率。下面就是learning问题了,在给定训练集的时候,我们让某一个序列出现的概率最大,那怎么最大呢,就是去迭代修改这个\lambda

        evaluation问题其实就是已知HMM模型参数λ和观测序列,求当前观测序列出现的概率

4. Learning问题

        而learning问题则是已知观测序列和隐层状态序列,求HMM的参数,一般使用极大似然估计算法(EM)

        我们套用EM的框架,EM的X是观测变量,Z是隐变量,\theta是参数,而且Z是一个连续变量

        那么在HMM中,O就是观测变量,I就是隐变量,\lambda是参数。其中I是一个离散的变量

        EM:\theta^{t+1}=argmax\int _ZlogP(X,Z|\theta)*P(Z|X,\theta^t)dZ

        那么HMM: \lambda^{t+1}=argmax\sum_{I}log(O,I|\lambda)*P(I|O,\lambda^t)​​​​​​​,然后看后面那一项,感觉有点别扭啊,O和\lambda^t都发生的情况下去看隐变量I的概率,我们将其改写一下

P(I|O,\lambda^t)=\frac{P(I,O|\lambda^t)}{P(O,\lambda^t)}

        其中,分母是一个常数,所以分子和结果其实是一个约等于的一个关系,改写成:

\lambda^{t+1}=argmax\sum_{I}log(O,I|\lambda)*P(I,O|\lambda^t)

        然后我们引入evalution问题直接计算的结论得出:

P(O|\lambda)=\sum^I_{i=1}P(o,i|\lambda)=\sum^I_{i=1}\pi(a_{i_1})*\prod^T_{t=1}b_{i_t}(o_t)*\prod^I_{i=2}a_{i_{t-1,t}}

\lambda^{t+1}=\sum^I_{I=1}log[\pi(a_{i_1})*\prod^T_{t=1}b_{i_t}(o_t)*\prod^I_{i=2}a_{i_{t-1,t}}]*P(O,I|\lambda^{t})

        log可以把连乘改成连加:

\lambda^{t+1}=\sum^I_{I=1}log[\pi(a_{i_1})+log\prod^T_{t=1}b_{i_t}(o_t)+log\prod^I_{i=2}a_{i_{t-1,t}}]*P(O,I|\lambda^{t})这看成是Q(\lambda,\lambda^t)的函数

        以上就是EM算法的E步了

        然后下面就是EM算法的M步了,对Q(\lambda,\lambda^{t}) de \pi,矩阵a和矩阵b进行拉格朗日乘数法的求解了

5. Decoding问题

        decoding 问题,就是给定了模型\lambda=(A,B,\pi)和观测序列O,求对给定观测序列条件概率P(I|O)最大的状态序列,就是给定观测序列,然后求最有可能的状态序列

        书上写的是维特比算法:

        其实上一句话就提到了公式的表达了,给定了观测变量,求某一个t时刻的状态的最大概率

        \delta _t(i) = maxP(o_1,o_2,...,o_t,i_1,i_2,...,i_t=q_i)

        \delta _t+1(j) = maxP(o_1,o_2,...,o_t,o_t+1,i_1,i_2,...,i_t=q_i,i_{t+1}=q_j)

\delta_{t+1}(j) = max \delta_t(i)*a_{ij}*b_j(O_{t+1})

        最后一个式子怎么来的呢,就是t时刻i_t的隐状态q_i已经确定了,然后转移到t+1时刻的q_j 的隐状态(所以需要乘a_{ij}),然后从隐状态激发到观测变量(所以需要乘b_j(O_{T+1}))

        至此,我们就找到了t+1时刻和t时刻的联系了

        然后我们需要一个变量去记录这个 我从1时刻走到T时刻到底选了什么路径,引入

\varphi _{t+1}(j) = argmax \quad \delta_t(i)*a_{ij}

        这里怎么存下来呢,譬如t时刻,我们已经选了qi状态作为隐变量,然后在t+1时刻,我们也计算从上面计算\delta的式子里面计算得出是j时刻的概率最大,于是我们的aij就记录下来了,\varphi也变成了\varphi_{t+1}(j) ,到最后,我们会得出\varphi_1, \varphi_2, \varphi_3, \varphi_4,...,, \varphi_T

        这个序列就是我们的最优路径了,主要思想就是DP,每次找我都是要求最大概率的路径,这样组合起来整条路径才是最优的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值