【BERT】深入浅出讲解BERT算法

  • 本文收录于《深入浅出讲解自然语言处理》专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅!
  • 个人主页:有梦想的程序星空
  • 个人介绍:小编是人工智能领域硕士,全栈工程师,深耕Flask后端开发、数据挖掘、NLP、Android开发、自动化等领域,有较丰富的软件系统、人工智能算法服务的研究和开发经验。
  • 如果文章对你有帮助,欢迎关注点赞收藏订阅。

1.预训练模型简介

在之前的文章中,我们介绍了非常有名的BiLSTM-CRF算法,其算法性能和精确度是鹤立鸡群,下面我们介绍Google推出的“王炸级”预训练模型Bert算法,其在NLP任务中刷新了多项记录,并取得state of the art的成绩。

Bert(Bidirectional Encoder Representations from Transformers)算法,顾名思义,是基于Transformer算法的双向编码表征算法,Transformer算法基于多头注意力(Multi-Head attention)机制,而Bert又堆叠了多个Transfromer模型,并通过调节所有层中的双向Transformer来预先训练双向深度表示,而且预训练的Bert模型可以通过一个额外的输出层来进行微调,适用性更广,并且不需要做更多重复性的模型训练工作。

目前,预训练的语言模型主要有两种方式,第一种是基于特征的语言模型,比如ELMo模型,另一种是基于fine-tuning的语言模型,如OpenAI GPT模型,而Bert模型对这两种类型取长补短,在各种语言任务中取得优异的表现。

图1 Bert算法与OpenAI GPT以及ELMo的结构对比图

Model

获取长距离语义信息程度

能否左右上下文语义

是否可以并行

Word2Vec

1

单向LSTM

2

不能

不能

ELMo

2

不能

GPT

3

不能

BERT

3

图2 Bert算法与其他算法的性能对比

Bert算法的优势:

相对于ELMo和OpenAI GPT模型,Bert算法不仅在模型结构上更优,而且,传统的ELMo和GPT模型需要耗费大量的人力来标注预训练的数据,而Bert则采用无监督学习的方式,不需要人工标注,低成本地训练语料模型,只需要微调就能适应多种任务场景,无需从头训练语言模型。

2.Bert模型简介

模型基本步骤如下

(1)使用Masked LM方式将语料中的某一部分的词语掩盖住,模型通过上下文预测被掩盖的词语,从而训练出初步的模型。

(2)在语料中选出连续的上下文语句,并使用Transformer模块识别语句的连续性。

(3)通过(1)和(2)实现通过上下文进行双向预测的预训练语言表征模型。

(4)然后通过少量经过标记的数据以监督学习的方式对模型进行fine-tuning。

Bert有两个模型,一个是1.1亿参数的base模型,另一个是3.4亿参数的large模型。

Bert算法的论文:https://arxiv.org/abs/1810.04805

Bert算法的开源代码:https://github.com/google-research/bert

3.Bert算法的输入表征

Bert的输入表示由三部分的Embedding组成,包含:Token Embeddings、Segment Embeddings、Position Embeddings。

如下图所示,其中Token Embeddings表示的是词向量模型(用于分类任务),Segment Embeddings用于区分句子的类型(用于语句分类),Position Embeddings是位置信息,通过模型学习得到。

图3 Bert算法输入表征结构图

4.Bert算法的预训练过程

Bert算法使用两种新的无监督方式进行预训练,分别是Masked LM和Next Sentence Prediction。

(1)MLM方式

MLM(Masked Language Model)通过随机掩盖句子中的部分词语,然后使用上下文对掩盖的词语进行预测。这个方式融合了双向的文本信息,因而可以预训练深度双向的Transformer模型。

(2)NSP方式

NSP(Next Sentence Prediction)可以通过预测上下句的连贯性来判断上下句的关系。其中一部分数据是上下文连续的句子,另一部分数据是上下文不连续的句子,对于很多NLP任务如QA都需要这样的理解。

关注微信公众号【有梦想的程序星空】,了解软件系统和人工智能算法领域的前沿知识,让我们一起学习、一起进步吧!

  • 4
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序遇上智能星空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值