首页 > 其他分享 >逐步进入BERT

逐步进入BERT

时间:2022-09-01 08:11:43浏览次数:103  
标签:BERT 训练 标记 任务 进入 逐步 句子 输入

逐步进入BERT

BERT , 代表 双向编码器表示来自 变形金刚 . BERT 由两部分组成: 预训练和微调 G。 BERT 旨在通过联合调节所有层的左右上下文,从未标记的文本中预训练深度双向表示。然后,只需一个额外的输出层就可以对预训练的 BERT 模型进行微调,从而为各种任务创建最先进的模型。 BERT 的一个显着特点是其跨不同任务的统一架构,例如名称实体识别、句子分类和问答。

除了输出层外,预训练和微调都使用相同的架构。相同的预训练模型参数用于为不同的下游任务初始化模型。在微调期间,所有参数都被微调。输入可以是一个句子(用于名称实体识别)或一对句子(用于问答)。在整个工作中,“句子”可以是连续文本的任意跨度,而不是实际的语言句子。 “序列”是指输入到 BERT 的标记序列,它可能是单个或两个打包在一起的句子。在每个输入之前,都会添加一个特殊符号 [CLS]。如果输入是一对,则在其间插入一个特殊的分隔符标记[SEP](例如,分隔问题/答案)。

Fig. 1. Overall structure of BERT: Pre-training and Fine-tuning

建筑学

BERT 是经过训练的 Transformer Encoder 堆栈。想了解Transformer编码器,请参考我之前的帖子: 一步一步进入变压器 .第一个输入标记带有一个特殊的 [CLS] 标记。这里的 CLS 代表分类。每个位置输出一个大小的向量 hidden_​​size (BERT 基地中有 768 个)。对于句子分类示例,我们只关注第一个位置的输出(我们传递了特殊的 [CLS] 标记)。

Fig. 3. BERT is a stack of Transformer Encoders.

就像转换器的编码器一样,BERT 将一系列单词作为输入,这些单词一直在堆栈中向上流动。每一层都应用自我注意,将其结果通过前馈网络传递,然后将其传递给下一个编码器。

Fig. 3. Architecture of Transformer Encoder.

输入表示

为了使 BERT 处理各种下游任务,输入表示能够在一个标记序列中明确表示单个句子和一对句子(例如,h Question、Answer)。它的输入表示是通过对相应的求和来为给定的令牌构造的 令牌嵌入、段嵌入和位置嵌入 .

Fig. 4. BERT input representation. The input embeddings are the sum of the token embeddings, the segmentation embeddings, and the position embeddings.

预训练

BERT 不使用传统的从左到右或从右到左的语言模型来预训练 BERT。相反,我们使用两个无监督任务预训练 BERT:Masked LM 和 Next sentence prediction。

任务 1:Masked LM(语言建模)

我们随机屏蔽一定百分比的输入标记,然后预测那些被屏蔽的标记。此过程称为“掩码 LM”(MLM)。 [MASK] 标记用于替换被屏蔽的单词。缺点是我们在预训练和微调之间造成了不匹配,因为 [MASK] 令牌在微调期间不会出现。为了缓解这种情况,我们并不总是用实际的 [MASK] 标记替换“掩码”单词。相反,我们保留随机抽样一些标记以用随机词替换或保持不变:

Fig. 4. Masking procedure in BERT marked language model.

任务 2:下一句预测 (NSP)

许多重要的下游任务都基于对两个句子之间关系的理解,例如问答 (QA) 和自然语言推理 (NLI),语言建模无法直接捕捉到这些关系。 BERT 为二值化下一句预测任务进行预训练。

为了生成每个训练输入序列,我们从语料库中抽取两段文本,我们将其称为“句子”,尽管它们通常比单个句子长得多(但也可以更短)。第一个句子接收 A 嵌入,第二个句子接收 B 嵌入。 50% 的时间 B 是 A 之后的实际下一个句子,而 50% 的时间是一个随机句子,用于“下一个句子预测”任务。训练损失是均值之和 掩蔽 LM 似然 和平均值 下一句预测可能性 .

微调

对于每个任务,我们将特定于任务的输入和输出插入 BERT 并端到端微调所有参数。在输入端,来自预训练的句子 A 和句子 B 类似于 (1) 释义中的句子对,(2) 蕴涵中的假设-前提对,(3) 问答中的问题-段落对,以及 (4)文本分类或序列标记中的退化文本-∅对。在输出端, 令牌表示被输入输出层 用于令牌级别的任务,例如序列标记或问答。这 [CLS] 表示被送入输出层进行分类 ,例如蕴涵或情感分析。

下图展示了如何为不同的任务适配相同的 BERT 模型:

Fig. 5. BERT is applied to different tasks in the fine-tuning stage such as sentence pair classification, single sentence classification, question answering, and single sentence tagging.

基准数据集包括:

MNLI : Multi-Genre Natural Language Inference 是一项大规模的众包蕴涵分类任务(Williams et al., 2018)。给定一对句子,目标是预测第二个句子相对于第一个句子是蕴涵、矛盾还是中性。

QQP : Quora Question Pairs 是一个二元分类任务,旨在确定 Quora 上提出的两个问题在语义上是否相同。

SST-2: 斯坦福情感树库是一个二元单句分类任务,由从电影评论中提取的句子和人类情感注释组成。

:斯坦福问答数据集 (SQuAD v1.1) 是 100k 众包问答对的集合。

CoNLL-2003: 命名实体识别 (NER) 任务。

下一步

我强烈建议阅读原始论文。您可以找到有关跨不同任务的设置和结果比较的更多详细信息:

BERT:用于语言理解的深度双向转换器的预训练

关于如何在各种任务上微调 BERT 的 TensorFlow 教程,也是如何使用 TPU 进行训练的一个很好的例子:

在 TPU 上使用 BERT 解决 GLUE 任务

预训练 BERT 模型的 Tensorflow 中心,可供下载和使用:

Tensorflow Hub BERT 集合

我希望这篇文章能让你轻松理解 BERT 并开始使用 BERT 来应对你的 NLP 挑战!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/7550/05550108

标签:BERT,训练,标记,任务,进入,逐步,句子,输入
From: https://www.cnblogs.com/amboke/p/16645179.html

相关文章

  • 手把手教你用SPSSAU做多重线性逐步回归
    1.案例背景与分析策略1.1案例背景介绍某研究收集到美国50个州关于犯罪率的一组数据,包括人口、面积、收入、文盲率、高中毕业率、霜冻天数、犯罪率共7个指标,现在我们想考......
  • 接入正式广告之后游戏黑屏无法进入该如何解决?
    ​1、问题描述开发的是一款游戏应用,应用本身接入了华为广告SDK,使用测试广告进行测试已经顺利通过,但是在接入正式广告时,要么就是游戏出现了黑屏并且无法进入游戏,要么就是......
  • 取消Debian上vim右键进入的visual模式
    正常情况下,在vim编辑状态下,通过右键是可以进行拷贝和粘贴的。但是Debian的vim,点击右键后进入了一种visual模式。修改配置文件:usr/share/vim/vim81/defaults.vim(如果低版......
  • 对象进入老年代的4种情况
    1.对象年龄达到阈值后进入老年代默认情况下,对象在新生代经历了15次(CMS默认6,其他回收器默认15,以为4字节最大长度限制,最大值也是15)GC后,便会达到进入老年代的条件,将对象......
  • vue 每次进入页面 生命周期
    生命周期1.vue有哪些生命周期函数有8个 beforeCreate created beforeMount mounted  beforeUpdate updated beforeDestroy destroyed2.一旦进入组件或......
  • linux下无法进入外加移动硬盘文件夹 No such file or directory
    (36条消息)linux下无法进入文件夹Nosuchfileordirectory_Katzelala的博客-CSDN博客_linux无法进入文件夹用Ubuntu系统遇到的一个小错误我们要进入一个文件夹,使用......
  • Bert不完全手册7. 为Bert注入知识的力量 Baidu-ERNIE & THU-ERNIE & KBert
    借着ACL2022一篇知识增强Tutorial的东风,我们来聊聊如何在预训练模型中融入知识。Tutorial分别针对NLU和NLG方向对一些经典方案进行了分类汇总,感兴趣的可以去细看下。这一章......
  • 69BERT
    点击查看代码importmathimportpandasaspdimporttorchfromtorchimportnnfromd2limporttorchasd2l#@saveclassPositionWiseFFN(nn.Module):"""......
  • 69用于预训练BERT的数据集
    点击查看代码importosimportrandomimporttorchfromd2limporttorchasd2l#@saved2l.DATA_HUB['wikitext-2']=('https://s3.amazonaws.com/research.m......
  • 69预训练BERT
    点击查看代码importtorchfromtorchimportnnfromd2limporttorchasd2lbatch_size,max_len=512,64train_iter,vocab=d2l.load_data_wiki(batch_size,......