0. はじめに
昨今のAI、DXブームの影響で、機械学習、深層学習(ディープラーニング, Deep Learning) への注目は増すばかりですが、初学者の方にとって機械学習を学ぶハードルは依然高い状態かと思います。
機械学習、特にディープラーニングを習得するには学ぶべきことが多く、また分野によっては難易度が高いということもあり、学んでいる途中で挫折してしまうという人も多いという印象があります。
そこで本記事では、これから機械学習を学びたい方が自学自習する際の助けになるようにと、有用な自習コンテンツをまとめました。
本記事では、機械学習エンジニアとして実務に参画できるレベルを目指して、コンテンツを収集しました。よって機械学習の理論やライブラリに加え、社会実装する上で付随して必要となるソフトウェアエンジニアリングのスキルも含めています。
コンテンツについては、適宜追記していく予定です。
対象読者
これから機械学習を学びたいと考えているすべての方。
完全に初心者の方もこの記事で紹介しているコンテンツを実際に手を動かし取り組み、理解することで、機械学習エンジニアとして必要なスキルの土台を身につけることができると思います。 また、機械学習やディープラーニングの概要を理解したい、勉強したいという方にとっても参考になるかと思います。
※ 厳密には、機械学習エンジニア、データサイエンティスト、データエンジニアなど機械学習に関わる仕事についても職種が細分化されてきています。各職種によって必要なスキルも変わってくると思いますが、どの職種でも学習しておいて損はないコンテンツを集めるように心がけました。
1. 人工知能と社会実装
人工知能の概要
人工知能とは?という人向け
-
- 東大の松尾豊教授が執筆した書籍。人工知能の歴史の中で、ディープラーニングがなぜブレイクスルーだったのかを解説している。ディープラーニングの概要、人工知能の歴史を俯瞰的に学ぶことができる。
-
- 機械学習の概要をまとめているQiitaの記事
機械学習エンジニアの仕事
機械学習の実務に興味がある人向け
- データサイエンティストとは何者か(全11回)【外資就活・Liiga合同特集】
- 22社、52人のデータサイエンティストに聞いてみた!「どんなお仕事してますか?」
-
機械学習を「社会実装」するということ ← おすすめ
- 機械学習を本番運用まで持っていった方の生の声
2. プログラミングのスキル
マインドセット
-
ググる
- わからないことはとにかくググりましょう。日本語でのggrksは、英語ではGIYF(Google Is Your Friend)
- Python関係のググり方Tips集 - Qiita -
- 誰も教えてくれないググり方 - Qiita -
-
RTFM
- Read The F***ing Manual ! (マニュアルをちゃんと読みましょう)
- RTFM - Wikipedia -
-
Done is better than perfect
- FaceBookのマークザッカーバーグの有名な言葉です。
- 「Done is better than perfect 」で成長できる - Qiita -
-
強い人の特徴
- 最初から強いやつの特徴 - Qiita - ← おすすめ
Python
-
Pythonチュートリアル
-
東京大学公開教材
-
Udemy
-
現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
- 定期的に割引になるのでその時に買うのがおすすめ。
-
現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
-
Tips
プログラミング完全初心者
-
プログラミングが初めての人向けの書籍
-
プログラムはなぜ動くのか 第3版
- Pythonや機械学習も後半の章で取り上げている
-
プログラムはなぜ動くのか 第3版
-
PCに不慣れな人
-
高等学校情報科「情報Ⅰ」教員研修用教材(本編)
- 高校教員向けの資料。PC苦手な人はここから勉強すると良い
-
高等学校情報科「情報Ⅰ」教員研修用教材(本編)
3. 機械学習、深層学習、データサイエンス
データサイエンス
機械学習を行う上でデータを処理したり可視化するスキルは必須。Numpy、Pandas、Matplotlibは習得しておくと良い。
-
Numpy
- NumPy 入門
- 100 numpy exercises ← 100本ノック
-
Pandas
-
Matplotlib
-
データサイエンス 100本ノック
-
東大松尾研 GCI演習コンテンツ
-
東京大学グローバル消費インテリジェンス寄附講座のコンテンツ
- ↑ 現在は上からダウンロードできない状態。
- 大学生の方はぜひ直接受講ください。
-
東京大学グローバル消費インテリジェンス寄附講座のコンテンツ
機械学習
いわゆる非ディープの機械学習に関してのコンテンツ。基本書を読みながら、scikit-learnやLightgbmなどを使って学習・推論をできることを目指し、必要に応じて理論を勉強していくというステップがおすすめ。「パターン認識と機械学習」という書籍は初学者にはかなり難易度高い。
-
基本書
-
Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
- オライリーの書籍は機械学習学ぶ上でかなり有用。
-
Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
-
scikit-learn
- Oficial Doc
- scikit-learn 入門 ← 日本語
-
LightGBM
-
XGBoost
-
理論
- パターン認識と機械学習 上
-
パターン認識と機械学習 下
- 超有名本だが、ある程度の数学や統計の知識がないとやや難しい。以下の輪読資料も参考になる。
- パターン認識と機械学習(PRML)の輪読資料を公開
ディープラーニング
深層学習、ディープラーニングの学習コンテンツ。ゼロから作るDeep Learningで実際に手を動かしながらディープラーニングの概要を理解し、その上でPyTorchなどのフレームワークを実際に触って、とにかく手を動かすと良い。
-
概念、仕組みの理解
-
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
← おすすめ -
ゼロから作るDeep Learning ❷ ―自然言語処理編
- どちらも良書。ディープラーニングの仕組みを含めて理解できる。
-
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
-
PyTorch
- Oficial Tutorial(英語)
- Tutorial (日本語訳) ← おすすめ
-
つくりながら学ぶ!PyTorchによる発展ディープラーニング
- わかりやすい書籍。
-
東大松尾研公開コンテンツ
-
松尾研 Deep Learning基礎講座演習コンテンツ 公開ページ
- ↑ 現在は上からダウンロードできない状態。
- 松尾研 DL4USコンテンツ(エンジニアリング寄り) 公開ページ ← Kerasを学べる
-
松尾研 Deep Learning基礎講座演習コンテンツ 公開ページ
-
強化学習
-
強化学習の基礎と深層強化学習
- 強化学習学びたい人におすすめ。東大松尾研の深層強化学習サマースクール講義資料
-
強化学習の基礎と深層強化学習
-
Tensorflow
- Oficial Tutorial ← 日本語も選択可能
-
Chainer
-
各分野
-
機械学習プロフェッショナルシリーズ
- 分野ごとのスキルを身につけるには専門の書籍が良い
-
機械学習プロフェッショナルシリーズ
その他
-
前処理、モデルの精度上げ
- Kaggleで勝つデータ分析の技術← 非常におすすめ
-
ハイパラチューニング
- 概要
- Optuna
- ハイパーパラメータチューニングをベイズ最適化で行ってくれるライブラリ
- Optunaハンズオン ← おすすめ
- optuna入門 - Qiita -
-
実験管理
- Weights & Biases
- 実験の管理を容易にしてくれるサービス
- Oficial Doc
- Weights & Biases
-
データ管理
- DVC
- データセットのバージョン管理ツール
- Oficial Doc
- DVC
-
前処理系100本ノック
4. 論文
学会
たくさんあるので、以下のリンク参照。
論文探し
-
Google Scholar
- 言わずと知れたGoogleが提供している論文検索サービス(最重要)
- 普通にGooleで検索するという手もあり
-
arXiv
- ディープラーニング関連の論文が多く公開されている
-
arXivTimes
- 機械学習の論文共有のためのリポジトリ。日本語で参加できる。
-
Papers with Code
- コードでの実装付きの論文がまとまっている
-
CiNii
- 日本語で書かれた論文を探す場合
-
Deep Learning JP
- 東大松尾研で行われいてる論文の輪読会の資料
論文の読み方
以下などが参考になる。
-
高速で論文がバリバリ読める落合先生のフォーマットがいい感じだったのでメモ ← おすすめ
- 落合陽一式の論文の読み方についてまとまっている
-
-
How to Read a Paper
という論文を日本語でまとめた記事
-
How to Read a Paper
-
- 東大 矢谷研究室のHPより
-
- 翻訳ツール、無料版は情報の取り扱いに注意
5. ソフトウェアスキル
機械学習の実装をする上で、必ずソフトウェアエンジニアスキルが必要になるので、同時並行で勉強しておくと良い。各社のエンジニア研修資料も参考になる。
エディタ
色々なエディタがあるが、特に使われるのが以下の印象。
-
- 有料だが、機能が豊富。大学によっては無料で使える(認定されている教育機関)
- PyCharm - JetBrains公式マニュアル日本語版
- 最強のPython開発環境 PyCharmのすゝめ - Qiita -
- PyCharm のオレオレ最強設定(2020.1 バージョン)
-
Jupyter Lab
-
Google Colab
- ちょっとしたデータ分析や学習を回す上で便利(無料でもGPU利用可能)
- Colaboratory へようこそ
-
Vim
- リモートサーバーでファイルを編集するときなどによく使う。
-
はじめてのVim 〜 Vimはいいぞ!ゴリラと学ぶVim講座(1)
- 連載講座なので一通り目を通すといい
- Vim初心者に捧ぐ実践的入門 - Qiita -
Linux
-
そもそもLinuxとは
-
基本操作
-
シェルスクリプト
-
SSH
Git, Github
共同開発する上で必要なスキル。
-
Gitの基本
-
サル先生のGit入門
- 一通り記事を読みながら、実際に手を動かすと良い。
-
サル先生のGit入門
-
Qiitaの良記事
-
いまさらだけどGitを基本から分かりやすくまとめてみた - Qiita - ← おすすめ
- わかりやすくまとまっている
-
いまさらだけどGitを基本から分かりやすくまとめてみた - Qiita - ← おすすめ
-
YouTubeで学ぶ
-
Git+GitHub入門
- エンジニアの方がYouTubeで解説。GitだけでなくSourceTreeも学べる
-
Git+GitHub入門
-
東工大の講義
- システム開発プロジェクト応用第一 第5,6回 Gitによるバージョン管理
-
システム開発プロジェクト応用第一 第8,9回 GitHub & Pull Request
- 動画を止めながら、自分で実際に手を動かすと良い。
クラウド、仮想化
-
AWS
-
AWSによるクラウド入門 ← おすすめ
- 東大の計数工学科の講義内容が公開されている。かなり実践寄りの内容。
-
AWSによるクラウド入門 ← おすすめ
-
GCP
-
GCP入門編
- トップゲートの記事。必要な部分を読むと良い。
-
GCP入門編
-
Dokcer
- 公式ドキュメント
- 日本語訳
-
Dockerを体系的に学べる公式チュートリアル和訳 - Qiita -
- こちらを参考に、自分のローカルでDockerを動かしてみると勉強になる。
-
Virtual Box
-
いまさら聞けない!Virtualboxとは何か?基礎の基礎を解説!
- Virtualboxのセットアップ方法。
-
【初心者必見】Linuxをインストールする方法〜導入編〜
- 上記の記事の続編。実際にLinux(Ubuntu)をインストールする方法。
-
VirtualBox への Debian GNU/Linux のインストール
- 実際にこちらの通りに手を動かして、Debianをインストールしてみると多くのことを学べる
-
いまさら聞けない!Virtualboxとは何か?基礎の基礎を解説!
DB(データベース)
- SQL
-
やりながら学べる基本のSQL入門
- SQLの基本を学べる
-
【新人教育 資料】SQLへの道 〜DB編〜 - Qiita - ← おすすめ
- Qiitaの連載もの。
-
やりながら学べる基本のSQL入門
コンピューターサイエンスに関する海外の講義
かなりまとまっている海外有名大学の講義。エンジニアの入り口としてかなり有用なコンテンツ。
6. その他
YouTube
-
AIcia Solid Project ← おすすめ
- 数学科出身の現役データサイエンティストが、数学的な観点と直感的理解を交えながら、ディープラーニングやデータサイエンスを解説。
-
- Deep Learningの論文の解説をしており、概要を掴む上で参考になる。
-
- Pythonや機械学習に関して、初心者向けにわかりやすい動画が多い
コンペ
コンペに参加している人はやはり強い人が多い。 「これを知る者はこれを好む者に如かず。これを好む者はこれを楽しむ者に如かず。」ですね。
-
- 世界的な機械学習モデルのコンペ。
- Kaggler向けのSlackはこちら → Kaggler Slack作りました
- Kaggle取り組む人向けの良書
→ Kaggleで勝つデータ分析の技術
-
- 日本の機械学習モデルのコンペ(チュートリアルが日本語)
-
- 日本の機械学習モデルのコンペ(チュートリアルが日本語)
-
- 競技プログラミング
プログラミングスクール
-
42Tokyo
- 完全無料のエンジニア養成機関。入学試験が難しいことで有名。 C言語を中心に学ぶので基礎的なプログラミング力やエンジニアリング力を上げるのに良い。
各社のエンジニア研修資料
数学、基礎統計
-
数学が苦手な人・高校数学に抜けがある人
- 青チャートなどの高校数学の有名な教科書や参考書
- 特に、数III・C (主に行列、極限、微積分)を復習しておくと良い。
-
数学が得意ではない人や初心者向けにわかりやすい本
-
大学レベルの基礎統計
- 統計学入門 (東京大学出版会)
- 重回帰分析、最尤推定、検定などを勉強しておくとよい。
7. まとめ
諸々をまとめていくうちに、だいぶボリューミーになりましたが、これから機械学習を勉強したいという方の参考になれば幸いです。
※記事内に誤りや改善点、あるいはリンクを掲載してほしくないなどのご要望があればご連絡いただければと思います。