【スマホOK/実行しながら学ぶ】東大松尾研のデータサイエンティスト育成/ Deep Learning基礎講座を自習する


> **2019/5/11 PR:** こちらの内容を含め、2019年5月11日発刊の :books: [図解速習DEEP LEARNING](https://amzn.to/2J0QNGF)という本ができました。[[2019年5月版] 機械学習・深層学習を学び、トレンドを追うためのリンク150選 - Qiita](https://qiita.com/tomo_makes/items/cd036e2444a938416316)でも、一部内容をご覧いただけます :smile:

> **2019/3/9** ここで紹介している講座が、[「東京大学のデータサイエンティスト育成講座」](https://amzn.to/2ToAbOQ)として書籍化されました!
> ![](https://images-fe.ssl-images-amazon.com/images/I/51zW1M1nYOL.jpg)

> **2019/3/9** [Colaboratoryに関する情報交換Slack](https://join.slack.com/t/colab-jp/shared_invite/enQtNTcxNzAzMzM5OTg2LTY1ZWI4NTVkNDNjMGMxNjI3ZDM0NmZlZTg1OTFjZDcwOGUxNTY5MGQ0NWZiMWU0NWQ5MTZhMWQxZGRjMWZlYjQ)を試験的に立ち上げました。リンクより、登録・ご参加ください。



# TL;DR

- 東大松尾研がJupyter notebook形式でデータ分析/ Deep Learning講義内資料をそれぞれ公開
- Google Colaboratoryを使えば、Python等セットアップ不要ですぐに始められる
- セットアップ後は、スマホブラウザでもok
- そもそもデータ分析/人工知能ってなに？という方はこちら:
    - [2018年の人工知能、データ分析 - できること、できないことのホントノトコロ｜tomo_makes｜note](https://note.mu/tomo_makes/n/na7676fa64380)
- Colab概要はこちら:
    - [TensorFow(Keras)/PyTorch/Chainer環境準備方法と、各フレームワークチュートリアル](https://qiita.com/tomo_makes/items/f70fe48c428d3a61e131)
    - [Colabortoryを使うにあたってのTips集](https://qiita.com/tomo_makes/items/b3c60b10f7b25a0a5935)
 
![image.png](https://qiita-image-store.s3.amazonaws.com/0/64608/e2482808-7f47-1d4c-d38e-32214e85b979.png)

# 東大 松尾研の提供する講座

データサイエンティスト育成(データ分析)、Deep Learningそれぞれについて下記講座が東大で開講されています。また、これらの講義内資料(の一部?)が、無料、かつ自習可能な形で公開されています。

それぞれの講座が扱うテーマは下記の通りです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/64608/b76053df-6703-4a68-5bfa-509f425170de.png)

下記の言語、フレームワークを使います。(学びたい対象が別である場合はご注意ください)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/64608/9d7a7593-7867-75fe-0b1e-af833aa78cad.png)



扱うテーマは違いますが、モジュール単位では相互に関連性があります。
また、学習に詰まった場合や、他フレームワークへ広げたい場合は下記の外部リソースが参照できるでしょう。(記事末尾に詳細)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/64608/152e8c5f-bc3d-bcca-ee6d-c8af86be65b4.png)



より詳細のカリキュラムは下記です。

- [東京大学グローバル消費インテリジェンス寄付講座](http://gci.t.u-tokyo.ac.jp/)

```
1. データサイエンティスト講座概要とPythonの基礎
2. Numpy、Scipy、Pandas、Matplotlibの基礎
3. 記述統計学と単回帰分析
4. 確率と統計の基礎
5. Pythonによる科学計算の基礎（NumpyとScipy）
6. Pandasを使ったデータ加工処理
7. Matplotlibを使ったデータ可視化
8. データベースとSQLの基礎
9. データベースの応用（高度なSQL処理と高速化）
10. ドキュメント型DB（MongoDB）
11. 機械学習の基礎（教師あり学習）
12. 機械学習の基礎（教師なし学習）
13. モデルの検証方法とチューニング方法
14. データサイエンスティスト中級者への道
15. 総合演習問題
```

雑感: Pythonで数値計算から、統計、データ加工、機械学習それぞれの基礎まで、ふんだんな解説とともに網羅的に取り上げられている。概念の説明と、コードが対応づけられており、学習を進めやすい。

- [Deep Learning基礎講座 | Deep Learning JP](http://deeplearning.jp/lectures/deep-learning-foundation/)


```
2. numpy, scipy, scikit-learn の使い方を理解する
3. k-Nearest Neighbors (k-NN) を使った手書き文字認識
4. ロジスティック回帰の実装と学習、活性化関数とその微分の実装、多層パーセプトロンの実装と学習
5. Tensorflowの基礎を学ぶ
6. Denoising Autoencoderの実装. また, MNISTを用いて次のことを確認、Stacked Denoising Autoencoder (SdA) の実装
7. 畳み込みニューラルネットワーク(Convolutional Neural Networks)の実装と学習
8. CIFAR10データセットを使ったAugmentation、前処理、Batch Normalization、CNN実装、Activation可視化
9. Recurrent Neural Network (RNN) によるIMDbのsentiment analysis
10. Recurrent Neural Network (RNN) Encoder-Decoderモデルで英日翻訳
11-1. Attentionを用いた機械翻訳モデルの実装
11-2. Attentionを用いたキャプション生成モデルの実装
```

雑感: Pythonで数値計算を扱う基礎から、MLP(多層パーセプトロン)、CNN、RNNの基本モデルを網羅、Attentionなどの応用までカバーしている。 **演習資料部分の公開のため、細かな説明はない。** コードを実行し、結果を見ながらひとつひとつ解釈する。**Colaboratoryを使うことで、自宅にGPUマシンがなくてもTry/Errorが可能。**初めて取り組む場合は、ほかに補助教材を使うのがよい。

# 始め方
## データサイエンティスト育成講座

こちらで紹介するのは、Webに無償公開されている版です。冒頭紹介の通り、2019年3月に[「東京大学のデータサイエンティスト育成講座」](https://amzn.to/2ToAbOQ)書籍が発売されます。

講座の流れとChapter番号早見表:

![image.png](https://qiita-image-store.s3.amazonaws.com/0/64608/669885b5-596a-df98-9120-4c2b25446f04.png)


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

- 下記ページにダウンロードボタンがあります
    - **利用上の注意をご確認ください(商用利用不可等)**

> [グローバル消費インテリジェンス寄附講座演習コンテンツ 公開ページ | 東京大学松尾研究室 - Matsuo Lab](http://weblab.t.u-tokyo.ac.jp/gci_contents/)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/64608/f27e6637-2d7f-a92b-1697-8efe1ca75165.png)

### 2. ファイルを解凍する

- ダウンロードした `weblab_datascience.zip` を解凍する
- `chapters`　フォルダ下に、下記のような17ファイルが作られる
  - `README.md`
  - `ChapterX_ver2.ipynb` (Xは、1-15の連番。9のみ2ファイルあり)

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

- [Google Drive](https://www.google.com/drive/)を開く
- 適当なフォルダ(`gci_public_notebooks`等)を作り、上記17ファイルをアップロードする

### 4. Colaboratoryを起動する

- Google Drive上で、 `Chapter1_ver2.ipynb` をダブルクリック
- 上部の `Open with` プルダウンから `Colaboratory` を選択

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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/64608/8ef4a51c-7932-814b-1405-1fe84baffe5c.png)


### 5. 学習を始める

あとは、Notebookを読み進める。下記のような集約表示は、灰色部をクリックすると展開される。

- 展開前:

![image.png](https://qiita-image-store.s3.amazonaws.com/0/64608/ca9cf8e3-5db1-24bd-6269-ce40ed03e59c.png)

- 展開後:

![image.png](https://qiita-image-store.s3.amazonaws.com/0/64608/249ce1be-9703-ffd8-6c88-8283f9b77864.png)


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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/64608/622062e3-50f8-b629-cac2-383903c0372a.png)

1.1.4項、

> （必読！）この講座の注意事項
> キーワード：自分の手を動かして学ぼう

のくだりは、これから学習をするにあたり、なぜ本を読むだけでなく、コードをインタラクティブに実行することが重要かに触れられています。Enjoy!

### 6. スマホから使う

- iPhone/AndroidいずれかのChromeを開く
- [Google Colaboratory](https://colab.research.google.com/)を開く
    - **スマホ版のGoogle Driveアプリからは、直接Colaboratoryを開けないので注意!**
- 起動時の、 `ノートブックを開く` 選択画面から、 `GOOGLE ドライブ` タブを選択
    - または、メニューの `ファイル> ノートブックを開く` から同様に操作
- 該当の.ipynbファイルを開く
    - `Chapter2` などの、ファイル名に含まれるキーワードで検索すると良い


## Deep Learning基礎講座

講座の流れとChapter番号早見表:

![image.png](https://qiita-image-store.s3.amazonaws.com/0/64608/73267496-507a-03c7-7cd3-706e172802d2.png)

セットアップの流れはデータサイエンティスト育成講座と同じです。

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

- 下記ページにダウンロードボタンがあります
    - **利用上の注意をご確認ください(商用利用不可等)**

> [Deep Learning基礎講座演習コンテンツ 公開ページ | 東京大学松尾研究室 - Matsuo Lab](http://weblab.t.u-tokyo.ac.jp/deep-learning%E5%9F%BA%E7%A4%8E%E8%AC%9B%E5%BA%A7%E6%BC%94%E7%BF%92%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84-%E5%85%AC%E9%96%8B%E3%83%9A%E3%83%BC%E3%82%B8/)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/64608/35f229b8-f305-2d54-598a-2c0a4ad221cf.png)


### 2. ファイルを解凍する

- ダウンロードした `weblab_dlb.7z` を解凍する
    - `.7z` 形式の解凍方法がわからない場合は検索、or こちら: [Macで7zipを解凍する - Qiita](https://qiita.com/kosuke_nishaya/items/e67aa034ff4ab48139de)
- 同フォルダに下記のような17ファイルが作られる
    - `lecture_chapXX_exercise_master.ipynb` (XXは、02-11の連番。11のみ2ファイルあり)


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

- [Google Drive](https://www.google.com/drive/)を開く
- 適当なフォルダ(`dlbasic_public_notebooks`等)を作り、上記11ファイルをアップロードする

### 4. Colaboratoryを起動する

- Google Drive上で、 `lecture_chap02_exercise_master.ipynb` をダブルクリック
- 上部の `Open with` プルダウンから `Colaboratory` を選択

### 5. 学習を始める

- 基本操作はデータサイエンティスト育成講座と同じ
    - 集約表示は、灰色部をクリックすると展開
    - ソースコードは、セルを選択し `左上の再生ボタンを押す` または `Shift + Return` で実行

- Deep Learning基礎講座は、Lessonにより、GPUを利用するほうが、コード実行時に早く進められる
    - メニューの `ランタイム> ランタイムのタイプを変更` から、 `ハードウェアアクセラレータ` に `GPU` を選択

![image.png](https://qiita-image-store.s3.amazonaws.com/0/64608/c23fe89a-d796-b7b4-c253-493a2ed1f93c.png)


### 6. スマホから使う

- iPhone/AndroidいずれかのChromeを開く
- [Google Colaboratory](https://colab.research.google.com/)を開く
    - **スマホ版のGoogle Driveアプリからは、直接Colaboratoryを開けないので注意!**
- 起動時の、 `ノートブックを開く` 選択画面から、 `GOOGLE ドライブ` タブを選択
    - または、メニューの `ファイル> ノートブックを開く` から同様に操作
- 該当の.ipynbファイルを開く
    - `chap02` などの、ファイル名に含まれるキーワードで検索すると良い


# 参考: 外部リソース

前段として、2018年のデータ分析、Deep Learningでなにができるか、のnote記事を書きました。

- [2018年の人工知能、データ分析 - できること、できないことのホントノトコロ｜tomo_makes｜note](https://note.mu/tomo_makes/n/na7676fa64380)

Colaboratory自体の使い方一般は下記に解説しています。

- [【秒速で無料GPUを使う】TensorfFow/Keras/PyTorch/Chainer環境構築 on Colaboratory - Qiita](https://qiita.com/tomo_makes/items/f70fe48c428d3a61e131)
- [【秒速で無料GPUを使う】深層学習実践Tips on Colaboratory - Qiita](https://qiita.com/tomo_makes/items/b3c60b10f7b25a0a5935)

冒頭で触れた外部リソースを紹介します。

- データサイエンス系
    - [SIGNATE - Data Science Competition](https://signate.jp/)
    - [Kaggle: Your Home for Data Science](https://www.kaggle.com/)
    - [Kaggler Slack作りました - tkm2261's blog](http://yutori-datascience.hatenablog.com/entry/2017/08/23/143146)
- Deep Learning系
    - [O'Reilly Japan - ゼロから作るDeep Learning](https://www.oreilly.co.jp/books/9784873117584/)
    - [O'Reilly Japan - ゼロから作るDeep Learning ❷](https://www.oreilly.co.jp/books/9784873118369/)
    - [Chainer Playground (beta)](https://play.chainer.org/)
    - [fast.ai 2017版(Keras) - 36時間分の無料講義とJupyter Notebook(英語)](http://course17.fast.ai/)
    - [fast.ai 2018版(PyTorch) - 36時間分の無料講義とJupyter Notebook(英語)](http://course.fast.ai/)