这里的概率计算问题指的是:
给定条件随机场P(Y∣X)输入序列x和输出序列y, 计算条件概率P(Yi=yi∣x), P(Yi−1=yi−1,Yi=yi∣x)以及相应数学期望的问题.
前向后向算法
像HMM一样, 使用前向-后向向量, 递归地计算以上概率及期望值.
前向向量
对于每个位置i=0,1,2,⋯,n+1, 定义前向向量αi(x), 注意这是一个向量, 长度为状态yi可以取的状态数量, 即m维向量, 每个向量定义为:
α0(y0∣x)={1, y0=start0, else
αiT(yi∣x)=αi−1T(yi−1∣x)Mi(yi−1,yi∣x), i=1,2,⋯,n+1
对于初始情况, 定义α0(y∣x)向量在初始状态start位置上为1, 其他位置都为0.
α0(y∣x)表示在位置i上, 标记为yi并且到位置i之前的所有位置上为标记序列对应的前半部分状态的非规范化概率. 上式又可表示为:
αiT(x)=αi−1T(x)Mi(x)
后向向量
对于每个位置i=0,1,2,⋯,n+1, 定义后向向量βi(x), 向量的长度与前向向量相同:
βn+1(yn+1∣x)={1, yn+1=stop0, else
βi(yi∣x)=Mi+1(yi,yi+1∣x)βi+1(yi+1∣x), i=0,2,⋯,n
βi(yi∣x)表示在位置i上标记为yi且从i+1到n的后部分标记序列对应的非规范化概率
概率计算
根据前向-后向向量的定义, 计算状态序列在位置i上标记yi的条件概率:
P(Yi=yi∣x)=Z(x)αiT(yi∣x)βi(yi∣x)
在位置i−1和位置i标记yi−1和yi的条件概率:
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)=αnT(x)⋅1=1T⋅β1(x)
期望计算
计算特征函数关于联合分布P(X,Y)和条件分布P(Y∣X)的数学期望.
特征函数关于条件分布P(Y∣X)的数学期望为:
EP(Y∣X)[fk]=y∑P(y∣x)fk(y,x)=i=1∑n+1yi−1yi∑fk(yi−1,yi,x,i)Z(x)αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x), k=1,2,⋯,K
另外, 假设经验分布为P~(X), 特征函数关于联合分布P(X,Y)的数学期望为:
EP(X,Y)[fk]=x,y∑P(x,y)i=1∑n+1fk(yi−1,yi,x,i)=x∑P~(X)y∑P(y∣x)i=1∑n+1fk(yi−1,yi,x,i)=x∑P~(X)i=1∑n+1yi−1yi∑fk(yi−1,yi,x,i)Z(x)αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x), k=1,2,⋯,K
对于给定的观测序列x和状态序列y, 可以通过一次前向扫描计算αi和Z(x), 一次后向扫描计算βi, 从而得到所有概率和特征的期望.