PR: 以前の記事 のデータサイエンティスト向け講座のColab実行方法などをまとめ、 図解速習DEEP LEARNINGという本ができました。[2019年5月版] 機械学習・深層学習を学び、トレンドを追うためのリンク150選 - Qiitaでも、一部内容をご覧いただけます
参考: Colaboratoryユーザによる非公式の情報交換Slackを試験的に立ち上げました。リンクより、登録・ご参加ください。
TL;DR
- いつも満員抽選となる東大松尾研Deep Learningエンジニア育成講座『DL4US』の演習資料が公開された
- Google Colaboratoryを使えば、Python等セットアップ不要ですぐに始められる
- 全ノートブックを実行し、つまずき所も乗り越え方をまとめました
- セットアップ後は、スマホやタブレットのブラウザでもok
- GPUだって無料で使える!
- Colab概要はこちら:
こんなに簡単です
【環境構築不要・スマホ/タブレットOK】東大松尾研のDeep Learningエンジニア育成講座『DL4US』を自習するhttps://t.co/ZJLs9wNKSk
— tomo-makes@『図解速習DEEP LEARNING』 (@tomo_makes) May 20, 2019
スマホから、いかに簡単に手書き文字認識実行まで試せるか動画にしました。
下のリンクで、あなたのスマホですぐ実行できます。https://t.co/PKqRBvyfDS pic.twitter.com/u5jdPp0tbh
DL4USのカバー範囲
DL4USの演習は、Keras(TensorFlow)というフレームワークを使い、基礎的な内容を説明したあと、画像や言語の教師あり学習・推論、深層生成モデル、時系列データの学習も扱います。また、Deep Learning基礎講座では公開されていなかった、強化学習のチュートリアルもあり、楽しめます。
独断でマッピングしてみました。さらに基礎を固める、または様々な事例を試したい方は こちら もご参照ください。
-
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. 公開資料をダウンロードする
-
DL4US コンテンツ公開ページ | U-Tokyo Matsuo Labにダウンロードへのリンクがあります
- 利用上の注意をご確認ください(商用利用不可等)
リンク先は、GitHubのリポジトリmatsuolab-edu/dl4us になっています。ここから、GitHub上の Clone or download
ボタンを押し、 Download ZIP
を選択すると、ファイルのダウンロードが始まります。
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フォルダとファイルが作られます
3. 自分のGoogle Driveへアップロードする
- Google Driveを開きます
- 適当なフォルダ(
dl4us-notebooks
等)を作り、上記ファイルをアップロードします
4. Colaboratoryを起動する
- Google Drive上で、
lesson0_exercise.ipynb
をダブルクリックします - 上部の
Open with
プルダウンからColaboratory
を選択します
するとColaboratoryが立ち上がり、下記画面となります。
5. 学習を始める
あとはノートブックを読み進め、各セルを実行してみます。
多くのノートブックはGPUを有効化することで、高速化できます。メニューの ランタイム> ランタイムのタイプを変更
から、 ハードウェアアクセラレータ
に GPU
を選択します。
下記のようなソースコードは、セルを選択し 左上の再生ボタンを押す
または Shift + Return
で実行できます。
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.arff
を ECG5000_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講座「DL4US」が良い、という話 - Qiita
- 東大松尾研が無料で公開しているディープラーニングの実践的教育プログラム「DL4US」の学習環境をDockerを使ってコマンド一発で構築する方法 - Qiita
以前公開された、データサイエンティスト育成、Deep Learning基礎講座についても、Colaboratory上での実行方法をまとめています。こちらをご覧ください。
また、Colaboratoryを使って、もっとたくさん、応用事例が試せる! 書籍を書きましたのでよろしければご覧ください。
- 図解速習DEEP LEARNING
- ノートブックはGitHubから簡単に開き、無償で試せます: tomo-makes/dl-in-a-sec
- 抜粋のQiitaもあります: [2019年5月版] 機械学習・深層学習を学び、トレンドを追うためのリンク150選 - Qiita
また、最近、Colaboratory(Jupyter)ノートブックの深層学習チュートリアルが盛んに公開されています。それぞれチュートリアルに採用しているフレームワークの違いはありますが、特に基礎的な部分の解説は、相互に渡り歩きながら学習をすると、理解が早まると思います。こちらも参考にしてください。
DL4USの次に何をやるか
最後に、DL4USの範囲を超えて学習を進める場合のおすすめをまとめました。以下の、 +...
の表記部分を、 Chainerのチュートリアル、 図解速習DEEP LEARNING紹介のチュートリアルでカバーできます。ぜひお試しください。