总结: 1个相同点, 4个不同点。
相同点:
- 都是在label生成的多条特定路径后的前向后向运算
不同点:
- label生成的多条特定路径的方式不同。
chain numerator的多条特定路径是alignment出来的;
ctc是通过下图方式(原始链接)得到
2. blank label 不同。
chain numerator 没有blank label,如果认为triphone 三个state 中的最后一个state 是blank label的话,那么chain numerator 的每个triphone都有自己的blank label,;
在ctc中所有的phone 共享一个blank label.(或许这是ctc spike timings 的原因? I am not sure)
3. 是否考虑了language model.
在chain numerator 计算前向/后向 probability时, 每一个跳转的概率都有自己的权重。chain分子前向对应代码:
而在ctc 中,每一步跳转都认为是等概率的,直接忽视跳转概率,ctc 前向对应代码
4. 训练样本的时长不同
由于chain numerator 是alignment的路径,所以长度可以控制。无论输入是多少,最终都可以截断成150frames的训练数据。
而ctc 是把整个样本全部拿来训练。