首发于暗号

NLP - Retrieval-Augmented Text Generation

结合

在生成中结合检索信息的方式

非参数化

[2020-ICLR] Generalization through Memorization Nearest Neighbor Language Models

[2021-ICLR] Nearest Neighbor Machine Translation

  1. 利用KNN做生成的概率修正,效果十分好,原因:
    1. 统计意义,缓解过拟合
    2. 参考SimCLR,缓解过拟合
    3. 长尾问题,缓解欠拟合
  2. 证明了一件事,显示的知识存储(数据库),效果优于隐式的知识存储(参数)

3. 缺点在于:非参数化的修正往往是Token-Level,我们想要Sentence-Level,实现更High-Level的控制

4. 延申:

[2021-ACL] Adaptive Nearest Neighbor Machine Translation

对近邻数据进行过滤,选择较优的近邻数,挺妙的

[2021-EMNLPF] Non-Parametric Unsupervised Domain Adaptation for Neural Machine Translation

适用于单语种数据库,想法直观,但似乎并不太work,效果不如Back-Translation

参数化

Cross-Attention

[2020-NIPS] Retrieval-augmented generation for knowledge-intensive nlp tasks

[2021-EACL] Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering

2021 - Improving Language Models by Retrieving from Trillions of Tokens

  1. Cross-Attention的参数量大,因此迁移性差
  2. 最全面地建模了生成内容和检索信息间的联系,因此上限应该最高

Copy-Gate

  1. Copy优雅地建模了先验知识,即生成的Token,许多直接来自于检索语料。
  2. 相比于Cross-Attention参数化较少,因此应该能有更好的迁移性

Skeleton Extraction

[2019-ACL] Skeleton-to-Response Dialogue Generation Guided by Retrieval Memory

  1. 对检索到的信息进行后处理,如消去无关实体信息等

优化

检索模块与生成模块的联合训练问题

分开优化

  1. 在许多模型中,即使检索模块和生成模块分开优化,也能取得很不错的效果,如:

[2021-EACL] Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering

2021 - Improving Language Models by Retrieving from Trillions of Tokens

2. 笔者的猜想是,在检索数量较多,能成功召回相关信息时,检索模块的最优并不重要,只要模型能学好对检索内容的利用,而检索的数量多,噪声大,反过来似乎还能加强模型利用检索内容的能力:)

这个实验也说明了,在Open QA上的端到端优化,带来的提升很小

概率展开

以检索文章为随机变量全概率展开

  1. 其问题在于每次仅能Condition在一个检索文章上生成,因此会非常依赖于检索模块的性能,效果也不如直接对所有检索文章做Cross-Attention,在多篇文章中都有类似的观点。
  2. 计算麻烦,Decoding要进行N次,N表示检索的文章数。不仅如此,Inference阶段Beam Search的方式更繁杂

偏置优化

[2020-NIPS] Pre-training via paraphrasing

  1. 将检索的相关性引入到下游Cross-Attention中,从而实现端到端的优化,这种方法天然适用于Condition在多个检索信息的情况

建模为隐变量

[2022-ICLR] Hindsight Posterior-guided training of retrievers for improved open-ended generation

  1. 依据后验概率分布,检索相关信息,从而提升在训练过程中检索信息的质量,质量越高,模型越依赖于检索信息,从而增加了模型Grounding的能力
  2. Grounding的能力在开放式生成,One-to-Many的场景下很有意义,能有效缓解安全回复,增加可控性

应用

引入知识

  1. 引入知识图谱
  2. 引入无监督语料

迁移学习

  1. 设计特定检索指标
  2. 采用特定的数据库
编辑于 2022-02-24 15:28