文章目录
理论部分
- 相关概念
-
马尔可夫过程
定义:假设一个随机过程中, t n t_n tn 时刻的状态 x n x_n xn的条件发布,只与其前一状态 x n − 1 x_{n-1} xn−1 相关,即:
则将其称为 马尔可夫过程。
-
隐马尔科夫算法
定义:隐马尔科夫算法是对含有未知参数(隐状态)的马尔可夫链进行建模的生成模型,如下图所示:
在隐马尔科夫模型中,包含隐状态 和 观察状态,隐状态 x i x_i xi 对于观察者而言是不可见的,而观察状态 y i y_i yi 对于观察者而言是可见的。隐状态间存在转移概率,隐状态 x i x_i xi到对应的观察状态 y i y_i yi 间存在输出概率。- 假设隐状态
x
i
x_i
xi 的状态满足马尔可夫过程,i时刻的状态
x
i
x_i
xi 的条件分布,仅与其前一个状态
x
i
−
1
x_{i-1}
xi−1相关,即:
P ( x i ∣ x 1 , x 2 , . . . , x i − 1 ) = P ( x i ∣ x i − 1 ) P(x_i|x_1,x_2,...,x_{i-1}) = P(x_i|x_{i-1}) P(xi∣x1,x2,...,xi−1)=P(xi∣xi−1) - 假设观测序列中各个状态仅取决于它所对应的隐状态,即:
P ( y i ∣ x 1 , x 2 , . . . , x i − 1 , y 1 , y 2 , . . . , y i − 1 , y i + 1 , . . . ) = P ( y i ∣ x i ) P(y_i|x_1,x_2,...,x_{i-1},y_1,y_2,...,y_{i-1},y_{i+1},...) = P(y_i|x_{i}) P(yi∣x1,x2,...,xi−1,y1,y2,...,yi−1,yi+1,...)=P(yi∣xi)
- 假设隐状态
x
i
x_i
xi 的状态满足马尔可夫过程,i时刻的状态
x
i
x_i
xi 的条件分布,仅与其前一个状态
x
i
−
1
x_{i-1}
xi−1相关,即:
-
- 条件随机场
定义:给定 X = ( x 1 , x 2 , . . . , x n ) X=(x_1,x_2,...,x_n) X=(x1,x2,...,xn) , Y = ( y 1 , y 2 , . . . , y n ) Y=(y_1,y_2,...,y_n) Y=(y1,y2,...,yn) 均为线性链表示的随机变量序列,若在给随机变量序列 X 的条件下,随机变量序列 Y 的条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X) 构成条件随机场,即满足马尔可夫性:
P ( y i ∣ x 1 , x 2 , . . . , x i − 1 , y 1 , y 2 , . . . , y i − 1 , y i + 1 ) = P ( y i ∣ x , y i − 1 , y i + 1 ) P(y_i|x_1,x_2,...,x_{i-1},y_1,y_2,...,y_{i-1},y_{i+1}) = P(y_i|x,y_{i-1},y_{i+1}) P(yi∣x1,x2,...,xi−1,y1,y2,...,yi−1,yi+1)=P(yi∣x,yi−1,yi+1)
则称为 P(Y|X) 为线性链条件随机场。
- 转移特征和状态特征
通过去除了隐马尔科夫算法中的观测状态相互独立假设,使算法在计算当前隐状态 x i x_i xi时,会考虑整个观测序列,从而获得更高的表达能力,并进行全局归一化解决标注偏置问题。
参数化形式
p
(
y
∣
x
)
=
1
Z
(
x
)
∏
i
=
1
n
exp
(
∑
i
,
k
λ
k
t
k
(
y
i
−
1
,
y
i
,
x
,
i
)
+
∑
i
,
l
μ
l
s
l
(
y
i
,
x
,
i
)
)
p\left(y | x\right)=\frac{1}{Z\left(x\right)} \prod_{i=1}^{n} \exp \left(\sum_{i, k} \lambda_{k} t_{k}\left(y_{i-1}, y_{i}, x, i\right)+\sum_{i, l} \mu_{l} s_{l}\left(y_{i}, x, i\right)\right)
p(y∣x)=Z(x)1i=1∏nexp⎝⎛i,k∑λktk(yi−1,yi,x,i)+i,l∑μlsl(yi,x,i)⎠⎞
其中:
-
Z ( x ) Z(x) Z(x) 为归一化因子,是在全局范围进行归一化,枚举了整个隐状态序列 x 1 … n x_{1…n} x1…n的全部可能,从而解决了局部归一化带来的标注偏置问题。
Z ( x ) = ∑ y exp ( ∑ i , k λ x t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) ) Z(x)=\sum_{y} \exp \left(\sum_{i, k} \lambda_{x} t_{k}\left(y_{i-1}, y_{i}, x, i\right)+\sum_{i, l} \mu_{l} s_{l}\left(y_{i}, x, i\right)\right) Z(x)=y∑exp⎝⎛i,k∑λxtk(yi−1,yi,x,i)+i,l∑μlsl(yi,x,i)⎠⎞-
t k t_k tk 为定义在边上的特征函数,转移特征,依赖于前一个和当前位置
-
s 1 s_1 s1 为定义在节点上的特征函数,状态特征,依赖于当前位置。
-
矩阵形式
-
-
条件随机场三问题
- 计算问题:已知模型的所有参数,计算观测序列 Y Y Y 出现的概率,常用方法:前向和后向算法;
-
前向计算
对观测序列 x x x 的每个位置 i = 1 , 2 , . . . , n + 1 i=1,2,...,n+1 i=1,2,...,n+1 ,定义一个 m m m 阶矩阵( m m m 为标记 Y i Y_i Yi取值的个数)。
M i ( x ) = [ M i ( y i − 1 , y i ∣ x ) ] M_{i}(x)=\left[M_{i}\left(y_{i-1}, y_{i} | x\right)\right] Mi(x)=[Mi(yi−1,yi∣x)]
M i ( y i − 1 , y i ∣ x ) = exp ( W i ( y i − 1 , y i ∣ x ) ) M_{i}\left(y_{i-1}, y_{i} | x\right)=\exp \left(W_{i}\left(y_{i-1}, y_{i} | x\right)\right) Mi(yi−1,yi∣x)=exp(Wi(yi−1,yi∣x))
W i ( y i − 1 , y i ∣ x ) = ∑ i = 1 K w k f k ( y i − 1 , y i , x , i ) W_{i}\left(y_{i-1}, y_{i} | x\right)=\sum_{i=1}^{K} w_{k} f_{k}\left(y_{i-1}, y_{i}, x, i\right) Wi(yi−1,yi∣x)=∑i=1Kwkfk(yi−1,yi,x,i)对每个指标 i = 0 , 1 , . . . , n + 1 i=0,1,...,n+1 i=0,1,...,n+1,定义前向向量 α i ( x ) \alpha_{i}(x) αi(x),则递推公式:
α i T ( y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) , i = 1 , 2 , ⋯ , n + 1 \alpha_{i}^{\mathrm{T}}\left(y_{i} | x\right)=\alpha_{i-1}^{\mathrm{T}}\left(y_{i-1} | x\right) M_{i}\left(y_{i-1}, y_{i} | x\right), \quad i=1,2, \cdots, n+1 αiT(yi∣x)=αi−1T(yi−1∣x)Mi(yi−1,yi∣x),i=1,2,⋯,n+1
其中,
α 0 ( y ∣ x ) = { 1 , y = start 0 , 否则 \alpha_{0}(y | x)=\left\{\begin{array}{ll}1, & y=\text { start } \\ 0, & \text { 否则 }\end{array}\right. α0(y∣x)={1,0,y= start 否则 -
后向计算
对每个指标 i = 0 , 1 , . . . , n + 1 i=0,1,...,n+1 i=0,1,...,n+1,定义前向向量 β i ( x ) \beta_{i}(x) βi(x),则递推公式:
β n + 1 ( y n + 1 ∣ x ) = { 1 , y n + 1 = stop 0 , 否则 \beta_{n+1}\left(y_{n+1} | x\right)=\left\{\begin{array}{ll}1, & y_{n+1}=\text { stop } \\ 0, & \text { 否则 }\end{array}\right. βn+1(yn+1∣x)={1,0,yn+1= stop 否则
β i ( y i ∣ x ) = M i ( y i , y i + 1 ∣ x ) β i − 1 ( y i + 1 ∣ x ) \beta_{i}\left(y_{i} | x\right)=M_{i}\left(y_{i}, y_{i+1} | x\right) \beta_{i-1}\left(y_{i+1} | x\right) βi(yi∣x)=Mi(yi,yi+1∣x)βi−1(yi+1∣x) -
???
Z ( x ) = α n T ( x ) ⋅ 1 = 1 T ⋅ β 1 ( x ) Z(x)=\alpha_{n}^{\mathrm{T}}(x) \cdot \mathbf{1}=\mathbf{1}^{\mathrm{T}} \cdot \beta_{1}(x) Z(x)=αnT(x)⋅1=1T⋅β1(x) -
概率计算
所以,标注序列在位置 i i i 是标注 y i y_i yi 的条件概率为:
P ( Y i = y i ∣ x ) = α i T ( y i ∣ x ) β i ( y i ∣ x ) Z ( x ) P\left(Y_{i}=y_{i} | x\right)=\frac{\alpha_{i}^{\mathrm{T}}\left(y_{i} | x\right) \beta_{i}\left(y_{i} | x\right)}{Z(x)} P(Yi=yi∣x)=Z(x)αiT(yi∣x)βi(yi∣x)
P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) P\left(Y_{i-1}=y_{i-1}, Y_{i}=y_{i} | x\right)=\frac{\alpha_{i-1}^{T}\left(y_{i-1} | x\right) M_{i}\left(y_{i-1}, y_{i} | x\right) \beta_{i}\left(y_{i} | x\right)}{Z(x)} P(Yi−1=yi−1,Yi=yi∣x)=Z(x)αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x) P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) P\left(Y_{i-1}=y_{i-1}, Y_{i}=y_{i} | x\right)=\frac{\alpha_{i-1}^{T}\left(y_{i-1} | x\right) M_{i}\left(y_{i-1}, y_{i} | x\right) \beta_{i}\left(y_{i} | x\right)}{Z(x)} P(Yi−1=yi−1,Yi=yi∣x)=Z(x)αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)
其中,
Z ( x ) = α n T ( x ) ⋅ 1 Z(x)=\alpha_{n}^{\mathrm{T}}(x) \cdot \mathbf{1} Z(x)=αnT(x)⋅1 -
期望概率计算
通过利用前向-后向向量,计算特征函数关于联合概率分布 P ( X , Y ) P(X,Y) P(X,Y) 和 条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X) 的数学期望,即特征函数 f k f_k fk 关于条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X) 的数学期望:
E P ( Y ∣ X ) [ f k ] = ∑ y P ( y ∣ x ) f k ( y , x ) = ∑ i = 1 n + 1 ∑ y = 1 , y 1 f k ( y i − 1 , y i , x , i ) α i − 1 ⊤ ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) k = 1 , 2 , ⋯ , K \begin{aligned} E_{P(Y | X)}\left[f_{k}\right] &=\sum_{y} P(y | x) f_{k}(y, x) \\ &=\sum_{i=1}^{n+1} \sum_{y=1, y_{1}} f_{k}\left(y_{i-1}, y_{i}, x, i\right) \frac{\alpha_{i-1}^{\top}\left(y_{i-1} | x\right) M_{i}\left(y_{i-1}, y_{i} | x\right) \beta_{i}\left(y_{i} | x\right)}{Z(x)} \\ k &=1,2, \cdots, K \end{aligned} EP(Y∣X)[fk]k=y∑P(y∣x)fk(y,x)=i=1∑n+1y=1,y1∑fk(yi−1,yi,x,i)Z(x)αi−1⊤(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)=1,2,⋯,K
扁平
Z
(
x
)
=
α
n
T
(
x
)
⋅
1
Z(x)=\alpha_{n}^{\mathrm{T}}(x) \cdot \mathbf{1}
Z(x)=αnT(x)⋅1
其中,
-
学习问题:已知观测序列 Y Y Y,求解使得该观测序列概率最大的模型参数,包括隐状态序列、隐状态间的转移概率分布和从隐状态到观测状态的概率分布,常用方法:Baum-Wehch 算法;
-
预测问题:一直模型所有参数和观测序列 Y Y Y ,计算最可能的隐状态序列 X X X,常用算法:维特比算法。
维特比算法:
输入:模型特征向量 F ( y , x ) F(y,x) F(y,x) 和权重向量 w w w,输入序列(观测序列) x = x 1 , x 2 , . . . , x n x={x_1,x_2,...,x_n} x=x1,x2,...,xn;
输出:条件概率最大的输出序列(标记序列) y ∗ = ( y 1 ∗ , y 2 ∗ , . . . , y n ∗ ) y^{*}= (y_1^*,y_2^*,...,y_n^*) y∗=(y1∗,y2∗,...,yn∗),也就是最优路径;- 初始化
δ 1 ( j ) = w ⋅ F 1 ( y 0 = start , y 1 = j , x ) , j = 1 , 2 , ⋯ , m \delta_{1}(j)=w \cdot F_{1}\left(y_{0}=\operatorname{start}, y_{1}=j, x\right), \quad j=1,2, \cdots, m δ1(j)=w⋅F1(y0=start,y1=j,x),j=1,2,⋯,m - 递推,对i=2,3,…,n
δ i ( l ) = max 1 ⩽ j ⩽ m { δ i − 1 ( j ) + w ⋅ F i ( y i − 1 = j , y i = l , x ) } , l = 1 , 2 , ⋯ , m \delta_{i}(l)=\max _{1 \leqslant j \leqslant m}\left\{\delta_{i-1}(j)+w \cdot F_{i}\left(y_{i-1}=j, y_{i}=l, x\right)\right\}, \quad l=1,2, \cdots, m δi(l)=max1⩽j⩽m{δi−1(j)+w⋅Fi(yi−1=j,yi=l,x)},l=1,2,⋯,m
Ψ i ( l ) = arg max 1 ≤ j ⩽ m { δ i − 1 ( j ) + w ⋅ F i ( y i − 1 = j , y i = l , x ) } , l = 1 , 2 , ⋯ , m \Psi_{i}(l)=\arg \max _{1 \leq j \leqslant m}\left\{\delta_{i-1}(j)+w \cdot F_{i}\left(y_{i-1}=j, y_{i}=l, x\right)\right\}, \quad l=1,2, \cdots, m Ψi(l)=argmax1≤j⩽m{δi−1(j)+w⋅Fi(yi−1=j,yi=l,x)},l=1,2,⋯,m - 终止
max y ( w ⋅ F ( y , x ) ) = max 1 ≤ j ≤ m δ n ( j ) \max _{y}(w \cdot F(y, x))=\max _{1 \leq j \leq m} \delta_{n}(j) maxy(w⋅F(y,x))=max1≤j≤mδn(j)
y n ∗ = arg max 1 ≤ j ⩽ m δ n ( j ) y_{n}^{*}=\arg \max _{1 \leq j \leqslant m} \delta_{n}(j) yn∗=argmax1≤j⩽mδn(j) - 返回路径
y i ∗ = Ψ i + 1 ( y i + 1 ∗ ) , i = n − 1 , n − 2 , ⋯ , 1 y_{i}^{*}=\Psi_{i+1}\left(y_{i+1}^{*}\right), \quad i=n-1, n-2, \cdots, 1 yi∗=Ψi+1(yi+1∗),i=n−1,n−2,⋯,1
- 初始化
练习部分
- 利用高维特比算法计算给定输入序列
x
{x}
x对应的最优输出序列
y
∗
y^{*}
y∗
max ∑ i = 1 3 w ⋅ F i ( y i − 1 , y i , x ) \max \sum_{i=1}^{3} w \cdot F_{i}\left(y_{i-1}, y_{i}, x\right) max∑i=13w⋅Fi(yi−1,yi,x)
维特比:
高维特比:
- 初始化
δ 1 ( j ) = w ⋅ F 1 ( y 0 = start , y 1 = j , x ) , j = 1 , 2 \delta_{1}(j)=w \cdot F_{1}\left(y_{0}=\text {start}, y_{1}=j, x\right), \quad j=1,2 δ1(j)=w⋅F1(y0=start,y1=j,x),j=1,2
i = 1 , δ 1 ( 1 ) = 1 , δ ( 2 ) = 0.5 i=1, \quad \delta_{1}(1)=1, \quad \delta(2)=0.5 i=1,δ1(1)=1,δ(2)=0.5 - 递推,对i=2,3,…n
i = 2 i=2 i=2
δ 2 ( l ) = max f { δ 1 ( j ) + w ⋅ F 2 ( j , l , x ) } \delta_{2}(l)=\max _{f}\left\{\delta_{1}(j)+w \cdot F_{2}(j, l, x)\right\} δ2(l)=maxf{δ1(j)+w⋅F2(j,l,x)}
δ 2 ( 1 ) = max { 1 + λ 2 t 2 , 0.5 + λ 4 t 4 } = 1.6 , Ψ 2 ( 1 ) = 1 \delta_{2}(1)=\max \left\{1+\lambda_{2} t_{2}, 0.5+\lambda_{4} t_{4}\right\}=1.6, \quad \Psi_{2}(1)=1 δ2(1)=max{1+λ2t2,0.5+λ4t4}=1.6,Ψ2(1)=1
δ 2 ( 2 ) = max { 1 + λ t 1 + μ 2 s 2 , 0.5 + μ 2 s 2 } = 2.5 , Ψ 2 ( 2 ) = 1 \delta_{2}(2)=\max \left\{1+\lambda t_{1}+\mu_{2} s_{2}, 0.5+\mu_{2} s_{2}\right\}=2.5, \quad \Psi_{2}(2)=1 δ2(2)=max{1+λt1+μ2s2,0.5+μ2s2}=2.5,Ψ2(2)=1
i = 3 i=3 i=3
δ 3 ( l ) = max j { δ 2 ( j ) + w ⋅ F 3 ( j , l , x ) } \delta_{3}(l)=\max _{j}\left\{\delta_{2}(j)+w \cdot F_{3}(j, l, x)\right\} δ3(l)=maxj{δ2(j)+w⋅F3(j,l,x)}
δ 3 ( 1 ) = max { 1.6 + μ 5 s 5 , 2.5 + λ 3 t 3 + μ 3 s 3 } = 4.3 , Ψ 3 ( 1 ) = 2 \delta_{3}(1)=\max \left\{1.6+\mu_{5} s_{5}, 2.5+\lambda_{3} t_{3}+\mu_{3} s_{3}\right\}=4.3, \quad \Psi_{3}(1)=2 δ3(1)=max{1.6+μ5s5,2.5+λ3t3+μ3s3}=4.3,Ψ3(1)=2
δ 3 ( 2 ) = max { 1.6 + λ 1 t 1 + μ 4 s 4 , 2.5 + λ 5 t 5 + μ 4 s 4 } = 3.2 , Ψ 3 ( 2 ) = 1 \delta_{3}(2)=\max \left\{1.6+\lambda_{1} t_{1}+\mu_{4} s_{4}, 2.5+\lambda_{5} t_{5}+\mu_{4} s_{4}\right\}=3.2, \quad \Psi_{3}(2)=1 δ3(2)=max{1.6+λ1t1+μ4s4,2.5+λ5t5+μ4s4}=3.2,Ψ3(2)=1 - 终止
max y ( w ⋅ F ( y , x ) ) = max δ 3 ( l ) = δ 3 ( 1 ) = 4.3 \max _{y}(w \cdot F(y, x))=\max \delta_{3}(l)=\delta_{3}(1)=4.3 maxy(w⋅F(y,x))=maxδ3(l)=δ3(1)=4.3
y 3 ∗ = arg max l δ 3 ( l ) = 1 y_{3}^{*}=\arg \max _{l} \delta_{3}(l)=1 y3∗=argmaxlδ3(l)=1 - 返回路径
y 2 ∗ = Ψ 3 ( y 3 ∗ ) = Ψ 3 ( 1 ) = 2 y_{2}^{*}=\Psi_{3}\left(y_{3}^{*}\right)=\Psi_{3}(1)=2 y2∗=Ψ3(y3∗)=Ψ3(1)=2
y 1 ∗ = Ψ 2 ( y 2 ∗ ) = Ψ 2 ( 2 ) = 1 y_{1}^{*}=\Psi_{2}\left(y_{2}^{*}\right)=\Psi_{2}(2)=1 y1∗=Ψ2(y2∗)=Ψ2(2)=1
求得最优路径 y ∗ = ( y 1 ∗ , y 2 ∗ , . . . , y n ∗ ) = ( 1 , 2 , 1 ) y^{*}= (y_1^*,y_2^*,...,y_n^*) = (1,2,1) y∗=(y1∗,y2∗,...,yn∗)=(1,2,1)