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

BERT详解
本文详细介绍了BERT模型,包括其网络结构、输入表示方式、预训练过程及如何进行微调应用于下游任务等。并提供了训练技巧和实践指导。

​该论文是谷歌提出BERT时的原论文,在distill的时候感觉对于该模型的理解不够,所以再次对于该论文进行了阅读,希望有更好的理解。
​ BERT所提供的是一种预训练模型,所谓预训练模型可以理解为一个特征抽取器,在使用的时候就将这些预训练模型用到对应的数据集上进行fintune,具体理解可参考

1. BERT的网络结构
2. BERT的输入表示

BERT允许输入的字符的最大长度为512,由3部分组成:

  1. Token embedding: 根据词表将句子中的单词划分成每一个很小的单元

  2. Position embedding:表示每个单词的位置

  3. Segment embedding:用于区分不同的句子(可以用于判断B是否是A的下文),对于句子对,第一个句子对特征值是0,第二个句子的特征值是1。

    还有两个特殊符号:[CLS] 和 [SEP] , [CLS] 表示该特征用于分类模型,对非分类模型,该符合可以省去。 [SEP] 表示分句符号,用于断开输入语料中的两个句子

在这里插入图片描述

3. BERT模型的训练过程

BERT主要通过两个步骤训练而成:Masked Language Model(MLM) ; Next Sentence Prediction(NSP)

3.1 Masked Language Model(MLM)

MLM是指在训练的时候随即从输入预料上mask掉一些单词,然后通过的上下文预测该单词。在bert中Token中的15%的词都会被随机的mask掉,对于这15%的单词也分为3中不同的情况:0%的时候会直接替换为[Mask],10%的时候将其替换为其它任意单词,10%的 时候会保留原始Token。

• 80%: my dog is hairy -> my dog is [mask]

• 10%: my dog is hairy -> my dog is apple

• 10%: my dog is hairy -> my dog is hairy

这么做的原因是如果句子中的某个Token100%都会被mask掉,那么在fine-tuning的时候模型就 会有一些没有⻅过的单词。加入随机Token的原因是因为Transformer要保持对每个输入token的 分布式表征,否则模型就会记住这个[mask]是token ’hairy‘。至于单词带来的负面影响,因为一 个单词被随机替换掉的概率只有15%*10% =1.5%,这个负面影响其实是可以忽略不计的。

3.2 Next Sentence Prediction(NSP )

NSP用于判断Segment中的句子B是否是A的下文。

如果是的话输出’IsNext‘,否则输出’NotNext‘。训练数据的生成方式是从平行语料中随机抽取的连续两句话, 其中50%保留抽取的两句话,它们符合IsNext关系,另外50%的第二句话是随机从预料中提取的,它们的关系是NotNext的。

4. finetine

2021年8月12日补充:这两天思考的时候发现对于finetune的部分还是有点不透彻,所以写清楚一点
在训练好的预训练模型上,加上少量的task-specific 参数,例如对于分类问题就加上一层softmax,然后在新的网络里面进行finetune。
关于选取BERT的最后几层的hidden_state做的实验
请添加图片描述

通过步骤三的训练过程,我们可以将他运用到NLP的各个下游任务上了,大部分的任务只需要在BERT的基础上再添加一个输出层便可以完成对特定任务的finetine。

5. 评测

这里我们可以使用huggingface封装好的指标进行实验,可以检验的内容:语言模型、语言生成、GLUE、SQuAD、多项选择、命名实体识别、XNLI、模型性能的对抗性评估。

笔者这里习惯使用huggingface封装好的包直接进行评测,教程

6. 教程
  1. BERT实践
  2. huggingface
### 关于BERT模型论文下载与阅读 #### BERT模型的核心概念 BERTBidirectional Encoder Representations from Transformers)是一种基于Transformer架构的预训练语言表示模型[^3]。它通过引入掩码语言模型(Masked Language Model, MLM)和下一句预测任务(Next Sentence Prediction, NSP),实现了深度双向的语言理解能力。 #### 论文获取方式 BERT模型的原始论文由Google Research团队发布,题目为《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》。可以通过以下途径获取该论文: 1. **arXiv**: 原始版本通常可以在arXiv网站上找到,地址为 https://arxiv.org/abs/1810.04805。 2. **学术搜索引擎**: 使用Google Scholar或其他学术资源平台搜索“BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”,可以找到PDF链接。 3. **官方文档**: Google AI Blog提供了详细的背景介绍和技术细节[^5]。 #### 阅读建议 为了更好地理解和掌握BERT模型的内容,可以从以下几个方面入手: - **基础理论**: 学习Transformer架构的工作原理以及其在自然语言处理中的应用[^1]。 - **核心创新点**: - 双向语言建模的重要性及其相对于单向模型的优势[^4]。 - 掩码语言模型的具体实现机制。 - **实验部分**: 查看作者如何验证模型的有效性,并了解其在不同NLP任务上的表现提升情况。 以下是Python代码片段用于加载并测试已有的预训练好的BERT模型: ```python from transformers import BertTokenizer, BertModel tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertModel.from_pretrained('bert-base-uncased') text = "Replace me by any text you'd like." encoded_input = tokenizer(text, return_tensors='pt') output = model(**encoded_input) print(output.last_hidden_state) ``` 此脚本展示了如何利用Hugging Face库快速导入标准版的小规模BERT模型来进行实际操作演示。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值