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出现的<cls>和<sep>将会在下文中进行解释。

二 BERT的框架

框架分为两步,一是预训练,二是fine-tuning


图3 BERT框架图
2.1 预训练BERT

预训练的语料是用大量的无标签数据构成的,具体地预训练任务有两个,masked LM 和预测是否为下个句子,每个输入序列可以由一个或两个有上下文联系的句子构成,句子之前用<SEP>分隔,在每个输入序列的最前面加<CLS> token

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份随机替换)

\color{blue}{Q1}:为什么要将10%被选择mask的词保留原来的词
如果将选择的mask的词100%都mask,由于在finetune的阶段,所有词都已知,没有<mask>,如果模型只在带<mask>的句子上训练过,那么模型就只知道根据其他词的信息来预测当前词,而不会利用这个词本身的信息(被mask的词),导致损失一部分信息
\color{blue}{Q2}:为什么10%会被随机替换成另一个词
因为如果都用原来的词,预训练时,模型会学到如果当前词是mask,就根据其他词的信息推断这个词,如果是正常的,那么可能会直接照抄原来的单词,不利于模型学习单词间的依赖关系。使用了random token有助于模型在任何位置的token上都把当前token信息和上下文信息相结合。

2.1.2 预测是否为下个句子(Next Sentence Prediction, NSP)

构建语料:每个训练例子有句子A,B,B有50%的几率是A的下一句,标记上是下一句标签,50%的几率是随机选的,标记上非下一句标签,构建输入序列的时候是形如 <cls>A<sep>B 这样的格式,见图2

2.2 fine-tune

用第一步预训练得到的参数初始化BERT,再将BERT接入到适合下游任务的结构中。
举个最简单的例子,对于分类任务来说,将softmax层接在<CLS> token输入对应最后一个隐层输出(这个一般视为概括了整个句子的信息)或者在softmax层之前再接单层全连接网络
\color{blue}{Q1:} 从图二中看到BERT在预训练的时候一个输入序列是由两个句子组成,那么如果需要finetune的下游任务为单句的话输入格式要怎么处理?
A:BERT预训练的输入序列用了两个句子的拼接是为了NSP任务,当要finetune的任务是单句的时候,输入格式直接为<CLS> My dog is cute
\color{red}{注:}使用BERT-base进行fine-tune需要12G以上的GPU,预训练BERT需要28G以上GPU

三 BERT实际应用
3.1 如何用于长文本,如在阅读理解任务中

答案是用sliding windows,即把文档分成有重叠的若干段,每一段都当成独立的文档送入BERT,最后再对这些独立文档得到的结果进行整合
\color{red}{注:} sliding windows只能用于训练,测试阶段可通过设置batchsize为将长文本读取

3.2 如何用于多文档

现有的主要思路是先用retrieval选一些相关的doc,再当做阅读理解的问题做

参考资料
  1. 原论文 https://arxiv.org/pdf/1810.04805.pdf

  2. 知乎上的一一篇文章 https://zhuanlan.zhihu.com/p/46652512

  3. 习翔宇知乎 https://zhuanlan.zhihu.com/p/46833276?utm_source=wechat_session&utm_medium=social&utm_oi=580863656032473088

  4. kaggle上的一篇高分教程 https://www.kaggle.com/abhinand05/bert-for-humans-tutorial-baseline

  5. google提供的BERT预训练模型(有英文也有中文的)https://github.com/google-research/bert#pre-trained-models

  6. bert版本的pytorch https://github.com/huggingface/transformers

  7. pytorch版bert使用教程https://zhuanlan.zhihu.com/p/66057193

  8. pytorch版bert中文使用博客https://blog.csdn.net/ccbrid/article/details/88732857

  9. 包括了BERT结构的解析https://cloud.tencent.com/developer/article/1389555

  10. BERT源码解读https://www.jianshu.com/p/d7ce41b58801

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容