NLP--BERT你不知道的小细节【总结】

4 篇文章 0 订阅
2 篇文章 0 订阅

前言

“授之以鱼不如授之以渔”,网上很多大佬已经对《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》这一论文进行解读,也解读的很细致。我重新再读这篇论文的时候,记录一些我自己可能遗漏的小细节。

BERT两阶段

Pre-trainingFine-Tuning

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nv0adLuS-1680858958693)(D:\Desktop\论文学习\Bert_1.png)]

符号含义
[CLS]一个添加在每个输入示例前面的特殊符号,对应Transformer输出的分类结,分类标记
[SEP]一个特殊的分隔符(例如分隔问题/答案),句子间隔标记
符号含义
E E E输入嵌入(Input Embedding
C C C[CLS]的最终隐藏向量表示(预测B是否为A的下一句)
T i T_i Ti i i i个的最终输入隐藏向量表示
L L LTransformer blocks层数(The number of layers
H H H隐藏层大小(Hidden size
A A A自注意力数(The number of self-attention heads

B E R T B A S E BERT_{BASE} BERTBASE L = 12 , H = 768 , A = 12 , 总参数 = 110 M L=12,H=768,A=12,总参数=110M 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 , 总参数 = 340 M L=24,H=1024,A=16,总参数=340M L=24,H=1024,A=16,总参数=340M

Pre-training两任务

MLMNSP皆为非监督任务

  1. MLMMasked LM C l o z e − t a s k Cloze-task Clozetask 完形填空

    若是标准模型,通过双向,会看到他自己,没有意义。所以采用多层深度双向表示,随机屏蔽

    缺点是我们正在创建预训练和微调之间的不匹配,因为[MASK]令牌在微调期间不会出现。为了减轻这个问题,不总是用[MASK]来代替被遮蔽的词。
    随机选择的15%的[MASK]词组成部分:
    -) 80%是[MASK],被替换成[MASK]标记
    -) 10%随机选择,替换成另一个单词
    -) 10%保持不变。

BERT的mask方式:在选择mask的15%的词当中,80%情况下使用mask掉这个词,10%情况下采用一个任意词替换,剩余10%情况下保持原词汇不变。
优点
1)被随机选择15%的词当中以10%的概率用任意词替换去预测正确的词,相当于文本纠错任务,为BERT模型赋予了一定的文本纠错能力;2)被随机选择15%的词当中以10%的概率保持不变,缓解了finetune时候与预训练时候输入不匹配的问题(预训练时候输入句子当中有mask,而finetune时候输入是完整无缺的句子,即为输入不匹配问题)。
缺点:针对有两个及两个以上连续字组成的词,随机mask字割裂了连续字之间的相关性,使模型不太容易学习到词的语义信息。主要针对这一短板,因此google此后发表了BERT-WWM,国内的哈工大联合讯飞发表了中文版的BERT-WWM。

在这里插入图片描述

  1. NSPNext Sentence Prediction
    用于下游任务理解句子之间的关系,Question Answering (QA) Natural Language Inference (NLI)
    二分类预测,为每个训练前的例子选择句子A和B时,50%的B是A后面的实际下一个句子(标记为IsNext), 50%的B是语料库中的随机句子(标记为NotNext)。

    训练语言模型时,选择两个句子,一种是选择语料中真正顺序相连的两个句子;另外一种是第二个句子从语料库中抛色子,随机选择一个拼到第一个句子后面

    C C C 用于下一个句子预测(预测B是否为A的下一句), C C CNSP精度可达97%~98%
    在这里插入图片描述

Input三向量

Token Embedding (词向量)+ Segment Embedding (句向量)+ Position Embedding(位置向量)

  • BERT的tokenize实际使用的是WordPiece作为最小的处理单元:token,而不是使用单词本身
  • 判断两个句子是否相邻这个任务在后来的研究中逐渐被淡化了,比如roberta模型在被提出的时候就不再使用该任务进行预训练了。
    在这里插入图片描述

Pre-training Data

预训练语料库,使用了BooksCorpus(800M words)English Wikipedia(2500M words)
对于Wikipedia只提取文本段落,忽略列表、表和标题。为了提取长连续序列,使用文档级语料库而不是打乱句子级语料库。

参数共享:word embedding 和 masked language model 的预测权重在初始化过程中都是共享

Fine-Tuning Bert(11任务)

BERT 使用了自我注意机制编码,包含了两个句子之间的双向交叉注意力。微调成本较低。

  1. GLUE(The General Language Understanding Evaluation)多任务的自然语言理解基准和分析平台
  2. SQuAD v1.1The Stanford Question Answering Dataset)斯坦福问答数据集(100K
  3. SQuAD v2.0
  4. SWAGThe Situations With Adversarial Generations)基础常识句子数据(113K
    在这里插入图片描述

GLUEThe General Language Understanding Evaluation):多任务的自然语言理解基准和分析平台,包含九项NLU任务,语言均为英语

简称全称目标
MNLIMulti-Genre Natural Language Inference多类型自然语言推理数据库三分类任务,给定一对句子,目标是预测第二个句子相对于第一个句子是蕴含的、矛盾的还是中立的【句子对,一个前提,一个是假设。前提和假设的关系有三种情况:蕴含(entailment),矛盾(contradiction),中立(neutral)】
QQPQuora Question Pairs)Quora问题对数集二分类任务,目标是确定Quora上的两个(一对)问题在语义上是否相等(等效、不等效两种情况)
QNLIQusetion-answering Natural Language Inference问答自然语言推断(从SQuAD 1.0转换而来)二分类任务,正例是(疑问句、句子)对,其中包含正确答案,反例是来自同一段落的(疑问句),其中不包含答案(判断问题(question)和句子(sentence,维基百科段落中的一句)是否蕴含)
SST-2The Stanford Sentiment Treebank斯坦福情感树库二分类任务(单句),从电影评论中提取的句子,以及情感注释。情感分类,正面情感和负面情感二分类
CoLA The Corpus of Linguistic Acceptability二分类任务(单句),语言可接受性语料库,目标是预测英语句子在语言上是否“可接受”(合乎语法与不合乎语法二分类)
STS-BThe Semantic Textual Similarity Benchmark,语义文本相似性基准测试回归任务,从新闻标题和其他来源提取的句子对的集合,语义相似性分数,从1~5(预测为1-5之间的相似性得分的浮点数)
MRPCMicrosoft Research Paraphrase Corpus,微软研究院释义语料库二分类任务,从网上新闻提取的句子对,并且有注释这两个句子对在语义上是否一样(是否释义二分类,是释义,不是释义两类)
RTE Recognizing Textual Entailment识别文本蕴含数据集二分类任务,判断句子对是否蕴含,句子1和句子2是否互为蕴含
WNLI Winograd NLIWinograd自然语言推断二分类任务,小的NLI数据集,判断句子对是否相关,蕴含和不蕴含

总结

BERT论文中的小细节,你是否再重读论文的时候,再次去get到这些技能点呢?

2阶段 + 2任务 + 3向量 + 11任务

以上是我个人在学习过程中的记录所学,希望对正在一起学习的小伙伴有所帮助!!!
如果对你有帮助,希望你能一键三连【关注、点赞、收藏】!!!

TODO

关于其中的BERT中用到的分词器WordPiece,篇幅较大,下一篇文章将着重进行讲述子词分词器

已完成

NLP–BPE、WordPiece、ULM、SentencePiece子词分词器总结【原理】

参考链接

https://mp.weixin.qq.com/s/gK5dLdomR4eHgCEfmjzRmQ
https://mp.weixin.qq.com/s/cDG7DwHFL1kHErwyYGT4UA
https://github.com/datawhalechina/learn-nlp-with-transformers

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

故事挺秃然

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

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

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

打赏作者

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

抵扣说明:

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

余额充值