【第18篇】Bert论文翻译,当上项目经理才知道

语言模型预训练已被证明可有效改善许多自然语言处理任务(Dai 和 Le,2015;Peters 等,2018a;Radford 等,2018;Howard 和 Ruder,2018)。 这些包括句子级任务,例如自然语言推理(Bowman 等人,2015 年;Williams 等人,2018 年)和释义(Dolan 和 Brockett,2005 年),旨在通过整体分析来预测句子之间的关系,如 以及令牌级别的任务,例如命名实体识别和问答,其中模型需要在令牌级别产生细粒度的输出(Tjong Kim Sang 和 De Meulder,2003 年;Rajpurkar 等人,2016 年)。

将预训练的语言表示应用于下游任务有两种现有策略:基于特征和微调。 基于特征的方法,例如 ELMo(Peters 等人,2018a),使用特定于任务的架构,其中包括预训练的表示作为附加特征。 微调方法,例如生成式预训练变换器 (OpenAI GPT) (Radford et al., 2018),引入了最少的任务特定参数,并通过简单地微调所有预训练参数来对下游任务进行训练。 这两种方法在预训练期间共享相同的目标函数,它们使用单向语言模型来学习通用语言表示。

我们认为当前的技术限制了预训练表示的能力,特别是对于微调方法。 主要限制是标准语言模型是单向的,这限制了可以在预训练期间使用的架构的选择。 例如,在 OpenAI GPT 中,作者使用从左到右的架构,其中每个令牌只能关注 Transformer 的自注意力层中的先前令牌(Vaswani 等,2017)。 这种限制对于句子级任务来说是次优的,并且在将基于微调的方法应用于诸如问答之类的令牌级任务时可能非常有害,在这种情况下,从两个方向合并上下文至关重要。

在本文中,我们通过提出 BERT:来自 Transformers 的双向编码器表示来改进基于微调的方法。 BERT 通过使用“掩码语言模型”(MLM)预训练目标来缓解前面提到的单向性约束,其灵感来自 Cloze 任务(Taylor,1953)。 屏蔽语言模型从输入中随机屏蔽一些标记,目标是仅根据其上下文来预测屏蔽词的原始词汇 id。 与从左到右的语言模型预训练不同,MLM 目标使表示能够融合左右上下文,这使我们能够预训练深度双向 Transformer。 除了掩码语言模型,我们还使用“下一句预测”任务,联合预训练文本对表示。 我们论文的贡献如下:

  • 我们证明了双向预训练对语言表示的重要性。 与 Radford 等人不同。 (2018) 使用单向语言模型进行预训练,BERT 使用掩码语言模型来启用预训练的深度双向表示。 这也与 Peters 等人的观点相反。 (2018a),它使用独立训练的从左到右和从右到左 LM 的浅层级联。

  • 我们表明,预训练的表示减少了对许多精心设计的任务特定架构的需求。 BERT 是第一个基于微调的表示模型,它在大量句子级和令牌级任务上实现了最先进的性能,优于许多特定于任务的架构。

  • BERT 提高了十一项 NLP 任务的最新技术水平。 代码和预训练模型可从 https://github.com/google-research/bert 获得。

2 相关工作

=================================================================

预训练通用语言表示的历史悠久,我们在本节中简要回顾了最广泛使用的方法。

2.1 无监督的基于特征的方法


几十年来,学习广泛适用的单词表示一直是一个活跃的研究领域,包括非神经(Brown 等,1992;Ando 和 Zhang,2005;Blitzer 等,2006)和神经(Mikolov 等,2013) ; Pennington et al., 2014) 方法。 预训练的词嵌入是现代 NLP 系统不可或缺的一部分,与从头学习的嵌入相比,具有显着的改进(Turian 等,2010)。 为了预训练词嵌入向量,使用了从左到右的语言建模目标(Mnih 和 Hinton,2009),以及在左右上下文中区分正确和错误单词的目标(Mikolov 等,2013)。

这些方法已被推广到更粗粒度,例如句子嵌入(Kiros 等人,2015 年;Logeswaran 和 Lee,2018 年)或段落嵌入(Le 和 Mikolov,2014 年)。 为了训练句子表示,先前的工作使用目标来对候选下一个句子进行排名(Jernite 等人,2017 年;Logeswaran 和 Lee,2018 年),给定前一个句子的表示,从左到右生成下一个句子单词(Kiros 等人 al., 2015),或去噪自编码器派生的目标 (Hill et al., 2016)。

ELMo 及其前身 (Peters et al., 2017, 2018a) 沿不同的维度概括了传统的词嵌入研究。他们从从左到右和从右到左的语言模型中提取上下文敏感的特征。每个标记的上下文表示是从左到右和从右到左表示的串联。在将上下文词嵌入与现有的特定任务架构相结合时,ELMo 提升了几个主要 NLP 基准(Peters 等人,2018a)的最新技术水平,包括问答(Rajpurkar 等人,2016 年)、情感分析(Socher 等人,2016 年) ., 2013) 和命名实体识别 (Tjong Kim Sang 和 De Meulder, 2003)。梅拉姆德等人。 (2016) 提出通过使用 LSTM 从左右上下文预测单个单词的任务来学习上下文表示。与 ELMo 类似,他们的模型是基于特征的,而不是深度双向的。费杜斯等人。 (2018) 表明完形填空任务可用于提高文本生成模型的鲁棒性。

2.2 无监督微调方法


与基于特征的方法一样,第一个在这个方向上的工作仅从未标记的文本中预训练词嵌入参数(Collobert 和 Weston,2008)。

最近,产生上下文标记表示的句子或文档编码器已经从未标记的文本中进行了预训练,并针对有监督的下游任务进行了微调(Dai 和 Le,2015 年;Howard 和 Ruder,2018 年;Radford 等人,2018 年)。 这些方法的优点是需要从头开始学习的参数很少。 至少部分是由于这一优势,OpenAI GPT(Radford 等人,2018 年)在 GLUE 基准测试(Wang 等人,2018a)的许多句子级任务上取得了先前最先进的结果。 从左到右的语言建模和自动编码器目标已用于预训练此类模型(Howard 和 Ruder,2018 年;Radford 等人,2018 年;Dai 和 Le,2015 年)。

2.3 从监督数据中迁移学习


也有工作显示从具有大型数据集的监督任务进行有效转移,例如自然语言推理(Conneau 等人,2017)和机器翻译(McCann 等人, 2017)。 计算机视觉研究也证明了从大型预训练模型中进行迁移学习的重要性,其中一个有效的方法是微调使用 ImageNet 预训练的模型(Deng 等人,2009 年;Yosinski 等人,2014 年)。

3 Bert

=================================================================

我们将在本节介绍 BERT 及其详细实现。 我们的框架有两个步骤:预训练和微调。 在预训练期间,模型在不同预训练任务上的未标记数据上进行训练。 对于微调,BERT 模型首先使用预训练的参数进行初始化,然后使用来自下游任务的标记数据对所有参数进行微调。 每个下游任务都有单独的微调模型,即使它们使用相同的预训练参数进行初始化。 图 1 中的问答示例将作为本节的运行示例。

image-20211020132913795

BERT 的一个显着特点是其跨不同任务的统一架构。 预训练架构和最终下游架构之间的差异很小。

模型架构 BERT 的模型架构是基于 Vaswani 等人描述的原始实现的多层双向 Transformer 编码器。 (2017) 并在 tensor2tensor 库中发布。1 由于 Transformers 的使用已经变得普遍,而且我们的实现几乎与原始版本相同,我们将省略模型架构的详尽背景描述,并请读者参考 Vaswani 等人。 (2017) 以及优秀的指南,如“The Annotated Transformer”。

在这项工作中,我们将层数(即 Transformer 块)表示为 L,将隐藏大小表示为 H,将自注意力头的数量表示为 A我们主要报告两种模型大小的结果: B E R T B A S E BERT_{BASE} BERTBASE​ (L= 12,H=768,A=12,总参数=110M)和 B E R T L A R G E BERT_{LARGE} BERTLARGE​(L=24,H=1024,A=16,总参数=340M)。

B E R T B A S E BERT_{BASE} BERTBASE​ 被选为与 OpenAI GPT 具有相同的模型大小以进行比较。 然而,至关重要的是,BERT Transformer 使用双向自注意力,而 GPT Transformer 使用受约束的自注意力,其中每个令牌只能注意其左侧的上下文。

输入/输出表示 为了让 BERT 处理各种下游任务,我们的输入表示能够在一个标记序列中明确表示单个句子和一对句子(例如,h Question,Answer i)。 在整个工作中,“句子”可以是任意范围的连续文本,而不是实际的语言句子。 “序列”是指输入到 BERT 的 token 序列,可以是单个句子,也可以是两个句子打包在一起。

我们使用 WordPiece 嵌入(Wu 等人,2016 年)和 30,000 个标记词汇。 每个序列的第一个标记总是一个特殊的分类标记([CLS])。 与此标记对应的最终隐藏状态用作分类任务的聚合序列表示。 句子对被打包成一个序列。 我们以两种方式区分句子。 首先,我们用一个特殊的标记 ([SEP]) 将它们分开。 其次,我们向每个标记添加一个学习嵌入,指示它属于句子 A 还是句子 B。 如图 1 所示,我们将输入嵌入表示为 E,将特殊 [CLS] 标记的最终隐藏向量表示为 C ∈ R H C \in \mathbb{R}^{H} C∈RH, 以及第 i 个输入标记的最终隐藏向量为 T i ∈ R H T_{i} \in \mathbb{R}^{H} Ti​∈RH。

image-20211020133002475

对于给定的标记,其输入表示是通过对相应的标记、段和位置嵌入求和来构建的。 这种结构的可视化可以在图 2 中看到。

3.1 预训练BERT


与 Peters 等人(2018a)和 Radford 等人不同。 (2018),我们不使用传统的从左到右或从右到左的语言模型来预训练 BERT。 相反,我们使用本节中描述的两个无监督任务来预训练 BERT。 此步骤显示在图 1 的左侧部分

任务 #1:Masked LM 直觉上,有理由相信深度双向模型是 严格来说比从左到右模型或从左到右和从右到左模型的浅层级联更强大。 不幸的是,标准的条件语言模型只能从左到右或从右到左进行训练,因为双向条件会允许每个词间接“看到自己”,并且模型可以在多层中轻松预测目标词 语境。

为了训练深度双向表示,我们简单地随机屏蔽一定比例的输入标记,然后预测那些被屏蔽的标记。 我们将此过程称为“Masked LM”(MLM),尽管它在文献中经常被称为完形填空任务(Taylor,1953)。 在这种情况下,与掩码标记相对应的最终隐藏向量被馈送到词汇表上的输出 softmax,就像在标准 LM 中一样。 在我们所有的实验中,我们随机屏蔽了每个序列中所有 WordPiece 标记的 15%。 与去噪自动编码器(Vincent et al., 2008)相比,我们只预测被屏蔽的词,而不是重建整个输入

虽然这允许我们获得双向预训练模型,但缺点是我们在预训练和微调之间造成了不匹配,因为 [MASK] 令牌在微调期间不会出现。 为了缓解这种情况,我们并不总是用实际的 [MASK] 标记替换“屏蔽”词。 训练数据生成器随机选择 15% 的标记位置进行预测。 如果选择了第 i 个令牌,我们将第 i 个令牌替换为 (1) 80% 的时间 [MASK] 令牌 (2) 10% 的随机令牌 (3) 未更改的第 i 个令牌 10%的时间。 然后,Ti 将用于预测具有交叉熵损失的原始令牌。 我们在附录 C.2 中比较了此程序的变体。

任务 #2:下一句预测 (NSP) 许多重要的下游任务,例如问答 (QA) 和自然语言推理 (NLI),都是基于理解两个句子之间的关系,而这不是语言建模直接捕获的。为了训练一个理解句子关系的模型,我们预训练了一个二值化的下一句预测任务,该任务可以从任何单语语料库中轻松生成。具体来说,当为每个预训练示例选择句子 A 和 B 时,50% 的时间 B 是 A 之后的实际下一个句子(标记为 IsNext),50% 的时间它是来自语料库的随机句子(标记为作为 NotNext)。如图 1 所示,C 用于下一句预测 (NSP)。5 尽管它很简单,但我们在 5.1 节中证明了针对此任务的预训练对 QA 和 NLI 都非常有益。 NSP 任务密切相关到 Jernite 等人使用的表示学习目标。 (2017) 和 Logeswaran 和 Lee (2018)。然而,在之前的工作中,只有句子嵌入被转移到下游任务,其中 BERT 转移所有参数来初始化结束任务模型参数。

预训练数据 预训练过程很大程度上遵循了关于语言模型预训练的现有文献。 对于预训练语料库,我们使用 BooksCorpus(800M 字)(Zhu et al.,2015)和英文维基百科(2500M 字)。 对于维基百科,我们只提取文本段落而忽略列表、表格和标题。 为了提取长的连续序列,使用文档级语料库而不是像 Billion Word Benchmark (Chelba et al., 2013) 这样的打乱句子级语料库是至关重要的。

3.2 微调BERT


微调很简单,因为 Transformer 中的 self-attention 机制允许 BERT 通过交换适当的输入和输出来对许多下游任务进行建模——无论它们涉及单个文本还是文本对。 对于涉及文本对的应用程序,一个常见的模式是在应用双向交叉注意力之前对文本对进行独立编码,例如 Parikh et al.(2016); Seo 等人(2017 年)。 相反,BERT 使用自注意力机制来统一这两个阶段,因为编码具有自注意力的连接文本对有效地包括两个句子之间的双向交叉注意力。

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

与预训练相比,微调相对便宜。 从完全相同的预训练模型开始,论文中的所有结果最多可以在单个 Cloud TPU 上复制 1 小时,或在 GPU 上复制几个小时。7 我们在相应的任务特定细节中描述 第 4 节的小节。更多详细信息可在附录 A.5 中找到。

4 实验

===============================================================

在本节中,我们展示了 11 个 NLP 任务的 BERT 微调结果

4.1 GLUE


通用语言理解评估 (GLUE) 基准(Wang 等人,2018a)是各种自然语言理解任务的集合。 GLUE 数据集的详细描述包含在附录 B.1 中。

为了微调 GLUE,我们如第 3 节所述表示输入序列(对于单个句子或句子对),并使用与第一个输入标记([CLS])对应的最终隐藏向量 C ∈ R H C \in \mathbb{R}^{H} C∈RH 作为聚合表示 . 微调期间引入的唯一新参数是分类层权重 W ∈ R K × H W \in \mathbb{R}^{K×H} W∈RK×H,其中 K 是标签的数量。 我们用 C 和 W 计算标准分类损失,即 log(softmax( C W T CW^{T} CWT))。

我们使用 32 的批量大小并对所有 GLUE 任务的数据进行 3 个时期的微调。 对于每个任务,我们在开发集上选择了最佳的微调学习率(在 5e-5、4e-5、3e-5 和 2e-5 中)。 此外,对于 B E R T L A R G E BERT_{LARGE} BERTLARGE​,我们发现微调有时在小数据集上不稳定,因此我们运行了几次随机重启并在开发集上选择了最佳模型。 对于随机重启,我们使用相同的预训练检查点,但执行不同的微调数据混洗和分类器层初始化。

image-20211020133106386

做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。

别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。

我先来介绍一下这些东西怎么用,文末抱走。


(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

(4)200多本电子书

这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。

基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。

(5)Python知识点汇总

知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。

在这里插入图片描述

(6)其他资料

还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

在这里插入图片描述

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
img

提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-Uv0dlBt3-1711207612570)]

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值