機械学習を学ぶための教材
- Coursera Machine Learning
- 最初はここから。ほかのどんな書籍やブログよりよい。
- fast.ai
- プログラマーのための機械学習講座といったコース。実践が多く、理論だけでなく手を動かして学びたいという方にお勧め。
- CSC 321 Winter 2018 Intro to Neural Networks and Machine Learning
- トロント大学のニューラルネット講座。DNNの実装に使用されるフレームワークを意識した解説になっていて、理論的な内容と実装のギャップが少なくなるよう工夫されている。PyTorchのチュートリアルもあり。
- CS 188 | Introduction to Artificial Intelligence
- Berkeleyで行われているAIに関する講義の資料。AIを合理的な行動=期待値を最大にする行動をとるエージェントとし、アルゴリズムによる最大化(CSP: 制約充足問題etc)、データによる知見からの最大化(強化学習、ベイジアン)、と展開している。
- 「AIとは」からきちんとかみ砕いて解説してくれている
- 深層学習 (機械学習プロフェッショナルシリーズ)
- ディープラーニングについて良くまとまった書籍
- Python機械学習プログラミング
- scikit-learnを雰囲気で使っていると思ったら参照するとよい書籍。
- 実践編として、各種アルゴリズムをスクラッチから作るML-From-Scratchもおすすめ。
- ゼロから作るDeep Learning ――Pythonで学ぶディープラーニングの理論と実装
- ニューラルネットワークを基礎的な部分から自分で作成していくことで動作について理解できる書籍。ただ、機械学習全般を扱っているわけではないのでその点は注意。
- How to build a Recurrent Neural Network in TensorFlow
- ゼロから作るRNNといった趣の記事。TensorFlowで素の状態からRNNを作るところから、実際にRNNのモジュールを使って構築するところまでを完全にカバーしている。
- Stanford Artificial Intelligence Laboratory
- Stanfordの、AI関連講座のリンク集。基本はずさない。
- NIPS HIGHLIGHTS, LEARN HOW TO CODE A PAPER WITH STATE OF THE ART FRAMEWORKS
- NIPS2017で開催された、最新の研究をどうTensorFlowやPyTorchといった機械学習フレームワークのコードに落とし込んでいくのかというワークショップの資料
- Seedbank
- インタラクティブに動かせる機械学習のコードを集めたサイト。事前学習済みのGANモデルの使い方やPerformance RNNによる音楽生成といった応用例から、ニューラルネットワークの仕組みといった基礎的な内容まで幅広い。pandasの使い方などもある。
- Resources for CS 229 - Machine Learning
- 機械学習のポイントをまとめたチート集。あれなんだったかな、という時さっと見るのにとても良い。
- Depth First Learning
- ある一つの論文について、その論文中に登場する基本的な概念などを掘り下げて解説するというスタイルの記事。
- 機械学習の論文を読みたい、でも論文で前提知識とされている概念がわからない、普通の教科書を買って勉強して出直すしかないのか・・・そう感じている方にとってはベストな記事。
- Fairness-Aware Data Mining
- 機械学習を扱うなら知っておきたい、モデルに内在するバイアス(性別や人種といった特徴量による判断の偏りなど)についての解説資料。
- バイアスを生む要因、その避け方などがまとめられている。
- Imperial College Mathematics department Deep Learning course
- PyTorchで深層学習を学ぶコース(TensorFlowもあるよう)。CNN、RNN、強化学習と扱っている話題が広く、コードも比較的きれいに書かれている。短いため、PyTorchがどんな感じかさくっと学びたい場合にお勧め。
- 第1回 ディープラーニング分散学習ハッカソン
- 東京大学情報基盤センターが主催する、マルチGPUを使った学習のハンズオン。
- 資料が公開されており、分散学習の仕組みと課題、そしてChainerMN/TensorFlowで実際に分散学習を行う方法までが解説されている。
- AI-Sys Spring 2019
- UC Berkeleyの、DNNを効率的に実行するための手法についての講義。実行の工夫として分散環境やネットワーク構造のコンパイル、モデル側の工夫として構造探索や蒸留(主に枝刈り)の話題が取り上げられている。
- 深層学習
- 原著として扱っている内容が若干古く、また冗長なので読みにくい部分がある。機械学習の入門書やオンラインコースは近年かなり洗練されているので、あえて本書を最初に読む必要はないと思う。
- Numerical Linear Algebra for Coders
- 用例を通じて学ぶ線形代数。Numpy, scikit-learn, PyTorchを利用した実装を通じてその背後の仕組みを学ぶというスタイル。
- Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares
- ケンブリッジで使用されている線形代数の教科書。実際にどんなところで利用されているのか、という解説までついていてわかりやすい。
- Reducing Dimensionality from Dimensionality Reduction Techniques
- よく利用される、ただ誤用されがちな次元削除のテクニック(PCA/t-SNE/Auto Encoder)について、ゼロからの実装を交えて解説してくれている。
- Python Numpy Tutorial
- 画像認識で有名なCS231nにおける、Numpyのチュートリアル資料。線形代数的な解説はないが、Numpyの基本的な使い方が把握できる
- CS231n: Convolutional Neural Networks for Visual Recognition
- cvpr2017_gan_tutorial
- CVPR2017でのGANのチュートリアル資料。GAN以前の手法の問題点から紹介しており、GAN登場の背景から仕組み、学習方法までを習得できる完全盤的資料。
- A 2017 Guide to Semantic Segmentation with Deep Learning
- 画像内の領域認識を行うセグメンテーションについて、その問題設定と現在取り組まれている手法の網羅的な紹介。
- POSTDで日本語化された
- Deep Learning for Videos: A 2018 Guide to Action Recognition
- 上記のブログと同じ筆者(団体?)の手による、動画中の動作認識に関するサーベイ。
- UNDERSTANDING DEEP LEARNING FOR OBJECT DETECTION
- 物体検出についての解説記事。Two-stage/Single-stageにきちんと分けて仕組みの解説が行われているほか、速度/精度のトレードオフや今後の研究課題まできちんとまとめられている。
- Deep Learning for Generic Object Detection: A Survey
- 物体検知の手法のまとめで、手法だけでなく物体検知というタスク自体についてもその歴史をたどり系統図にまとめている。そのため単純に近年の手法だけでなく、体系的な系譜を学ぶことができる。
- 図解も豊富で分かりやすく、まさに"Survey"の名を冠するにふさわしい出来。
- 畳み込みニューラルネットワークの研究動向
- CNNの進化の歴史がまとめられている。これでCNNを学ぶというものではないが、学んだ後背後にある研究系統を体系的に知るには最適な資料。
- shayneobrien/generative-models
- VAE、また様々な/GANといった生成系モデルの解説実装を提供しているリポジトリ。コードがとても整理されていて、コードを読みながら学べる形。
- deep learning object detection
- 物体検知に関する手法をまとめてくれているサイト。SOTAの更新履歴を追うことができる。論文のリンクと、公開されて入れば実装コードへのリンクも貼られている。
- 敵対的生成ネットワーク(GAN)
- GAN研究の体系的な整理、評価、応用、実装、研究を牽引している組織までがまとめられた資料。とても貴重。
- モダンな深層距離学習 (deep metric learning) 手法: SphereFace, CosFace, ArcFace
- 分類ではなく、ベクトル表現間の距離を学習するMetric Learningの手法についての記事(距離学習は、顔認証など分類数が不定/事前のサンプルが難しいケースで有効)。
- 距離を直接学習する手法が主流だったが、最近は分類問題を解きつつ学習できるようになってきたよう。既存の距離学習について解説された記事へのリンクもある。
- 基本的な手法であるTriplet Lossについてはこちらが詳しい: Deep Metric Learning の定番⁈ Triplet Lossを徹底解説
- 画像キャプションの自動生成
- 画像キャプションの自動生成について、歴史や研究、評価手法などについてまとめられた資料。
- 三次元点群を取り扱うニューラルネットワークのサーベイ Ver. 2 / Point Cloud Deep Learning Survey Ver. 2
- 点群(Point Cloud)を扱う研究をまとめたサーベイ。基礎からカテゴリ別に膨大な量の論文が網羅されており、応用についてもまとめられている。
- はじめてのパターン認識
- 初心者にはあまり優しくない(輪講を途中でやめたことがある)。
- パターン認識と機械学習
なお、上記2つの書籍を機械学習「入門」図書として挙げている記事は基本的に参照する価値はないと断言できる。
- 実践 コンピュータビジョン
- 画像処理初心者には優しくない書籍。
- CS224d: Deep Learning for Natural Language Processing
- Stanfordの、自然言語処理におけるDNNの講座。これが鉄板。
- Natural Language Processing
- Stanfordの、DNNでない頃のNLPのコース資料。基本的なテキストの処理方法や言語モデルといったベーシックなところを扱ってくれている。
- oxford-cs-deepnlp-2017/lectures
- Oxford大学で行われた自然言語の講義資料。言語モデルや音声認識、QAタスクなど幅広く扱い、それらでDNNをどう利用するかも述べられている。
- 講義動画もある。
- 簡単な日本語解説記事
- Natural Language Processing/Info 159/259. Fall 2018
- UC Berkeleyで行われている自然言語処理のコース資料。自然言語処理の大分基本的なところから、ニューラル系の手法まで幅広く解説されている。
- 資料内の事例も、テキスト分類ならTwitterやAmazonレビューなど興味を引くような題材で紹介されている。
- [最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
- 人工知能学会2018でのチュートリアル資料。DNN以降の自然言語処理の基礎が入力データ(単語等)の「ベクトル化」であるとして、ではベクトル化の手法としてどんなものがあるのか、といった形で解説がされている。
- 学習データが少ない時や前処理の必要性などにも触れられている。
- Document Clustering with Python
- 自然言語の基本的な特徴量の抽出方法から、各クラスタリングのアルゴリズムを実際試してみるところまでを紹介している。
- SAILORS 2017 NLP project
- Stanfordで行われている、女子高校生を対象として機械学習/自然言語処理を教えるプログラムSAILORで使用された教材。
- 学習の手始めとしてもよいが、チュートリアル教材を作る際の参考にもなる。
- CS 4650 and 7650
- ジョージア工科大学の自然言語処理の授業で使われる教科書。扱っているテーマは、完全版と思えるほど幅広い。
- 図は少なめだが、シンプルな疑似コード的な記述が随所にあり分かりやすく解説されている。
- A Review of the Neural History of Natural Language Processing
- ニューラルネットで自然言語処理を扱う手法が発展してきた歴史を解説した記事。
- 時系列の流れと、マイルストンとなった論文がまとまっており発展の流れを概観するのにとても良い。
- スライドの資料がこちから参照できる: Frontiers of Natural Language Processing
- Introduction to Information Retrieval
- 情報抽出に関する教科書。わかりやすさに定評のあるCristopher先生の本
- 対話システム (自然言語処理シリーズ)
- 対話研究の歴史、またその実装のアプローチまで、網羅的に書かれたまさに学習の起点となる本
- こちらをまとめた記事
- Deep Learning for Dialogue Systems
- ACL 2017での、対話システムのチュートリアル資料。ベーシックなフレーム型の対話からDNNまで、網羅的に解説されている。
- Open-Domain Neural Dialogue Systems
- IJCNLP 2017での、オープンドメインな対話システムのチュートリアル資料。
- Introduction to Visual Question Answering: Datasets, Approaches and Evaluation
- Visual QAのタスクについて、データセット、ベースライン、評価手法、将来の応用など研究を始めるのに必要なことが一通り書かれた記事(データセットについては問題点まで指摘されている)。
- End to-end goal-oriented question answering systems
- 自然言語でQAを行う手法について、未だかったないほどに手法がまとめられた資料。LinkedInでの取り組みについても書いてあるというおまけ付き。
- Advancing the State of the Art in Open Domain Dialog Systems through the Alexa Prize
- 対話ボットの開発コンテストであるAmazon Alexa Prizeの中で生まれた開発ツールキット(CoBot)と、研究成果の紹介。対話システムにおける手法だけでなく、実践的なインフラ構成についてまで知ることができる良い資料。
- Representations for Language: From Word Embeddings to Sentence Meanings
- 自然言語の表現学習について、分散表現(word2vec/GloVe)を皮切りに現時点の鉄板であるBidirectional-LSTM + Attention、またCNNの適用などの手法について解説している。この資料だけで、現在の表現学習を概観できる。
- Video
- From Word to Sense Embeddings: A Survey on Vector Representations of Meaning
- 単語分散表現の場合一つの単語は一つのベクトルで表現されるが、本来単語は多様な意味を持つ。そうした「意味」の表現の獲得を目指した研究のサーベイ。教師なし/知識ベースの大きく2つに分けて解説されており、その比較についても記載されている。
- Deep Learning for Semantic Composition
- 文の意味解釈を行うタスクにDNNを適用する際の手法について、体系的なまとめ。
- Learning with Latent Linguistic Structure
- 自然言語における構造を学ぶ手法についての解説資料。
- 論理推論やプログラムなどの複雑な構造をもつドメインではアノテーションを行うのが難しいため、潜在構造を推定しつつ半教師ありの手法を適用するStructVAEについて解説されている。
- A Survey on Recent Advances in Named Entity Recognition from Deep Learning models
- 固有表現認識の手法に関するサーベイ。単に研究だけでなくデータセットや評価指標の解説もあり、Recentとついているが旧来の手法についても言及されていて既存のサーベイの紹介もしてくれているなど、短いながらよくまとめられた資料。
- Best Research articles on Deep Learning for Text classification (2015–2016)
- テキスト分類におけるDNNの適用についてのサーベイ集。RNN/CNNを利用する際は目を通すとよい。
- Survey of the State of the Art in Natural Language Generation: Core tasks, applications and evaluation
- Deep Learning for Sentiment Analysis : A Survey
- Machine Learning on Source Code
- 機械学習をシステム開発に役立てる研究のサーベイ。List of Papersには2007年のからの研究がずらりと並ぶ。コードの補完や訂正に関するものが多いが、コミットメッセージやコメントの生成、画面からのコード生成といった珍しいものもある。
- トピックモデル (機械学習プロフェッショナルシリーズ)
- トピックモデルについてはこちらの書籍がとても分かりやすい。
- All About NLP (AAN)
- 自然言語処理に関連する論文やチュートリアルなどを集めたポータルサイト。Yale大学が運営しており、共同プロジェクトの実施やデータセットの公開なども行っている。
- Algorithms - Lede 2018 @ Columbia Journalism School
- コロンビア大学ジャーナリズム大学院における、ジャーナリズムで使用されるアルゴリズムについての講義資料。
- 前半は一般的な自然言語処理・機械学習の解説だが、後半はそれによりもたらされうるメディアバイアスやその原因となるデータ品質/予測結果の解釈方法などが解説されている。
- 「機械学習の基本的な内容とその利用に関する注意」を学ぶにはよい資料。
- Neural Reading Comprehension and Beyond
- 機械学習で文書読解をさせるMachine Comprehensionについての体系的なまとめ。
- 紹介されている手法自体は多くないが、特徴ベースの手法からニューラルまで解説されており、また周辺の議論(QAとの違いや、評価方法など)についてもきちんとまとめられている。
- MT-Reading-List
- 機械翻訳について、まず読むべき論文とターニングポイントとなった手法の論文などをまとめたリポジトリ。よい研究のガイドとなっている。
- Evaluating Text Output in NLP: BLEU at your own risk
- 翻訳の評価指標であるBLEUの問題点について述べた記事。主要な論点がまとめられており、とても参考になる。また、派生メトリクスについてもかなりの量が網羅されている。
- Neural Transfer Learning for Natural Language Processing
- 自然言語処理における転移学習についての、体系的なまとめ。タスクが同じか/異なるかという観点から、同じ場合はDomain Adaptation(言語が異なる場合Cross-lingual)、異なる場合は異なるタスクを同時に学習するか(Multi-Task)・一つずつ学習するか(Sequential)といった形でわけ解説を行なっている。
- Deep Adversarial Learning for NLP
- 自然言語処理におけるAdversarial Trainingの解説+研究の紹介を行なっている資料。適用が成功しているのは今の所対話ぐらいだが、まだ可能性は広がっているという内容。
- NLI with Deep Learning
- 文関係推論(NLI)に関するデータセットと研究の紹介。SNLIなどで指摘されてるAnnotation Artifact(片方の文だけで推論できるなど)の問題も言及されている。
- 深層学習による自然言語処理
- 初心者がこれを読んで学ぶのは厳しい印象。既に理解している人が、定義を確認したり知らなかったモデルをかいつまんでみてみるのに向いている。
- 入門 自然言語処理
- 内容がちょっと冗長で、厚さのわりに得るものがあまりなく、わかりやすいとも言い難い内容。
- Neural Nets for Generating Music
- 音楽生成の歴史をまとめた大作ブログ。Markov ChainからRNN(LSTM)の利用、Magentaの紹介、CNNを利用したWaveNet、そこからさらにSampleRNNなど2017/8までの音楽生成の歴史と研究を概観できる。
- Notes on Music Information Retrieval
- 音楽の検索を行うためのワークショップの資料。音楽の表現や特徴抽出、またテンポの推定や機械学習による分類方法などがipynb形式で解説されている。
- An Interactive Introduction to Fourier Transforms
- フーリエ変換をアニメーションで理解する記事。基本的な内容から、3次元、画像への適用などの応用例も紹介されている。
- Deep Learning for Audio Signal Processing
- 音声に対するDNNの適用についてまとめられた資料。音声と画像の性質的な違い(時系列/周波数という相関のない2軸で表現される点、時系列のため順次処理が必要など)を示しその違いを各手法がどう扱っているのかという観点からまとめられている。概要的な資料だが問題設定と手法が上手くまとめられている
- UCL Course on RL
- 最もわかりやすい。強化学習の基礎から知るならこれが一番
- 6.S094: Deep Learning for Self-Driving Cars
- MITの自動運転車のコース。初歩からかなりわかりやすく解説してくれている
- techcircle_openai_handson
- 強化学習で学んだ内容をまとめ、ハンズオン資料にしたもの。
- Qiitaの記事はこちら。
- DQNはこちらの資料も端的にまとまっている。Human-level control through deep reinforcement learning
- Practical_RL
- ロシア?の大学で行われている実践的な強化学習の講義の資料(資料は英語なので大丈夫)。資料はかなりしっかりしているほか、OpenAI Gymを利用したDQNの実装なども行っている。
- Deep Reinforcement Learning and Control Spring 2017, CMU 10703
- CS 294: Deep Reinforcement Learning, Spring 2017
- Deep RL Bootcamp
- Berkeleyで開催された深層強化学習を2日で学ぶブートキャンプの資料。すべての講義の動画とスライドが公開されている。
- udacity/deep-reinforcement-learning
- Udacityで公開されている深層学習講座にて使用されているサンプルコード。全てJupyter Notebookで参照可能。
- 他にない所としては、連続値を離散化するテクニックを紹介している。
- PythonRobotics
- ロボティクスに関わるアルゴリズムと実装が学べるリポジトリ
- ロボットの操作では強化学習より既存のアルゴリズムが使われることが多いので、それを学ぶのに有用。
- A (Long) Peek into Reinforcement Learning
- 速習強化学習ともいうべき記事。これで学ぶというより、学んだあとにポイントを振り返るのに大変便利。
- Evolutional Strategy
- 進化戦略を強化学習に適用する手法について、仕組みと実装を交えながら解説してくれている。
- 遺伝的アルゴリズムについては、こちらが実装付きで解説を行っている: Evolution of a salesman: A complete genetic algorithm tutorial for Python
- Deep Reinforcement Learning: An Overview
- 2017時点での深層学習による強化学習のまとめ。自然言語処理や音楽生成などの今後の適用領域についての紹介もされており、また教材リストも付属というお得なサマリ
- Deep Learning for Video Game Playing
- 深層学習x強化学習でゲームを攻略する研究のまとめ。どんな手法がどんな種類のゲームに使われているかなどもまとめられている。
- Model-Based Reinforcement Learning
- モデルベースの強化学習の解説資料。基本的なところから近年の手法まで解説されている。モデルベースはモデルフリーに比べ資料が少ないため、貴重。
- Meta-Learning in 50 Lines of JAX
- メタラーニングのチュートリアルの記事。メタラーニングは色んな意味で使われているため、まず扱う対象の「メタラーニング」をきちんと定義してくれている。その後、Numpy+勾配計算といった趣のシンプルなライブラリJAXを使って実際に実装を行っている。
- CS 294: Deep Reinforcement Learning, Spring 2017
- UC Berkeleyの強化学習の講座。講義資料はまとまっているが、数式が多くこれを最初にやるにはきついと思う。
- Udacity Reinforcement Learning
- 2人の講師の掛け合いで進む講座。テンポはよく時折笑いのポイントもあるが、その分わかりやすいというわけではない。また、ボリュームも少なめ。
- これからの強化学習
- 入門書ではなく論文集に近い体裁なので、学習には不向き
- 速習 強化学習 ―基礎理論とアルゴリズム―
- 初心者が速習するための本ではないので注意
- An overview of gradient descent optimization algorithms
- SGDを端緒とした、最適化アルゴリズムについての解説
- A birds-eye view of optimization algorithms
- 最適化の手法について、図解付きの解説。
- A Recipe for Training Neural Networks
- Andrej Karpathy先生による、ニューラルネットを学習させるときの心構えと手順についての解説記事。まずデータを徹底的に調べることから開始し、小さく(乱数固定・1バッチへのオーバーフィット確認など)/予測結果を可視化しながら学習を進めていくのが良いとしている。
- Seeing Theory
- 確率/統計についてインタラクティブに学べるサイト。可視化の技法がとてもうまく使われており、抜群にわかりやすい。
- Introduction to Gaussian Processes - Part I
- ガウス過程の解説記事
- A Visual Exploration of Gaussian Processes
- ガウス過程についての解説記事。図、またパラメーターを操作してインタラクティブに試せるコンテンツを用いて解説されており分かりやすい。
- CSC2541: Scalable and Flexible Models of Uncertainty
- トロント大学の確率モデリングの授業。ガウス過程からニューラルネットを使ったベイジアンネットなどを扱い、しかもTensorFlowやStan、Edwardといったライブラリを使った実習もある。
- Normalizing Flows Tutorial, Part 1: Distributions and Determinants
- 正規分布のようななじみの分布は、簡単にサンプル生成が行えその確からしさも測りやすい。GANやVAEといった生成モデルはこうした解釈性が低いが生成性能はとても高い。シンプルさを保ちつつ生成精度を上げる両取りの方法であるNormalizing Flowについての解説記事。
- Probabilistic-Programming-and-Bayesian-Methods-for-Hackers
- プログラマーのための確率プログラミング、と題した本のコンテンツ。本文と実装が公開されており、Jupyterで動かしながらインタラクティブに学ぶことができる。
- もとはPyMCだが、TensorFlow probability版も提供されている。
- Introduction to Causal Inference
- UC Berkeley 生物統計学部の講義資料。初歩的なところから、実際に利用できるまでが丁寧に解説されている。Rを使った演習問題つき。
- Causal inference and the data-fusion problem
- 因果推論に関する基本的な内容がまとめられたチュートリアル。異なる出自のデータを統合して推論を行う過程について、課題と課題解決のための手法がきっちりまとめられている。
- Model-Based Machine Learning
- 機械学習を利用する際に、問題に対してアルゴリズムを適用するのでなく、問題をモデル化して、それを解くという逆の発想から機械学習の活用を提案している書籍("Model" basedな機械学習としている)。
- 内容的には推論モデルの本となっていて、Infer.NETによるサンプルコードもあるとのこと。ただ、同じMicrosoftからPythonの因果推論パッケージが出たのでそちらで行ったほうがいいかもしれない(dowhy)
- dowhyについては、因果推論の考え方も含めてまとめられたとても分かりやすい記事がある: 統計的因果推論のためのPythonライブラリDoWhyについて解説:なにができて、なにに注意すべきか
- 関連して、確率モデルを作成する際のワークフローA Principled Bayesian Workflowも参考になる
- Tutorial on Causal Inference and Counterfactual Reasoning
- DoWhyを使った、因果推論のチュートリアル(at KDD2018)。
- alicezheng/feature-engineering-book
- オライリーの書籍"Feature Engineering for Machine Learning"のサンプルコード集
- Kaggle
- Data Cleaning Challenge: Scale and Normalize Data: KaggleのKernelを使用して行われている、全5日のデータ前処理講座。欠損値の処理から正規化、文字エンコードの処理などよく使う前処理が実戦形式で学べる。
- My secret sauce to be in top 2% of a kaggle competition: Kaggleでトップ2%になるために行っているテクニックについての記事。特徴量の分析/可視化に関する手法がメインとなっていて、特徴量分析の重要性を教えてくれる。
- Real-World Machine Learning
- 機械学習を使用するにあたって、データの前処理やモデルの評価方法といった実践的な手法について書かれている本。しかもPython&R対応。
- 自然言語処理
- 画像
機械学習モデルは作っておしまいではなく、実システムへの組み込みや組み込んだ後の運用も大きな課題となります。また、そもそもどう仕様を決めるのか、と言った点も大きな問題です。それについて学ぶための資料について記載します。
- Rules of Machine Learning: Best Practices for ML Engineering
- GoogleのMartinさんが書かれた、機械学習のベストプラクティスについて。単に手順だけでなく、学習が進まないときどうすればいいかなども書かれている。なお、ベストプラクティスその1は「機械学習を使わないことを恐れるな」
- What’s your ML test score? A rubric for ML production systems
- 機械学習モデルのテストに関するチェックリスト。特徴量/データセット、モデルの開発・評価プロセス、モデルの運用保守インフラ、パフォーマンス監視の4つの観点でまとめられており、実運用を行う際は3-4ポイントでギリ、5ポイント-の獲得が望ましいとのこと。
- Machine Teaching: A New Paradigm for Building Machine Learning Systems
- 機械学習を利用したいというニーズに応えていくには、機械学習モデルの構築作業を分業していく必要があるという提言。現在は一人の職人がデータ収集から前処理、モデルの構築まで全部を行い、そのプロセスが属人的になることが多い。なので、最低限アルゴリズム構築と学習は分けようという。
- Best Practices for Applying Deep Learning to Novel Applications
- 深層学習をアプリケーションで利用する際のすすめ方や注意点についての話。問題の定義(inとout)をしっかり行うこと、検証が済んでいるモデル(公開されているコードetc)からはじめること、結果の見える化をしとくこと、などが書かれている
- 読みやすいWeb版が公開された
- Machine Learning: The High Interest Credit Card of Technical Debt
- 機械学習を使い始めた「後」に問題になる点がまとめられた資料。ハイパーパラメーターやデータへの依存、特徴量の劣化/散在に対応する必要性などが書かれている。
- Applied machine learning at facebook a datacenter infrastructure perspective (HPCA18)
- Facebookで ML as a Service(MLaaS)をどのように提供しており、FB内の機械学習のパイプラインのデザインについて解説している。
- 解説スライド
- 実用化のための 機械学習の評価尺度の色々
- 機械学習活用プロジェクトでよくある「精度が高ければ使える」といった話について、適用業務に合わせた「精度」の測り方をしようという話。
- 具体例を提示しながら解説されており、イメージがつきやすい。実際にモデルを作る前に目を通しておくと良い。
- Applying Deep Learning To Airbnb Search
- Airbnbにおける検索ランキングの改善に、ニューラルネットを適用したプロジェクトの記録資料。
- どんなモデルから始めるべきか、モデルの性能/状況をどう測るか、特徴エンジニアリングとどう組み合わせるのか、といった機械学習のプロジェクトを進める上で重要な知見が丁寧に書かれている。失敗談についても記載されている。
- Guidelines for Human-AI Interaction
- マイクロソフトが発行した、人間とのインタラクションを行う機械学習システムについてのデザインガイドライン。
- ECサイトや音声アシスタントなど様々なプロダクトから得られたフィードバックを参考に、インタラクションのフェーズごとにガイドラインを設定している。
最近の機械学習界隈では、単純にモデルを作成するだけでなくそれをデモとして仕上げる力も求められている印象があります。
そのため、アプリケーション開発について学ぶために有用な資料についてもここにまとめておきます。
アプリケーションの開発だけでなく、機械学習モデルのソースコードの管理にもバージョン管理ツールは欠かせません。
ここでは、数あるバージョン管理ツールのうちGitに絞り資料を紹介します。
- 使い始める Git
- 特定のファイルをバージョン管理対象外にする
.gitignore
は必ず確認しましょう。よく、.pyc
ファイルや.ipynb_checkpoints
がリポジトリに入ってしまっている例を見ます。こちらで言語や開発環境に応じたファイルを確認できます。
- 特定のファイルをバージョン管理対象外にする
- Try Git
- GitHubオフィシャルのGitチュートリアルです
- python_exercises
- Pythonのトレーニング用リポジトリです
- 良いコードとは
- 動けばいいというコードでは、自分の実験の生産性が落ちる可能性があるだけでなく、他の人が再現を行うのも難しくなります。良いコードを書くよう心がけましょう。
- Writing Code for NLP Research
- 研究のための開発についてのテクニックについての解説資料(EMNLP2018)
- 実験(prototyping)か本格的なコンポーネント設計かきちんとわけ、前者ならスクラッチから始めず人のコードを借り修正するところから始めるべし、としている。テストや実験結果記録などにも触れておりかなり実践的。後者で行うべきCIなども解説している。
- 実際に深層学習系のコードを書く前に、必ず目を通しておきたい。
- Web Application Tutorial
- 基本的なMVCのアーキテクチャとそれを利用する際の注意点について解説しています。
- DataVisualization
- 実際のデータを利用した、データ可視化チュートリアル。各種ライブラリ(Seaborn/Bokeh/Plotly/Igraph)ごとに用意されていて使い方を比較できる。
- Visual Vocabulary
- データの可視化を行う技法を、可視化したいメトリクス(差なのか共起なのかetc)に応じて分類、紹介してくれているサイト。
- UW Interactive Data Lab
- データの可視化による情報伝達について、実例などをまとめているサイト。
機械学習エンジニアにとってDockerはもはや欠かせないツールになっているので、理解しておくとよいです。
- コンテナ未経験新人が学ぶコンテナ技術入門
- VMからDocker、Kubernetesに到るまでの過程と周辺技術要素がとてもよくまとめられた資料。この資料だけで、仕組みの理解は済んでしまうと思う。
- プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化
機械学習エンジニアにとって、データを取得するためのスクレイピング技術は欠かせないものになっているため、身に着けておくとよいです。
- Pythonで始めるウェブスクレイピング実践入門
- PythonでWebスクレイピングする時の知見をまとめておく
- スクレイピングの技術的な面だけでなく、法律的な面についても触れられています。
- 著作権法については、2019/1/1からの施行で大幅な緩和が行われます。端的には、スクレイピングで収集したデータを著作権者の害にならない範囲で配布・販売を行うことが可能になります。詳細はこちらをご参考。改正著作権法が日本のAI開発を加速するワケ 弁護士が解説 。
- 役にたちインパクトのある実世界AIを
- コンピュータービジョンの大家である、金出先生が語るAI研究のあり方について。AI冬の時代の原因について「人工的に作られた“問題”を“手段”に押し込めようとすることが引き起こした」とし、解けて意味のある具体的な問題に取り組むことが必要としている。
- スタートアップのための製品要求仕様書(MRD & PRD)の書き方
- 作るべきものの決め方についての資料。エレベーターピッチの内容は参考になる。
- AI開発を円滑に進めるための契約・法務・知財
- AI開発にまつわる法律の解釈などをまとめた資料。法律の説明だけでなくケーススタディが掲載されているので(この場合はOKなど)とても参考になる。
- ライフサイエンス・ヘルスケア業界 未来予想図
- ライフサイエンス・ヘルスケア業界の未来像について、当時の数値などから予想を行なった資料。
- 想像される世界像を提示し、そこで配信されているであろうニュース、具体的なシナリオ、標準化などの世界動向、という形でまとめていて調査資料としてとてもよくできている。
- LEARNING WITH LIMITED LABELED DATA: WEAK SUPERVISION AND BEYOND
- NIPS2017で開催された、少数のデータから学習を行う手法のワークショップ
- From zero to research — An introduction to Meta-learning
- メタラーニングについて、初歩的なところから解説をしている記事。PyTorchでの実装例も付属している。アニメーションを使った図解が豊富でとても分かりやすい。
- Hardware Accelerators for Machine Learning (CS 217)
- 機械学習を効率的に行うためのハードウェア実装を学ぶコースが開講(内容的には演算処理方法に近い)。機械学習の基礎からDNNまでの解説がまずあり、その上で効率的な計算法を学ぶ。もちろんハードウェアとしてFPGAの講義もあり、かなりしっかりしたコースの印象。
- Towards Open-domain Generation of Programs from Natural Language
- プログラムコードの生成に自然言語処理を応用する研究のまとめ。構文の潜在構造をとる、また要約のように抽出と組み合わせる試みなどが取り上げられている。
- Dealing with Imbalanced Classes in Machine Learning
- 機械学習のデータにおいて、ラベル間のサンプル数が不均衡であるケースについての対処法。少数派を増大させるoversampling、多数派を減少させるundersampling、これらより良い少数派を「生成」するSMOTEという手法、また異常検知の問題としてみなしてしまうなど、様々な手法が紹介されている。
- Troubleshooting Deep Neural Networks
- DNNのモデルを構築する際に、上手くいかない場合の対応策をまとめた資料。実装の問題、ハイパーパラメーターの問題、学習の問題、データの問題という4つの観点から解説を行っている。
- Deep Learning for Anomaly Detection: A Survey
- 異常検知に深層学習を使用した研究のサーベイ。既存のサーベイは特定領域にフォーカスしたものが多かったが(動画や医療画像など)、本サーベイでは包括的なまとめを行い、また研究だけでなく産業などでの適用事例についてもまとめている。
- ann-benchmarks
- クラスタリングなどに用いられる、近似最近傍探索を行なってくれるライブラリをまとめたリポジトリ。理論はわかったので、実際導入したい、という場合にとても参考になる資料。
- 日本語の解説記事はこちら
- 効率的な教師データ作成(アノテーション)のための研究サーベイ
- データセットを作成するアノテーションを効率化するための研究の紹介。画像を中心に既存研究がまとめられている。
- Recent Advances on Transfer Learning and Related Topics
- 転移学習の手法とその理論的な解説がなされている資料。
- 混乱しがちなメタラーニングやFew-shotとの違いについても言及されており、この資料だけで転移学習周りの研究がかなりすっきりと整理できるようになっている。
- A Kaggle Master Explains Gradient Boosting
- XGBoostをブラックボックスに使っていませんか?ということで、Gradient Boostingの解説。簡単な例からステップをふんでわかりやすく解説している。
- A Practical Guide to Tree Based Learning Algorithms
- コンペティションでもよく利用される木構造ベースのアルゴリズム(決定木やランダムフォレストなど)を初歩から学べるコンテンツ
- Dive into XGBoost
- XGBoostへと至る歴史的な背景/手法の進化がまとめられた資料。日本語でのXGBoost解説はあまり見たことがないので、とても貴重。
- XGBoostのアルゴリズム解説
- Deep Learning with Electronic Health Record (EHR) Systems
- 医療データに対する機械学習の適用についてまとめた記事。医療への適用を考える際には、まず見ておくとよい。
- メディカルAIコース オンライン講義資料
- 医療従事者のためのAI講座資料。CT/MRI画像のセグメンテーションや、心電図の時系列解析といった実践的な内容が解説されている。
- AI×医用画像の現状と可能性
- 医療画像に対する機械学習の適用について、近年の研究と市場の動向がまとめられた資料。
- セキュリティエンジニアのための機械学習入門の入門
- セキュリティエンジニアのための機械学習入門記事。
- 侵入/スパム検知、通信ログの解析について基本的な機械学習手法を適用する方法が解説されている。
- 生命情報向けの機械学習入門
- ゲノムの解析など生命情報分野の研究における機械学習の活用について解説したリポジトリ。
- 酵母の細胞周期の同定や、転写因子結合の有無といったタスクを機械学習で予測する方法が紹介されている。
- 初心者向けスポーツ分析チュートリアル「目標達成に導くデータ分析」/ Sports Analysis Tutorial
- スポーツXデータサイエンスについての資料。単にテクニックだけでなく、アスリート/チームとのコミュニケーション方法などについてまで言及されている。また、iOSのヘルスケアのデータを使った実践チュートリアルもあり、とても参考になる。
- Methods for Interpreting and Understanding Deep Neural Networks
- DNNの判断を理解するための研究のまとめ。ネットワークが反応する入力を見つける方法(Activation Maximizationなど)、判断根拠となった特徴を入力にマップする方法(Relevance Propagationなど)などを紹介、説明力の比較方法についても記載している
- Tutorial on Methods for Interpreting and Understanding Deep Neural Networks
- ICASSP 2017のチュートリアル資料。ネットワークを逆にたどる形で予測に寄与した点を算出するLayer-wise Relevance Propagationという手法について解説している。
- Awesome Interpretable Machine Learning
- DNNを解釈する方法についての論文まとめ。
- Analysis Methods in Neural Language Processing: A Survey
- DNN系の自然言語処理のモデルを評価する方法についての体系的なまとめ。モデルの解析による評価(Attentionなど)、モデルのパフォーマンスによる評価(評価セットに対するスコア)、敵対的サンプルによる評価といった3つの観点で研究が整理されている。
- Interpretable Machine Learning
- 機械学習において、説明力の高いモデルとモデルを外から解釈(診断)するための手法をまとめた書籍(ただ、ディープ系の話題はあまりカバーしていない)。
- 販売も行われているが、全文をWebで読むことができる。
- ADVERSARIAL MACHINE LEARNING TUTORIAL
- AAAI2018で開催された、機械学習モデルの識別を誤らせるAdversarialな手法について、攻撃、防衛、検知といったテーマに分けて行われたチュートリアル。
- Structured deep models: Deep learning on graphs and beyond
- グラフを扱わせたら右に出るものはいないThomas Kipf先生の講義資料。DNNでグラフを扱う際の基本的な考え方からその歴史、最近の研究動向までが網羅されている。
- グラフは質問回答における推論等に使われる一方、分子構造の推定などにも使われており、多様な分野で応用が広がる熱い分野
- Deep Generative Models for Graphs: Methods & Applications
- グラフ生成に関するチュートリアル資料(ICLR2019)。与えられたデータが持つグラフ構造に似たグラフを生成する方式と、特定性質を持つグラフを生成する方式(化学物質など)の2種類にわけ解説されている。
- 前者は系列生成(RNN)ベース、後者はGraph Conv+強化学習ベース。
- 機械学習モデルのハイパパラメータ最適化
- ハイパーパラメータサーチの手法に関するまとめ。サーベイの量に圧倒される
- 松尾ぐみの論文の書き方
- 論文を書く前に、まずはこちらに目を通しておいた方が良い。
- Stanford大学流科学技術論文の書き方
- Good Citizen of CVPR
- CVPRで行われた、良き研究者になるためのガイド的なワークショップの資料。論文の書き方からTodoの管理といった細かいところまで、多くの資料がある。