一、背景信息:
RetroMAE是2022年10月由北邮和华为提出的一种密集检索预训练策略。
RetroMAE主要应用于检索模型的预训练,模型架构为非对称的Encoder-Decode结构。
二、整体结构:
RetroMAE的模型架构为非对称的Encoder-Decode结构。
Encoder部分: 是由类似于BERT的Encoder组成(12层Transformer的Encoder),用于生成句向量。
Decoder部分: 仅有由一层类似于Transformer的Decoder构成,用于重建句子。
1、token级别的预训练:比如MLM或者Seq2Seq,难以获得高质量句向量。
2、对比学习:受限于数据增强的质量,需要大量负样本。
3、自重建方法:不受数据增强跟负样本采样策略的影响,但对对编码质量要求高,训练数据也要求被充分利用到。
RetroMAE中的掩码
在Encoder阶段,对sentence进行15%~30%的mask,通过Encoder得到句子向量的表示(这里用Encoder的[CLS] token表示)。
在Decoder阶段,句子被进一步加大噪音,mask的比例为50%~70%,通过增加mask的比例来提升任务的复杂性。
而整个预训练的任务则为:在encoder阶段,对被掩码的部分进行重构,也就是MLM(Masked Language Modeling),在decoder阶段对整个句子进行重构,整体loss函数为:
三、Encoder模块
假设,句子输入为X;Encoder部分随机mask(15%~30%)后为 X ~ e n c \tilde{X} _{enc} X~enc;Encoder编码器用 Φ e n c ( ) \Phi_{enc}() Φenc()表示。
因此经过Encoder后得到的句子向量: h X ~ ← Φ e n c ( X ~ e n c ) {h} _{\tilde{X}} \gets \Phi_{enc}(\tilde{X} _{enc}) hX~←Φenc(X~enc)
四、Decoder模块
相比于Transformer中的Decoder结构,RetroMAE做了一些改进,并将其称为Enhanced-Decoder。
Enhanced-Decoder的核心想法,为以下两点:
- 可以从输入数据中获取更多信息
- 可以根据不同来源的数据训练模型
因此,Enhanced-Decoder在attention模块同时使用了两个输入流 H 1 、 H 2 H_{1}、H_{2} H1、H2;输入流 H 1 H_{1} H1保留了较多输入数据的信息。
H 1 ← [ h X ~ + p 0 , . . . , h X ~ + p N ] H 2 ← [ h X ~ , e x 1 + p 0 , . . . , e x N + p N ] \begin{matrix} H_{1} \gets [h_{\tilde{X}}+p_{0},...,h_{\tilde{X}}+p_{N}] \\H_{2} \gets [h_{\tilde{X}}, e_{x_{1}}+p_{0},...,e_{x_{N}}+p_{N}] \end{matrix} H1←[hX~+p0,...,hX~+pN]H2←[hX~,ex1+p0,...,exN+pN]
其中,句子输入为X;Decoder部分随机mask(50%~70%)后为 X ~ d e c \tilde{X} _{dec} X~dec; e x i e_{x_{i}} exi表示没有掩码过的词向量; p i p_{i} pi表示对应的位置向量;
此外,因为Transformer中的attention的掩码矩阵是一个的下三角矩阵优势在于增强模型生成能力,而检索通常更关注于模型的表示能力需要看到上下文,因此这里引入了Position-Specific Attention Mask。
继而Enhanced-Decoder的attention层为以下形式:
Q = H 1 W Q Q = H_{1}W_{Q} Q=H1WQ , K = H 2 W K K=H_{2}W_{K} K=H2WK , V = H 2 W V V=H_{2}W_{V} V=H2WV
M i j = { 0 , a t t e n d e d − ∞ , m a s k e d M_{ij}=\left\{\begin{matrix}0,attended \\-∞,masked \end{matrix}\right. Mij={0,attended−∞,masked
A = s o f t m a x ( Q T K d + M ) V A = softmax(\frac{Q^{T}K}{\sqrt{d}}+M) V A=softmax(dQTK+M)V
最终RetroMAE的损失由encoder部分的MLM损失,deocder部分自重建的交叉熵损失两部分相加得到。
L d e c = ∑ x i ∈ X C E ( X i ∣ Φ d e c ( X ~ d e c ) ) L_{dec} = \sum_{x_{i}\in X}^{} CE(X_{i}| \Phi_{dec}(\tilde{X} _{dec})) Ldec=∑xi∈XCE(Xi∣Φdec(X~dec))
L = L e n c + L d e c L = L_{enc}+L_{dec} L=Lenc+Ldec
其中, L e n c L_{enc} Lenc为由encoder部分的损失, L d e c L_{dec} Ldec为由deocder部分的损失,CE为交叉熵损失函数。
Reference
RetroMAE: Pre-Training Retrieval-oriented Language Models Via Masked Auto-Encoder