概率计算问题又称评价问题(Evaluation Problem)
已知条件:给定模型λ=[A,B,π]\lambda=[A,B,\pi]λ=[A,B,π]和观测序列O=(o1,o2,o3,...,on)O=(o_{1},o_{2},o_{3},...,o_{n})O=(o1,o2,o3,...,on)
求解目标:计算在模型λ\lambdaλ和观测序列OOO出现情况下的P(O∣λ)P(O|\lambda)P(O∣λ),也可以认为是求解观测序列和评估模型之间的匹配程度。
求解方式:直接计算法、前向算法、后向算法
例子:有三个盒子,编号1、2、3,每个盒子都有红、白两种颜色的球,有放回的从盒子里拿1个球,总共进行了四次,出现“红、白、红、白”的概率是多少?(初始状态概率矩阵π=(1,0,0)\pi=(1,0,0)π=(1,0,0))
盒子 | 盒1 | 盒 2 | 盒3 |
---|---|---|---|
盒1 | 0.4 | 0.6 | 0 |
盒2 | 0 | 0.8 | 0.2 |
盒 3 | 0 | 0 | 1 |
盒子 | 盒1 | 盒 2 | 盒3 |
---|---|---|---|
红球 | 7 | 4 | 8 |
白球 | 3 | 6 | 2 |
解析:由表1和表2,可知状态转移矩阵A和观测概率B,此时“模型λ=[A,B,π]\lambda=[A,B,\pi]λ=[A,B,π]和观测序列O=(红、白、红、白)O=(红、白、红、白)O=(红、白、红、白)”为已知条件,求解目标是:“O=(红、白、红、白)O=(红、白、红、白)O=(红、白、红、白)发生的概率,即P(O∣λ)=?P(O|\lambda)=?P(O∣λ)=?”
直接计算法(不提倡)
通过列举所有可能长度为T的状态序列S=(s1,s2,s3,...,sT)S=(s_{1},s_{2},s_{3},...,s_{T})S=(s1,s2,s3,...,sT),求各个状态序列SSS和观测序列OOO的联合概率P(O,S∣λ)P(O,S|\lambda)P(O,S∣λ),然后对所有可能的状态序列求和,得到P(O∣λ)P(O|\lambda)P(O∣λ),求解方式如下(aij是状态转移概率,bij是观测概率a_{ij}是状态转移概率,b_{ij}是观测概率aij是状态转移概率,bij是观测概率):
P(O∣S,λ)=b11b22b33...bTMP(O|S,\lambda)=b_{11}b_{22}b_{33}...b_{TM}P(O∣S,λ)=b11b22b33...bTM
P(S∣λ)=π1a12a23...a(T−1)TP(S|\lambda)=\pi_{1}a_{12}a_{23}...a_{(T-1)T}P(S∣λ)=π1a12a23...a(T−1)T
P(O,S∣λ)=P(O∣S,λ)P(S∣λ)=π1b11a12b22a23b33...a(T−1)TbTMP(O,S|\lambda)=P(O|S,\lambda)P(S|\lambda) =\pi_{1}b_{11}a_{12}b_{22}a_{23}b_{33}...a_{(T-1)T}b_{TM}P(O,S∣λ)=P(O∣S,λ)P(S∣λ)=π1b11a12b22a23b33...a(T−1)TbTM
P(O∣λ)=∑S∈STP(O,S∣λ)=∑S1,S2,S3,...STπ1b11a12b22a23b33...a(T−1)TbTMP(O|\lambda)=\sum_{S∈S_{T}}P(O,S|\lambda) =\sum_{S_{1},S_{2},S_{3},...S_{T}}\pi_{1}b_{11}a_{12}b_{22}a_{23}b_{33}...a_{(T-1)T}b_{TM}P(O∣λ)=∑S∈STP(O,S∣λ)=∑S1,S2,S3,...STπ1b11a12b22a23b33...a(T−1)TbTM
理论上可以计算,但计算量很大,时间复杂度是O(TNT)O(TN^T)O(TNT)(NNN是状态的个数,TTT是观测列表的长度),因此不可行。
解析:还是上面例子,如果O=(红、白、红、白)O=(红、白、红、白)O=(红、白、红、白),那么只要枚举343^434个就行,分别求出对应的概率,再相加就行了,但要是O=(红、白、红、...、白)O=(红、白、红、...、白)O=(红、白、红、...、白)有1000个,需要枚举310003^{1000}31000,这数目就不少了,因此该方法只要知道是什么就可以了,可行度不高。
前向算法(重要)
前向概率:在λ\lambdaλ给定的情况下,到时刻ttt时,出现的观测序列为o1,o2,o3,...,oto_{1},o_{2},o_{3},...,o_{t}o1,o2,o3,...,ot且状态为sis_{i}si时的概率,记为:
αt(i)=P(o1,o2,o3,...,ot,si∣λ)\alpha_{t}(i)=P(o_{1},o_{2},o_{3},...,o_{t},s_{i}|\lambda)αt(i)=P(o1,o2,o3,...,ot,si∣λ)
求解步骤:
-
起始值:α1(i)=πibi(o1),    i=1,2,3,...,N\alpha_{1}(i)=\pi_{i}b_{i}(o_{1}),\:\:\:\:i=1,2,3,...,Nα1(i)=πibi(o1),i=1,2,3,...,N
-
递推:当t=1,2,3,...,T−1t=1,2,3,...,T-1t=1,2,3,...,T−1时, αt+1(i)=[∑j=1Nαt(j)αji]bi(ot+1),    i=1,2,3,...,N\alpha_{t+1}^{(i)}=[\sum_{j=1}^{N}\alpha_{t}(j)\alpha_{ji}]b_{i}(o_{t+1}), \:\:\:\:i=1,2,3,...,Nαt+1(i)=[∑j=1Nαt(j)αji]bi(ot+1),i=1,2,3,...,N
-
执行完步骤1和2,可得P(O∣λ)=∑i=1NαT(i),    i=1,2,3,...,NP(O|\lambda)=\sum_{i=1}^{N}\alpha_{T}(i),\:\:\:\:i=1,2,3,...,NP(O∣λ)=∑i=1NαT(i),i=1,2,3,...,N
此时,求解P(O∣λ)P(O|\lambda)P(O∣λ)的时间复杂度是O(N2T)O(N^2T)O(N2T)

解析:对上面的例子进行求解,现在观测序列O=(红、白、红、白),初始状态概率矩阵π=(1,0,0)\pi=(1,0,0)π=(1,0,0),状态转移矩阵A和观测概率B如下:
A=[0.40.6000.80.2001]A=\begin{bmatrix} 0.4& 0.6 &0 \\ 0&0.8 &0.2 \\ 0 & 0& 1 \end{bmatrix}A=⎣⎡0.4000.60.8000.21⎦⎤       \:\:\:\:\:\:B=[0.70.30.40.60.80.2]B=\begin{bmatrix} 0.7& 0.3 \\ 0.4&0.6 \\ 0.8 & 0.2 \end{bmatrix}B=⎣⎡0.70.40.80.30.60.2⎦⎤
1、当t=1t=1t=1时:
α1(1)=π∗b1(o1)=1∗0.7=0.7\alpha_{1}(1)=\pi*b_{1}(o_{1})=1*0.7=0.7α1(1)=π∗b1(o1)=1∗0.7=0.7
2、当t=2t=2t=2时:
α2(1)=α1(1)∗a11∗b1(o2)=0.7∗0.4∗0.3=0.084\alpha_{2}(1)=\alpha_{1}(1)*a_{11}*b_{1}(o_{2})=0.7*0.4*0.3=0.084α2(1)=α1(1)∗a11∗b1(o2)=0.7∗0.4∗0.3=0.084
α2(2)=α1(1)∗a12∗b2(o2)=0.7∗0.6∗0.6=0.252\alpha_{2}(2)=\alpha_{1}(1)*a_{12}*b_{2}(o_{2})=0.7*0.6*0.6=0.252α2(2)=α1(1)∗a12∗b2(o2)=0.7∗0.6∗0.6=0.252
3、当t=3t=3t=3时:
α3(1)=α2(1)∗a11∗b1(o3)=0.084∗0.4∗0.7=0.02352\alpha_{3}(1)=\alpha_{2}(1)*a_{11}*b_{1}(o_{3})=0.084*0.4*0.7=0.02352α3(1)=α2(1)∗a11∗b1(o3)=0.084∗0.4∗0.7=0.02352
α3(2)=[α2(1)∗a12+α2(2)∗a22]∗b2(o3)=(0.084∗0.6+0.252∗0.8)∗0.4=0.1008\alpha_{3}(2)=[\alpha_{2}(1)*a_{12}+\alpha_{2}(2)*a_{22}]*b_{2}(o_{3})=(0.084*0.6+0.252*0.8)*0.4=0.1008α3(2)=[α2(1)∗a12+α2(2)∗a22]∗b2(o3)=(0.084∗0.6+0.252∗0.8)∗0.4=0.1008
α3(3)=α2(2)∗a23∗b3(o3)=0.252∗0.2∗0.8=0.04032\alpha_{3}(3)=\alpha_{2}(2)*a_{23}*b_{3}(o_{3})=0.252*0.2*0.8=0.04032α3(3)=α2(2)∗a23∗b3(o3)=0.252∗0.2∗0.8=0.04032
4、当t=4t=4t=4时:
α4(1)=α3(1)∗a11∗b1(o4)=0.02352∗0.4∗0.3=0.0028224\alpha_{4}(1)=\alpha_{3}(1)*a_{11}*b_{1}(o_{4})=0.02352*0.4*0.3=0.0028224α4(1)=α3(1)∗a11∗b1(o4)=0.02352∗0.4∗0.3=0.0028224
α4(2)=[α3(1)∗a12+α3(2)∗a22]∗b2(o4)=(0.02352∗0.6+0.1008∗0.8)∗0.6=0.0568512\alpha_{4}(2)=[\alpha_{3}(1)*a_{12}+\alpha_{3}(2)*a_{22}]*b_{2}(o_{4})=(0.02352*0.6+0.1008*0.8)*0.6=0.0568512α4(2)=[α3(1)∗a12+α3(2)∗a22]∗b2(o4)=(0.02352∗0.6+0.1008∗0.8)∗0.6=0.0568512
α4(3)=[α3(2)∗a23+α3(3)∗a33]∗b3(o4)=(0.1008∗0.2+0.04032∗1)∗0.2=0.012096\alpha_{4}(3)=[\alpha_{3}(2)*a_{23}+\alpha_{3}(3)*a_{33}]*b_{3}(o_{4})=(0.1008*0.2+0.04032*1)*0.2=0.012096α4(3)=[α3(2)∗a23+α3(3)∗a33]∗b3(o4)=(0.1008∗0.2+0.04032∗1)∗0.2=0.012096
此时,可求P(O∣λ)=α4(1)+α4(2)+α4(3)=0.0028224+0.0568512+0.012096=0.0717696P(O|\lambda)=\alpha_{4}(1)+\alpha_{4}(2)+\alpha_{4}(3)=0.0028224+0.0568512+0.012096=0.0717696P(O∣λ)=α4(1)+α4(2)+α4(3)=0.0028224+0.0568512+0.012096=0.0717696
计算流程图如图2所示,其中初始状态概率、状态转移概率和观测概率为0的线没有画

后向算法(和前向算法差不多)
后向概率:在λ\lambdaλ给定的情况下,并且时刻ttt的状态为sis_{i}si的条件下,观测序列ot+1,ot+2,ot+3,...,oTo_{t+1},o_{t+2},o_{t+3},...,o_{T}ot+1,ot+2,ot+3,...,oT的概率,记为:
βt(i)=P(ot+1,ot+2,ot+3,...,oT∣λ,si)\beta_{t}(i)=P(o_{t+1},o_{t+2},o_{t+3},...,o_{T}|\lambda,s_{i})βt(i)=P(ot+1,ot+2,ot+3,...,oT∣λ,si)
求解步骤:
-
起始值:β1(i)=1,    i=1,2,3,...,N\beta_{1}(i)=1,\:\:\:\:i=1,2,3,...,Nβ1(i)=1,i=1,2,3,...,N(TTT时刻的状态,后向概率都为1)
-
递推:当t=T−1,T−2,T−3,...,1t=T-1,T-2,T-3,...,1t=T−1,T−2,T−3,...,1时, βt(i)=∑j=1Nαijbj(ot+1)βt+1(j),    i=1,2,3,...,N\beta_{t}^{(i)}=\sum_{j=1}^{N}\alpha_{ij}b_{j}(o_{t+1})\beta_{t+1}(j), \:\:\:\:i=1,2,3,...,Nβt(i)=∑j=1Nαijbj(ot+1)βt+1(j),i=1,2,3,...,N
-
执行完步骤1和2,可得P(O∣λ)=∑i=1Nπibi(o1)β1(i),    i=1,2,3,...,NP(O|\lambda)=\sum_{i=1}^{N}\pi_{i}b_{i}(o_{1})\beta_{1}(i),\:\:\:\:i=1,2,3,...,NP(O∣λ)=∑i=1Nπibi(o1)β1(i),i=1,2,3,...,N

解析:使用后向算法对上面的例子进行求解,观测序列为O=(红、白、红、白)O=(红、白、红、白)O=(红、白、红、白),初始状态概率矩阵π=(1,0,0)\pi=(1,0,0)π=(1,0,0),状态转移矩阵A和观测概率B如下:
A=[0.40.6000.80.2001]A=\begin{bmatrix} 0.4& 0.6 &0 \\ 0&0.8 &0.2 \\ 0 & 0& 1 \end{bmatrix}A=⎣⎡0.4000.60.8000.21⎦⎤       \:\:\:\:\:\:B=[0.70.30.40.60.80.2]B=\begin{bmatrix} 0.7& 0.3 \\ 0.4&0.6 \\ 0.8 & 0.2 \end{bmatrix}B=⎣⎡0.70.40.80.30.60.2⎦⎤
1、当t=4t=4t=4时:
β4(i)=1,  i=1,2,3\beta_{4}(i)=1,\:\:i=1,2,3β4(i)=1,i=1,2,3
2、当t=3t=3t=3时:
β3(1)=∑j=1Nα1jbj(o4)β4(j)=0.48\beta_{3}(1)=\sum_{j=1}^{N}\alpha_{1j}b_{j}(o_{4})\beta_4(j)=0.48β3(1)=∑j=1Nα1jbj(o4)β4(j)=0.48
β3(2)=∑j=1Nα2jbj(o4)β4(j)=0.52\beta_{3}(2)=\sum_{j=1}^{N}\alpha_{2j}b_{j}(o_{4})\beta_4(j)=0.52β3(2)=∑j=1Nα2jbj(o4)β4(j)=0.52
β3(3)=∑j=1Nα3jbj(o4)β4(j)=0.2\beta_{3}(3)=\sum_{j=1}^{N}\alpha_{3j}b_{j}(o_{4})\beta_4(j)=0.2β3(3)=∑j=1Nα3jbj(o4)β4(j)=0.2
3、当t=2t=2t=2时:
β2(1)=∑j=1Nα1jbj(o3)β3(j)=0.2592\beta_{2}(1)=\sum_{j=1}^{N}\alpha_{1j}b_{j}(o_{3})\beta_3(j)=0.2592β2(1)=∑j=1Nα1jbj(o3)β3(j)=0.2592
β2(2)=∑j=1Nα2jbj(o3)β3(j)=0.1984\beta_{2}(2)=\sum_{j=1}^{N}\alpha_{2j}b_{j}(o_{3})\beta_3(j)=0.1984β2(2)=∑j=1Nα2jbj(o3)β3(j)=0.1984
β2(3)=∑j=1Nα3jbj(o3)β3(j)=0.16\beta_{2}(3)=\sum_{j=1}^{N}\alpha_{3j}b_{j}(o_{3})\beta_3(j)=0.16β2(3)=∑j=1Nα3jbj(o3)β3(j)=0.16
4、当t=1t=1t=1时:
β1(1)=∑j=1Nα1jbj(o2)β2(j)=0.102528\beta_{1}(1)=\sum_{j=1}^{N}\alpha_{1j}b_{j}(o_{2})\beta_2(j)=0.102528β1(1)=∑j=1Nα1jbj(o2)β2(j)=0.102528
β1(2)=∑j=1Nα2jbj(o2)β2(j)=0.132352\beta_{1}(2)=\sum_{j=1}^{N}\alpha_{2j}b_{j}(o_{2})\beta_2(j)=0.132352β1(2)=∑j=1Nα2jbj(o2)β2(j)=0.132352
β1(3)=∑j=1Nα3jbj(o2)β2(j)=0.032\beta_{1}(3)=\sum_{j=1}^{N}\alpha_{3j}b_{j}(o_{2})\beta_2(j)=0.032β1(3)=∑j=1Nα3jbj(o2)β2(j)=0.032
此时,可求P(O∣λ)=∑i=1Nπibi(o1)β1(i)=0.0717696P(O|\lambda)=\sum_{i=1}^{N}\pi_{i}b_{i}(o_{1})\beta_1(i)=0.0717696P(O∣λ)=∑i=1Nπibi(o1)β1(i)=0.0717696
结论:后向算法和前向算法计算结果完全一样,因此计算P(O∣λ)P(O|\lambda)P(O∣λ)的时候,可以任意选择一个算法。