Science2018.11.9ツイートTopicsはじめに実験まとめこんにちは。データサイエンスチームのtmtkです。この記事では、最近公開されたBERTの学習済みモデルを試してみます。はじめに今年10月末に、BERTという自然言語処理のモデルが発表されました。事前に学習したモデルをファインチューニングする仕組みで、自然言語処理の各種タスクで最高のスコアを更新したため、話題になりました。このBERTのソースコードと事前学習済みのモデルが、先月末にGitHubで公開されました。Prejudice(高慢と偏見)」の二つのうちどちらの作品の文かを判定する機械学習モデルを作ってみます。実験いつものように、AWSのEC2で実験をします。(Ubuntu)をえらび、p2.xlargeタイプのインスタンスを作成します。SSHでログインします。BERTの実験まずは公式リポジトリのREADME.mdで示されているチュートリアルを実験します。公式リポジトリをクローンします。https://github.com/google-research/bert学習済みモデルをダウンロード、解凍します。uncased_L-12_H-768_A-12.zip対象となるGLUEのデータを、スクリプトを使ってダウンロードします。allTensorFlowの環境を有効にし、BERTの学習を実行します。--output_dir=/tmp/mrpc_output/15分ほど待つと学習と評価が完了し、以下のようなメッセージが表示されます。0.42157498BERTによって、MRPCのタスクが開発用データセットでのaccuracy=85.5%で解かれています。自分で作ったタスクを解く次に、GLUEにはない自分のタスクを作って、BERTで解いてみましょう。Prejudice(高慢と偏見)」の二つのうちどちらの作品の文かを判定する機械学習モデルを作ってみます。BERTのリポジトリのrun_classifier.pyは、CoLA、MNLI、MRPC、XNLIという4つのタスクに対応しているようです。この中ではCoLAのタスクがやりたいことに近そうです。CoLAは、与えられた英文が文法的に受け入れられるかどうかを判定するタスクです。5番目の文は英語の文として受け入れられるとされています。今回は、CoLAのデータセットと同じ形式にデータを整形し、BERTで解くことにします。Prejudice」をダウンロードします。http://www.gutenberg.org/files/1342/1342-0.txtこれらのデータを、適当にパースして学習用データセットを作成します。Pythonを起動して、python以下のスクリプトを実行します。改行を空白に変え、ピリオドで区切るだけという、かなり雑な前処理になっています。自然言語処理の前処理としてはかなり不適切ですが、BERTの紹介をしたいのであって前処理の紹介をしたいわけではないため、このまま先に進みます。train.tsvは、以下のような形式になります。low-spiritedBERTで分類タスクを解いてみましょう。0.11430232accuracy=97%のモデルが作成できました。「不思議の国のアリス」と「高慢と偏見」からそれぞれ2文ずつとってきて、推論を実行してみます。以下をtest.tsvとして保存します。tsvファイルなので、indexとsentenceの区切りは空白文字でなくタブ文字であることに注意します。consequence.推論を実行します。--output_dir=.推論結果を確認します。0.99942976正しく分類できている様子が観察できます。まとめこの記事では、先日公開されたBERTの学習済みモデルを実際に使ってみました。画像認識の分野では、ImageNetで学習されたVGG16などをファインチューニングするというのが深層学習モデル作成の標準的な手法になっています。今回、このBERTが公開されたことで、自然言語処理の分野でも画像認識のように、簡単で標準的な手法が確立されるのではないでしょうか。今後ますますBERTの活用事例が出てきて、BERTの有用性が実証されることが楽しみです。EC2#TensorFlow#機械学習tmtkデータ分析と機械学習とソフトウェア開発をしています。アルゴリズムとデータ構造が好きです。