一、RetroMAE框架简介
目前主流的语言模型的预训练任务都是token级别的,比如MLM或者Seq2Seq,但是这种训练任务难以让模型获得一个高质量的基于句子级别的句向量,这限制了语言模型在检索任务上的潜力。因此,有学者提出了RetroMAE预训练框架,它主要用于提升模型的在句子层级的语义表征能力。该框架基于经典的掩码自编码器(Masked Auto-Encoder, MAE)架构进行设计,其核心思想是在输入文本中进行掩码操作,然后让模型尝试恢复原始文本,以此学习到文本的深层语义结构。论文主要对该框架的encoder和decoder部分进行了介绍。
1、 Encoder
RetroMAE预训练框架的encoder为一个类似于BERT的编码器。主要策略是:给定一个句子输入X,随机mask(一般采用中等的mask比例,如15%~30%,可以保留原句大部分信息)掉其中一小部分token后得到句向量。
在这个过程中,输入的文本序列会被随机地“掩码”掉一部分(通常用特定的标记如[MASK]替换掉原文本的部分token),然后模型需要预测这些被掩码位置的原始token。这种方法迫使模型理解和学习上下文之间的依赖关系,从而学习到高质量的语义表征。特别地,它只利用了CLS(分类标记)token的隐藏状态向量作为整个输入序列的语义表示。这意味着模型的输出是一个整体的语义向量,用于捕获序列的整体意义。
2、 Decoder
RetroMAE预训练框架的decoder为一个一层transformer的解码器。为了优化传统的decoder只能学习特定位置mask 的token向量的问题,这里提出了一个Enhanced Decoding的策略。如下图所示:
给定一个句子输入X,生成两个不同的输入流:H1(句向量+位置向量)和H2(句向量,token向量+位置向量,这里的token向量没有被mask)。然后引入特定位置的注意力掩码矩阵M(随机生成的下三角矩阵,对角线为0,第一行全为1,其余位置被随机mask,即赋值为0,一般采用激进的mask比例,如50%~70%,从而使得解码任务变得极具挑战性),使H1中每个token向量去H2中查找比较重要的上下文(确保一定看不到自身token,但一定能看到初始token向量,即encoder所产出的CLS句向量的信息),最后得到每个token的context vector。
该过程旨在更充分地利用输入序列中的每个token的嵌入信息,将掩码后的文本序列和其他未掩码token的embedding结合起来,通过拼接或者其他融合机制,送入解码器来重建原始文本。这样的设计能够使得模型不仅学习到全局的语义信息,还能更好地理解局部的词汇和上下文关系,以提高模型的表达能力和细节捕捉能力。
不过,由于RetroMAE独特的decoder方式,使得其只能针对Bert和RoBERTa模型进行预训练。
二、基于RetroMAE的预训练结果
基于Bert和RoBERTa系列的模型,使用RetroMAE+悟道数据进行了预训练的实验,并采用cmteb榜单测试集进行测试,可以得到如下结果:
model_name |
average |
retrieval |
reranking |
chinese-bert-afterPretrain |
39.67% |
38.76% |
36.47% |
roberta-afterPretrain |
34.52% |
26.55% |
36.18% |
xlm-roberta-xl-base |
21.05% |
2.75% |
31.66% |
chinese-bert-base |
21.27% |
2.87% |
29.18% |
可以看出,RetroMAE预训练对于chinese-bert和roberta基座模型来说均有15%-18%的提升,说明RetroMAE可以较好的提升向量模型的基础能力。