Help us understand the problem. What is going on with this article?

【環境構築不要・スマホ/タブレット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

tomo_makes
書いたもの: 『図解速習DEEP LEARNING』『機械学習の炊いたん。』ほか すきなもの: 機械学習、グラフ、いろんな可視化、つくる、アジア・中東各国料理と音楽
https://amzn.to/2J0QNGF
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away