この記事は、2018年末現在、自然言語処理AIにおける最先端のディープラーニングモデルであるBERTについて、提供元であるgoogle-researchのgithubレポジトリで公開されているファイルの一覧を解説したものです。
BERT自体について知りたい場合は、まず公式READMEの翻訳記事を読んでください(英語が苦でないなら直接公式のREADMEを読む方が勉強になってよいです)
BERTは、種類の異なる様々な自然言語処理タスクで最高成績を叩きだした優れモノで、
しかも転移学習のベースにすれば少ない学習のみで個々の問題を従来より正確に解ける可能性がある「革命的」な技術だそうです。
公開されている内容
- BERTモデルの構築・学習(オプティマイザー)・前処理(トークン化等)するライブラリ
- BERTを転移学習に使用する実験用スクリプト
- BERTを特徴表現抽出に使用する実験用スクリプト
- 自分で用意したデータセットでBERTの事前学習を行うスクリプト
- GoogleがWikipedia + BookCorpusを用いてBERT用に事前学習(100万更新ステップ)したチェックポイント
1~4は、github上で公開、すべてTensorFlow上で動くコード(TensorFlow 1.11.0で試験)です。5はgoogleのストレージ上で公開されています。
用途によって必要なファイルのみを使用すればOK。
- Googleが事前学習してくれたモデルを利用するなら
- 最低限1,5があればOK。プラスして、自分で転移学習するコードを書く場合の参考に2を参考にする。
- BERTのモデルを一から学習(事前学習から)行いたい場合
- 1,4を使用。
ライブラリ本体(1)は、高々1600行ぐらいなので、処理の内容をコードで追うのもそんなに時間かかりません。
公開ファイル一覧(Github上)と簡単な解説
| 種類 | 行数 | ファイル名と解説 |
|---|---|---|
| ドキュメント |
README.mdまずこれを読む。翻訳記事参照 |
|
multilingual.md多言語版のREADME。翻訳記事参照 |
||
CONTRIBUTING.md読む必要なし(永久に互換性を維持するために大きなコード変更は行わないと明言) |
||
| ライブラリ |
__init__.pypythonにおけるおまじないなので無視 |
|
| 988 |
modeling.pyBERTモデル構築用ライブラリ |
|
| 174 |
optimization.pyBERTモデルを学習する際に使用するライブラリ。事前学習及び転移学習で利用 |
|
| 399 |
tokenization.py入力データをトークン化するライブラリ |
|
| スクリプト | 981 |
run_classifier.py転移学習の実験用スクリプト。CoLA,MRPC,MultiNLI,XNLIの4つのデータセット実行用 |
| 1263 |
run_squad.py転移学習の実験用スクリプト。SQuADデータセット実行専用(SQuAD1.1とSQuAD2.0) |
|
| 419 |
extract_features.py入力文中の各単語の特徴表現ベクトルを取り出す実験用スクリプト |
|
| 442 |
create_pretraining_data.py自分で用意したデータセットでBERTの学習(事前学習)を行う場合に使用。入力文にマスクをかける等の前処理を行うスクリプト。BERTのキモである双方向Transformerの教師なし学習を行う為にデータに制約をかける処理 |
|
| 493 |
run_pretraining.py自分で用意したデータセットでBERTの学習(事前学習)を行うスクリプト。create_pretraining_data.pyでデータを加工した後に実行する |
|
| テストコード | 277 |
modeling_test.pyテストコードなので無視 |
| 48 |
optimization_test.pyテストコードなので無視 |
|
| 136 |
tokenization_test.pyテストコードなので無視 |
|
| データ |
sample_text.txtBERTの学習(事前学習)を行うデータセットの小さなサンプル |
個別ファイルの解説
(随時公開予定)