学習|BERTモデル構造

3903 ワード

前言
1.Bert TransformerのEncoderを使用
2.事前訓練はmasked lamngluage modelingとnext sentence classificationの2つのタスクを含む
3.強力かつオープンソース
1.モデル構造、pytorchと照らし合わせて実現
1.BertModelはBertPreTrainedModelから継承され、親には異なる種類の重みとバイアスの初期化関数、およびモデルロード関数が含まれます.
2.BertModelはEmbedding、Encoderを実施し、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)であり、2つの文として入力場合、0/1で区別され、そうでない場合、このフィールドは0である.
4.Encoderモジュールは、bool型パラメータoutput_からなる複数の同じBertLayerモジュールから直列に構成されているall_encoded_Layersは、すべてのモジュールの出力リストを出力するか、テールモジュールの結果のみを出力するかを制御します.
5.BertLayerモジュールは、BertAttention、BertIntermediate、BertOutputの3つのステップを含む.
6.BertAttentionは、BertSelfAttention、BertSelfOutputを含む.
7.BertSelfAttentionのいくつかの実装の詳細:1)nn.Linear(hidden_state)はq、k、vを得る.2)4次元ベクトルの計算と変換を用いてmuti_を実現するhead;3)文長マスクの値は0/-1000である.scoreに加算することで実現します.
8.BertSelfOutputは、等形の線形変換とdropout、残差接続を含む層正規化を行う.
9.BertIntermediateは、線形変換(入力次元hidden_size、出力次元intermediate_size)と非線形アクティブ化を含む.
10.BertOutputは、線形変換(入力次元がintermediate_size、出力次元がhidden_size)および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,110 M parameters-Large 24-layer,1024-hidden,16-heads,340 Mparameters-Uncasedは大文字と小文字を区別しません.NERタスクでは特に大文字と小文字を区別しない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",
}

4.いくつかの予備訓練言語モデル
1.CBOW:ワードバッグモデル、コンテキスト、位置情報なし2.GPT:TransformerのDecoder,上記3.Bert:TransformerのEncoder,コンテキスト4.ELMo:BiLSTM、上と下