Bert笔记
本文会尽可能详细的介绍BERT的结构,预训练方法细节
一 BERT的结构
BERT的具体结构如下图所示,其只用到了transformer的encoder部分,由多层tranformer的encoder堆叠而成,因此我们可以看到BERT并未在结构上进行了创新,其主要创新点在于预训练的部分
文章图片
图1 来自于参考资料5的博客
文章图片
图2 BERT input representation
BERT将输入文本转化为为向量表示其实是由三部分相加构成(图2),token embeddings,segment embeddings,和 posistion embeddings 。由于需要相加操作,这三个embedding的大小都是一致的,embedding size 通常和BERT的隐层大小保持一致。这三部分参数都是通过训练得到的,segment emdeddings 是一个 2 X embedding size的矩阵,第一行对应句子A的embedding,第二行对应句子B的embedding,需要注意的是这里得到position emedding参数的方式和transformer不一样,在transormer里,postition embedding是由sin/con函数直接得到,不需要训练。图2出现的
二 BERT的框架
框架分为两步,一是预训练,二是fine-tuning
文章图片
图3 BERT框架图 2.1 预训练BERT
预训练的语料是用大量的无标签数据构成的,具体地预训练任务有两个,masked LM 和预测是否为下个句子,每个输入序列可以由一个或两个有上下文联系的句子构成,句子之前用分隔,在每个输入序列的最前面加
2.1.1 masked LM(MLM) —— BERT论文中的一个重要创新点
随机mask句子中的一部分词(15%),然后预测这些mask词的实际值,注意此时输出序列任何输入序列一样长,只不过计算loss的时候只计算mask位置的,如原始句子: I eat [mask] apple,输出 I eat an apple.
论文中还提到对句子中选择的15%mask的词,其中80%会被mask,10%会保留原来的词,10%会被随机替换成另一个词(random token)
tensorflow实现bert的代码中将原始数据复制了10份,再将句子中选择15%的mask(10份复制的 8份mask, 1份保留,1份随机替换)
:为什么要将10%被选择mask的词保留原来的词
如果将选择的mask的词100%都mask,由于在finetune的阶段,所有词都已知,没有
:为什么10%会被随机替换成另一个词
因为如果都用原来的词,预训练时,模型会学到如果当前词是mask,就根据其他词的信息推断这个词,如果是正常的,那么可能会直接照抄原来的单词,不利于模型学习单词间的依赖关系。使用了random token有助于模型在任何位置的token上都把当前token信息和上下文信息相结合。
2.1.2 预测是否为下个句子(Next Sentence Prediction, NSP)
构建语料:每个训练例子有句子A,B,B有50%的几率是A的下一句,标记上是下一句标签,50%的几率是随机选的,标记上非下一句标签,构建输入序列的时候是形如
2.2 fine-tune
用第一步预训练得到的参数初始化BERT,再将BERT接入到适合下游任务的结构中。
举个最简单的例子,对于分类任务来说,将softmax层接在
从图二中看到BERT在预训练的时候一个输入序列是由两个句子组成,那么如果需要finetune的下游任务为单句的话输入格式要怎么处理?
A:BERT预训练的输入序列用了两个句子的拼接是为了NSP任务,当要finetune的任务是单句的时候,输入格式直接为
使用BERT-base进行fine-tune需要12G以上的GPU,预训练BERT需要28G以上GPU
三 BERT实际应用
3.1 如何用于长文本,如在阅读理解任务中
答案是用sliding windows,即把文档分成有重叠的若干段,每一段都当成独立的文档送入BERT,最后再对这些独立文档得到的结果进行整合
sliding windows只能用于训练,测试阶段可通过设置batchsize为将长文本读取
3.2 如何用于多文档
现有的主要思路是先用retrieval选一些相关的doc,再当做阅读理解的问题做
参考资料
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- Android中的AES加密-下
- 【读书笔记】贝叶斯原理
- 【韩语学习】(韩语随堂笔记整理)
- 人性的弱点-笔记
- 读书笔记:博登海默法理学|读书笔记:博登海默法理学 —— 正义的探索(1)
- D034+3组苏曼+《写作这回事》读书笔记
- 《自我的追寻》读书笔记3
- 最有效的时间管理工具(赢效率手册和总结笔记)
- Spark|Spark 数据倾斜及其解决方案