自然语言处理之预训练模型(二)

之前咱们介绍的都是单一模型的预训练方法,这里介绍一个特殊一点的思路,且不说应用程度怎么样,先看看这个模型的设计思路。

ELECTRA

ELECTRA是使用对抗网路的思路进行预训练的方式。
image-1705644123958
其中生成器,一个小的MLM,就是在[MASK]的位置预测原来的词。
判别器判断的是输入句子中的每个词是否被替换,需要注意的是这里没有下一句的预测任务。接下来我们来看每个模块。

生成器

对于生成器来说,其目的是将带有掩码的输入文本经过多层的Transformer学习到上下文的因变量H, 并还原掩码的位置中的MLM。这里只是预测经过掩码的词,对于某个掩码的位置t,生成器的输入对原文的xtx_{t}的概率为PGRVP^{G} \in R^{|V|},其中V是词表大小。PG(xtx)=Softmax(htGWe)P^{G}(x_{t}|x)=Softmax(h_{t}^{G}W^{e}), 其中WeRV×dW^{e} \in R^{|V| \times d}, 表示词向量矩阵,h表示原文本对应的隐向量表示。这里可以举一个例子,对于原始的输入x=“the chef cooked the meal”。 输入模型为x‘=“[MASK] chef [MASK] the meal”,位置下标为1和3, 最后通过生成器改写后的句子不包含[MASK]的值,然后通过判别器进行判别。

判别器

收到MLM的准确率影响, 通过生成器的采样后句子与原始句子一定是有差别的,判别器就是从采样后的句子中识别那些单词和原始的单词是一致的,就是替换词检测问题,可以通过二分类实现。这里的句子是xsx_{s},经过Transformer模型得到对应的隐层hDh_{D}, 随后,通过一个全连接层映射成一个概率分布,并产生损失梯度传播,从而学习一个很好的判别器。

温馨提示

因为生成器和判别器中间的部分涉及到一个采样,所以判别器并不会直接回传到生成器,因为采样是不可导的。另外,当训练结束后,只需要将判别器进行下游任务的精调,不会再用生成器。

长文本处理

以自注意力的核心Transformer模型进行各个预训练的组成部分,自注意力能够构建序列中各个元素之间的上下文关系,挖掘层次的语义信息,然后自注意力的时空复杂度是O(n2)O(n^{2}),就是时间和空间消耗会随着序列的增长层平方级别成长,这会导致预训练的处理长文本效率低下。传统的处理长文本一般是切分输入文本,其中每份大小设置为预训练模型单次处理的最大长度,最终进行拼接,这种方式显然也不能从根本性解决这个问题。接下来介绍一个模型解决这个问题。

Transformer-XL

Transformer中处理长文本的的方式是切分成固定的块,单独编码每一块,但是块与块之间没有信息交互。
image-1705645777829
容易看出训练阶段和测试阶段存在明显的不匹配的形式。为了优化对长文本的建模,Transformer-XL提出两种改进策略,分别是状态复用的块级别循环和相对位置编码的策略。

状态复用的块级别循环

假设连续的长度为n的块为sT,sT+1s_{T}, s_{T+1}, 第T块的第l层Transformer隐层的输出为htlRn×dh_{t}^{l} \in R^{n \times d},d为隐层的维度,计算第T+1块在第l层的Transformer隐层输出为ht+1lh_{t+1}^{l}.。会有如下的推导过程。

ht+1l1^=[SG(htl1)ht+1l1]qt+1l=ht+1l1Wqkt+1l=ht+1l1^Wkvt+1l=ht+1l1^Wvht+1l=TransformerBlock(qt+1l,kt+1l,vt+1l)\hat{h_{t+1}^{l-1}}=[SG(h_{t}^{l-1}) \bullet h_{t+1}^{l-1}] \\ q_{t+1}^{l}= h_{t+1}^{l-1} W^{q} \\ k_{t+1}^{l}=\hat{h_{t+1}^{l-1}} W^{k}\\ v_{t+1}^{l}=\hat{h_{t+1}^{l-1}} W^{v} \\ h_{t+1}^{l}=Transformer-Block(q_{t+1}^{l},k_{t+1}^{l},v_{t+1}^{l})

其中SG表示停止梯度传播,\bullet表示长维度进行拼接,W表示权重,与传统的Transformer不同是键k和值v依赖拓展上下文的h,以及上一个块的缓存信息。这种状态复用的块级别循环应用于语料库中每个连续的片段,本质是隐层状态产生一个片段级别的循环。这种机制下Transformer利用有效的上下文信息可以超过两个块。ht+1l,ht+1l1h_{t+1}^{l},h_{t+1}^{l-1}之间的训练依赖使得存在向下一层的计算依赖,这与传统的RNN中的同层训练机制是不同的,因此最大可能得依赖长度随块的长度n和层数l增长。通过这个方式就是实现了块之间的信息互通。

相对位置编码

虽然状态复用的块级别循环将不同的块之间的信息联系起来,实际应用中无法区分块的位置信息。为了解决这个问题,应用相对的位置编码后,第i个词和第j个词的注意力aija_{ij}为。
image-1705647190193
w表示权重,vxiv_{x_{i}}表示xix_{i}对应的词向量,R表示相对位置矩阵,是衣蛾不可训练的正弦编码矩阵,其第i行表示相对位置间隔为i的位置向量。

  • a计算xix_{i}xjx_{j}的内容之间的关联信息
  • b计算查询xix_{i}和键xjx_{j}的位置编码矩阵的关联信息,RijR_{i-j}表示两者的相对位置信息
  • c计算xix_{i}的位置编码与键xjx_{j}之间的关联矩阵
  • 计算xix_{i}和键xjx_{j}的位置编码之间的关联矩阵。

总而言之

还有很多根据Transformer-XL改进的变异模型都是为了解决长文本的问题,例如Reformer引入了哈希敏感和可逆的Transformer技术减少模型的内存占用。LongFormer等模型

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×