shallow fusion--学习笔记

  1. 在生成式 seq2seq 模型中,经常需要融入一个预训练的语言模型来帮助解码。这个过程叫作“Language Model Fusion”。训练语言模型的文本数据量,远远超过可获得的端到端标注数据量,因此语言模型的引入帮助到语义信息的建模。
  2. 常见的几种fusion方法(将seq2seq模型记为TM(翻译模型),language model记为LM(语言模型)):
    1. shallow fusion:
      1. TM 和 LM 分开各自训练,然后在 beam-search 时做得分的加权:
      2. 即 LM 得分权重,通常在开发集上进行多组测试来得到。
      3. 在 Shallow Fusion 中,TM 和 LM 完全独立的,可以随意地更换 LM 而完全不会影响到 TM。比如说模型升级(从 n-gram 到 RNN 到 Transformer),或者领域切换(使用不同来源的文本训练语料进行训练),只要重新调一个就可以了。
    2. deep fusion:
      1. TM 与 LM 各自训练后,添加 FineTune 层进行隐层融合:shallow fusion--学习笔记_第1张图片
      2. 先计算一个门g_t来控制 LM 隐层的输入,然后和 TM 隐层拼接在一起得到融合隐层s_t ^DF,共同计算 softmax。在训练前期,不断更新 v和b,模型收敛后将其固定。从翻译任务的 BLEU 上来看,Deep Fusion 确实比 Shallow Fusion 更好。但是,在实际操作中,无论更新了 TM 还是 LM,都要重新做 Finetune,略繁琐。工业界使用的人并不多。
    3. cold fusion:Cold Fusion 中的 LM 仍然是预训练得到的,而 TM 则在 LM 的帮助下从零开始训练。这样一来,TM 早早地学习如何与 LM 相融,它从已训练好的 LM 获得一部分的语义信息从而更专注于对 Seq2Seq 任务的建模。作者认为,这样的设计帮助 TM 和 LM 更好地分工,节省了“decoder capacity”。(paper:[1708.06426] Cold Fusion: Training Seq2Seq Models Together with Language Models (arxiv.org)
    4. Language Model Distill:借用知识蒸馏的思路,在训练阶段融入语言模型。预测阶段不再进行额外的融合,大大降低了解码开销。 

你可能感兴趣的:(deeplearning,深度学习,人工智能)