11_BERT(预训练Transformer模型)

简介: 11_BERT(预训练Transformer模型)

一、What is BERT ?


BERT [1] is for pre-training Transformer’s [2] encoder.(BERT是预训练Transformer模型的encoder网络,从而大幅提高准确率)

How? (BERT的基本想法有两个,一个想法:随机遮挡一个或者多个单词,让encoder网络根据上下文来预测被遮挡的单词。第二个想法是:把两个句子放在一起,让encoder网络判断两句话是不是原文里相邻的两句话。BERT用这两个任务来预训练Transformer模型的encoder网络)

Predict masked word.(预测被遮挡的单词。)

Predict next sentence.(预测下一个句子)


Reference


Devlin, Chang, Lee, and Toutanova. BERT: Pre-training of deep bidirectional transformers for language understanding. In ACL, 2019

Vaswani and others. Attention is all you need. In NIPS, 2017.


1.1 Task 1: Predict Masked Words(任务一:预测被遮挡的单词)


1.1.1 Randomly mask a word(随机遮挡一个单词)


“The ___ sat on the mat”

What is the masked word? (被遮住的单词是什么)


具体做法:


把输入的第二个被遮挡的单词替换为:[MASK]符号。

[MASK]符号会被Embedding层编码成词向量XM 。

把[MASK]位置的输出记作向量UM 。

把UM 作为特征向量输入一个Softmax分类器,分类器的输出是一个概率分布P。字典里面的每一个单词都有一个概率值,通过概率值判断被遮挡的单词是什么?

这个例子中,遮挡住了cat这个单词,训练的时候希望分类器的输出P向量接近单词cat的one-hot向量


注意:


Transformer的encoder网络不是一对一映射,而是多对一映射。

向量UM 不仅依赖于向量XM ,而且依赖于所有X的向量,UM 在[MASK]位置上,但是UM 知道整句话的信息,向量UM 包含上下文信息,因此可以用UM 预测被遮挡的单词。


9c1d3ac96e2d4995a6890dcffa7d67f0.png


1.1.2 Predict the masked word(预测被遮挡的单词)


e: one-hot vector of the masked word “cat”. (把cat的one-hot向量计作e)

p: output probability distribution at the masked position. (向量P是分类器输出的概率分布,我们希望P接近e)

Loss = CrossEntropy(e,p). (用反向传播算出损失函数关于模型参数的梯度)

Performing one gradient descent to update the model parameters.(执行梯度下降来更新模型参数)


55c565f169f74bf28015879a21edc14f.png


1.1.3 总结


BERT会随机遮挡单词,把遮住的单词作为标签,BERT预训练不需要人工标注的数据集,可以用任何书籍或者维基百科作为训练数据,可以自动生成标签,这样一来训练数据要多少有多少,足以训练非常大的模型


1.2 Task 2: Predict the Next Sentence(任务二:预测下一个句子)


Given the sentence:

“calculus is a branch of math”. (微积分是数学的一个分支)

Is this the next sentence?

“it was developed by newton and leibniz” (它是由牛顿和莱布尼兹发展起来的)


现在做出判断,这两句话是否是原文中相邻的两句话?


Given the sentence:

“calculus is a branch of math”. (微积分是数学的一个分支)


Is this the next sentence?

“panda is native to south central china” (熊猫原产于中国中南部)


1.2.1 Input Representation(输入表示)


准备训练数据,把两句话拼接起来,两句话之间用 [SEP] 符号 分隔开;在最前面放置一个[CLS]符号,占一个位置,[CLS]符号的意思是分类。


          [CLS] "calculus is a branch of math"
[SEP] "it was developed by newton and leibniz"
  • [CLS] is a token for classification.
  • [SEP] is for separating sentences.


  • Target: true


生成训练数据的时候,有50%是原文里真实相邻的两句话;另外50%的第二句话是从训练数据中随机抽取的句子


Input:


[CLS] "calculus is a branch of math"
[SEP] "panda is native to south central china"


  • [CLS] is a token for classification.
  • [SEP] is for separating sentences.
  • Target:false

c07790b67803488eb19fa9a4304fd1df.png


1.2.2 Predict the next sentence


一条训练数据包含两句话,两句话都被分割成很多个符号,在句子的最前面放[CLS]符号,占一个位置,这个位置的输出计作向量C,但是C并不仅仅依赖于[CLS],向量C包含两句话的全部信息,所以靠C向量就能判断两句话是否真实的相邻。

把C作为特征向量,输入到一个分类器,分类器的输出是介于(0,1)之间的值f,1代表true,分类器认为两句话是从原文中拿出来的;0代表false,分类器认为第二句话是假的,两句话不相关;


可以用CrossEntropy作为损失函数来衡量预测f与真实标签之间的区别,有了loss损失函数,就可以计算梯度,然后用梯度下降来更新模型参数。


这样做预训练的作用:相邻两句话通常有关联,这样做二分类可以强化这种关联,让Embedding和词向量包含这种关联。


16be275d4fac4982bcf39452af344adb.png

二、Combining the two methods


BERT把两个任务结合起来,用来预训练Transformer


2.1 Input Representation(输入表示)


把两句话拼接起来,随机遮挡15%的单词,这条训练数据碰巧有两个被遮挡的单词,一共有三个任务。


第一个任务:判断两句话是否真的相邻。知道这两句话是从原文中取出来的,因此标签设置为true。


另外两个任务:预测两个被遮住的单词,标签是真实的单词,"branch"和 “was”


Input:


"[ CLS]  calculus is a [ MASK] of math
         [ SEP]  it [ MASK] developed by newton and leibniz


Targets: true,“branch”,“was”.


f504f6154a5f107275d23d625c8db0e0.png


这条训练数据碰巧只有一个被遮挡单词,所有共有两个任务,因为知道第二句话是随机抽样得到的,因此是假的,标签设置为false;被遮挡的单词是south,因此标签是单词south


Input:

"[ CLS]  calculus is a [ MASK] of math
    [ SEP]  panda is native to [MASK] central china".


Targets: false,“south”.


ebc970f2abaecb4191db769eb9a84223.png


2.2 Training(训练)


假如有两个单词被遮挡,那么就有三个任务,就需要定义三个损失函数。


Loss 1 is for binary classification (i.e., predicting the next sentence.)第一个任务是二分类:第一个损失函数是binary classification。


Loss 2 and Loss 3 are for multi-class classification (i.e., predicting the masked words.) 第二、三个任务是预测单词,多分类任务:损失函数是multi-class classification

Objective function is the sum of the three loss functions.目标函数是三个损失函数的加和,


Update model parameters by performing one gradient descent.把目标函数关于模型参数求梯度,然后做梯度下降来更新模型参数


2.3 Data(数据)


BERT does not need manually labeled data. (Nice! Manual labeling is expensive.) BERT的 好处不需要人工标注数据,人工标注数据非常麻烦,得花几十万才能标注比较大的数据集,两种任务的标签都是自动生成的

Use large-scale data, e.g., English Wikipedia (2.5 billion words.)

Randomly mask words (with some tricks.) (随机遮挡单词,有一些小技巧)

50% of the next sentences are real. (The other 50% are fake.) 接下来的句子中有50%是真实的。 (另外50%是假的)。


2.4 Cost of Computation(计算成本)


论文中有两种模型。BERT训练出来的模型参数是公开的,如果用Transformer直接下载BERT预训练的模型和参数就可以。


BERT Base (BERT小模型)

110M parameters.

16 TPUs, 4 days of training (without hyper-parameter tuning.) 无超参调整

BERT Large (BERT大模型)

235M parameters.

64 TPUs, 4 days of training (without hyper-parameter tuning.)


三、总结


Bidirectional Encoder Representations from Transformers (BERT)

BERT用海量数据训练超级大的模型

主要涉及BERT的主要原理,但是没有详细介绍BERT的技术细节

BERT的Embedding层并不是简单的word Embedding,其中还有一些技巧,随机遮挡单词的时候也有一些技巧


目录
相关文章
|
8月前
|
机器学习/深度学习 人工智能 开发工具
如何快速部署本地训练的 Bert-VITS2 语音模型到 Hugging Face
Hugging Face是一个机器学习(ML)和数据科学平台和社区,帮助用户构建、部署和训练机器学习模型。它提供基础设施,用于在实时应用中演示、运行和部署人工智能(AI)。用户还可以浏览其他用户上传的模型和数据集。Hugging Face通常被称为机器学习界的GitHub,因为它让开发人员公开分享和测试他们所训练的模型。 本次分享如何快速部署本地训练的 Bert-VITS2 语音模型到 Hugging Face。
如何快速部署本地训练的 Bert-VITS2 语音模型到 Hugging Face
|
8月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图 REV1
Bert Pytorch 源码分析:五、模型架构简图 REV1
124 0
|
8月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图
Bert Pytorch 源码分析:五、模型架构简图
79 0
|
3月前
|
自然语言处理 PyTorch 算法框架/工具
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
【10月更文挑战第1天】随着深度学习技术的进步,预训练模型已成为自然语言处理(NLP)领域的常见实践。这些模型通过大规模数据集训练获得通用语言表示,但需进一步微调以适应特定任务。本文通过简化流程和示例代码,介绍了如何选择预训练模型(如BERT),并利用Python库(如Transformers和PyTorch)进行微调。文章详细说明了数据准备、模型初始化、损失函数定义及训练循环等关键步骤,并提供了评估模型性能的方法。希望本文能帮助读者更好地理解和实现模型微调。
101 2
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers
【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers
170 1
|
3月前
|
机器学习/深度学习 自然语言处理 知识图谱
|
3月前
|
机器学习/深度学习 自然语言处理 算法
[大语言模型-工程实践] 手把手教你-基于BERT模型提取商品标题关键词及优化改进
[大语言模型-工程实践] 手把手教你-基于BERT模型提取商品标题关键词及优化改进
259 0
|
4月前
|
搜索推荐 算法
模型小,还高效!港大最新推荐系统EasyRec:零样本文本推荐能力超越OpenAI、Bert
【9月更文挑战第21天】香港大学研究者开发了一种名为EasyRec的新推荐系统,利用语言模型的强大文本理解和生成能力,解决了传统推荐算法在零样本学习场景中的局限。EasyRec通过文本-行为对齐框架,结合对比学习和协同语言模型调优,提升了推荐准确性。实验表明,EasyRec在多个真实世界数据集上的表现优于现有模型,但其性能依赖高质量文本数据且计算复杂度较高。论文详见:http://arxiv.org/abs/2408.08821
108 7
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
【AI大模型】BERT模型:揭秘LLM主要类别架构(上)
【AI大模型】BERT模型:揭秘LLM主要类别架构(上)
|
5月前
|
机器学习/深度学习 存储 自然语言处理
【NLP-新闻文本分类】3 Bert模型的对抗训练
详细介绍了使用BERT模型进行新闻文本分类的过程,包括数据集预处理、使用预处理数据训练BERT语料库、加载语料库和词典后用原始数据训练BERT模型,以及模型测试。
88 1

热门文章

最新文章