Bert算法原理详解

Bert算法背景

随着迁移学习的兴起,在计算机视觉领域中出现了各种各样的预训练模型,它们可以通过简单的微调在下游任务上取得良好的效果。在Bert发布之前,自然语言领域中embedding算法也是大都是在大规模的语料上训练,但对下游任务的兼容性较差。例如Word2vec、Glove,它们的输出的是固定词向量(每个词对应的向量是固定的),所以在不同的上下文场景中缺乏足够强的表征能力;例如Elmo,它通过Bidirectional LSTM来学习文本的上下文特征,但由于LSTM的模型特点,使其难以兼顾长文本中相距较长的词之间的联系。伴随这Transformer模型的出现,上下文学习的问题有了更佳的解决方法。

Bert是基于transfomer结构中的Encoder模块,对文本的上下文进行学习,从而获取动态的文本向量。由于其模型结构的特点,它能够更好的学习到文本的上下文表征。且具备更佳的兼容能力,能够更好的用于问答系统、语言推理和NER等任务。(Bert论文BERT: Pre-training of Deep Bidirectional Transformers for
Language Understanding)
模型间的差异

Bert模型结构及其应用

Bert主要有俩个任务,分别是Pre-training和Fine-tuning。
Bert主要任务

Model input

我们先了解一下模型的输入,这里用WordPiece方法对句子中的token进行拆分 (playing拆成 play + ing,可以大量的减少词汇数量)。然后选择一个句子对,在句首加入[CLS] token代表句向量,句子结尾用[SEP] token 表示结束。同时模型的输入借鉴了Transformer的输入格式。输入由三部分组成,分别是Token Embeddings、Segment Embeddings和Position Embedding。其中Token Embedding是指每个token对应一个embedding,Segement Embedding是用于区分sentence A和sentence B,Position Embedding采用有别于transformer的输入方式,采用了可学习的位置编码。最后三个相加则获得输入向量。
在这里插入图片描述

Pre-traning

Bert的预训练使用了俩个无监督训练任务,一个任务是Masked LM,另一个任务是NSP(next sentence prediction)

Masked LM

为了使模型更好地学习到上下文的信息,对语料中 15 % 15\% 15%的WordPiece token进行mask,再让模型去预测这些mask的token。作者对选中的语料做了三种mask方式,第一种是将其中80%的token替换成 [ m a s k ] [mask] [mask] token,第二种是将10%的token随机替换成其他词,第三种是将10%的token保持不变。

Next sentence prediction

为了模型可以更好的用于QA、NLI等任务,作者在预训练中加入了NSP。随机挑选句子AB,50%的B是A的下一句,50%不是A的下一句。通过这个方法,Bert在QA和NLI取得了更好的效果

Fine-tuning

由于作者在预训练中加入了NSP任务,所以可以在Sentence Pair Classification上有较好的表现,而且C(Class Label)可以用于代表整个句向量所以在下游任务微调时十分方便,仅需对C进行softmax即可。同样的在Single Setence Classification中,输入单个句子,再对C做分类即可。当面对NER任务时,每个token是具备对应的embdding的,这时仅需对这些向量做分类即可。对于QA问题,同样可以对next sentence中的token做预测。
在这里插入图片描述

由于Bert模型的输入的设计,极大地便利了人们将预训练的Bert模型用于各种下游任务中。同时Bert在各项任务中都表现出了不凡的效果。

模型应用

Bert模型主要有俩种大小,第一种是Bert(Base) 其中共有12层的Multi-Attention,Head数量为12,隐藏层的大小为768,总参数量为110M;第二种是Bert(Large)其中共有24层的Multi-Attention,Head数量为16,隐藏层的大小为1024,总参数量为340M。从这里我们可以发现Bert的参数量是比较多的,所以在运行时是比较吃显存的。
一般我们使用Bert作为预训练模型时,可以通过huggingface提供的库直接调用,极大便利了我们对Bert的使用。

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值