ELMO、GPT、Transformer、bert

ELMO、GPT、トランスフォーマー

1:単語の曖昧さを解決するモデルELMO、問題は、LSTMの特徴抽出能力がTransformerのそれよりはるかに弱いことです。

2:Transformerを使用して特徴を抽出するGPTモデル、問題は言語モデルが一方向であるということです

3:bert-Masked言語モデルと次の文の予測

Transformerは、RNNとCNNを開始した従来の機能抽出機能になり、トップブランドになり、大ヒットしました。あなたは尋ねました:注意メカニズムは何ですか?別の広告があります。注意がわからない場合は、2016年と17年に発行された次の改訂版を参照してください:「深層学習における注意モデル」、関連する基本的な知識を補足します。注意のメカニズムを理解していない場合は、間違いなく遅れます。時代の発展。Transformerに関するより良い記事については、次の2つの記事を参照してください。1つはJayAlammarのブログ投稿TheIllustrated Transformerで 、Transformer視覚的に紹介しています。メカニズム全体を理解するのは非常に簡単です。これから始めることをお勧めします。その後、ハーバード大学のNLP研究を参照できます。グループによって書かれた 「AnnotatedTransformer。」、コードの原則は二面性であり、それは非常に明確です。Transformerを理解するには、上記の2つの記事で十分だと思いますので、ここでは紹介しません。

1つのタイプは、最も一般的なNLPタスクであるシーケンスタグ付けです。たとえば、中国語の単語のセグメンテーション、音声の一部のタグ付け、名前付きエンティティの認識、セマンティックロールのタグ付けなどはすべて、このタイプの問題に分類できます。その特徴は、文の各単語がコンテキストは分類カテゴリを与える必要があります。

2番目のカテゴリは、一般的なテキスト分類、感情計算などの分類タスクです。このカテゴリに分類できます。その特徴は、記事の長さに関係なく、全体として分類カテゴリを指定できることです。

3種類のタスクは、含意、QA、セマンティックリライト、自然言語推論などのセンテンス関係判断であり、その他のタスクはすべてこのモードです。2つのセンテンスが与えられると、モデルは2つのセンテンスに特定のセマンティック関係があるかどうかを判断するという特徴があります。

4つのタイプは、機械の翻訳、テキストの要約、詩の作成と文章の作成、写真の表示と会話などの生成タスクであり、すべてこのカテゴリに分類されます。その特徴は、テキストコンテンツを入力した後、テキストの別の段落を自律的に生成する必要があることです。

参照:

単語の埋め込みからバートモデルへ—自然言語処理における事前トレーニング技術の歴史

https://zhuanlan.zhihu.com/p/49271699

バート時代のイノベーション(アプリケーション):NLPのさまざまな分野におけるバートのアプリケーションの進歩

https://zhuanlan.zhihu.com/p/68446772

Meituan技術チーム:

https://tech.meituan.com/

バート

SQuAD
https://rajpurkar.github.io/SQuAD-explorer/
CNNと自己注意を使用したQANet(Question Answering Network)の実装
https://towardsdatascience.com/implementing-question-answering-networks-with-cnns-5ae5f08e312b
マシンリーディングアリIDST SLQA技術通訳、人間の記録を破る理解
https://www.jiqizhixin.com/articles/2018-01-14-4
https://github.com/NLPLearn/QANet
機械読解のためのQANetのA Tensorflow実装
BERTをDureaderは、読解力で7位にランクされてい
ますhttps://github.com/basketballandlearn/Dureader-Bert

 

バート文ベクトル:

https://github.com/JerryRoc/bert_utils_gp/blob/5567cfd6536b098ec389845a7e3b166be5db9940/extract_features_gp_nothread.py#L276

https://github.com/google-research/bert/blob/master/extract_features.py

 

run_classifier.pyrun_squad.py用来做fine-tuning

1:准备预训练的data

python create_pretraining_data.py \
  --input_file=./sample_text.txt \
  --output_file=/tmp/tf_examples.tfrecord \
  --vocab_file=$BERT_BASE_DIR/vocab.txt \
  --do_lower_case=True \
  --max_seq_length=128 \
  --max_predictions_per_seq=20 \
  --masked_lm_prob=0.15 \
  --random_seed=12345 \
  --dupe_factor=5

2:预训练模型

python run_pretraining.py \
  --input_file=/tmp/tf_examples.tfrecord \
  --output_dir=/tmp/pretraining_output \
  --do_train=True \
  --do_eval=True \
  --bert_config_file=$BERT_BASE_DIR/bert_config.json \
  --init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt \
  --train_batch_size=32 \
  --max_seq_length=128 \
  --max_predictions_per_seq=20 \
  --num_train_steps=20 \
  --num_warmup_steps=10 \
  --learning_rate=2e-5

3:提取特征

python extract_features.py \
  --input_file=/tmp/input.txt \
  --output_file=/tmp/output.jsonl \
  --vocab_file=$BERT_BASE_DIR/vocab.txt \
  --bert_config_file=$BERT_BASE_DIR/bert_config.json \
  --init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt \
  --layers=-1,-2,-3,-4 \
  --max_seq_length=128 \
  --batch_size=8

4:阅读理解

python run_squad.py \
  --vocab_file=$BERT_LARGE_DIR/vocab.txt \
  --bert_config_file=$BERT_LARGE_DIR/bert_config.json \
  --init_checkpoint=$BERT_LARGE_DIR/bert_model.ckpt \
  --do_train=False \
  --train_file=$SQUAD_DIR/train-v2.0.json \
  --do_predict=True \
  --predict_file=$SQUAD_DIR/dev-v2.0.json \
  --train_batch_size=24 \
  --learning_rate=3e-5 \
  --num_train_epochs=2.0 \
  --max_seq_length=384 \
  --doc_stride=128 \
  --output_dir=gs://some_bucket/squad_large/ \
  --use_tpu=True \
  --tpu_name=$TPU_NAME \
  --version_2_with_negative=True \
  --null_score_diff_threshold=$THRESH

5:fine-turn

export BERT_BASE_DIR=/path/to/bert/uncased_L-12_H-768_A-12
export GLUE_DIR=/path/to/glue

python run_classifier.py \
  --task_name=MRPC \
  --do_train=true \
  --do_eval=true \
  --data_dir=$GLUE_DIR/MRPC \
  --vocab_file=$BERT_BASE_DIR/vocab.txt \
  --bert_config_file=$BERT_BASE_DIR/bert_config.json \
  --init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt \
  --max_seq_length=128 \
  --train_batch_size=32 \
  --learning_rate=2e-5 \
  --num_train_epochs=3.0 \
  --output_dir=/tmp/mrpc_output/

6:predict

export BERT_BASE_DIR=/path/to/bert/uncased_L-12_H-768_A-12
export GLUE_DIR=/path/to/glue
export TRAINED_CLASSIFIER=/path/to/fine/tuned/classifier

python run_classifier.py \
  --task_name=MRPC \
  --do_predict=true \
  --data_dir=$GLUE_DIR/MRPC \
  --vocab_file=$BERT_BASE_DIR/vocab.txt \
  --bert_config_file=$BERT_BASE_DIR/bert_config.json \
  --init_checkpoint=$TRAINED_CLASSIFIER \
  --max_seq_length=128 \
  --output_dir=/tmp/mrpc_output/

 

 

 

 

おすすめ

転載: blog.csdn.net/u011939633/article/details/103995561