前向后向

前向算法

假设 ll 为原始的标注序列,现针对 ll 进行如下修改:

  • 开头和结尾各插入一个blank

  • 每两个字母之间(此处不用考虑是否为重复字母)也插入一个blank

将修改后的序列标记为 ll' ,显然 ll' 的长度为 2l+12|l|+1 ;反过来, l=l2|l|=\frac{|l'|}{2} ,且 llll' 是一对一的关系,例如 l=Maryl=Maryl=_M_a_r_y_l' = \_M\_a\_r\_y\_

CTC针对 ll' 的前缀计算路径的概率,既允许blank和非blank之间的转换,也允许相邻的不同之母之间的变化。对于一个标注序列 ll ,我们定义前向变量 αt(s)\alpha_t(s) 为满足以下条件的所有路径 π1:t\pi_{1:t} 的概率之和:

B(π1:t)=l1:s/2\mathcal{B}(\pi_{1:t})=l_{1:s/2}πt=ls\pi_t=l'_s

根据前面的定义可知, ll' 的奇数位均为blank,偶数位均为 ll 中对应字母 ls/2l_{s/2} ,注意这里 ss11 开始。比如, l=Maryl=Mary 时, l=_M_a_r_yl'=\_M\_a\_r\_y ,那么 l1:3=_M_l'_{1:3}=\_M\_l1:3/2=Ml_{1:3/2}=Ml1:4=_M_al'_{1:4}=\_M\_al1:4/2=Mal_{1:4/2}=Ma

后向算法

Last updated