赞
踩
全文共7055字,预计学习时长14分钟
BERT全称是来自变换器的双向编码器表征量(Bidirectional Encoder Representations from Transformers),它是Google于2018年末开发并发布的一种新型语言模型。与BERT模型相似的预训练语言模型例如问答、命名实体识别、自然语言推理、文本分类等在许多自然语言处理任务中发挥着重要作用。
BERT是一种基于微调的多层双向变换器编码器。首先介绍下该变换器的架构,这一点尤为重要。
什么是变换器(Transformer)?
2017年,谷歌发表了一篇题为《你所需要的是注意力》的论文,该论文提出一种基于注意力的结构,以处理与序列模型相关的问题,例如机器翻译。传统的神经机器翻译大多使用循环神经网络(RNN)或卷积神经网络(CNN)作为编码-解码的模型库。然而,谷歌这一基于注意力的变换器模型摒弃传统的RNN和CNN公式。该模型高度并行运行,因此在提高翻译性能的同时,其训练速度也非常快。
进一步阐述变换器模型前,我们先对注意力做个介绍。
什么是注意力(Attention)?
注意力机制可看作模糊记忆的一种形式。记忆由模型的隐藏状态组成,模型选择从记忆中检索内容。深入了解注意力之前,先简要回顾Seq2Seq模型。传统的机器翻译主要基于Seq2Seq模型。该模型分为编码层和解码层,并由RNN或RNN变体(LSTM、GRU等)组成。编码矢量是从模型的编码部分产生的最终隐藏状态。该向量旨在封装所有输入元素的信息,以帮助解码器进行准确的预测。其用于充当模型解码器部分的初始隐藏状态。
Seq2Seq模型的主要瓶颈是需要将源序列的全部内容压缩为固定大小的矢量。如果文本稍长,则很容易丢失文本的某些信息。为解决这个问题,注意力应运而生。注意机制通过使解码器回顾源序列隐藏状态,然后将其加权平均值作为附加输入提供给解码器来缓解该问题。使用注意力,顾名思义,模型在解码阶段选择最适合当前节点的上下文作为输入内容。
注意力与传统的Seq2Seq模型有两个主要区别。
第一,编码器向解码器提供更多数据,并且编码器会向解码器提供所有节点的隐藏状态,而不仅仅是编码器的最后节点的隐藏状态。
第二,解码器不直接将所有编码器提供的隐藏状态作为输入,而是采用选择机制来选择与当前位置最匹配的隐藏状态。为此,它尝试通过计算每个隐藏状态的得分值并对得分进行softmax计算来确定哪个隐藏状态与当前节点相关性最高,这使得隐藏状态的更高相关性具有更大的分数值,不太相关的隐藏状态具有较小的分数值。然后它将每个隐藏状态与其softmax得分相乘,从而放大分数高的隐藏状态,淹没分数低的隐藏状态。该评分练习在解码器侧的每个迭代时间完成。
现在,将注意机制用可视化予以表现,研究注意流程如何进行:
1.注意解码器RNN接收<END>令牌的嵌入和初始解码器隐藏状态。
2.RNN处理其输入,产生一个输出和一个新的隐藏状态向量(h4),并丢弃输入。
3.注意步骤:使用编码器隐藏状态和h4向量来计算该迭代时间的语境向量(C4)。
4.将h4和C4连成一个向量。
5.将这个向量传递给前馈神经网络(一个与模型共同训练的网络)。
6.前馈神经网络的输出即该迭代时间的输出字。
7.重复下一个迭代时间的步骤
回到变换器
变换器模型使用编码器-解码器(encoder-decoder)架构。在谷歌发表的论文中,编码层和解码层都由6个编码器堆叠而成。每个编码器和解码器的内部结构如下:
编码器由两层组成,一个自注意层和一个前馈神经网络。自我关注不仅有助于当前节点关注当前单词,还能助其获取上下文的语义。解码器还包含编码器提到的双层网络,但在两层中间还有一个注意层,以帮助当前节点获得需要注意的关键内容。
以下是变换器架构的详细结构:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。