Awesome Deep Learning Resources
Deep Learning Resourcesを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
動向
2004年から2017年9月までのGoogle Trends全期間データです。
機械学習研究の動向については、Andrej Karpathy の新しい投稿も参考になります。
私は、コンピューターをより人間らしく考えさせる鍵が深層学習にあり、大きな可能性を持つと考えています。従来のアルゴリズムでは不可能だった難しい自動化タスクを、容易に解決できる場合があります。
計算機ハードウェアの指数的進歩を示すムーアの法則は、原子トランジスターを小さくできる物理的限界により、CPU より GPU へ強く影響するようになりました。私たちは並列アーキテクチャへ移行しています [続きを読む]。深層学習は GPU を使い、内部でそのような並列アーキテクチャを活用します。将来は量子コンピューティングを利用し、脳・機械インターフェースへ応用される可能性もあります。
知性と認知の鍵は非常に興味深い研究対象であり、まだ十分には理解されていません。これらの技術には期待が持てます。
オンライン講座
- DL&RNN Course - 私が作成した、深層学習と再帰型ニューラルネットワークに関する内容豊富な講座です。
- Andrew Ng の Coursera Machine Learning - 著名な初級オンライン講座で、修了証があります。講師:Andrew Ng(Stanford University 准教授、Baidu Chief Scientist、Coursera 会長・共同創業者)。
- Andrew Ng の Coursera Deep Learning Specialization - Matlab/Octave ではなく Python を使う、Andrew Ng による新しい5講座のシリーズ。専門修了証につながります。
- Google の Deep Learning - 高水準の深層学習概念を扱う中〜上級講座。基礎習得後に発想を広げるのに役立ちました。
- Georgia Tech の Machine Learning for Trading - 取引に応用する機械学習の基礎と、AI・金融の概念を学べる興味深い講座。特に Q-Learning の章が気に入りました。
- Université de Sherbrooke、Hugo Larochelle の Neural networks class - Hugo Larochelle による無料の興味深いニューラルネットワーク講座。私はまだ一部の動画だけを視聴しています。
- GLO-4030/7030 Apprentissage par réseaux de neurones profonds - University Laval の Philippe Giguère 教授による講座。珍しい Multi-Head Attention の可視化が特に優れており、第13週講義のスライド28で確認できます。
- Deep Learning & Recurrent Neural Networks (DL&RNN) - 深層学習と再帰型ニューラルネットワークを扱う、非常に内容の濃い速習講座(末尾までスクロール)。
書籍
- Clean Code - 基礎に立ち返りましょう。キャリアに役立つ Clean Code を学べます。深層学習のリストであっても、私が読んだ中で断然最良の本です。
- Clean Coder - プログラマーとして専門的に振る舞い、管理者とやり取りする方法を学びます。あらゆる開発職に重要です。
- How to Create a Mind - 通勤中には音声版が快適です。心をリバースエンジニアリングし、AI の実装を考える意欲を与えます。
- Neural Networks and Deep Learning - ニューラルネットワークと深層学習の中核概念を多数扱います。
- Deep Learning - An MIT Press book - 私はまだ半分までですが、実際の深層学習を考えるための十分な数学的内容があります。
- 私が読んだその他の書籍 - 深層学習との関係が薄い本もありますが、このリストに何らかの関連があります。
投稿と記事
- Ray Kurzweil による予測 - Ray Kurzweil による中長期の未来予測一覧。
- The Unreasonable Effectiveness of Recurrent Neural Networks - Andrej Karpathy による必読記事。私が RNN を学ぶきっかけとなり、最も基本的な NLP 形式で達成できることを示します。
- Neural Networks, Manifolds, and Topology - ニューロンによる情報マッピングへの新しい視点。
- Understanding LSTM Networks - LSTM セルの内部動作を説明し、結論には興味深いリンクがあります。
- Attention and Augmented Recurrent Neural Networks - 視覚的アニメーションが興味深く、Attention機構の分かりやすい入門例です。
- 深層学習による Spotify の音楽推薦 - 音声のクラスタリングに優れた、Spotify のインターンによる投稿。
- Announcing SyntaxNet: The World’s Most Accurate Parser Goes Open Source - ニューラル構文木パーサー Parsey McParseface の誕生。
- Improving Inception and Image Classification in TensorFlow - 非常に興味深い CNN アーキテクチャ。Inception 形式の畳み込み層は有望で、パラメーター数の削減にも効率的です。
- WaveNet: A Generative Model for Raw Audio - 現実的に話す機械、精巧な音声生成。
- François Chollet の Twitter - Keras の作者。興味深い投稿と革新的なアイデアがあります。
- Neuralink and the Brain’s Magical Future - 脳と Brain-Computer Interface の未来について考えさせられる記事。
- 大容量ファイルを使う深層学習アプリ開発で Git LFS へ移行 - 非公開 Git プロジェクトの巨大ファイルを簡単に管理。
- 深層学習の未来 - 深層学習の未来に関する François Chollet の考察。
- 決定木でデータの背後にある構造を発見 - 決定木を成長・可視化し、データの隠れた論理を推測します。
- ニューラルネットワークのハイパーパラメーターを最適化する Hyperopt チュートリアル - 手作業ではなく、ハイパーパラメーター空間を自動で攻略する方法。
- 深層ニューラルネットワークの最適学習率の推定 - 完全な学習を一度も行う前に最適学習率を推定する巧妙な方法。
- The Annotated Transformer - 「Attention Is All You Need」(AIAYN)論文の理解に役立ちます。
- The Illustrated Transformer - 同じく「Attention Is All You Need」(AIAYN)論文の理解に役立ちます。
- Improving Language Understanding with Unsupervised Learning - 巨大コーパスの教師なし事前学習により、多数の NLP タスクで SOTA を達成。
- NLP’s ImageNet moment has arrived - NLP に ImageNet の転機が訪れたことを論じます。
- The Illustrated BERT, ELMo, and co. (How NLP Cracked Transfer Learning) - NLP の ImageNet 的転機で使われたさまざまな手法を理解できます。
- Uncle Bob’s Principles Of OOD - Clean Code には SOLID だけでなく、巨大なソフトウェアを分離パッケージへまとめる際に REP、CCP、CRP、ADP、SDP、SAP も重要です。
- なぜデータサイエンスプロジェクトの87%が本番へ到達しないのか - データを軽視せず、解決策の適切な統合にはチームとデータサイエンティストの意思疎通が重要です。
- 多くの ML プロジェクトが失敗する本当の理由 - 明確な事業目標に集中し、コードが十分きれいでない限りアルゴリズムの方向転換を避け、実装が「十分良い」時点を判断できるようにします。
- SOLID Machine Learning - 機械学習へ SOLID 原則を適用。
実践資料
ライブラリと実装
- Neuraxle, a framwework for machine learning pipelines - 機械学習プロジェクトの構造化とデプロイに優れ、Scikit-Learn、TensorFlow、PyTorch、Keras など多くのフレームワークと互換性があります。
- TensorFlow の GitHub リポジトリ - 柔軟性を保ちながら高水準・低水準の両方を扱う、最も有名な深層学習フレームワーク。
- skflow - scikit-learn 風の TensorFlow ラッパー。
- Keras - TensorFlow のような興味深い深層学習フレームワークで、主に高水準です。
- carpedm20 のリポジトリ - carpedm20 こと韓国の Taehoon Kim が、多数の興味深いニューラルネットワークアーキテクチャを実装しています。
- carpedm20/NTM-tensorflow - Neural Turing Machine の TensorFlow 実装。
- Deep learning for lazybones - 事前学習済み CNN AlexNet 2012 の高水準埋め込みを使う、TensorFlow の視覚向け転移学習チュートリアル。
- LSTM for Human Activity Recognition (HAR) - 時系列分類で LSTM を使う、私のチュートリアル。
- Deep stacked residual bidirectional LSTMs for HAR - 前のプロジェクトを改善。
- Sequence to Sequence (seq2seq) Recurrent Neural Network (RNN) for Time Series Prediction - マルチチャンネルにもなり得る数値の時間的系列を予測する、私のチュートリアル。
- Hyperopt for a Keras CNN on CIFAR-100 - CIFAR-100 上でニューラルネットワークとそのアーキテクチャを自動(メタ)最適化。
- 私が Star した ML / DL リポジトリ - GitHub には優れたコード例とプロジェクトが豊富にあります。
- Smoothly Blend Image Patches - U-Net によるセマンティックセグメンテーション向けの滑らかなパッチ結合。
- Self Governing Neural Networks (SGNN): the Projection Layer - 埋め込みの学習や読み込みなしで、深層学習モデルに単語を使用できます。
- Neuraxle - 整然としたパイプラインを構築し、ML アプリの研究、開発、デプロイを容易にする適切な抽象化を提供する機械学習ライブラリ。
- Clean Machine Learning, a Coding Kata - 実践を通じて、機械学習を適切に行うための良い設計パターンを学びます。
データセット
モデル開発に興味深いと思った資料です。
- UCI Machine Learning Repository - 機械学習向けの膨大なデータセット。
- Cornell Movie—Dialogs Corpus - チャットボットに利用できます。
- SQuAD The Stanford Question Answering Dataset - オンラインで探索できる質問応答データセットと、高性能モデルの一覧。
- LibriSpeech ASR corpus - 性別と話者のバランスが取れた、高品質と思われる巨大な無料英語音声データセット。
- Awesome Public Datasets - 公開データセットの Awesome リスト。
- SentEval: An Evaluation Toolkit for Universal Sentence Representations - 多数のデータセット(NLP タスク)で文表現をベンチマークする Python フレームワーク。
- ParlAI: A Dialog Research Software Platform - 多数のデータセット(NLP タスク)で文表現をベンチマークする、もう1つの Python フレームワーク。
その他の数学理論
勾配降下アルゴリズムと最適化理論
- Neural Networks and Deep Learning 第2章 - 誤差逆伝播アルゴリズムの仕組みの概要。
- Neural Networks and Deep Learning 第4章 - ニューラルネットが任意の関数を計算できることの視覚的証明。
- Yes you should understand backprop - 誤差逆伝播の注意点と、モデル学習時にそれを知る重要性を示します。
- Artificial Neural Networks: Mathematics of Backpropagation - 誤差逆伝播を数学的に可視化。
- Deep Learning Lecture 12: Recurrent Neural Nets and LSTMs - RNN グラフの展開を適切に説明し、勾配降下アルゴリズムの潜在的問題を示します。
- 鞍点における勾配降下アルゴリズム - さまざまなオプティマイザーと鞍点の相互作用を可視化。
- ほぼ平坦な地形における勾配降下アルゴリズム - さまざまなオプティマイザーとほぼ平坦な地形の相互作用を可視化。
- Gradient Descent - Andrew Ng の Coursera 講座は既に掲載しましたが、この動画は入門として特に適切で、勾配降下アルゴリズムを定義します。
- Gradient Descent: Intuition - 前の動画に続き、直感的な理解を加えます。
- Gradient Descent in Practice 2: Learning Rate - ニューラルネットワークの学習率を調整する方法。
- The Problem of Overfitting - 過学習と、その問題への対処方法の優れた説明。
- Diagnosing Bias vs Variance - ニューラルネットの予測におけるバイアスと分散、および対処方法を理解します。
- Self-Normalizing Neural Networks - 優れた SELU 活性化関数の登場。
- Learning to learn by gradient descent by gradient descent - RNN をオプティマイザーとして使う、メタニューラルネットワーク L2L オプティマイザーの導入。
複素数とデジタル信号処理
信号処理は深層学習に直接関係しないかもしれませんが、信号ベースのニューラルアーキテクチャを開発する直感を得るために学ぶ価値があります。
- Window Functions - 既知の窓関数を列挙する Wikipedia ページ。Hann-Poisson window は、勾配降下などの貪欲な山登り法で特に興味深いものです。
- MathBox, Tools for Thought Graphical Algebra and Fourier Analysis - Fourier 解析への新しい視点。
- How to Fold a Julia Fractal - 複素数と波動方程式を扱うアニメーション。
- Animate Your Way to Glory, Math and Physics in Motion - 物理エンジンの収束法と、インタラクションデザインへの応用。
- Animate Your Way to Glory - Part II, Math and Physics in Motion - 3D回転を扱う数学的対象 Quaternion による回転と回転補間の優れたアニメーション。
- 信号のフィルタリング、STFT と Laplace 変換のプロット - 信号処理のシンプルな Python デモ。
論文
再帰型ニューラルネットワーク
- Deep Learning in Neural Networks: An Overview - You_Again による、主に RNN を扱う深層学習の要約・概観。
- Bidirectional Recurrent Neural Networks - 時間軸を双方向走査する RNN による分類の改善。
- Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation - 2つのネットワークを seq2seq Encoder-Decoder に統合。1000隠れユニットの RNN Encoder–Decoder と Adadelta オプティマイザー。
- Sequence to Sequence Learning with Neural Networks - WMT’14 英仏データセットで、入力文を逆順にし、Beam Search を使う1000隠れサイズの4層 LSTM。
- Exploring the Limits of Language Modeling - 大量の GPU 能力を使い、文字レベル CNN の上に単語レベル LSTM を置く優れた再帰モデル。
- Neural Machine Translation and Sequence-to-sequence Models: A Tutorial - NMT の興味深い概観。私は復習として主に Attention 付き RNN を扱う第8部を読みました。
- Exploring the Depths of Recurrent Neural Networks with Stochastic Residual Learning - 提示された感情分析では、基本的に残差接続が積層 RNN より優れる場合があります。
- Pixel Recurrent Neural Networks - 画像の欠損パッチを Photoshop の Content-Aware Fill のように埋める用途に適します。
- Adaptive Computation Time for Recurrent Neural Networks - RNN 自身に計算時間を決めさせます。Neural Turing Machine とどの程度うまく組み合わせられるか見てみたいものです。興味深い対話型可視化はこちら。
畳み込みニューラルネットワーク
- What is the Best Multi-Stage Architecture for Object Recognition? - 「局所コントラスト正規化」の利用に優れています。
- ImageNet Classification with Deep Convolutional Neural Networks - AlexNet、2012 ILSVRC、ReLU 活性化関数の躍進。
- Visualizing and Understanding Convolutional Networks - 「deconvnet layer」について。
- Fast and Accurate Deep Network Learning by Exponential Linear Units - CIFAR 視覚タスク向け ELU 活性化関数。
- Very Deep Convolutional Networks for Large-Scale Image Recognition - Pooling 前に複数の3x3 Conv+ReLUを積層し、少ないパラメーターで大きなフィルターサイズを実現する興味深い考え方。「ConvNet Configuration」の表も優れています。
- Going Deeper with Convolutions - GoogLeNet。「Inception」層/モジュールの登場。Same Padding を使う異なるサイズの多数の小型畳み込みを並列化し、深さ方向へ連結します。
- Highway Networks - Highway Network、残差接続。
- Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift - Batch Normalization(BN)。バッチ全体でも集計して層の出力を正規化し、学習可能な量で線形リスケール・シフトします。
- U-Net: Convolutional Networks for Biomedical Image Segmentation - U-Net は Skip Connection を持つ Encoder-Decoder CNN で、ピクセル単位の画像セグメンテーションに適します。
- Deep Residual Learning for Image Recognition - Batch Normalization を持つ非常に深い残差層。十分なデータがあれば多数の層で視覚データセットへ適合し、認識モデルを適切に動かす方法です。
- Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning - 残差接続による GoogLeNet の改善。
- WaveNet: a Generative Model for Raw Audio - Dilated Causal Convolution を基盤とする新しいアーキテクチャで、より長い音声を捉える生音声・音楽生成。
- Learning a Probabilistic Latent Space of Object Shapes via 3D Generative-Adversarial Modeling - 3Dモデル生成の3D-GANと、埋め込みによる楽しい3D家具演算。word2vec の単語演算を3D家具表現で行うようなものです。
- Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour - CNN の驚くほど高速な分散学習。
- Densely Connected Convolutional Networks - CVPR 2017 Best Paper。CIFAR-10、CIFAR-100、SVHN の最先端性能を改善した DenseNet アーキテクチャ。
- The One Hundred Layers Tiramisu: Fully Convolutional DenseNets for Semantic Segmentation - U-Net と DenseNet の考え方を統合し、巨大な画像セグメンテーションデータセットに特に優れたニューラルネットワーク。
- Prototypical Networks for Few-shot Learning - 損失内の距離尺度を使い、少数例からオブジェクトのクラスを判定。
Attention機構
- Neural Machine Translation by Jointly Learning to Align and Translate - LSTM の Attention機構。特に図、数式、解説が役立ちました。この論文に関する私の講演はこちら。
- Neural Turing Machines - 長期依存に対して良好に汎化するようなアルゴリズムをニューラルネットワークへ学ばせる優れた研究。系列想起問題。
- Show, Attend and Tell: Neural Image Caption Generation with Visual Attention - CNN 特徴マップ上の LSTM Attention機構が優れた効果を発揮します。
- Teaching Machines to Read and Comprehend - テキスト質問応答に関する非常に興味深く創造的な成果で、大きな躍進です。
- Effective Approaches to Attention-based Neural Machine Translation - Attention機構へのさまざまなアプローチを探究。
- Matching Networks for One Shot Learning - Attention機構と Query を使って画像をほかの画像と比較し、少量データで One-Shot 分類する興味深い方法。
- Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation - 2016年時点では、Encoder/Decoder に Attention機構を持つ積層残差 LSTM が NMT に最適です。
- Hybrid computing using a neural network with dynamic external memory - NTM ベースの微分可能メモリーを改善した Differentiable Neural Computer(DNC)。
- Massive Exploration of Neural Machine Translation Architectures - 枠組み化された seq2seq 問題で NMT を行う際、機能する範囲について直感を与えます。
- Natural TTS Synthesis by Conditioning WaveNet on Mel Spectrogram Predictions - Vocoder として使う WaveNet を、Attention 付き Tacotron 2 LSTM が生成した Mel Spectrogram で条件付けし、テキストから明瞭な音声を生成できます。
- Attention Is All You Need (AIAYN) - RNN や CNN を使わず文レベル NLP を行う、位置エンコーディング付き Multi-Head Self-Attention ニューラルネットワークを導入した必読論文(論文の解説と可視化も参照)。
その他
- ProjectionNet: Learning Efficient On-Device Deep Networks Using Neural Projections - 深層ニューラルネットワークの単語埋め込みを単語射影へ置換し、事前抽出辞書や埋め込み行列の保存を不要にします。
- Self-Governing Neural Networks for On-Device Short Text Classification - 直前の ProjectionNet の続編。SGNN は ProjectionNet を基に発展し、最適化をさらに詳しく解説します(私が論文をコードで再現した試みと講演録画も参照)。
- Matching Networks for One Shot Learning - 明確なカテゴリーを持たないほかの例から新しい例を分類します。各タスクのデータは少なくても、類似タスクが多く全体のデータが多い場合に使え、Siamese Network より良いようです。Matching Network は、Self-Attention の積のように例同士の Cosine Similarity を直接最適化して Softmax へ渡せます。文脈埋め込みを検索せず、word2vec の CBOW や Skip-gram の Negative Sampling Softmax 学習にも使える可能性があります。
YouTubeと動画
- Attention Mechanisms in Recurrent Neural Networks (RNNs) - IGGG - Attention機構の読書会講演(論文:Neural Machine Translation by Jointly Learning to Align and Translate)。
- Tensor Calculus and the Calculus of Moving Surfaces - Tensor の働きを適切に一般化します。数本見るだけでも概念の把握に大いに役立ちます。
- Deep Learning & Machine Learning (Advanced topics) - 私が興味深い、または有用だと思った深層学習動画の雑多なリスト。
- Signal Processing Playlist - DFT/FFT、STFT、Laplace 変換について私がまとめた YouTube 再生リスト。ソフトウェア工学の学士課程に信号処理講座がなかった(量子物理学で少し扱っただけ)ことへの不満から作りました。
- Computer Science - さまざまなコンピューター科学トピックについて私がまとめた、もう1つの YouTube 再生リスト。
- Siraj’s Channel - Siraj による楽しくテンポの速い深層学習チュートリアル動画。
- Two Minute Papers’ Channel - WaveNet や Neural Style Transfer など、研究論文の興味深く簡潔な概観。
- Geoffrey Hinton interview - Andrew Ng が Geoffrey Hinton に研究と躍進について聞き、学生への助言を得ます。
- Growing Neat Software Architecture from Jupyter Notebooks - Jupyter Notebook を使う機械学習プロジェクトの構造化入門。
その他のハブとリンク
- Hacker News - 私が ML を知ったきっかけかもしれません。大きな話題になるかなり前から興味深い動向が現れます。
- DataTau - Hacker News に似た、データサイエンス専用のハブ。
- Naver - 韓国の検索エンジン。皮肉にも Google Translate との併用が最適です。深層学習の検索結果や理解可能な高度数学の内容が、Google より簡単に見つかることがあります。
- Arxiv Sanity Preserver - TF/IDF 機能を持つ arXiv ブラウザー。
- Awesome Neuraxle - 本番水準のきれいな ML パイプラインを実装する ML フレームワーク Neuraxle の Awesome リスト。
ライセンス
法律で認められる範囲で、Guillaume Chevalier はこの作品に関するすべての著作権および関連・隣接する権利を放棄しています。