公司注销了网站备案的负责人,昆山做网站公司有哪些,关于网站开发技术,wordpress app 生成6摘要 以往的预训练语言表示应用于下游任务时的策略有基于特征和微调两种。其中基于特征的方法如ELMo使用基于上下文的预训练词嵌入拼接特定于任务的架构#xff1b;基于微调的方法如GPT使用未标记的文本进行预训练#xff0c;并针对有监督的下游任务进行微调。 但上述两种策略…摘要 以往的预训练语言表示应用于下游任务时的策略有基于特征和微调两种。其中基于特征的方法如ELMo使用基于上下文的预训练词嵌入拼接特定于任务的架构基于微调的方法如GPT使用未标记的文本进行预训练并针对有监督的下游任务进行微调。 但上述两种策略都使用从左到右的架构每个token只能处理self-attention层中的前一个token这种限制在将基于微调的方法应用于问答等token级任务时可能非常有损性能。故改进为
使用掩码语言模型MLM预训练基于transformer的双向编码器得到的预训练表示可以改进以往基于单向性约束的GPT微调方法证明了双向预训练对语言表示的重要性BERT的预训练表示减少了许多工程对特定任务模型架构的需求对其微调后的表示模型在大量句子级和标记级任务上实现了最先进的性能超过了许多特定于任务的体系结构
框架
模型架构 BERT是一个多层双向Transformer编码器故定义Transformer层数为 L L L隐层维度为 H H H自注意力头数为 A A A。实验定义了 B E R T B A S E ( L 12 , H 768 , A 12 , T o t a l P a r a m e t e r s 110 M ) BERT_{BASE}(L12,H768,A12, Total Parameters110M) BERTBASE(L12,H768,A12,TotalParameters110M) B E R T L A R G E ( L 24 , H 1024 , A 16 , T o t a l P a r a m e t e r s 340 M ) BERT_{LARGE}(L24,H1024,A16, Total Parameters340M) BERTLARGE(L24,H1024,A16,TotalParameters340M)两种尺寸的模型。
输入/输出表示方法 对于输入文本序列使用带有30000个token词汇的WordPiece embedding对序列分片形成输入token序列token序列的第一个token指定为分类token [ C L S ] [CLS] [CLS]用于作分类任务的聚合序列表示。由于输入文本可以为单个句子或句子对单个句子可以简单表示但为了能在一个token序列中无歧义地表示句子对采用一个特殊的token [ S E P ] [SEP] [SEP]将句子分开。 随后对分片打包好的序列计算其token embedding并累加可学习嵌入position embedding和segment embedding得到嵌入 E E E。其中position embedding用于学习token间的相对位置segment embedding用于学习token属于句子A或句子B。整体流程如上图。 [ C L S ] [CLS] [CLS]的最终隐层向量为 C ∈ R H C \in \R^H C∈RH其余 i t h i^{th} ith个token的最终隐层向量为 T i ∈ R H T_i \in \R^H Ti∈RH。
预训练 Masked LM 对于掩码语言模型任务为了训练网络的双向表示随机mask一定比例的输入token并记为 [ M A S K ] [MASK] [MASK]然后让模型预测这些被mask的token与masked token相对应的最终隐层向量通过softmax得到最终预测分布。在所有实验中随机屏蔽比例设为15%。 上述设置的缺点是预训练和微调之间存在gap因为在微调期间不会出现 [ M A S K ] [MASK] [MASK]token故实际使用并不是简单的用 [ M A S K ] [MASK] [MASK]token替换mask的单词。因为训练数据生成器会随机选择15的token进行预测如果选择 i t h i^{th} ithtoken将会替换为 [ M A S K ] [MASK] [MASK]token(80概率)随机token(10概率)不变(10概率) 损失定义为 i t h i^{th} ithtoken 相对应的最终隐层向量 T i T_i Ti与原始token的交叉熵。整体流程如上图左。
Next Sentence Prediction (NSP) 对于下一个句子预测任务如问答Question Answering, QA和自然语言推理Natural Language Inference, NLI都是基于理解两个句子之间的关系而语言建模无法直接捕捉到这些关系故设计一个二值分类任务用于预训练。具体为当为每个预训练示例选择句子对时50的概率为A之后的实际下一个句子标签为IsNext50的概率为语料库中的随机句子标签为NotNext。如上图左 C C C用于计算分类结果 N S P NSP NSP。
预训练数据 预训练语料库使用BooksCorpus8亿单词和只提取文本段落忽略列表、表格和标题的英语维基百科2500亿单词。
微调 对于单个文本或文本对Transformer中的自注意力机制允许BERT通过替换合适的输入/输出格式对下游任务建模。故对于任意下游任务只需将特定于任务的输入和输出插入BERT中并对所有参数进行端到端的微调。 对于输入预训练句子对的句子A和句子B格式类似于句子释义中的句子对句子蕴含中的句子对问答中的句子对文本分类或序列标注中的句子对。对于输出token表示形式可以完成token级任务如序列标记或问题回答。而 [ C L S ] [CLS] [CLS]表示形式可以进行分类如句子蕴含或情感分析。 故输入输出都可对应上述格式进行下游任务转换及微调参数。
对比实验
GLUE 本实验对GLUE进行微调使用 C C C作为聚合表示。微调过程中引入分类层权重 W ∈ R K × H W \in \R^{ K×H} W∈RK×H其中 K K K是类别数量分类损失定义为 l o g ( s o f t m a x ( C W T ) ) log(softmax(CW^T )) log(softmax(CWT))。 使用32的batch size对所有GLUE任务的数据进行3个epoch的微调。对于每个任务最佳的微调学习率(在5e-5、4e-5、3e-5和2e-5中)。 对于 B E R T L A R G E BERT_{LARGE} BERTLARGE发现微调在小型数据集上有时不稳定因此运行了几次随机重启并选择了最佳模型。对于每次随机重启使用相同的预训练checkpoint但执行不同的微调数据打乱和分类器层初始化。 实验结果如上图 B E R T B A S E BERT_{BASE} BERTBASE和 B E R T L A R G E BERT_{LARGE} BERTLARGE在所有任务上的表现都大大超过了以往系统与之前的技术水平相比分别获得了4.5和7.0的平均精度提高。对于MNLI任务BERT获得了4.6的绝对精度提升。 B E R T L A R G E BERT_{LARGE} BERTLARGE在所有任务中明显优于 B E R T B A S E BERT_{BASE} BERTBASE特别是在训练数据很少的任务中。
SQuAD v1.1 斯坦福问答数据集(SQuAD v1.1)是一个有10万组问题/答案对的集合。给定一个问题和一篇来自维基百科的包含答案的文章任务是预测答案在文章中的文本范围。 如图1右在问答任务中将问题和文章打包为单个输入序列问题使用 A embedding文章使用B embedding。在微调过程中引入开始向量 S ∈ R H S ∈ R^ H S∈RH和结束向量 E ∈ R H E ∈ R ^H E∈RH。单词 i i i为答案范围开始的概率定义为通过 T i T_i Ti和 S S S 的点乘加对文章中所有词的softmax即 P i e S ⋅ T i ∑ j e S ⋅ T i P_i\frac {e^{S \cdot T_i}} {\sum_j e^{S \cdot T_i}} Pi∑jeS⋅TieS⋅Ti 答案的末尾 j j j的概率类似从位置 i i i到位置 j j j的候选评分定义为 S ⋅ T i E ⋅ T j S·T_iE·T_j S⋅TiE⋅Tj且 j ≥ i j≥i j≥i。训练目标是正确开始位置向量和结束位置向量的对数似然的和。微调进行3个epoch学习率为5e-5batch size为32。在算法中使用适度的数据增强首先在TriviaQA上进行微调然后再对SQuAD进行微调。 上图为实验结果表现最好的算法比之前最优nlnet高出1.5 F1 single BERT高出QANet1.3 F1。 single BERT模型在F1分数方面优于之前顶级集成算法。在没有TriviaQA微调数据的情况下BERT也只损失了0.1-0.4 F1仍然大大超过了所有现有算法。
SQuAD v2.0 SQuAD 2.0任务在提供的文章上允许出现长答案从而扩展了SQuAD 1.1的问题定义让问题更具有现实意义。 实验采用了类似的方法在这个任务上扩展SQuAD v1.1 BERT微调模型将没有答案的问题处理为答案范围为起始和终止都在 [ C L S ] [CLS] [CLS]token上可能的起始终止回答范围从而扩展到包含 [ C L S ] [CLS] [CLS]token的位置。对于预测而言定义没有答案的分数为 s n u l l S ⋅ C E ⋅ C s_{null}S \cdot C E \cdot C snullS⋅CE⋅C最好的非空答案non-null分数为 s ^ i , j max j ≥ i S ⋅ T i E ⋅ T j \hat s_{i,j}\max_{j \ge i}S \cdot T_i E \cdot T_j s^i,jmaxj≥iS⋅TiE⋅Tj 若 s ^ i , j s n u l l τ \hat s_{i,j} s_{null}\tau s^i,jsnullτ则预测结果非空阈值 τ \tau τ通过在测试集上最大化F1选择。 实验没有使用TriviaQA数据集预训练采用batch size为48和学习率为5e-5微调2个epochs。 上图为实验结果与之前的最佳系统相比F1值提高了5.1。
SWAG 对抗性生成(SWAG)数据集包含113k个句子对补全示例实验模型的基础常识推理能力。给定一个句子任务是在四个选项中选择最合理的下一句。 在SWAG数据集上微调时每个句子对构建4个输入序列每个序列拼接了给定句子句子A和可能的下一句句子B。引入的唯一特定于任务的参数是一个向量其和 [ C L S ] [CLS] [CLS]token点乘再通过softmax层得到归一化的向量。 上为实验结果 B E R T L A R G E BERT_{LARGE} BERTLARGE的性能比ESIMELMo提高27.1比GPT提高8.3。
消融实验
Effect of Pre-training Tasks 实验评估两项预训练目标证明BERT的深度双向性的重要性评估过程中使用了和 B E R T B A S E BERT_{BASE} BERTBASE完全相同的预训练数据微调策略和超参数。 No NSP预训练过程采用MLM但不采用NSP任务的双向模型。 LTR No NSP采用标准的Left-to-Right (LTR) LM训练的模型不采用MLM左性约束也作用在微调阶段因为不采用这种策略会导致预训练/微调的gap而导致下游性能受损且不采用NSP任务进行预训练。除了训练采用了更大的数据集不同的输入表征和fine tuning策略这个模型和GPT非常类似。 上图为实验结果观察到移除NSP任务将显著地降低QNLIMNLISQuAD 1.1上的性能。LTR No NSPLTR模型在所有任务上都比MLM模型要差在MRPC和SQuAD上性能大幅下降。 对于SQuAD任务LTR要在token预测上表现极差这是因为token-level的隐藏状态没有收到右边的语境。其次在LTR系统顶层增加了一个随机初始化的BiLSTM来弥补性能观察到确实显著地提升SQuAD上的结果但是结果依然要远远差于预训练的双向模型BiLSTM结构对GLUE任务上甚至有害。 另外意识到类似ELMo可以分别训练LTR和RTL模型自左向右和自右向左然后通过将两组表征拼接在一起。但是这样需要单独双向模型两倍的计算量且对与QA一类的任务违反常识RTL模型不可能根据回答来解释问题而且这明显要弱于深度双向模型因为深度双向模型可以在每一层同时利用双向语境。
Effect of Model Size 本实验研究不同模型尺寸在微调任务上的精度。实验采用不同的层数、隐藏尺寸数、注意力头数配比上训练了一组BERT模型和之前的描述采用了完全相同的超参数和训练策略。 实验结果如上图实验选择了5组随机重启微调模型均值作为结果。可以看到在4个数据集上获得严格的性能提升。另外发现即使是在和现有的文献中相比已经非常大的模型上也能够取得非常大的性能提升。 实验证明随着模型尺寸的增加在大规模数据集上的任务比如机器翻译和语言模型上将会不断地获得模型性能的提升。同时也首次证明了巨大的模型尺寸在小规模数据集任务上微调也能获得巨大地性能提升说明模型已经被充分地预训练了。
Feature-based Approach with BERT 上述实验的所有BERT结果都使用了微调方法即在预训练模型中添加一个简单的分类层并在下游任务上联合微调所有参数。但是基于特征的方法直接从预训练模型中提取固定特征相比于微调具有一定的优势。首先不是全部任务可以很容易地由Transformer编码器架构表示因此需要添加特定于任务的模型架构其次基于特征的方法只需预先进行一次预训练就可以直接运行在这种表示之上的模型。 本实验通过将BERT应用于CoNLL-2003命名实体识别(NER)任务来比较这两种方法。 在BERT的输入中使用case-preserving WordPiece模型并包含数据提供的最大化的文档上下文并将其表述为标记任务但在输出中不使用CRF层。使用第一个 sub-token的表示作为NER标签集上token-level分类器的输入。 为了削弱微调方法实验应用基于特征的方法从一个或多个层中提取特征值而无需微调BERT的任何参数。这些上下文嵌入被用作分类层之前随机初始化的两层768维BiLSTM的输入。 实验结果如上图表现最好的基于特征方法拼接了预训练Transformer的最后四层隐藏层的token表示与微调整个模型相比只降低了0.3 F1。这表明BERT对于微调和基于特征的方法都是有效的。
详细配置
Comparison of BERT, ELMo, and OpenAI GPT 上图比较了ELMo、OpenAI GPT和BERT的结构。BERT和GPT都是微调方法而ELMo是基于特征的方法。GPT在大型文本语料库上采用了LTR Transformer LMBERT和GPT中的核心不同在于双向性训练任务其他一些的不同有
GPT在BooksCorpus800M词而BERT在BooksCorpus800M词和Wikipedia2500M词上训练得到GPT采用了一种句子分隔符 [ S E P ] [SEP] [SEP]和分类器token [ C L S ] [CLS] [CLS]这些只在微调阶段使用而BERT则在预训练过程中学习 [ S E P ] [SEP] [SEP] [ C L S ] [CLS] [CLS]和句子 A/B embeddingGPT训练1M步batch size为32000词BERT也训练1M步但batch size为128000词GPT对所有的微调采用相同的学习率5e-5而BERT采用了在测试集上表现最好的作为任务相关的微调学习率
Illustrations of Fine-tuning on Different Tasks 上图为不同任务上BERT的微调表示。在所有任务中(a、b是sequence level的任务(c和d是token level的任务。在图中E表示输入embedding T i T_i Ti表示token i i i的语境表示 [ C L S ] [CLS] [CLS]是分类输出的特殊符号 [ S E P ] [SEP] [SEP]是分割非连续token序列的特殊符号。
Effect of Number of Training Steps 上图显示了MNLI测试精度实验为在一个预训练k步的checkpoint上进行微调的结果。观察到 B E R T B A S E BERT_{BASE} BERTBASE在1M步上比500k步上提高1%的精度MLM模型比LTR模型收敛的稍微慢一些但MLM的绝对精度几乎是在瞬间就超过了LTR模型。
Ablation for Different Masking Procedures 上图为不同masking策略的对照实验其中MASK表示将目标token用 [ M A S K ] [MASK] [MASK]符号进行替换SAME表示保持token不变RND表示随机替换。左边部分的数字表示MLM预训练中所采用的策略的概率BERT采用了80%10%10%右边的部分表示结果。对于feature-based的方法将最后4层的BERT的输出作为特征。 可以看到微调方法对于不同masking策略有很好的鲁棒性。只使用MASK策略在NER数据集上使用基于特征的方法会有问题。只采用RND策略会大幅降低性能。
reference
Devlin, J. , Chang, M. W. , Lee, K. , Toutanova, K. . (2018). Bert: pre-training of deep bidirectional transformers for language understanding.