【NLP】1、BERT | 双向 transformer 预训练语言模型

在这里插入图片描述

论文:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

出处:Google

一、背景

在 BERT 之前的语言模型如 GPT 都是单向的模型,但 BERT 认为虽然单向(从左到右预测)预测任务符合语言模型的建模过程,但对一些语言理解任务不太友好,因为要理解一句话说的是什么意思的话(如 VQA), 同时看到一整句话也是可以的,是符合逻辑的,而不是只能一个单词一个单词的来逐个看。

所以 BERT 打破了语言模型单向的限制,做了一个双向的模型,就是做完形填空的时候运行看左边也运行看右边,而且是受 Cloze (1953年的论文)这个方法的启发

具体的做法就是每次随机选一些 token 然后 mask 掉这些信息,目标是预测这些 token,这样就允许训练一个双向且深的 transformer 模型结构

此外,BERT 还做了一个任务——下一个句子的预测(next sentence prediction),就是给模型两个句子,让模型判断这两个句子在原文中是不是相邻的,能让模型学习句子层面的信息

二、方法

BERT 的两个步骤:

  • 预训练:使用 无标注 的数据训练的预训练模型(下图左侧),由两个任务共同组成预训练
    • mask model:预测被 mask 掉的 token,类似完形填空的方式。预测的过程相当于做多分类,类别的个数是词汇的总个数,将 mask 的词的 embedding 经过 MLP 变成在每个类别词汇上的 logits 概率,label 是 mask 位置上真实词汇在整个词汇上的 one-hot 编码,将 logits 和 lable 计算交叉熵,然后所有的预测做加权平均,就能得到 MLM 的 loss 了

      输入的是句子对儿,会把句子先进行拆词,并在序列首位放置 [CLS] 在句子中间放置 [SPE] 这两个特殊的 token,然后对普通的 token(除过特殊 token 之外的从句子中拆出来的 token)进行 15% 概率的擦除,然后在这 15% 的 token 中选择 80% 的直接用 [MASK] 替换掉这个 token,10%的随机放置 token,10% 不改变 token。

    • next sentence prediction:预测下一个句子
      在 VQA 和 语言推理中都是句子对,所以使用这种方法对这两个任务类似的理解的任务有提升。输入的数据中有 50% 真的是下一个句子,50% 是随机拿来的句子。

  • 微调:针对不同的下游任务,还会使用有标签的数据来微调,使用预训练模型参数初始化,所有权重都会参与训练(右边)

模型超参数:base 共 110M 参数(也就是 1.1亿)对标的是 GPT 模型大小,large 共 340M 参数(也就是 3.4亿)

  • transformer block 个数:base 12 层,large 24 层
  • hidden 层大小:base 768,large 1024
  • 多头注意力机制 head 的个数:base 12 头,large 16 头
    在这里插入图片描述

输入和输出:

  • 输入是一个序列,可以是一个句子,也可以是两个句子,两个句子也会并成一个序列
  • 序列的构成方式:使用的切词方法是 WordPiece,因为如果按照空格切词的话会导致词典很大,WordPiece 是说如果一个词出现频率不高的话,那么就切开看它的子序列,子序列出现多的话保留子序列就可,可以使用 30000 token vocabulary 就能表示一个大的文本了。切好词之后就要把两个句子整合成一个序列,序列的第一个词用于都是 [CLS],bert 希望这个 token 表示整个序列的特征。还有一个 [SEP] token 表示将两个句子在这里切开,因为毕竟每个句子还是独立的个体,所以要有标志将其切开。在图 1 左侧就展示了,将句子切成 token,然后将求每个 token 的 embedding,
  • 每个 token 还要加 位置的 embedding 和 segment embedding,如图 2 所示

在这里插入图片描述

  • BERT 的每个 token 的输入是由三个部分相加得到的
  • token embedding:就是输入 transformer 之前的一次简单 embedding
  • segment embedding:表示第一句话还是第二句话
  • position embedding:token 在序列中的位置
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

呆呆的猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值