ディープラーニングコース
(fleuret.org)- ジュネーブ大学 14x050 向けに整理されたディープラーニング公開講義資料で、François Fleuret のスライド・ハンドアウト・録画動画を1か所で見られる
- PyTorch の例をもとに、テンソル演算、自動微分、勾配降下法から生成・再帰・アテンションモデルまで、初学者が追える範囲を広くカバーしている
- 全 PDF アーカイブは1107枚のスライド規模で、スクリーンキャスト字幕は OpenAI Whisper により自動生成された ZIP ファイルとして提供される
- Practical 1〜6、解答コード、共通の Python prologue があわせて提供され、MNIST/CIFAR10 の読み込みや前処理オプションを実習ですぐ活用できる
- 線形代数、微分、Python、確率・統計、最適化、アルゴリズム、信号処理の基礎が必要で、資料はCC BY-NC-SA 4.0条件で配布される
コース概要
- Deep Learning Course は、François Fleuret によるジュネーブ大学の14x050 ディープラーニングコースのスライドと録画資料をまとめたページ
- PyTorch フレームワークの例を含むディープラーニング入門講義で構成されている
- 講義の範囲は次の軸で進む
- 機械学習の目的と主要課題
- テンソル演算
- 自動微分と勾配降下法
- ディープラーニング特有の手法
- 生成モデル、再帰モデル、アテンションモデル
- 別資料として "The Little Book of Deep Learning" も提供されている
- STEM の背景を持つ読者向けの、スマートフォン形式の短いディープラーニング入門書
- このコースは 2018 年に Idiap Research Institute で最初に開発され、2022 年まで École Polytechnique Fédérale de Lausanne で EE-559 として講義された
資料形式とダウンロード
- 講義用のスライド PDFは発表向けに横長レイアウトとオーバーレイを使用している
- ハンドアウト PDFは縦向きにコンパイルされ、オーバーレイ効果なしで追加ノートを含む
- スクリーンキャストはブラウザでのストリーミングとダウンロード可能な mp4 ファイルで視聴できる
- 全 PDF アーカイブは次のファイルで入手できる
- dlc-handout-all.zip: 101.7Mb
- dlc-slides-all.zip: 101.7Mb
- スクリーンキャスト字幕は OpenAI の Whisper で自動生成されており、dlc-video-subtitles.zip のファイルサイズは 502.1Kb
13個の単元の流れ
- 講義資料全体は13の大きな単元で構成され、各単元ごとにスライド枚数と動画時間が示されている
- 前半はディープラーニングと機械学習の基本概念を固めることに焦点を当てる
- Introduction: ニューラルネットワークからディープラーニングへ、現在の応用と成功事例、テンソル基礎と線形回帰、高次元テンソル、テンソル内部構造
- Machine learning fundamentals: 損失とリスク、過学習と過少適合、バイアス・分散のジレンマ、評価プロトコル、クラスタリングと埋め込み
- Multi-layer perceptron and back-propagation: パーセプトロン、線形分類器の確率的視点、線形分離可能性、MLP、勾配降下法、誤差逆伝播
- 中盤は PyTorch の使い方とディープラーニングのレイヤー・学習手法へ進む
- Graphs of operators, autograd, and convolutional layers: DAG ネットワーク、Autograd、PyTorch モジュールとバッチ処理、畳み込み、プーリング、PyTorch モジュールの作成
- Initialization and optimization: 交差エントロピー損失、確率的勾配降下法、PyTorch optimizer、L2/L1 ペナルティ、パラメータ初期化、アーキテクチャ選択と学習プロトコル、Autograd 関数の作成
- Going deeper: 深さの利点、Rectifier、Dropout、Batch Normalization、Residual Network、GPU 利用
- 後半は生成モデル、コンピュータビジョン、モデル内部解析、シーケンスモデルまで拡張される
- Autoencoders: Transposed convolution、Deep Autoencoder、Denoising Autoencoder、Variational Autoencoder
- VAE のスクリーンキャストは最新ではないため、スライドを確認する必要がある
- Computer vision: コンピュータビジョンタスク、画像分類ネットワーク、物体検出ネットワーク、セマンティックセグメンテーションネットワーク、DataLoader と neuro-surgery
- Under the hood: パラメータの確認、活性化の確認、入力から処理までの可視化、入力最適化
- Autoregression and Normalizing Flows: 自己回帰、Causal convolution、Non-volume preserving network
- Generative Adversarial Networks: GAN、Wasserstein GAN、Conditional GAN と画像変換、モデル永続化とチェックポイント
- Recurrent models and NLP: RNN、LSTM と GRU、単語埋め込みと翻訳
- Attention models: メモリと系列翻訳のためのアテンション、アテンション機構、Transformer Network
- アテンション単元のスクリーンキャストも最新ではないため、スライドを確認する必要がある
- Autoencoders: Transposed convolution、Deep Autoencoder、Denoising Autoencoder、Variational Autoencoder
実習資料と Python prologue
- 実習はPractical 1〜6として提供され、各 PDF と解答コードがあわせてリンクされている
- 実習用 Python prologue は dlc_practical_prologue.py として提供される
- prologue はコマンドライン引数を処理する
--full: 全データセットを使用--tiny: 素早い確認用に非常に小さいデータセットを使用--seed SEED: ランダムシードを指定、0 未満ならシードしない--cifar: MNIST の代わりに CIFAR データセットを使用--data_dir DATA_DIR: PyTorch データの保存場所を指定、既定値は$PYTORCH_DATA_DIRまたは./data
load_data(cifar=None, one_hot_labels=False, normalize=False, flatten=True)関数は必要に応じてデータをダウンロードし、flattenが真なら画像を 1 次元ベクトルに変換する- 戻り値は
train_data、train_target、test_data、test_targetの4つのテンソル cifar=Trueなら CIFAR10 を使用し、Falseなら MNIST を使用、Noneなら--cifar引数に従うone_hot_labels=Trueならターゲットをクラス数ぶんの列を持つ 2Dtorch.Tensorに変換し、正解位置だけ 1、他は -1 に設定するnormalize=Trueなら学習データの平均と分散を基準にデータテンソルを正規化するflatten=TrueならデータはN × Dの 2D テンソルになり、偽ならN × C × H × Wの 4D テンソルになる- 既定の例では MNIST を使い、
--fullがなければ学習 1000 件、テスト 1000 件に縮小され、入力サイズはtorch.Size([1000, 784])
前提知識と参考文書
- 前提知識には次の分野が含まれる
- 線形代数: ベクトル、行列、ユークリッド空間
- 微分: Jacobian、Hessian、Chain rule
- Python プログラミング
- 確率と統計の基礎: 離散・連続分布、大数の法則、条件付き確率、Bayes、PCA
- 最適化の基礎: 最小値の概念、勾配降下法
- アルゴリズムの基礎: 計算コスト
- 信号処理の基礎: Fourier transform、wavelet
- 参考文書として Python、Jupyter notebook、PyTorch の文書を確認できる
利用ライセンス
- ページ内の独自資料は Creative Commons BY-NC-SA 4.0 International License で配布されている
- 正規の学術教育目的での利用は許可されるが、書籍、広告の多い YouTube、その他の収益化モデルには使用しないという条件が明記されている
2件のコメント
講義に字幕がなくて残念ですね..
Hacker News のコメント
Stanford の YouTube チャンネルも見る価値あり。機械学習講義の全シリーズ19本の動画が公開されている
https://m.youtube.com/playlist?list=PLoROMvodv4rNyWOpJg_Yh4NSqI4Z4vOYy
チャンネルを見に行くと、コンピュータサイエンス講義がかなり多く上がっていて、品質も良いほう
良い資料がたくさん挙がっているが、一覧に Understanding Deep Learning が抜けているように思う
Simon J.D. Prince はこの本で本当にすごい仕事をしたと思う。本文の内容だけでなく、各章に付いたノートが高度な参考文献へ直接つながっていて、理解度をしっかり試す演習問題や、概念を実際のコードで実装した優れたノートブックまで提供している
ディープラーニングの授業を教えるなら、学生に配れる無料の演習資料としても良いが、おそらくこのコミュニティが主な対象ではなさそう
[0] https://udlbook.github.io/udlbook/
この講義に興味があるなら、同じ著者の Little Book of Deep Learning もぜひ確認する価値がある
https://fleuret.org/francois/lbdl.html
もう一つの良い資料として、Yann LeCun と Alfredo Canziani による NYU Deep Learning 講義があり、YouTube で全編を見られる
https://atcold.github.io/NYU-DLSP20/
https://www.youtube.com/playlist?list=PLLHTzKZzVU9eaEyErdV26ikyolxOsz6mq
Practical Deep Learning for Coders も参考になる
https://course.fast.ai/
動画を見なくてもよい、深みのある良い講義はあるだろうか?
理論を少し減らし、応用を少し増やした講義を作っている: https://github.com/VikParuchuri/zero_to_gpt
動画はすべて任意で、テキストと同じ内容を扱う
Andrej Karpathy のこの講義セットもおすすめ。最初の講義は初心者の視点からでもかなり取り組みやすい
https://karpathy.ai/zero-to-hero.html
Sebastian Raschka のこの講義も全体的に取り組みやすい。Python や似た言語を少し知っていればついていける
https://youtube.com/playlist?list=PLTKMiZHVd_2KJtIXOW0zFhFfBaJJilH51&si=ocsN2zSPN7YsrGiY
数年経験があり、少し勘が鈍ってきたフルスタック開発者としてこの分野に入ってみたい気持ちはあるが、6か月の勉強でどの程度でも参入できるのか、まったく見当がつかない
参入時の坂の急さはそれほどでもないが、全体としては時間がより長くかかる可能性があるので、短距離走というよりマラソンに近い