CTC Loss反向传播

单个样本的Loss定义:

训练集上CTC Loss定义:

利用极大似然定义整体的损失,取log后,转化为将所有样本的loss求和qu'dui'shu:

CTC目标函数

给定语音序列 x,标签序列 z,对于所有满足能映射到序列z的解码路径,可用 前向-后向 算法求解:

α(t, u)·β(t, u)含义
对t时刻,输出标签‘u’的所有路径π的概率求和(s.t. 但是路径π必须满足映射后为z)。

formula 1

先计算单条路径的概率,然后对满足的所有路径概率求和
formula 2

P( z | x )
因此对所有输出字符u进行遍历,即为给定x输出z的概率。

因此得到单个样本的Loss:

CTC反向传播

对单个样本来说:

1. 对网络输出y的偏导:

因为我们要考虑 t时刻 输出 标签k 的所有路径,因此要引入前向-后向算法【见 formula 2】,于是有:


同时,因为标签k在序列z'中可能会出现多次因此定义B(z, k)={ u: z'u = k }那么就得到了p( z | x )对输出y的偏导:【实际上就是对所有输出标签k的位置计算损失,为了进行对齐】

最终单个样本对于网络输出y的偏导为:

2. 对输出层的偏导:

其中k’为遍历所有输出单元,网络输出y是输出层通过softmax得到的,即:


对Softmax求偏导,如下:【注意softmax要对 k = k'k ≠ k 分别讨论】
将两种情况进行综合,于是上式的δkk'就是下式:

因此,得到网络输出y对输出层a的偏导,最终传到输出层的梯度为:


你可能感兴趣的:(CTC Loss反向传播)