当前位置:   article > 正文

Huggingface BERT源码详解:应用模型与训练优化

huggingface bert 源码

©PaperWeekly 原创 · 作者|李泺秋

学校|浙江大学硕士生

研究方向|自然语言处理、知识图谱

上篇,记录一下对 HuggingFace 开源的 Transformers 项目代码的理解。

本文基于 Transformers 版本 4.4.2(2021 年 3 月 19 日发布)项目中,pytorch 版的 BERT 相关代码,从代码结构、具体实现与原理,以及使用的角度进行分析,包含以下内容:

1. BERT Tokenization 分词模型(BertTokenizer)

2. BERT Model 本体模型(BertModel)

3. 1. BertEmbeddings

    2. BertEncoder

    3.1. BertLayer

        2.1. BertAttention

            2.1. BertIntermediate

               2. BertOutput

            3. BertEmbeddings

            4. BertEncoder

        3. BERT-based Models应用模型

4. BertForPreTraining

5. 1. BertForSequenceClassification

    2. BertForMultiChoice

    3. BertForTokenClassification

    4. BertForQuestionAnswering

    5. BERT训练与优化

6. BERT训练与优化

7. 1. Pre-Training

    2. Fine-Tuning

    3. 1. AdamW

        2. Warmup

BERT-based Models

基于 BERT 的模型都写在/models/bert/modeling_bert.py里面,包括 BERT 预训练模型和 BERT 分类模型,UML 图如下:

BERT模型一图流(建议保存后放大查看):

▲ 画图工具:Pyreverse

首先,以下所有的模型都是基于BertPreTrainedModel这一抽象基类的,而后者则基于一个更大的基类PreTrainedModel。这里我们关注BertPreTrainedModel的功能:

  • 用于初始化模型权重,同时维护继承自PreTrainedModel的一些标记身份或者加载模型时的类变量。

下面,首先从预训练模型开始分析。

3.1 BertForPreTraining

众所周知,BERT 预训练任务包括两个:

  • Masked Language Model(MLM):在句子中随机用[MASK]替换一部分单词,然后将句子传入 BERT 中编码每一个单词的信息,最终用[MASK]的编码信息预测该位置的正确单词,这一任务旨在训练模型根据上下文理解单词的意思;

  • Next Sentence Prediction(NSP):将句子对 A 和 B 输入 BERT,使用[CLS]的编码信息进行预测 B 是否 A 的下一句,这一任务旨在训练模型理解预测句子间的关系。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/667097
推荐阅读
相关标签
  

闽ICP备14008679号