Task4

条件随机场

马尔可夫过程

定义

假设一个随机过程中, t n t_n 时刻的状态 x n x_n 的条件发布,只与其前一状态 x n 1 x_{n-1} 相关,即:

P ( x n x 1 , x 2 , . . . , x n 1 ) = P ( x n x n 1 ) P(x_n|x_1,x_2,...,x_{n-1}) = P(x_n|x_{n-1})

则将其称为 马尔可夫过程。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wTcnB5QJ-1588083401296)(img/马尔可夫过程.png)]

隐马尔科夫算法

定义

隐马尔科夫算法是对含有未知参数(隐状态)的马尔可夫链进行建模的生成模型,如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lBfYoqPm-1588083445495)(img/隐马尔科夫算法.png)]

在隐马尔科夫模型中,包含隐状态 和 观察状态,隐状态 x i x_i 对于观察者而言是不可见的,而观察状态 y i y_i 对于观察者而言是可见的。隐状态间存在转移概率,隐状态 x i x_i 到对应的观察状态 y i y_i 间存在输出概率。

假设

  1. 假设隐状态 x i x_i 的状态满足马尔可夫过程,i时刻的状态 x i x_i 的条件分布,仅与其前一个状态 x i 1 x_{i-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})

  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})

存在问题

在序列标注问题中,隐状态(标注)不仅和单个观测状态相关,还和观察序列的长度、上下文等信息相关。例如词性标注问题中,一个词被标注为动词还是名词,不仅与它本身以及它前一个词的标注有关,还依赖于上下文中的其他词。

条件随机场 (以线性链条件随机场为例)

定义

给定 X = ( x 1 , x 2 , . . . , x n ) X=(x_1,x_2,...,x_n) Y = ( y 1 , y 2 , . . . , y n ) Y=(y_1,y_2,...,y_n) 均为线性链表示的随机变量序列,若在给随机变量序列 X 的条件下,随机变量序列 Y 的条件概率分布 P ( Y X ) P(Y|X) 构成条件随机场,即满足马尔可夫性:

扫描二维码关注公众号,回复: 11165287 查看本文章

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 ( Y X ) P(Y|X) 为线性链条件随机场。

通过去除了隐马尔科夫算法中的观测状态相互独立假设,使算法在计算当前隐状态 x i x_i 时,会考虑整个观测序列,从而获得更高的表达能力,并进行全局归一化解决标注偏置问题。

在这里插入图片描述

参数化形式

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)

其中:

Z ( x ) Z(x) 为归一化因子,是在全局范围进行归一化,枚举了整个隐状态序列 x 1 n x_{1…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)

t k t_k 为定义在边上的特征函数,转移特征,依赖于前一个和当前位置

s 1 s_1 为定义在节点上的特征函数,状态特征,依赖于当前位置。

简化形式

因为条件随机场中同一特征在各个位置都有定义,所以可以对同一个特征在各个位置求和,将局部特征函数转化为一个全局特征函数,这样就可以将条件随机场写成权值向量和特征向量的内积形式,即条件随机场的简化形式。

step 1

将转移特征和状态特征及其权值用统一的符号表示,设有k1个转移特征, k 2 k_2 个状态特征, K = k 1 + k 2 K=k_1+k_2 ,记

f k ( y i 1 , y i , x , i ) = { t k ( y i 1 , y i , x , i ) , k = 1 , 2 , , K 1 s l ( y i , x , i ) , k = K 1 + l ; l = 1 , 2 , , K 2 f_{k}\left(y_{i-1}, y_{i}, x, i\right)=\left\{\begin{array}{lc} t_{k}\left(y_{i-1}, y_{i}, x, i\right), & k=1,2, \cdots, K_{1} \\ s_{l}\left(y_{i}, x, i\right), & k=K_{1}+l ; l=1,2, \cdots, K_{2} \end{array}\right.

step 2

对转移与状态特征在各个位置i求和,记作

f k ( y , x ) = i = 1 n f k ( y i 1 , y i , x , i ) , k = 1 , 2 , , K f_{k}(y, x)=\sum_{i=1}^{n} f_{k}\left(y_{i-1}, y_{i}, x, i\right), \quad k=1,2, \cdots, K

step 3

λ x \lambda_{x} μ l \mu_{l} 用统一的权重表示,记作

w k = { λ k , k = 1 , 2 , , K 1 μ l , k = K 1 + l ; l = 1 , 2 , , K 2 w_{k}=\left\{\begin{array}{ll} \lambda_{k}, & k=1,2, \cdots, K_{1} \\ \mu_{l}, & k=K_{1}+l ; l=1,2, \cdots, K_{2} \end{array}\right.

step 4

转化后的条件随机场可表示为:

P ( y x ) = 1 Z ( x ) exp k = 1 K w k f k ( y , x ) Z ( x ) = y exp k = 1 K w k f k ( y , x ) \begin{aligned} P(y | x) &=\frac{1}{Z(x)} \exp \sum_{k=1}^{K} w_{k} f_{k}(y, x) \\ Z(x) &=\sum_{y} \exp \sum_{k=1}^{K} w_{k} f_{k}(y, x) \end{aligned}

step 5

w w 表示权重向量:

w = ( w 1 , w 2 , . . . , w K ) T w = (w_1,w_2,...,w_K)^T

F ( y , x ) F(y,x) 表示特征向量,即

F ( y , x ) = ( f 1 ( y , x ) , f 2 ( y , x ) , , f K ( y , x ) ) T F(y, x)=\left(f_{1}(y, x), f_{2}(y, x), \cdots, f_{K}(y, x)\right)^{\mathrm{T}}
则,条件随机场写成内积形式为:

P w ( y x ) = exp ( w F ( y , x ) ) Z w ( x ) Z w ( x ) = y exp ( w F ( y , x ) ) \begin{array}{c} P_{w}(y | x)=\frac{\exp (w \cdot F(y, x))}{Z_{w}(x)} \\ Z_{w}(x)=\sum_{y} \exp (w \cdot F(y, x)) \end{array}

学习问题

这里主要介绍一下 BFGS 算法的思路。

输入:特征函数 f 1 , f 2 , . . . , f n f_1,f_2,...,f_n :经验分布 P ~ ( X , Y ) \widetilde{P}(X,Y)

输出:最优参数值 w ^ \widehat{w} ,最优模型 P w ^ ( y x ) P_{\widehat{w}}(y|x)

  1. 选定初始点 w^{(0)}, 取 B 0 B_0 为正定对称矩阵,k = 0;
  2. 计算 g k = g ( w ( k ) ) g_k = g(w^(k)) ,若 g k = 0 g_k = 0 ,则停止计算,否则转 (3) ;
  3. 利用 B k p k = g k B_k p_k = -g_k 计算 p k p_k
  4. 一维搜索:求 λ k \lambda_k 使得

f ( w ( k ) + λ k p k ) = min λ > 0 f ( w ( k ) + λ p k ) f\left(w^{(k)}+\lambda_{k} p_{k}\right)=\min _{\lambda>0} f\left(w^{(k)}+\lambda p_{k}\right)

  1. w ( k + 1 ) = w ( k ) + λ k p k w^{(k+1)} = w^{(k)} + \lambda_k * p_k

  2. 计算 g k + 1 g_{k+1} = g(w^{(k+1)}),

    g k = 0 g_k = 0 , 则停止计算;否则,利用下面公式计算 B k + 1 B_{k+1} :

B k + 1 = B k + y k y k T y k T δ k B k δ k δ k T B k δ k T B k δ k y k = g k + 1 g k , δ k = w ( k + 1 ) w ( k ) \begin{aligned} &B_{k+1}=B_{k}+\frac{y_{k} y_{k}^{\mathrm{T}}}{y_{k}^{\mathrm{T}} \delta_{k}}-\frac{B_{k} \delta_{k} \delta_{k}^{\mathrm{T}} B_{k}}{\delta_{k}^{\mathrm{T}} B_{k} \delta_{k}}\\ &y_{k}=g_{k+1}-g_{k}, \quad \delta_{k}=w^{(k+1)}-w^{(k)} \end{aligned}
7. 令 k = k + 1 k=k+1 ,转步骤(3);

预测问题

对于预测问题,常用的方法是维特比算法,其思路如下:

输入:模型特征向量 F ( y , x ) F(y,x) 和权重向量 w w ,输入序列(观测序列) x = x 1 , x 2 , . . . , x n x={x_1,x_2,...,x_n}

输出:条件概率最大的输出序列(标记序列) y = ( y 1 , y 2 , . . . , y n ) y^{*}= (y_1^*,y_2^*,...,y_n^*) ,也就是最优路径;

  1. 初始化

δ 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
Ψ i ( l ) = arg max 1 j m { δ t 1 ( j ) + w F i ( y i 1 = j , y i = l , x ) } , l = 1 , 2 , , m \Psi_{i}(l)=\arg \max _{1 \leqslant j \leqslant m}\left\{\delta_{t-1}(j)+w \cdot F_{i}\left(y_{i-1}=j, y_{i}=l, x\right)\right\}, \quad l=1,2, \cdots, m

  1. 递推,对 i = 2 , 3 , . . . , n i=2,3,...,n

δ i ( l ) = max 1 j m { δ t 1 ( j ) + w F i ( y i 1 = j , y i = l , x ) } , l = 1 , 2 , , m \delta_{i}(l)=\max _{1 \in j \leqslant m}\left\{\delta_{t-1}(j)+w \cdot F_{i}\left(y_{i-1}=j, y_{i}=l, x\right)\right\}, \quad l=1,2, \cdots, m

  1. 终止

max y ( w F ( y , x ) ) = max 1 j m δ n ( j ) y n = arg max 1 j m δ n ( j ) \begin{array}{c} \max _{y}(w \cdot F(y, x))=\max _{1 \leq j \leqslant m} \delta_{n}(j) \\ y_{n}^{*}=\arg \max _{1 \leqslant j \leqslant m} \delta_{n}(j) \end{array}

  1. 返回路径

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

求得最优路径 y = ( y 1 , y 2 , . . . , y n ) y^{*}= (y_1^*,y_2^*,...,y_n^*)

例子说明

利用维特比算法计算给定输入序列 x x 对应的最优输出序列 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)

  1. 初始化

δ 1 ( j ) = w F 1 ( y 0 = start , y 1 = j , x ) , j = 1 , 2 i = 1 , δ 1 ( 1 ) = 1 , δ 1 ( 2 ) = 0.5 \begin{array}{l} \delta_{1}(j)=w \cdot F_{1}\left(y_{0}=\operatorname{start}, y_{1}=j, x\right), \quad j=1,2 \\ i=1, \quad \delta_{1}(1)=1, \quad \delta_{1}(2)=0.5 \end{array}

  1. 递推,对 i = 2 , 3 , . . . , n i=2,3,...,n

i = 2 δ 2 ( l ) = max { δ 1 ( j ) + w F 2 ( j , l , x ) } δ 2 ( 1 ) = max { 1 + λ 2 t 2 , 0.5 + λ 4 t 4 } = 1.6 , Ψ 2 ( 1 ) = 1 δ 2 ( 2 ) = max { 1 + λ 1 t 1 + μ 2 s 2 , 0.5 + μ 2 s 2 } = 2.5 , Ψ 3 ( 2 ) = 1 i = 3 2 δ 3 ( l ) = max j { δ 2 ( j ) + w F 3 ( j , l , x ) } δ 3 ( 1 ) = max { 1.6 + μ 5 s 5 , 2.5 + λ t 3 + μ 3 s 3 } = 4.3 , Ψ 3 ( 1 ) = 2 δ 3 ( 2 ) = max { 1.6 + λ t 1 + μ 4 s 4 , 2.5 + λ 5 t 5 + μ 4 s 4 } = 3.2 , Ψ 3 ( 2 ) = 1 \begin{array}{c} i=2 \quad \delta_{2}(l)=\max \left\{\delta_{1}(j)+w \cdot F_{2}(j, l, x)\right\} \\ \delta_{2}(1)=\max \left\{1+\lambda_{2} t_{2}, 0.5+\lambda_{4} t_{4}\right\}=1.6, \quad \Psi_{2}(1)=1 \\ \delta_{2}(2)=\max \left\{1+\lambda_{1} t_{1}+\mu_{2} s_{2}, 0.5+\mu_{2} s_{2}\right\}=2.5, \quad \Psi_{3}(2)=1 \\ i=3^{2} \delta_{3}(l)=\max _{j}\left\{\delta_{2}(j)+w \cdot F_{3}(j, l, x)\right\} \\ \delta_{3}(1)=\max \left\{1.6+\mu_{5} s_{5}, 2.5+\lambda t_{3}+\mu_{3} s_{3}\right\}=4.3, \quad \Psi_{3}(1)=2 \\ \delta_{3}(2)=\max \left\{1.6+\lambda t_{1}+\mu_{4} s_{4}, 2.5+\lambda_{5} t_{5}+\mu_{4} s_{4}\right\}=3.2, \quad \Psi_{3}(2)=1 \end{array}

  1. 终止

max y ( w F ( y , x ) ) = max δ 3 ( l ) = δ 3 ( 1 ) = 4.3 y 3 = arg max 1 δ 3 ( l ) = 1 \begin{array}{c} \max _{y}(w \cdot F(y, x))=\max \delta_{3}(l)=\delta_{3}(1)=4.3 \\ y_{3}^{*}=\arg \max _{1} \delta_{3}(l)=1 \end{array}
4. 返回路径

y 2 = Ψ 3 ( y 3 ) = Ψ 3 ( 1 ) = 2 y 1 = Ψ 2 ( y 2 ) = Ψ 2 ( 2 ) = 1 \begin{array}{l} y_{2}^{*}=\Psi_{3}\left(y_{3}^{*}\right)=\Psi_{3}(1)=2 \\ y_{1}^{*}=\Psi_{2}\left(y_{2}^{*}\right)=\Psi_{2}(2)=1 \end{array}

求得最优路径 y = ( y 1 , y 2 , . . . , y n ) = ( 1 , 2 , 1 ) y^{*}= (y_1^*,y_2^*,...,y_n^*) = (1,2,1)

原创文章 193 获赞 27 访问量 3万+

猜你喜欢

转载自blog.csdn.net/HdUIprince/article/details/105824225