接着剤の精進日記

競プロでの精進や研究に関係したことを書いていきます。

BERTを使ってみる

はじめに

最近流行りのBERTを使ってサンプルを動かしてみます。

参考ページ

techblog.nhn-techorus.com

環境

CentOS7
python3.6
tensorflow1.12

はじめに

最初に作業ディレクトリを作ります

mkdir bert_test
cd bert_test

公式リポジトリのクローン

git cloneで公式リポジトリからクローンします

git clone https://github.com/google-research/bert

学習済みのモデルをダウンロード

学習済みのモデルが公開されているので、ダウンロードしてから解凍します

wget https://storage.googleapis.com/bert_models/2018_10_18/uncased_L-12_H-768_A-12.zip
unzip uncased_L-12_H-768_A-12.zip

対象データのダウンロード

次にGLUEという対象となるデータをダウンロードします。
ダウンロードには公開されているスクリプトがあるのでこれを使います。

wget https://gist.githubusercontent.com/W4ngatang/60c2bdb54d156a41194446737ce03e2e/raw/17b8dd0d724281ed7c3b2aeeda662b92809aadd5/download_glue_data.py
python download_glue_data.py

環境変数の設定

以下のコマンドで環境変数を設定しておきます。

export BERT_BASE_DIR=uncased_L-12_H-768_A-12
export GLUE_DIR=glue_data/

BERTを実行

python bert/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/

自分の環境だと1時間以上かかりましたが、GPUなどを使うと15分程度で終わるみたいです。
実行が終わると以下のような表示が出ます。
f:id:tkm-kyudo:20190404155335p:plain

終わりに

研究でBERTを使うにあたりまずはサンプルを動かしてみました。
動かすこと自体は比較的容易ですが、BERT単体でもかなり高い精度が出ているのがわかります。
今後は自分の研究にBERTを組み込んだり、改善したりしていきます。