BERTの理解に役立つ資料まとめ

この記事は何か

BERTを理解したいと思っている方に向けて、
そのアルゴリズムの解説ではなく参考になる資料などを紹介することで、
BERTを理解するための道しるべを提供します。

BERTとは

BERTとは2018年にGoogleが発表したNLP(自然言語処理)のモデルの一つで、
多くの自然言語処理のタスクで当時最高水準のスコアを達成しました。また、2019年にはGoogleの検索エンジンにBERTのアルゴリズムが利用されるようになりました。

「BERTによって意味理解のようなことが可能になった」と評されており注目されている技術です。

(余談ですが、関連技術の論文ではセサミストリートの名前をつける風潮があり、BERTもそこを意識しているように思います。)

構成

構成は下記の三段構成となっています。

この構成にした理由は、各トピックが比較的ですが疎な関係(前の内容をブラックボックスとしてもよい)であるためです。

  1. RNN, seq2seq, Attention付きseq2seq
  2. Transformer
  3. BERT

1. RNN, seq2seq, Attention付きseq2seq

  • 対象:ニューラルネットワークの概要を理解している
  • 到達目標:Attentionを理解している

ここでの到達目標はあくまで、Attentionを理解することです。
なぜならTransformer, BERTにはRNN構造などは用いられていないためです。
しかし、Attentionの威力を知るための道具として、seq2seqモデルはとても役に立ちます。

1-1. ゼロから作るDeep Learning2――自然言語処理編

大変評価の高い書籍です。この書籍を読む段階では完璧に理解をする必要はありません。

まずは概要を掴むことを目標とし、さらに下記の副教材を使いながら書籍を読み直したりすることで理解が深まっていくと思います。

1-2. Coursera Sequence Models

https://www.coursera.org/learn/nlp-sequence-models

Courseraで開講されている講座です。

Courseraのオンライン講座はスマホにダウンロードすることもできるので、
通勤通学時間でも学習を進めることができます。

言語は英語ですが、図や数式を豊富に使った講義であり、すでに概要を理解しているはずなので、
概ね内容を理解できると思います。

1-3. Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models With Attention)

http://jalammar.github.io/visualizing-neural-machine-translation-mechanics-of-seq2seq-models-with-attention/

seq2seq, Attention付きseq2seqについてアニメーション付きで解説をしている、Jay Alammar氏の記事です。

数値計算がどのように行われているか(行列の形状がどう変化するか)が視覚的に理解できます。

このサイトのその他のページにも、とても魅力的な解説があるのでぜひご参照ください。
http://jalammar.github.io/

彼のブログは、抽象的なブロックを細分化しながら理解していく解説スタイルで、最初のイメージを掴むためにとても役にたつと思います。

2. Transformer

  • 対象:Attentionを理解している
  • 到達目標:Transformerの概要を理解している

2-1. Attention is All You Need

https://arxiv.org/abs/1706.03762

Transformerが発表された論文です。

比較的読みやすく書かれた論文ですが、この内容を初見で理解するのは難しいかと思いますので、ざっと概要を読みます。

何らかの形でいつでも読み返せるようにしておくと良いです。

論文を紙で印刷して、今後の副読本の内容を読みながらメモを書き込んでいくスタイルがおすすめです。

2-2. 深層学習界の大前提Transformerの論文解説!

https://qiita.com/omiita/items/07e69aef6c156d23c538

Qiitaの記事ですが、ネットに公開されているTransformerの解説記事の中で最も分かりやすいです。

2-3. The illustrated Transformer

http://jalammar.github.io/illustrated-transformer/

先ほども紹介したJay Alammar氏のブログで、イラストが豊富な解説でとても理解がしやすいです。

2-4. 詳解ディープラーニング 第2版

TensorFlowとPyTorchのコード付きでTransformerの解説がされている貴重な一冊です。

3. BERT

  • 対象:Transformerの概要を理解している
  • 到達目標:BERTの概要を理解している

3-1. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

https://arxiv.org/abs/1810.04805

いよいよ本丸です。Transformerの時と同じで、この内容を初見で理解するのは難しいかと思いますので、ざっと概要を読むにとどめて、読み返せるようにしておくと良いです。

3-2. BERT解説:自然言語処理のための最先端言語モデル

https://ainow.ai/2019/05/21/167211/

日本語で書かれた技術メディアの記事です。論文の内容にも程よく切り込んでいます。

3-3. A Visual Guide to Using BERT for the First Time

http://jalammar.github.io/a-visual-guide-to-using-bert-for-the-first-time/

再び、Jay Alammar氏のブログです。この解説記事でもイラストが豊富です。また、scikit-learnと組み合わせたサンプルコードを交えて解説がなされており、実際に動かしながら理解することができます。

3-4. huggingface/transformers

https://github.com/huggingface

自然言語処理のモデルを集めたライブラリです。もちろんオープンソースです。

このライブラリを使うことで簡単にBERTを動かすことができますので、実際にインストールして動かしてみると良いと思います。使ってみることが理解の近道です。

TensorFlowとPyTorchに対応しています。

サンプルを動かすだけなら、使い方もそこまで難しくはないです。

3-5. BERT日本語モデル

BERTの原論文は日本語の扱いが不適切であるという指摘があります。

これらのリンクはBERTを日本語に適用する際の処方箋として役にたつと思います。

クックパッドの記事

https://techlife.cookpad.com/entry/2018/12/04/093000

京大 黒橋研のホームページ

http://nlp.ist.i.kyoto-u.ac.jp/index.php?BERT%E6%97%A5%E6%9C%AC%E8%AA%9EPretrained%E3%83%A2%E3%83%87%E3%83%AB

3-6. つくりながら学ぶ!PyTorchによる発展ディープラーニング

2020/2現在、BERTの解説がされている唯一の書籍かと思います。
書籍リストを更新しました

他のトピックの解説もあるため、この一冊でBERTが理解できる訳ではありませんが、
コードも付いており非常に貴重な解説です。

BERTに関連するページは50ページ程度。

3-7. BERT・XLNetに学ぶ、言語処理における事前学習

https://note.com/lib_arts/n/n810568c557fd

noteの有料記事です。目次にある通り、本記事のような構成で段階的にBERTを解説しています。

Reformer[2020]など、最新のモデルについても更新をされているようで、価値がある商品だと思います。

3-8. Language Learning with BERT - TensorFlow and Deep Learning Singapore

https://www.youtube.com/watch?v=0EtD5ybnh_s

BERTの概要について解説しています。

手っ取り早く使ってみたい方には良いでしょう。

単語埋め込み、LSTMあたりの概要がわかっていれば理解できると思います。

理論の詳細は掘り下げません。

3-9. [BERT] Pretranied Deep Bidirectional Transformers for Language Understanding (algorithm) | TDLS

https://www.youtube.com/watch?v=BhlOGGzC0Q0

こちらは上の動画よりは詳しい解説となっていますが、数式の説明等はありません。
図が多用されているので、アーキテクチャの理解に役立ちます。

Masked Lanuage Model(穴埋め問題)の説明が分かりやすいです。

教師なし学習(事前学習)をしたのち、fine-tuning(ファインチューニング)をして、といったように流れを掴めます。

3-10. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

https://www.youtube.com/watch?v=-9evrZnBorM

原著論文を解説しています。深く理解したい方におすすめです。

3-11 自然言語処理の王様「BERT」の論文を徹底解説

https://qiita.com/omiita/items/72998858efc19a368e50

Qiitaの記事です。論文のお供にどうぞ。

3-12 Learn BERT - most powerful NLP algorithm by Google

udemyにも講座があります。

Learn BERT - most powerful NLP algorithm by Google

まとめ

皆様がBERTの勉強をするにあたり、本記事が少しでも参考になれば幸いです。

追記

BERTを扱っている書籍(2020/3)

機械学習・深層学習による自然言語処理入門

日本語BERTで固有表現認識を行います。
BERTに関連するページは12ページ程度。

現場で使える! Python自然言語処理入門

図が豊富で分かりやすいです。
BERTに関連するページは15ページ程度。

Pythonでつくる対話システム

対話システムを作るためにBERTを利用します。
BERTに関連するページは15ページ程度。

宣伝

機械学習エンジニアを目指している方向けに、書籍を出しました。
サクッと読める内容ですので是非お手に取ってみてください。

記事情報

  • 投稿日:2020年2月11日
  • 最終更新日:2020年8月15日