马卡洛夫链(Markov chain)是处理一类随机过程,这些过程包含最少量的内存,但实际上并不是无记忆的。下面,我们将处理离散随机变量和有限马尔可夫链。令 X1, X2, … , Xn, … 为随机变量序列,它们的值为同样有限字母表中的值 A = { 1, 2, … , c}。如果没有别的条件,那么贝叶斯公式适用:
我们可以看出这是用联合概率密度公式推导来的:
P(A, B)=P(A|B) * P(B)=P(B|A) * P(A)
P(X1, X2)=P(X2|X1) * P(X1)
P(X1, X2, X3)=P(X3|X1,X2) * P(X1,X2)=P(X3|X1,X2) * P(X2|X1) * P(X1).
以此类推,就能得到公式。
然而,如果我们让这个公式成立:
由此,随机变量形成马尔可夫链,作为结果马尔科夫链变为:
这样的一个随机过程就有最简单的记忆: 时间 i 的值仅取决于前一时间的值,而与发生的任何事情无关
在之前。
如果无视时间下标i的值,马尔科夫链是时不变(time invariant)的和齐次(homogeneous)的。
时不变:系统不随时间而变化,输出只由输入的值决定。
齐次:次数相等。
所以我们可以得到以下公式:
注:x, x’ 都属于之前提到的有限字母表集合中的值。
p(x’|x)被叫做转移函数(transition function),它可以被表示为一个 c x c 的矩阵。这个转移函数必须满足以下条件:
我们可以把Xi的值考虑为状态(states),这样马尔科夫链就可以被看作一个用转移函数p(x’|x)表示的在状态之间转移的有限状态过程(finite state process)。如果状态的数量不很大,那么链就可以用图表来表示,如下图所示,是一个状态空间大小为 c = 3的马尔科夫链。图中带有状态转移概率指的箭头表示状态的转换。没有表明的转移概率为0,如p(1|2) = p(2|2) = p(3|3)。
对于马尔科夫链的一站式记忆(只保存上一个状态作为输入)的限制其实是有欺骗性的,原则上马尔科夫链能够建模任意复杂程度的过程。比如下面这个例子,我们首先考虑一个记忆长度为k的过程,然后可以得到下面这个公式:
P ( Z 1 , Z 2 , … , Z n , … ) = ∏ i P ( Z i ∣ Z i − k , Z i − k + 1 , … , Z i − 1 ) P(Z_1, Z_2, \ldots, Z_n, \ldots) = \prod_{i} P(Z_i \mid Z_{i-k}, Z_{i-k+1}, \ldots, Z_{i-1}) P(Z1,Z2,…,Zn,…)=i∏P(Zi∣Zi−k,Zi−k+1,…,Zi−1)
我们可以看出这个过程的当前状态是由上k个状态决定的,现在我们来定义一个新的变量X,让它等于k个Z状态。我们就可以得到下面的公式:
这样我们就可以得到,Zi+1状态可以由Xi状态作为输入得到,这就又变回马尔科夫链了。
HMM和MM的不同: 隐式马尔科夫链可以在不改变马尔科夫链基本结构的前提下允许随机过程拥有更多的自由度。
隐式马尔科夫链的原理:首先让链的状态产生观察数据,然后隐藏状态序列本身。
因此,我们可以定义:
下面我们来解析一下这个公式:
首先, p ( s i ∣ s i − 1 ) p(s_i \mid s_{i-1}) p(si∣si−1) 代表的是状态 s i − 1 s_{i-1} si−1 到状态 s i s_i si 的可能性, q ( y i ∣ s i − 1 , s i ) q(y_i \mid s_{i-1}, s_i) q(yi∣si−1,si) 代表的是观察状态概率分布中从状态 s i − 1 s_{i-1} si−1 到状态 s i s_i si 发生的情况下, 观察状态 y i y_i yi 发生的可能性。所以, ∏ i = 1 k p ( s i ∣ s i − 1 ) q ( y i ∣ s i − 1 , s i ) \prod_{i=1}^{k} p(s_i \mid s_{i-1}) q(y_i \mid s_{i-1}, s_i) ∏i=1kp(si∣si−1)q(yi∣si−1,si) 就表示一条隐藏的状态序列发生后,得到观察序列 y 1 , y 2 , … , y k y_1, y_2, \ldots, y_k y1,y2,…,yk的可能性是多少,能得到这种观察状态序列的隐藏状态序列可能不止一种,所以把所有可能的状态序列加起来,就得到了当我们拥有这些隐藏状态时生成这个观察序列的可能性。
如果我们看下面这个公式,可能会更清晰一些:
让 O O O 成为长度为 T T T 的观测序列, Q Q Q 成为长度为 T T T 的隐藏状态序列。观测序列和隐藏状态序列的联合概率可以表示为:
P ( O , Q ∣ θ ) = π q 1 b q 1 ( O 1 ) ∏ t = 2 T a q t − 1 , q t b q t ( O t ) P(O, Q | \theta) = \pi_{q_1} b_{q_1}(O_1) \prod_{t=2}^T a_{q_{t-1}, q_t} b_{q_t}(O_t) P(O,Q∣θ)=πq1bq1(O1)t=2∏Taqt−1,qtbqt(Ot)
其中, θ = ( A , B , π ) \theta=(A, B, \pi) θ=(A,B,π) 为HMM参数集, q t q_t qt 是时间 t t t 的隐藏状态, π q 1 \pi_{q_1} πq1 是开始于隐藏状态 q 1 q_1 q1 的初始概率, a q t − 1 , q t a_{q_{t-1}, q_t} aqt−1,qt 是从隐藏状态 q t − 1 q_{t-1} qt−1 转移至隐藏状态 q t q_t qt 的转移概率, b q t ( O t ) b_{q_t}(O_t) bqt(Ot) 是在给定隐藏状态 q t q_t qt 的情况下观测到 O t O_t Ot 的观测概率。
给定 HMM 模型 θ \theta θ,观测序列 O O O 的概率可以通过对所有可能的隐藏状态序列进行边缘化计算得到:
P ( O ∣ θ ) = ∑ Q P ( O , Q ∣ θ ) P(O | \theta) = \sum_{Q} P(O, Q | \theta) P(O∣θ)=Q∑P(O,Q∣θ)
其中,求和是对所有可能的隐藏状态序列 Q Q Q 进行的。
如果换个思路,将HMM看作是在多个状态对之间的多个转换,每个转换都输出一个不同的观察状态,一个状态转换为其他状态的总可能性为1,就会方便很多。
下面,我们用格架(trellis)图来举个例子:
从图上我们可以看出,状态1,转变为状态1,2,3时,可能会输出观察状态0,从状态1转为状态2时,可能会输出观察状态1。
所以如果我们要输出观察状态序列0110,就会有下图这些可能的路径状态转换序列。
当我们已知观察序列,想要找到最大可能的路径时会使用这个算法。
首先根据联合概率密度公式可推出:
P ( s 1 , s 2 , … , s k ∣ Y 1 , Y 2 , … , Y k , s 0 ) = P ( s 1 , s 2 , … , s k , Y 1 , Y 2 , … , Y k ∣ s 0 ) P ( Y 1 , Y 2 , … , Y k ∣ s 0 ) P( s_1, s_2, \dots, s_k\mid Y_1, Y_2, \dots, Y_k, s_0) = \frac{P(s_1, s_2, \dots, s_k, Y_1, Y_2, \dots, Y_k \mid s_0)} {P( Y_1, Y_2, \dots, Y_k \mid s_0)} P(s1,s2,…,sk∣Y1,Y2,…,Yk,s0)=P(Y1,Y2,…,Yk∣s0)P(s1,s2,…,sk,Y1,Y2,…,Yk∣s0)
当我们想找到最大可能的路径时,我们需要找到一个隐藏状态序列 s 1 , s 2 , … , s k s_1, s_2, \dots, s_k s1,s2,…,sk来实现最大化分子。
这是我们需要求出每一个时间点的所有状态的可能性,一直算到最后一个时间,得到所有状态的可能性后选择其中最大的状态,向前反推出每个时间点选择的状态,最后就可以得出可能性最大的路径。
例如上面观察序列为0110的图像,加入我们算到最后一个时间发现状态3的可能性最大。我们就可以反推出最大可能性的路径为12323。
空转移代表状态发生了变化但是却没有输出观察数据,一般用虚线表示。
下图是一个空转移的例子:
令 q(s’ls) 为从 s 到 s’ 的空转移的概率。让r(y, s’ls) 是从 s 到 s’ 的(非空)转换产生输出 y 的概率:
∑ y , s ′ r ( y , s ∣ s ′ ) + ∑ s ′ q ( s ′ ∣ s ) = 1 \sum_{y, s'}r(y, s \mid s') +\sum_{s'}q(s' \mid s) = 1 y,s′∑r(y,s∣s′)+s′∑q(s′∣s)=1
然后可以开始计算:
由于空转移是在状态转移的开始阶段发生的,所以要先计算空转移,之后才是观察数据的状态转移。我们使用r(y, s’|s)表示非空输出的状态转移概率,q(s’|s)表示空转移的概率。
初始状态:
α 0 ( 1 ) = 1 \alpha_0(1)=1 α0(1)=1
第一次状态转移:
α 1 ( 1 ) = α 0 ( 1 ) r ( 0 , 1 ∣ 1 ) = α 0 ( 1 ) p ( 1 ∣ 1 ) q ( 0 ∣ 1 → 1 ) = 1 × 1 2 × 1 = 1 2 \alpha_1(1)=\alpha_0(1)r(0, 1|1)=\alpha_0(1)p(1|1)q(0 | 1 \rightarrow 1)=1\times\frac{1}{2}\times1=\frac{1}{2} α1(1)=α0(1)r(0,1∣1)=α0(1)p(1∣1)q(0∣1→1)=1×21×1=21
α 1 ( 2 ) = α 0 ( 1 ) r ( 0 , 2 ∣ 1 ) = α 0 ( 1 ) p ( 2 ∣ 1 ) q ( 0 ∣ 1 → 2 ) = 1 × 1 6 × 1 2 = 1 12 \alpha_1(2)=\alpha_0(1)r(0, 2|1)=\alpha_0(1)p(2|1)q(0 | 1 \rightarrow 2)=1\times\frac{1}{6}\times\frac{1}{2}=\frac{1}{12} α1(2)=α0(1)r(0,2∣1)=α0(1)p(2∣1)q(0∣1→2)=1×61×21=121
α 1 ( 3 ) = α 0 ( 1 ) r ( 0 , 3 ∣ 1 ) = α 0 ( 1 ) p ( 3 ∣ 1 ) q ( 0 ∣ 1 → 3 ) = 1 × 1 6 × 1 = 1 6 \alpha_1(3)=\alpha_0(1)r(0, 3|1)=\alpha_0(1)p(3|1)q(0 | 1 \rightarrow 3)=1\times\frac{1}{6}\times1=\frac{1}{6} α1(3)=α0(1)r(0,3∣1)=α0(1)p(3∣1)q(0∣1→3)=1×61×1=61
第二次状态转移:
先计算空转移:
α 1 ( 2 ) = α 1 ( 2 ) = 1 12 \alpha_1(2)=\alpha_1(2)=\frac{1}{12} α1(2)=α1(2)=121 (没有空转移从别的状态变为状态2)。
α 1 ( 1 ) = α 1 ( 1 ) + α 1 ( 2 ) q ( 1 ∣ 2 ) = 1 2 + 1 12 × 1 3 = 19 36 \alpha_1(1)=\alpha_1(1)+\alpha_1(2)q(1|2) =\frac{1}{2}+\frac{1}{12}\times\frac{1}{3}=\frac{19}{36} α1(1)=α1(1)+α1(2)q(1∣2)=21+121×31=3619 (空转移从状态2转变为状态1)
α 1 ( 3 ) = α 1 ( 3 ) + α 1 ( 1 ) q ( 3 ∣ 1 ) + α 1 ( 2 ) q ( 3 ∣ 2 ) = 1 6 + 19 36 × 1 6 + 1 12 × 1 3 = 61 216 \alpha_1(3)=\alpha_1(3)+\alpha_1(1)q(3|1)+\alpha_1(2)q(3|2) =\frac{1}{6}+\frac{19}{36}\times\frac{1}{6}+\frac{1}{12}\times\frac{1}{3}=\frac{61}{216} α1(3)=α1(3)+α1(1)q(3∣1)+α1(2)q(3∣2)=61+3619×61+121×31=21661
观测数据转移:
α 2 ( 1 ) = α 1 ( 3 ) r ( 1 , 1 ∣ 3 ) = 61 216 × 3 4 × 1 = 0.212 \alpha_2(1)=\alpha_1(3)r(1, 1|3)=\frac{61}{216}\times\frac{3}{4}\times1=0.212 α2(1)=α1(3)r(1,1∣3)=21661×43×1=0.212
α 2 ( 2 ) = α 1 ( 1 ) r ( 1 , 2 ∣ 1 ) + α 1 ( 3 ) r ( 1 , 2 ∣ 3 ) = 19 36 × 1 6 × 1 2 + 61 216 × 1 4 × 1 = 0.115 \alpha_2(2)=\alpha_1(1)r(1, 2|1)+\alpha_1(3)r(1, 2|3)=\frac{19}{36}\times\frac{1}{6}\times\frac{1}{2}+\frac{61}{216}\times\frac{1}{4}\times1=0.115 α2(2)=α1(1)r(1,2∣1)+α1(3)r(1,2∣3)=3619×61×21+21661×41×1=0.115
α 2 ( 3 ) = α 1 ( 2 ) r ( 1 , 3 ∣ 2 ) = 1 12 × 1 3 × 2 3 = 0.019 \alpha_2(3)=\alpha_1(2)r(1, 3|2)=\frac{1}{12}\times\frac{1}{3}\times\frac{2}{3}=0.019 α2(3)=α1(2)r(1,3∣2)=121×31×32=0.019
第三次状态转移:
先计算空转移:
α 2 ( 2 ) = α 2 ( 2 ) = 0.115 \alpha_2(2)=\alpha_2(2)=0.115 α2(2)=α2(2)=0.115 (没有空转移从别的状态变为状态2)。
α 2 ( 1 ) = α 2 ( 1 ) + α 2 ( 2 ) q ( 1 ∣ 2 ) = 0.212 + 0.115 × 1 3 = 0.250 \alpha_2(1)=\alpha_2(1)+\alpha_2(2)q(1|2) =0.212+0.115\times\frac{1}{3}=0.250 α2(1)=α2(1)+α2(2)q(1∣2)=0.212+0.115×31=0.250
α 2 ( 3 ) = α 2 ( 3 ) + α 2 ( 1 ) q ( 3 ∣ 1 ) + α 2 ( 2 ) q ( 3 ∣ 2 ) = 0.019 + 0.250 × 1 6 + 0.115 × 1 3 = 0.099 \alpha_2(3)=\alpha_2(3)+\alpha_2(1)q(3|1)+\alpha_2(2)q(3|2) =0.019+0.250\times\frac{1}{6}+0.115\times\frac{1}{3}=0.099 α2(3)=α2(3)+α2(1)q(3∣1)+α2(2)q(3∣2)=0.019+0.250×61+0.115×31=0.099
观测数据转移:
α 3 ( 1 ) = α 2 ( 3 ) r ( 1 , 1 ∣ 3 ) = 0.099 × 3 4 × 1 = 0.074 \alpha_3(1)=\alpha_2(3)r(1, 1|3)=0.099\times\frac{3}{4}\times1=0.074 α3(1)=α2(3)r(1,1∣3)=0.099×43×1=0.074
α 3 ( 2 ) = α 2 ( 1 ) r ( 1 , 2 ∣ 1 ) + α 2 ( 3 ) r ( 1 , 2 ∣ 3 ) = 0.250 × 1 6 × 1 2 + 0.099 × 1 4 × 1 = 0.046 \alpha_3(2)=\alpha_2(1)r(1, 2|1)+\alpha_2(3)r(1, 2|3)=0.250\times\frac{1}{6}\times\frac{1}{2}+0.099\times\frac{1}{4}\times1=0.046 α3(2)=α2(1)r(1,2∣1)+α2(3)r(1,2∣3)=0.250×61×21+0.099×41×1=0.046
注:因为在下一次的状态转移中 p ( 0 ∣ 3 → 1 ) , p ( 0 ∣ 3 → 2 ) , p ( 0 ∣ 3 → 3 ) p(0 | 3 \rightarrow 1), p(0 | 3 \rightarrow 2), p(0 | 3 \rightarrow 3) p(0∣3→1),p(0∣3→2),p(0∣3→3)的值都为0,所以就不计算 α 3 ( 3 ) \alpha_3(3) α3(3)的概率。
第四次状态转移:
先计算空转移:
α 3 ( 2 ) = α 3 ( 2 ) = 0.046 \alpha_3(2)=\alpha_3(2)=0.046 α3(2)=α3(2)=0.046 (没有空转移从别的状态变为状态2)。
α 3 ( 1 ) = α 3 ( 1 ) + α 3 ( 2 ) q ( 1 ∣ 2 ) = 0.074 + 0.046 × 1 3 = 0.089 \alpha_3(1)=\alpha_3(1)+\alpha_3(2)q(1|2) =0.074+0.046\times\frac{1}{3}=0.089 α3(1)=α3(1)+α3(2)q(1∣2)=0.074+0.046×31=0.089
观测数据转移:
α 4 ( 1 ) = α 3 ( 1 ) r ( 0 , 1 ∣ 1 ) = 0.089 × 1 2 × 1 = 0.045 \alpha_4(1)=\alpha_3(1)r(0, 1|1)=0.089\times\frac{1}{2}\times1=0.045 α4(1)=α3(1)r(0,1∣1)=0.089×21×1=0.045
α 4 ( 2 ) = α 3 ( 1 ) r ( 0 , 2 ∣ 1 ) = 0.089 × 1 6 × 1 2 = 0.007 \alpha_4(2)=\alpha_3(1)r(0, 2|1)=0.089\times\frac{1}{6}\times\frac{1}{2}=0.007 α4(2)=α3(1)r(0,2∣1)=0.089×61×21=0.007
α 4 ( 3 ) = α 3 ( 1 ) r ( 0 , 3 ∣ 1 ) + α 3 ( 2 ) r ( 0 , 3 ∣ 2 ) = 0.089 × 1 6 × 1 + 0.046 × 1 3 × 1 3 = 0.020 \alpha_4(3)=\alpha_3(1)r(0, 3|1)+\alpha_3(2)r(0, 3|2)=0.089\times\frac{1}{6}\times1+0.046\times\frac{1}{3}\times\frac{1}{3}=0.020 α4(3)=α3(1)r(0,3∣1)+α3(2)r(0,3∣2)=0.089×61×1+0.046×31×31=0.020
所以我们可以得到观察序列为0110时,边际概率为:
P ( y 1 y 2 y 3 y 4 = 0110 ∣ s 0 = 1 ) = ∑ s α 4 = α 4 ( 1 ) + α 4 ( 2 ) + α 4 ( 3 ) = 0.045 + 0.007 + 0.020 = 0.072 P(y_1y_2y_3y_4=0110|s_0=1)=\sum_{s}\alpha_4=\alpha_4(1)+\alpha_4(2)+\alpha_4(3)=0.045+0.007+0.020=0.072 P(y1y2y3y4=0110∣s0=1)=∑sα4=α4(1)+α4(2)+α4(3)=0.045+0.007+0.020=0.072
注:边际概率为P(A),只和一个变量有关系,所以为所有状态能得到观察数据序列0110的概率之和。根据联合概率密度公式,条件概率,联合概率,和边际概率的关系为:
P(A, B)=P(A|B) * P(B)