当前位置:   article > 正文

学习 | BERT模型结构_bert 维度

bert 维度

前言

1.Bert使用Transformer的Encoder

2.预训练包括masked lamngluage modeling和next sentence classification 2个任务

3.强大且开源

1.模型结构,对照pytorch实现

1.BertModel继承自BertPreTrainedModel,父类包括不同种类的权重和偏置的初始化函数以及模型加载函数。

2.BertModel实施EmbeddingEncoder、取Encoder的最后一层进行BertPooler,可选择输出Encoder的最后一层或全部,此外还输出Pooler的结果。

3.Embedding模块将input_ids、position_ids、token_type_ids分别进行nn.Embedding变换,3个输出矩阵相加后进行层归一化和dropout后输出。其中position_ids初始化为位置编号(0,1,…);token_type_ids为段号(segment_ids),当输入为两个句子时,以0/1区分,否则该字段为0.

4.Encoder模块由若干个相同BertLayer模块串联组成,由bool型参数output_all_encoded_layers控制输出所有模块的输出列表或仅输出尾模块的结果。

5.BertLayer模块包括BertAttentionBertIntermediateBertOutput三个步骤。

6.BertAttention包括BertSelfAttentionBertSelfOutput

7.BertSelfAttention中几处实现细节:1)通过nn.Linear(hidden_state)得到q、k、v;2)使用4维向量的计算和变换实现muti_head;3)句长掩码的值为0/-10000.,通过与score相加实现。

8.BertSelfOutput包括一个等形的线性变换【多头合并之后,线性变换】及dropout、残差连接后进行层归一化

9.BertIntermediate包括一个线性变换(输入维度为hidden_size即768,输出维度为intermediate_size即3072=768*4)和非线性激活

10.BertOutput 包括一个线性变换(输入维度为768*4,输出维度为768)及dropout,残差连接后进行层归一化

11.BertPooler模块取隐藏状态hidden_states的第一个时间步(其size为[batch_size,hidden_size]),经过输出维度同为hidden_size的线性变换,经tanh非线性激活函数后输出。

2.预训练

参考 1.3预训练任务

3.预训练权重

Bert提供7种预训练好的模型文件:
-Base 12-layer,768-hidden,12-heads,110M parameters
-Large 24-layer,1024-hidden,16-heads,340Mparameters
-Uncased 不区分大小写,NER任务尤其需要不区分大小写
-Cased 区分大小写
以上组合共4种,
此外base还包括与 -multilingual 多语言 组合的2种,以及-Chineae 1种。

PRETRAINED_MODEL_ARCHIVE_MAP = {
    'bert-base-uncased': "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-uncased.tar.gz",
    'bert-large-uncased': "https://s3.amazonaws.com/models.huggingface.co/bert/bert-large-uncased.tar.gz",
    'bert-base-cased': "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-cased.tar.gz",
    'bert-large-cased': "https://s3.amazonaws.com/models.huggingface.co/bert/bert-large-cased.tar.gz",
    'bert-base-multilingual-uncased': "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-multilingual-uncased.tar.gz",
    'bert-base-multilingual-cased': "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-multilingual-cased.tar.gz",
    'bert-base-chinese': "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese.tar.gz",
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4.几种预训练语言模型

1.CBOW:词袋模型,上下文,无位置信息
2.GPT:Transformer的Decoder,上文
3.Bert:Transformer的Encoder,上下文
4.ELMo:BiLSTM,上文和下文

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

闽ICP备14008679号