长短期记忆网络、自动语音识别与序列到序列模型在聊天机器人中的应用
1. 长短期记忆网络与自动语音识别
1.1 连接主义时间分类(CTC)在TensorFlow中的应用
在深度语音循环神经网络(RNN)中,理想情况是音频文件输入的每个发声和时间步都能直接映射到网络预测输出中的一个字符。然而,实际情况是,当将输入划分为时间步时,发声以及最终的字符级输出可能会跨越多个时间步。
例如,在音频文件 “I am saying human things” 中,前四个时间步(t1 - t3)的预测输出可能都对应字母 “I”,因为发声在每个步骤都存在,但该发声的一部分也延伸到了时间步 t4,而 t4 被预测为字母 “a”,因为 “a” 的发音从这里开始。在这种重叠的情况下,如何确定时间步 t4 代表的是字母 “I” 还是 “a” 呢?这时可以使用连接主义时间分类(CTC)。
CTC 是一种类似于带逻辑的交叉熵损失的损失函数。它根据输入的大小(时间步数)和时间步之间的关系,计算所有可能的字符级输出组合。该损失函数定义了一个函数,用于关联每个时间步的所有输出概率类别。每个时间步的预测不是独立考虑的,而是一起考虑的。
TensorFlow 提供了一个名为 ctc_ops 的 CTC 损失函数,它是 tensorflow.python.ops 包的一部分。需要向它提供与字符级时间步预测对应的逻辑值和一个用于预测的占位符(int32)。在每个训练步骤中,将稀疏转录转换为数值数据,并填充预测,同时提供所需的输出长度和每个时期的信息。然后计算 CTC 损失,并用于扫描每个时间步的字符预测,以收敛到完整的转录预
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



