【阅读笔记】BERT 介绍和代码解读

本文详细介绍了BERT的预训练过程,包括Mask预测任务和连续句子预测任务,以及BERT在NLP任务中的应用和整体流程。通过代码解析,探讨了Transformer模型的工作原理,帮助读者深入理解BERT模型的细节。
摘要由CSDN通过智能技术生成

最近玩了玩 BERT,做了一些实验,感觉还挺有意思的,写点东西记录一下,我会从粗到细,从简单到复杂,一层一层的说明白 BERT 的每一步。

BERT 的预训练

BERT 模型的预训练会从数据集抽取两句话,其中 B 句有 50% 的概率是 A 句的下一句,然后将这两句话转化输入表征,再随机遮掩(mask 掉)输入序列中 15% 的词,并要求 Transformer 完成预测这些被遮掩的词和预测 B 句是否是 A 句的这两个任务。
对于 Mask 预测任务,首先整个序列会随机 Mask 掉 15% 的词,这里的 Mask 不只是简单地用 [MASK] 符号代替某些词,这是因为这会引起预训练与微调两阶段不太匹配。所以在确定需要 Mask 掉的词后,80% 的情况下会直接替代为 [MASK] ,10% 的情况会替代为其它任意的词,最后 10% 的情况会保留原词。
对于二分类任务,在抽取一个序列(A+B)中,B 有 50% 的概率是 A 的下一句。如果是的话就会生成标注 [IsNext],不是的话就会生成标注[NotNext]。
之所以选择这两个任务是因为: Mask 预测任务如果可以很好地完成,说明句子内的语义已经充分理解了; 是否为连续的句子预测任务如果可以很好地完成,说明句子整体的语义也已经充分理解了。

BERT 的应用

最后预训练完模型,就要尝试把它们应用到各种 NLP 任务中,并进行简单的微调。不同的任务在微调上有一些差别,但 BERT 已经强大到能为大多数 NLP 任务提供高效的信息抽取功能。对于分类问题而言,例如预测 A/B 句是不是问答对、预测单句是不是语法正确等,它们可以直接利用特殊符 [CLS] 所输出的向量 C \bm{C} C,即 P = s o f t m a x ( C ⋅ W ) P=softmax(\bm{C}\cdot \bm{W}) P=softmax(CW),新任务只需要训练权重矩阵 W \bm{W} W就可以了。

对于其它序列标注或生成任务,我们也可以使用 BERT 对应的输出信息作出预测,例如每一个时间步输出一个标注或词等。下图展示了 BERT 在 4 种任务中的微调方法,它们都只添加了一个额外的输出层。在下图中,Tok 表示不同的词、E 表示输入的嵌入向量、T_i 表示第 i 个词在经过 BERT 处理后输出的上下文向量。

BERT 的整体流程

通过阅读google放出的代码,我们来了解一下细节。
BERT 模型的总体流程如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值