hmm三个问题
- 给定参数A B Pi,求一个观察到显状态序列的概率
- 解码,给定参数A B Pi,求观察序列背后的隐状态序列
- 求参数A B Pi 其中A是隐状态之间转移概率,B是发射概率,隐状态发射到显状态到概率,Pi是初始隐状态概率
hmm的假设
- 一阶马尔科夫假设。隐状态只跟前一状态有关,跟其他状态无关
- 观测状态只与当前的隐状态有关,跟其他状态无关
hmm总结
hmm这个算法是动态规划和em算法+大量的公式证明组成,其中大量的公式证明可以通过转化为路径问题来更加清晰的定位规律,因为一大堆公式看的人头皮发麻,往往找不到重点。公式隔两天就忘,但是思想很容易记住。知道思想就够了。
第一个问题:求观察到状态概率
全概率公式,会造成时间复杂度O(n^t)问题。原因是每一个隐状态都会有产生特定显状态的概率,并且转移概率
纵坐标代表隐状态,横坐标是时间轴,o1,o2…ot 指的是第t个时间点第观察状态。
将概率问题转化为路径问题。转化为路径之后就想到了二维表上第动态规划,可以优化那个高阶时间复杂度第计算问题。
详细解释:
动态规划就是:
1)知道第t项和t-1项或者更多项之间的递推关系
2)知道初始值
而前向后项都满足这两个条件,因此可以用动态规划求解。
理解hmm的第一个问题,只需要知道是利用了前向、后向算法,其中前向后向算法是利用动态规划来优化指数的大o阶问题即可,具体公式不需要记住,因为记住几天就会忘。
同时做了假设,就如下图所示:A和B相互独立假设,意味着观测状态t之前和之后是相互独立的。这个假设是不合理的。但是这并不影响hmm是一个效果好的算法
第二个问题 解码问题
维特比算法。维特比算法其实就是动态规划算法。动态规划就是找第t+1项跟前面几项或者前1项的关系,在hmm里面是跟前面第t项之间的关系。解码问题其实就是求当前观测序列条件下最可能的隐状态,用概率表达,其实就是最大联合概率密度下式中的delta。
接下来就是求delta第t+1项和第t项之间的一种关系(动态规划的套路),然后求解初始值(动态规划的套路),然后就可以迭代或者递归求第t项的值。
1.规律。转化为路径规划问题之后很容易发现规律
2.初始值。因为参数都是已知的,所以delta0(i)就是pi,A和B也都是已知的,所以可以用维特比来解码了
3. 第一个任务是alpha,第二个解码任务是delta。千万记得。。。
4.
第三个问题:参数求解问题
参数求解用到了动态规划(前向后向)+em算法。
和hmm的第一个问题很像,第三个问题的直接想法就是通过调整参数来最大化观测序列
em算法听起来很吓人,其实不过就是两部分,期望部分和最大化部分。
通过引入下面两个变量来看这两个问题。为啥引入这两个参数?因为目标参数都可以用这两个东西表示。同时这两个东西的计算又用到了所需要求的参数,我中有你,你中有我,就满足了em算法。期望部分是求下面两个变量,最大化部分是更新参数的过程。
因为hmm会有一个初始化参数,通过初始化的参数就可以计算出如下两个变量。
链接: link.
参数的更新可以通过上面两个变量来计算。