深層学習のAttention・Transformer サンプルコード・論文のコード
深層学習では、学習用のサンプルコードだけでなく、論文と同等のコードもWebに存在する事が多い。これらを使うと効率的な学習や開発ができる。
学習用のサンプルコード
作って理解する Transformer / AttentionのWebサイトには、日本語でTransformerの内部構造が書かれていて分かりやすい。ここにサンプルコードも付いているが、構造はかなり複雑である。
サンプルコードのある書籍としては、ゼロから作るDeep Learning 2 ―自然言語処理編や、つくりながら学ぶ! PyTorchによる発展ディープラーニングなどがある。これらのサンプルコードの方が上記より簡単である。
「作って理解する Transformer / Attention」をGoogle Colabで動かす
作って理解する Transformer / Attentionのサンプルコードは、Gitからの取得前提でTensorflowのバージョンが1であるため、そのままではGoogle Colab上で動かない。このサンプルコードをGoogle Colabで動かすように改造してみた。
まずファイルをすべてGoogleドライブにアップロードする。Google Colabから次のファイルを開く。
- deepdialog/transformer/training.ipynb
このファイルを修正する。最初のカレントディレクトリ変更部分をコメントアウトし、代わりに以下のコードを入れる。[アップロードしたディレクトリ]の部分を適切な内容に変えて実行すれば、Google Colab上で動くようになる(2020/6確認)。
import os # TensorFlow バージョン変更 %tensorflow_version 1.x import tensorflow print(tensorflow.__version__) # ライブラリインストール !pip install sentencepiece # ドライブのマウントとカレントディレクトリ変更 from google.colab import drive drive.mount('/content/drive') %cd "/content/drive/My Drive/Colab Notebooks/[アップロードしたディレクトリ]" !ls
ドライブのマウント時には、表示されたリンク先からGoogleにログインして、認証コードをコピーペーストする必要がある。
実際にGoogle Colab上で動かしてみると、GPUを使っても80000stepまで行くのに10時間以上は掛かりそうだ。簡単に結果を見るという訳には行かないようである。
論文のコードとSOTA
論文のコードはPapers With Codeから探す事ができる。
深層学習においてはSOTA(State-of-the-Art)が重視される。これは特定のテスト用データに対して、同じ目的の処理を行った場合の最善手法を示す。なぜSOTAが重視されるかと言うと、深層学習においては概念的な方法論ではなく、実際に運用できる手法が重視されているからである。SOTAは実用的な最善手法として明確な基準になる。
同じような考え方で、コードの公開も重視されている。これも利用者が再現性チェックをすぐに行い、実用性を検証する事を目指している。
現在の深層学習において研究から実装までの期間が短いのは、SOTAやコード公開が背景にある。これらを利用しやすくしたWebサイトがPapers With Codeである。ここを見ると各テスト用データに対するSOTAや、論文に対するコードなどが確認できる。研究や利用において、かなり便利なサイトである。
論文のページで示した各論文も、多くがテスト用データやSOTAの検証を行っている。発表時点でのSOTAである論文も多く、上記サイトにコードが公開されている場合もある。
ちなみに私はSOTAだけでなく方法論も重要だと考えている。そもそもAttentionも認知科学的な方法論から生まれた手法である。
目次
サンプルコード・論文のコード