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

最近玩了玩 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 模型的总体流程如下

Created with Raphaël 2.2.0
  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BERT(Bidirectional Encoder Representations from Transformers)是一种预训练语言模型,可以用于各种自然语言处理任务的微调。下面是BERT预训练和微调的简要介绍BERT预训练: BERT的预训练是指在大规模文本上训练出一个通用的语言模型,然后将这个模型微调到各种具体的NLP任务上。预训练BERT包含两个阶段:Masked Language Model(MLM)和Next Sentence Prediction(NSP)。在MLM阶段,部分输入单词被随机替换成[Mask]标记,模型需要预测这些[Mask]标记对应的原始单词;在NSP阶段,模型需要判断两个句子是否是连续的。BERT的预训练代码可以使用谷歌官方实现的TensorFlow版本或者Hugging Face开发的PyTorch版本。 BERT微调: BERT微调是指在任务特定的数据集上微调预训练好的BERT模型。微调步骤包括数据处理、模型配置、模型微调和模型评估。在数据处理阶段,需要将任务特定数据集转换成适合BERT输入的格式;在模型配置阶段,需要根据任务需求选择合适的模型结构、超参数和优化器;在模型微调阶段,需要用微调数据集对模型进行训练;在模型评估阶段,需要使用测试集对微调后的模型进行评估。BERT微调代码可以使用各种框架实现,如PyTorch、TensorFlow等。 如果您想学习更多关于BERT预训练和微调的内容,我建议您查看谷歌官方论文和Hugging Face官方文档。此外,您也可以在GitHub上找到各种不同的BERT实现和教程。如果您需要具体的代码示例,可以告诉我您所使用的框架和任务类型,我可以为您提供相关参考。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值