1、什么是HMM:
    先来看一个例子:假设有4个盒子,每个盒子里面都装有红白两种颜色的球,盒子里面的红白球有下表给出:

盒子 1 2 3 4
红球数 5 3 6 8
白球数 5 7 4 2

    按照下面的方法抽球,产生一个球的颜色的随机序列:开始,从4个盒子里以等概率随机选取一个盒子,从这个盒子里随机抽出一个球,记录其颜色,放回;然后,从当前盒子随机转移到下一个盒子,规则是:如果当前盒子是盒子1,那么下一个盒子一定是盒子2,如果当前盒子是盒子2或者3,那么分别以概率0.4和0.6转移到左边或者右边盒子,如果当前盒子是4,那么各以0.5概率停留在盒子4或者转移到盒子3;确定转移盒子之后,再从这个盒子随机抽出一个球,记录其颜色,放回;如此下去,重复进行5次,得到一个球颜色的观测序列:

O={}O={红,红,白,白,红}
<script type="math/tex; mode=display" id="MathJax-Element-613"> O=\{红,红,白,白,红\} </script>
在这个过程中,观察者只能观测到球的颜色序列,观测不到球是从哪个盒子取出的,即观测不到盒子的序列。
    在这个例子中有两个随机序列,一个是盒子的序列(状态序列),一个是球颜色序列(观测序列)。前者是隐藏的,只有后者是可以观测的。这是一个隐马尔科夫的例子。根据所给条件,可以明确状态集合、观测集合、序列长度。
    盒子对应状态,盒子的状态集合是:
Q={1234}N=4Q={盒子1,盒子2,盒子3,盒子4},N=4
<script type="math/tex; mode=display" id="MathJax-Element-614"> Q=\{盒子1,盒子2,盒子3,盒子4\},N=4 </script>
    球的颜色对应观测,观测集合是:
V={}M=2V={红,白},M=2
<script type="math/tex; mode=display" id="MathJax-Element-615"> V=\{红,白\},M=2 </script>
    状态序列和观测序列长度T=5
    初始概率分布为(从四个盒子选一个盒子的概率):
π=(0.25,0.25,0.25,0.25)Tπ=(0.25,0.25,0.25,0.25)T
<script type="math/tex; mode=display" id="MathJax-Element-616"> \pi=(0.25,0.25,0.25,0.25)^T </script>
    状态转移概率分布为(A[i][j]A[i][j]<script type="math/tex" id="MathJax-Element-617">A[i][j]</script>表示当前是第ii<script type="math/tex" id="MathJax-Element-618">i</script>个盒子,下一个盒子是 j <script type="math/tex" id="MathJax-Element-619">j</script>个盒子的概率):
A=00.400100.4000.600.5000.60.5A=[01000.400.6000.400.6000.50.5]
<script type="math/tex; mode=display" id="MathJax-Element-620"> A=\begin{bmatrix} 0& 1& 0& 0\\ 0.4& 0& 0.6& 0\\ 0& 0.4& 0& 0.6\\ 0& 0& 0.5& 0.5 \end{bmatrix} </script>
    观测概率分布为(B[i][j]B[i][j]<script type="math/tex" id="MathJax-Element-621">B[i][j]</script>表示第ii<script type="math/tex" id="MathJax-Element-622">i</script>个盒子下选择第 j <script type="math/tex" id="MathJax-Element-623">j</script>种颜色球的概率):
B=0.50.30.60.80.50.70.40.2B=[0.50.50.30.70.60.40.80.2]
<script type="math/tex; mode=display" id="MathJax-Element-624"> B=\begin{bmatrix} 0.5& 0.5\\ 0.3& 0.7\\ 0.6& 0.4\\ 0.8& 0.2 \end{bmatrix} </script>
HMMHMM<script type="math/tex" id="MathJax-Element-625">HMM</script>的定义:
    隐马尔科夫模型是关于时序的概率模型,描述一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。隐马尔科夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定,隐马尔科夫模型的形式定义如下:
    设QQ<script type="math/tex" id="MathJax-Element-626">Q</script>是所有可能的状态的集合, V <script type="math/tex" id="MathJax-Element-627">V</script>是所有可能的观测的集合:
Q={q1,q2,...,qN}V={v1,v2,...,vM}Q={q1,q2,...,qN}V={v1,v2,...,vM}
<script type="math/tex; mode=display" id="MathJax-Element-628"> Q=\{q_1,q_2,...,q_N\}\,\,\,\,V=\{v_1,v_2,...,v_M\} </script>
其中NN<script type="math/tex" id="MathJax-Element-629">N</script>是可能的状态数, M <script type="math/tex" id="MathJax-Element-630">M</script>是可能的观测数。
    II<script type="math/tex" id="MathJax-Element-631">I</script>是长度为 T <script type="math/tex" id="MathJax-Element-632">T</script>的状态序列,OO<script type="math/tex" id="MathJax-Element-633">O</script>是对应的观测序列:
I = { i 1 , i 2 , . . . , i T } O = { o 1 , o 2 , . . . , o T }
<script type="math/tex; mode=display" id="MathJax-Element-634"> I=\{i_1,i_2,...,i_T\}\,\,\,\,O=\{o_1,o_2,...,o_T\} </script>
    AA<script type="math/tex" id="MathJax-Element-635">A</script>是状态转移概率矩阵:
A = [ a i j ] N × N
<script type="math/tex; mode=display" id="MathJax-Element-636"> A=[a_{ij}]_{N\times N} </script>
其中
aij=P(it+1=qj|it=qi),i=1,2,3,..,N,j=1,2,...,Naij=P(it+1=qj|it=qi),i=1,2,3,..,N,j=1,2,...,N
<script type="math/tex; mode=display" id="MathJax-Element-637"> a_{ij}=P(i_{t+1}=q_j|i_t=q_i),i=1,2,3,..,N,j=1,2,...,N </script>
是在时刻tt<script type="math/tex" id="MathJax-Element-638">t</script>处于 q i <script type="math/tex" id="MathJax-Element-639">q_i</script>的条件下时刻t+1t+1<script type="math/tex" id="MathJax-Element-640">t+1</script>转移到qjqj<script type="math/tex" id="MathJax-Element-641">q_j</script>的概率.
    BB<script type="math/tex" id="MathJax-Element-642">B</script>是观测概率矩阵:
B = [ b j ( k ) ] N × M
<script type="math/tex; mode=display" id="MathJax-Element-643"> B=[b_j(k)]_{N\times M} </script>
其中
bj(k)=P(ot=vk|it=qj),k=1,2,...,M,j=1,2,...,Nbj(k)=P(ot=vk|it=qj),k=1,2,...,M,j=1,2,...,N
<script type="math/tex; mode=display" id="MathJax-Element-644"> b_j(k)=P(o_t=v_k|i_t=q_j),k=1,2,...,M,j=1,2,...,N </script>
是在时刻tt<script type="math/tex" id="MathJax-Element-645">t</script>处于状态 q j <script type="math/tex" id="MathJax-Element-646">q_j</script>的条件下生成观测vkvk<script type="math/tex" id="MathJax-Element-647">v_k</script>的概率.
    ππ<script type="math/tex" id="MathJax-Element-648">\pi</script>是初始状态概率向量:
π=(πi)π=(πi)
<script type="math/tex; mode=display" id="MathJax-Element-649"> \pi=(\pi_i) </script>
其中
πi=P(i1=qi),i=1,2,...,Nπi=P(i1=qi),i=1,2,...,N
<script type="math/tex; mode=display" id="MathJax-Element-650"> \pi_i=P(i_1=q_i),i=1,2,...,N </script>
是时刻t=1t=1<script type="math/tex" id="MathJax-Element-651">t=1</script>处于状态qiqi<script type="math/tex" id="MathJax-Element-652">q_i</script>的概率。
    隐马尔科夫模型由初始概率向量ππ<script type="math/tex" id="MathJax-Element-653">\pi</script>、状态转移概率矩阵AA<script type="math/tex" id="MathJax-Element-654">A</script>和观测概率矩阵 B <script type="math/tex" id="MathJax-Element-655">B</script>决定。ππ<script type="math/tex" id="MathJax-Element-656">\pi</script>和AA<script type="math/tex" id="MathJax-Element-657">A</script>决定状态序列, B <script type="math/tex" id="MathJax-Element-658">B</script>决定观测序列。因此,隐马尔科夫模型λλ<script type="math/tex" id="MathJax-Element-659">\lambda</script>可以用三元符号表示:
λ=(A,B,π)λ=(A,B,π)
<script type="math/tex; mode=display" id="MathJax-Element-660"> \lambda=(A,B,\pi) </script>
A,B,λA,B,λ<script type="math/tex" id="MathJax-Element-661">A,B,\lambda</script>称为隐马尔科夫模型的三要素。
    隐马尔科夫模型可以用于标注,这时状态对应标记。标注问题是给定观测的序列预测其对应的标记序列,可以假设标注问题的数据是由隐马尔科夫模型生成的。
2、隐马尔科夫模型的三个基本问题:
(1)概率计算问题:给定模型λ=(A,B,π)λ=(A,B,π)<script type="math/tex" id="MathJax-Element-662">\lambda=(A,B,\pi)</script>和观测序列O={o1,o2,...,oT}O={o1,o2,...,oT}<script type="math/tex" id="MathJax-Element-663">O=\{o_1,o_2,...,o_T\}</script>,计算在模型λλ<script type="math/tex" id="MathJax-Element-664">\lambda</script>下观测序列OO<script type="math/tex" id="MathJax-Element-665">O</script>出现的概率 P ( O | λ ) <script type="math/tex" id="MathJax-Element-666">P(O|\lambda)</script>.
(2)学习问题:已知观测序列O={o1,o2,...,oT}O={o1,o2,...,oT}<script type="math/tex" id="MathJax-Element-667">O=\{o_1,o_2,...,o_T\}</script>,估计模型λ=(A,B,π)λ=(A,B,π)<script type="math/tex" id="MathJax-Element-668">\lambda=(A,B,\pi)</script>的参数,使得在该模型下观测序列的概率P(O|λ)P(O|λ)<script type="math/tex" id="MathJax-Element-669">P(O|\lambda)</script>最大。即用最大似然估计的方法估计参宿。
(3)预测问题,也称为解码问题。已知模型λ=(A,B,π)λ=(A,B,π)<script type="math/tex" id="MathJax-Element-670">\lambda=(A,B,\pi)</script>和观测序列O={o1,o2,...,oT}O={o1,o2,...,oT}<script type="math/tex" id="MathJax-Element-671">O=\{o_1,o_2,...,o_T\}</script>,求对给定观测序列条件概率P(I|O)P(I|O)<script type="math/tex" id="MathJax-Element-672">P(I|O)</script>最大的状态序列I=(i1,i2,...,iT)I=(i1,i2,...,iT)<script type="math/tex" id="MathJax-Element-673">I=(i_1,i_2,...,i_T)</script>,即给定观测序列,求最有可能对应的状态序列。
3、概率计算问题:待续。。
4、学习问题:待续。。
5、预测问题:待续。。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐