论文阅读笔记 Copy is all you need

题目 Copy is All You Need
论文链接 https://arxiv.org/abs/2307.06962
作者单位 腾讯AI lab,北理工
文章类型 短文

一种加速解码和提高生成质量的方法。

介绍

传统的自回归模型是逐个得到next token在一个固定词表上的分布,再用一定的解码策略选择的。本文提出了phrase的概念,可以是长度为1或更大的文本段,将这些文本段转变为向量表示,然后解码时利用向量检索来复制这些文本段。

这种方法的优点如下:

  1. phrase可能比单个token更准确。
  2. phrase的来源——文本集合可以随时更新,即插即用。即知识源可以变化,更有利于做domain-specific的事情。且对于更大的文本集合是training-free的。
  3. 加速解码。

方法

传统的生成如下:

这里原文说:hiRd=PrefixEncoder(x<i)h_i∈R^d=PrefixEncoder(x_{<i})vwv_w is the context-independent token embedding representing the token ww

我的理解是,hih_i是第 i 个位置的last hidden state,vwv_w就是最后Transformer接的那个映射到词表上的MLP中的一行(或者一列?GPT这里的MLP直接拿的是token embedding矩阵,也就是如下图)。

作者提出了CoG(Copy-Generator),用动态变化的文本集合(每个元素是一个文本片段——phrase)来代替固定的词表,且这里的 phrase 是 context-sensitive 的。

假设得到一个文本集合{D1,...Dn}\{D^1, ... D^n\},将其中所有的 phrase 组成文本集合 P。CoG包含三个部分:prefix encoder、phrase encoder(上下文有关)和token embeddings的集合(上下文无关)。

模型结构

Prefix Encoder

和传统的类似,使用最后一个token的hidden state作为prefix的表示qiq_i

Phrase Encoder

主要计算所有phrase的向量表示。对于一个document={t1,...,tm}document = \{t_1,...,t_m\} ,使用双向Transformer获得各个token的上下文表示DRm×dtD \in R^{m \times d_t},然后使用两个MLP,分别将DD传入,得到Dstart,DendRm×d2D_{start},D_{end} \in R^{m \times \frac{d}{2}}。对于文档中 [s:e] 的 phrase(我的理解就是ts,...,tet_s,...,t_e),最后的表示是:

PhaseEncoder(s,e,D)=[Dstart[s];Dend[e]]RdPhaseEncoder(s,e,D)=[D_{start}[s];D_{end}[e]] \in R^d

这种计算方法的优点是:离线计算,且只需要保存token的表示,而不是所有phrase的表示。

注意,有个Reviewer问为什么没有处理重复短语,这是因为把它们视为不同的短语(因为它们通常表示不同)。

Context-Independent Token Embeddings

为了保持原有的能力,所以把原来词表的上下文无关表示也加入进来。

在得到phrase的表示pkp_k和prefix的表示qiq_i后,概率计算变成点积,即:

p(kx<i)exp(pkqi)p(k|x_{<i}) \propto exp(p_k·q_i)

然后就可以使用向量检索来搜索了。

推理过程如下:

训练

phrase的选取:对于一个文档,从左到右分段,如果在其他文档中能找到这 i 个 token 作为子序列,则切开(贪婪地匹配)。如果找不到匹配则作为单个标记入选。

Loss定义为:

pkp_k是文档DD^*第k个phrase,在另一个文档DkD_k能找到,于是拿PhraseEncoder(sk,ek,Dk)PhraseEncoder(s_k,e_k,D^k)作为它的表示。

注意上式的PkP_k不是全集,而是文档DkD_k切出来的phrase集合。qkq_k则是这个phrase在DD^*的前缀表示。

然后还定义一个token级别的自回归loss(下面的DiD_i指的是DD^*的第 i 个token):

training loss就是这两部分加起来。

实验

懒得记录了,大概就是测解码速度、语言建模(给出前缀生成后面的内容)。

在检索短语时是先用前缀来从文档中检索出top-k个相关文档,再在这些文档的短语集合中向量检索的。

训练只训BERT的Phrase Encoder,Prefix Encoder使用GPT2。

有意思的是这个:Domain Adaption on Law-MT

在WikiText-103的数据集上训练,再在法律文件英德翻译数据集Law-MT上测试(知识源使用其训练集,但模型没有fine-tune),结果算是不错:

然后也能扩大短语集合使用,即在小数据集上训练,但是推理时知识源使用大数据集。


论文阅读笔记 Copy is all you need
https://bebr2.com/2023/08/23/论文阅读笔记 Copy is all you need/
作者
BeBr2
发布于
2023年8月23日
许可协议