Tensorflow 中 CTC 和 seq2seq 损失的理论和实践比较

数据挖掘 机器学习 神经网络 深度学习 nlp 张量流
2021-09-28 19:44:59

Tensorflow 内置了Connectionist Temporal Classification (CTC) 损失和特殊的seq2seq 损失(加权交叉熵)的实现

由于 CTC 损失也是为了处理 seq2seq 映射,我想知道这两个损失函数如何比较。我对 CTC 损失进行了很好的解释,发现目标序列被限制为不长于输入序列,而 seq2seq 损失不存在此限制。

我有一些问题(按相关性排序):

  1. 双向 LSTM 是否适合 seq2seq 损失?我只发现了带有 CTC 甚至更简单的损失函数的 b-LSTM 实现。2016 年有一篇帖子说当时这是不可能的。任何更新?
  2. 除了 seq2seq 没有​​的 CTC 损失的多对一限制之外,还有概念上的差异吗?例如,seq2seq 损失是否做出与 CTC 损失类似的条件独立性假设?
  3. 损失函数是否对优化器有偏好(RMSProp、ADAM、Momentum 等)?
  4. 损失函数对特定任务集是否更有效?

理论论证和实践经验都值得赞赏。

1个回答

根据我自己的工作,我给出了一些稀疏的经验报告:

  1. bLSTM 适用于 Tensorflow 中的 seq2seq 损失,以防它们在编码-解码方案的编码器中使用。我没有尝试在解码器中使用 bLSTM。
  2. --
  3. 在 G2P 和 P2G 任务上,使用 RMSProp 和 ADAM 几乎可以很好地训练 seq2seq 损失。
  4. --