AsaHP
AI・深層学習 > 前ページ | 概要 論文 3:コード | 次ページ

深層学習の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から次のファイルを開く。

このファイルを修正する。最初のカレントディレクトリ変更部分をコメントアウトし、代わりに以下のコードを入れる。[アップロードしたディレクトリ]の部分を適切な内容に変えて実行すれば、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も認知科学的な方法論から生まれた手法である。

目次

技術の概要

著名な論文と各分野の論文

サンプルコード・論文のコード

AI・深層学習