ELECTRA模型简单介绍

目录

一、整体概要

二、生成器

三、判别器

四、模型训练

五、其它改进


一、整体概要

ELECTRA(Efficiently Learning an Encoder that Classifies Token Replacements Accurately)采用了一种“生成器——判别器”结构,其与生成式对抗网络(Generative Adversarial Net,GAN)的结构非常相似。ELECTRA的整体模型结构如下图所示。

图中可以看到ELECTRA是由生成器(Generator)和判别器(Discriminator)串联起来的一个模型。这两个部分的作用如下。
 
(1)生成器。一个小的掩码语言模型(MLM),即在 [MASK]的位置预测原来的词;
 
(2)判别器。判断输入句子中的每个词是否被替换,即使用替换词检测(Replaced Token Detection,RTD)预训练任务,取代了BERT模型原始的MLM。需要注意的是这里并没有使用下一个句子预测(NSP)任务。
接下来,我们将结合图中的例子,详细介绍生成器和判别器的建模方法。

二、生成器

对于生成器来说,其目的是将带有掩码的输入文本x= x 1, ···,xn ,通过多层Transformer模型学习到上下文语义表示 h = h 1, ···, h n,并还原掩码位置的文本,即BERT中的MLM任务。需要注意的是,这里只预测经过掩码的词,即对于某个掩码位置t,生成器输出对应原文本 xt 的概率P_{}^{G} \in \mathbb{R}_{}^{|V|} (|V|是词表大小):

式中, w^{_{e}^{}}\in \mathbb{R}_{}^{|V|\times d}表示词向量矩阵; h_{t}^{G}表示原文本xt 对应的隐含层表示。
还是以上图为例,原始句子 x = x 1 x 2 x 3 x 4 x 如下:
 
the chef cooked the meal
经过随机掩码后的句子如下,记 M = {1, 3} 为所有经过掩码的单词位置的下标,记 x^{^{m}}=m_{1}x_{2}m_{3}x_{4}x_{5}   为经过掩码后的输入句子,如下所示:
 
[MASK] chef [MASK] the meal
 
那么生成器的目标是将m 1 还原为x 1 (即the),将m 3 还原为x 3 (即cooked)。在理想情况下,即当生成器的准确率为100%时,掩码标记 [MASK] 能够准确还原为原始句子中的对应单词。然而,在实际情况下,MLM的准确率并没有那么高。如果直接将掩码后的句子 x^{m}  输入生成器中,将产生采样后的句子 x^{s}
 
the chef ate the meal
从上面的例子可以看到,m 1 通过生成器成功地还原出单词the,而m3 采样(或预测)出的单词是ate,而不是原始句子中的cooked。
 
生成器生成的句子将会作为判别器的输入。由于通过生成器改写后的句子中不包含任何人为预先设置的符号(如 [MASK]),ELECTRA通过这种方法解决了预训练和下游任务输入不一致的问题。

三、判别器

受MLM准确率的影响,通过生成器采样后的句子 x^{s} 与原始句子有一定的差别。接下来,判别器的目标是从采样后的句子中识别出哪些单词是和原始句子 x 对应位置的单词一样的,即 替换词检测 任务。上述任务 可以通过二分类方法实现。
对于给定的采样句子 x^{s},通过Transformers模型得到对应的隐含层表示 h^{D} = h_{1}^{D}\cdots h_{n}^{D} 。随后,通过一个全连接层对每个时刻的隐含层表示映射成概率。

式中, w\in \mathbb{R}^{d} 表示全连接层的权重(d表示隐含层维度);M表示所有经过掩码的单词位置下标;σ表示Sigmoid激活函数。 假设1代表被替换过,0代表没有被替换过,则生成器采样生成的句子“the chef ate the meal”对应的预测标签如下,可以记为 y = y1···yn,即:
 
00100

四、模型训练

生成器和判别器分别使用以下损失函数训练:

最终,模型通过最小化以下损失学习模型参数:

式中,X 表示整个大规模语料库;\Theta ^{G}  和 \Theta ^{D} 分别表示生成器和判别器的参数。
注意:由于生成器和判别器衔接的部分涉及采样环节,判别器的损失并不会直接回传到生成器,因为采样操作是不可导的。另外,当预训练结束后,只需要使用判别器进行下游任务精调,而不再使用生成器。

五、其它改进

(1)更小的生成器。通过前面的介绍可以发现,生成器和判别器的主体结构均由BERT组成,因此两者完全可以使用同等大小的参数规模。但这样会导致预训练的时间大约为单个模型的两倍。为了提高预训练的效率,在ELECTRA中生成器的参数量要小于判别器。具体实现时会减小生成器中Transformer的隐含层维度、全连接层维度和注意力头的数目。对于不同模型规模的判别器,其缩放比例也不同,通常在1/4~1/2之间。以ELECTRA-base模型为例,缩放比例是1/3。下表展示了
ELECTRA-base 模型的生成器和判别器的各项参数大小对比。
 

为什么是减小生成器的大小,而不是判别器的大小?因为上文讲到生成器只会在预训练阶段使用,而在下游任务精调阶段是不使用的,因此减小生成器的大小是合理的。
 
(2)参数共享 为了实现更灵活的建模目的,ELECTRA首先引入了词向量因式分解方法,通过全连接层将词向量维度映射到隐含层维度。由于上面讲到,ELECTRA使用了一个更小的生成器,因此生成器和判别器之间无法直接进行参数共享。在ELECTRA中,参数共享只限于输入层权重,其中包括词向量和位置向量矩阵。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值