Python
機械学習
DeepLearning
TensorFlow
colaboratory

【環境構築不要・スマホ/タブレットOK】東大松尾研のDeep Learningエンジニア育成講座『DL4US』を自習する


PR: 以前の記事 のデータサイエンティスト向け講座のColab実行方法などをまとめ、 :books: 図解速習DEEP LEARNINGという本ができました。[2019年5月版] 機械学習・深層学習を学び、トレンドを追うためのリンク150選 - Qiitaでも、一部内容をご覧いただけます :smile:

参考: Colaboratoryユーザによる非公式の情報交換Slackを試験的に立ち上げました。リンクより、登録・ご参加ください。



TL;DR


  • いつも満員抽選となる東大松尾研Deep Learningエンジニア育成講座『DL4US』の演習資料が公開された

  • Google Colaboratoryを使えば、Python等セットアップ不要ですぐに始められる

  • 全ノートブックを実行し、つまずき所も乗り越え方をまとめました

  • セットアップ後は、スマホやタブレットのブラウザでもok

  • GPUだって無料で使える!

  • Colab概要はこちら:



こんなに簡単です :point_down:


DL4USのカバー範囲

DL4USの演習は、Keras(TensorFlow)というフレームワークを使い、基礎的な内容を説明したあと、画像や言語の教師あり学習・推論、深層生成モデル、時系列データの学習も扱います。また、Deep Learning基礎講座では公開されていなかった、強化学習のチュートリアルもあり、楽しめます。

独断でマッピングしてみました。さらに基礎を固める、または様々な事例を試したい方は こちら もご参照ください。

image.png


https://github.com/matsuolab-edu/dl4us/README.md より抜粋




  • Lesson 0: 機械学習・Deep Learningのキソ


    • 機械学習概観




  • Lesson 1: 手書き文字認識をしよう


    • Keras入門、MNIST、MLP、前処理、勾配に関するテクニック、過学習に関する手法、Fashion MNIST




  • Lesson 2: 畳み込みニューラルネットワーク


    • CNN基礎、Data Augmentation、画像データの正規化、Batch Normalization、Skip Connection




  • Lesson 3: 系列データで予測させてみよう


    • RNN、BPTT、Gradient Clipping、LSTM、GRU




  • Lesson 4: ニューラル翻訳モデルをつくってみよう


    • 言語モデル、分散表現、Seq2Seq、Keras Functional API、Attention




  • Lesson 5: 画像からキャプションを生成してみよう


    • MSCOCO、学習済みモデルの利用、キャプション生成、Attention




  • Lesson 6: ニューラルネットに画像を生成させよう


    • 生成モデル入門、GAN、Conditional GAN、VAE




  • Lesson 7: ニューラルネットでゲームを攻略するAIをつくろう


    • 強化学習入門、Q学習、DQN、OpenAI Gym、Double DQN、Dueling Network




始め方

公開資料はGitHub上にあります。まず、講座の情報公開ページの注意事項に目を通した後、ノートブックをご自身のGoogleドライブに保存し、PCでもスマホ・タブレットでもノートブックを開き、学習できる状態をセットアップします。


1. 公開資料をダウンロードする

image.png

リンク先は、GitHubのリポジトリmatsuolab-edu/dl4us になっています。ここから、GitHub上の Clone or download ボタンを押し、 Download ZIP を選択すると、ファイルのダウンロードが始まります。

image.png


Tips: または、ColaboratoryからGitHub上のパスを指定して、直接開くこともできます。

例えば、以下はLesson 0のノートブックが開きます。

https://colab.research.google.com/github/matsuolab-edu/dl4us/blob/master/lesson0/lesson0_exercise.ipynb

今回はスマートフォンやタブレットから簡単に開けるようにするため、Googleドライブを経由するやり方を紹介しますが、デスクトップでは、このリンクを活用すればファイルダウンロードの必要さえありません。

一般に、GitHub上のノートブックは、

https://colab.research.google.com/github/{ユーザ名}/{リポジトリ名}/blob/master/{リポジトリ内のパス}

という指定で開くことができます。



2. ファイルを解凍する


  • ダウンロードした dl4us-master.zip を解凍します


  • dl4us-master フォルダ下に、下記のような8フォルダとファイルが作られます

image.png


3. 自分のGoogle Driveへアップロードする



  • Google Driveを開きます

  • 適当なフォルダ(dl4us-notebooks等)を作り、上記ファイルをアップロードします


4. Colaboratoryを起動する


  • Google Drive上で、 lesson0_exercise.ipynb をダブルクリックします

  • 上部の Open with プルダウンから Colaboratory を選択します

するとColaboratoryが立ち上がり、下記画面となります。

image.png


5. 学習を始める

あとはノートブックを読み進め、各セルを実行してみます。

多くのノートブックはGPUを有効化することで、高速化できます。メニューの ランタイム> ランタイムのタイプを変更 から、 ハードウェアアクセラレータGPU を選択します。

image.png

下記のようなソースコードは、セルを選択し 左上の再生ボタンを押す または Shift + Return で実行できます。

image.png


6. スマホから使う


  • iPhone/AndroidいずれかのChromeを開きます


  • Google Colaboratoryを開きます


    • スマホ版のGoogle Driveアプリからは、直接Colaboratoryを開けないので注意!



  • 起動時の、 ノートブックを開く 選択画面から、 GOOGLE ドライブ タブを選択


    • または、メニューの ファイル> ノートブックを開く から同様に操作



  • 該当の.ipynbファイルを開きます



    • lesson1 などの、ファイル名に含まれるキーワードで検索すると良いでしょう




各ノートブック実行時間・つまずきポイント on Colab

私の手元で基本全ノートブックの動作を確認しました。

各ノートブックの実行時間も示しています。(ただし、これはノートブックの読了時間を考慮していません。コードの実行時間です。)

Colaboratory上で実行した場合に必要な考慮を、ノートブックごとに解説します。

(ライセンスでは派生物の作成・公開を許可されていない様なので、修正したものの公開ではなく、修正する方法を解説します)


L.0 機械学習・深層学習のキソ [実行目安 なし]


  • 実行に問題はありません

  • 表示されていない画像は、figures の前、URLの先頭に に https://github.com/matsuolab-edu/dl4us/raw/master/lesson0/ を加えると表示できます


L.1 手書き文字認識をしよう(ニューラルネットワーク入門) [実行目安 5分]


  • 実行に問題はありません

  • 表示されていない画像は、figures の前、URLの先頭に https://github.com/matsuolab-edu/dl4us/raw/master/lesson1/ を加えると表示できます


Lesson2 畳み込みニューラルネットワーク (CNN) [実行目安 20分]


  • 実行に問題はありません

  • 表示されていない画像は、figures の前、URLの先頭に https://github.com/matsuolab-edu/dl4us/raw/master/lesson2/ を加えると表示できます


L.3 系列データで分類・予測させてみよう(RNN, LSTM) [実行目安 10分]


  • Section 2, 4は以下の変更が必要です

  • 表示されていない画像は、figures の前、URLの先頭に https://github.com/matsuolab-edu/dl4us/raw/master/lesson3/ を加えると表示できます


Section 2

以下のコードセルを冒頭に追加し、データセットをダウンロードします。

!mkdir data

%cd data
!wget http://timeseriesclassification.com/Downloads/ECG5000.zip
!unzip ECG5000.zip
%cd ..

以下の箇所について、 ECG5000.arffECG5000_TEST.arff に書き換えます。(データセットのファイル名が変更されているようです)

#dataset, meta = arff.loadarff('data/ECG5000.arff')

dataset, meta = arff.loadarff('data/ECG5000_TEST.arff')


Section 4

データセットの提供サイトに接続できません(2019.5.19時点)。Kaggleに、同データセットがあるようです: https://www.kaggle.com/falkow91/internationalairlinepassengers/


L.4 ニューラル翻訳モデルを作ってみよう(Seq2Seq, Attention) [実行目安 20分]


  • Section 2は以下の変更が必要です

  • 表示されていない画像は、figures の前、URLの先頭に https://github.com/matsuolab-edu/dl4us/raw/master/lesson4/ を加えると表示できます


Section 2

ノートブックの冒頭で、データセットをダウンロードします。

!git clone https://github.com/odashi/small_parallel_enja.git

以下のコードのディレクトリ指定を書き換えます。

# 読み込み&Tokenizerによる数値化

#x_train, tokenizer_en = load_data('data/train.en')
#y_train, tokenizer_ja = load_data('data/train.ja')
x_train, tokenizer_en = load_data('small_parallel_enja/train.en')
y_train, tokenizer_ja = load_data('small_parallel_enja/train.ja')


L.5 画像からキャプションを生成してみよう [実行目安 2時間]


  • Section 1は以下の変更が必要です

  • 表示されていない画像は、figures の前、URLの先頭に https://github.com/matsuolab-edu/dl4us/raw/master/lesson5/ を加えると表示できます


Section 1

ノートブックの冒頭で、実行スクリプト等のため、リポジトリをクローンします。

!git clone https://github.com/matsuolab-edu/dl4us.git

%cd dl4us/lesson5

Colaboratoryでは、メインメモリが不足となりクラッシュするため、学習データサイズを小さくします。 (preprocess_mscoco.py)

# N_TRAIN_DATA = 50000

N_TRAIN_DATA = 30000


L.6 ニューラルネットに画像を生成させよう [実行目安 2時間]


  • 実行に問題はありません

  • 表示されていない画像は、figures の前、URLの先頭に https://github.com/matsuolab-edu/dl4us/raw/master/lesson6/ を加えると表示できます


L.7 ニューラルネットでゲームを攻略するAIをつくろう [実行目安 設定次第]



  • #Colab上では以下を実行してください という記載は、コメントアウトを外して実行します

  • Section 4は実行時間に注意が必要です

  • 表示されていない画像は、figures の前、URLの先頭に https://github.com/matsuolab-edu/dl4us/raw/master/lesson7/ を加えると表示できます


Section 4

DQNによるBreakOut(ブロック崩し)の学習です。学習の並列化などは実装していないため、数十時間の学習が必要です。

4.1.3 学習 のステップ数を変更し、学習時間を変えられます。

#n_steps = 500000

n_steps = 100000 # 100000ステップに変更した例

このノートブックに限っては、Colaboratoryでの実行は少し難しいでしょう。ノートブックの連続起動時間制限(12時間)にかかってしまうためです。モデルを途中保存し、途中から学習を再開するなどの工夫をすれば、不可能ではありません。または、他のフレームワークを用いて効率化をした他のノートブックなどをお試しください。


参考リソース

DL4USは、他にも概要や、コンテナでの実行方法が解説されています。

以前公開された、データサイエンティスト育成、Deep Learning基礎講座についても、Colaboratory上での実行方法をまとめています。こちらをご覧ください。

また、Colaboratoryを使って、もっとたくさん、応用事例が試せる! 書籍を書きましたのでよろしければご覧ください。

また、最近、Colaboratory(Jupyter)ノートブックの深層学習チュートリアルが盛んに公開されています。それぞれチュートリアルに採用しているフレームワークの違いはありますが、特に基礎的な部分の解説は、相互に渡り歩きながら学習をすると、理解が早まると思います。こちらも参考にしてください。


DL4USの次に何をやるか

最後に、DL4USの範囲を超えて学習を進める場合のおすすめをまとめました。以下の、 +... の表記部分を、 :computer: Chainerのチュートリアル:books: 図解速習DEEP LEARNING紹介のチュートリアルでカバーできます。ぜひお試しください。

image.png