AcademiX流！ AI学習・実践カリキュラム

# はじめに

初めまして、大熊と申します。
私は現在、AI・機械学習を学び・実践したい学生コミュニティ「**AcademiX**」を立ち上げ・運営しており、
今回は私が**AcademiXメンバーに推奨している、もしくは推奨したいAIの学習・実践カリキュラムをご紹介します。**

なお、カリキュラムにおけるコンテンツ自体は私が作成したのではく、（一部を除き）**一般に手に入る本等を活用**しています。

というのも、コミュニティのメンバーにヒアリングした結果、「AIに関する本やコンテンツが多過ぎてどれを参考にすべきか分からない」という声が多かったことから、
一般的な本等をベースにしつつ、どの内容をどの順番で学ぶべきか示す事で、質の高い学びを提供できるのではないか？という判断です。

# 様々なレベルの人に向けたカリキュラム

AcademiXが大切にしていることの１つが「全ての意欲ある学生に学ぶ機会を提供する」事であり、その為カリキュラムも様々なレベルの人に対応することが求められます。

そこで私は**以下のS1~S5レベルに分けてカリキュラムを組み、各々のレベルに合った段階から参集できるようにしました。**
（S4以降は内容が多岐にわたるので、ある程度個々人にお任せになると思いますがご了承ください。）

|レベル| 対象者 |概要 |
|:----:|:----:|:-------------|
|[**S1**](#s1-プログラミング初学者)| [**プログラミング初学者**](#s1-プログラミング初学者) |  プログラミングやPython初学者はここからスタート。<br>ある程度身に着けたら２の機械学習か、[S1-a. もっとプログラミング力を上げたい人](#s1-a-もっとプログラミング力を上げたい人)は競技プログラミングがお薦め。|
|[**S2**](#s2-機械学習初学者)| [**機械学習初学者**](#s2-機械学習初学者) | Pythonは出来るけど機械学習初学者はここから。<br>機械学習の基礎を身に着けたらS3の深層学習か、[S2-a. もっと機械学習を頑張りたい人](#s2-a-もっと機械学習を頑張りたい人)は機械学習のコンペ参加がお薦め。|
|[**S3**](#s3-深層学習初学者)| [**深層学習初学者**](#s3-深層学習初学者) | 機械学習は学んだものの深層学習は初めての人はここから。<br>機械学習も深層学習も初めての人は、まず２の機械学習から入ろう。 |
|[**S4**](#s4-深層学習を深めたい人)| [**深層学習を深めたい人**](#s4-深層学習を深めたい人) | 深層学習を活用した画像認識・自然言語処理等の各分野の基礎的な部分を学びたい人。 |
|[S5](#s5-より発展的な学習を行いたい人)| [より発展的な学習を行いたい人](#s5-より発展的な学習を行いたい人) | ※ 最新の研究や論文に当たる段階の人へのちょっとしたアドバイス。 |

# S1. プログラミング初学者

AI・機械学習はコンピュータサイエンスなので、AI関連よく使われるPythonを中心としたプログラミングの基礎知識を身に着ける必要があります。

### [スッキリわかるPython入門 (スッキリわかる入門シリーズ) ](https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8BPython%E5%85%A5%E9%96%80-%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E5%9B%BD%E6%9C%AC%E5%A4%A7%E6%82%9F/dp/4295006327/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1341CFNWYJNGO&keywords=python+%E5%85%A5%E9%96%80&qid=1662772363&s=books&sprefix=python+%E5%85%A5%E9%96%80%2Cstripbooks%2C194&sr=1-3&asin=B07T63W9KC&revisionId=&format=4&depth=1)

[![thumbnail](https://m.media-amazon.com/images/I/51Z0yxWK9jL._SX345_BO1,204,203,200_.jpg)](https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8BPython%E5%85%A5%E9%96%80-%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E5%9B%BD%E6%9C%AC%E5%A4%A7%E6%82%9F/dp/4295006327/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1341CFNWYJNGO&keywords=python+%E5%85%A5%E9%96%80&qid=1662772363&s=books&sprefix=python+%E5%85%A5%E9%96%80%2Cstripbooks%2C194&sr=1-3&asin=B07T63W9KC&revisionId=&format=4&depth=1)
こちらの本はプログラミング初学者の為に非常に丁寧に書かれており、プログラミング自体は全く初めての人にお勧めできます。
一方で、Pythonは初めてだけど別の言語の経験はある！という方には少し易しすぎるかもしれないので、もう少しレベルの高い本で学ぶことをお勧めします。

## S1-a. もっとプログラミング力を上げたい人

プログラミングを一通り勉強したけど実践が足りない・・・
そんな人はどんどん**プログラミングの実戦経験を積みましょう！**

実践を積むのに最適だと私が考えているのは、巷で話題の**競技プログラミング**です！
中でも参加しやすいのは、日本語ベースで問題が出題される[**AtCoder**](https://atcoder.jp/?lang=ja)ではないかと思います。

Atcoderの詳細については、その道に精通した人が作成した資料がありましたので気になる方は見て下さい（画像クリックでリンク）。
[<img src="https://files.speakerdeck.com/presentations/bb1ccf416f534217813555d0938bd5b8/slide_0.jpg" width=80%>](https://speakerdeck.com/e869120/20221122-jing-ji-puroguramingukotohazime)
AIを学ぶ上で競プロで強くなる必要ないので、あくまでAIをメインに勉強したい方は、次のステップに進みつつ同時並行で競プロにも取り組むのが良いかと思います。

※ AcademiX内にもAtcoderサークルが立ち上がりつつあるので、興味がある人は是非ご参加ください！


# S2. 機械学習初学者

Pythonの基礎が学べた人はいよいよ機械学習の勉強に入ります！

とその前に、**Pythonには多次元配列やデータ分析を助けるライブラリが用意されており**、機械学習の実装では必ずと言って良いほど出てくるので、東京大学が公開している以下の資料を用いてライブラリの使い方を身に着けたいところです。

- [**Numpy**](https://utokyo-ipp.github.io/5/5-3.html)：多次元配列演算の支援
- [**Pandas**](https://utokyo-ipp.github.io/7/7-1.html)：データ分析の支援
- [**scikit-learn**](https://utokyo-ipp.github.io/7/7-2.html)：機械学習処理の支援（本資料では機械学習の一番触りの部分も紹介）

この辺りまで抑えておけば、機械学習を本格的に学ぶのに不足はないので、次に行きましょう！

### [Kaggleで勝つデータ分析の技術](https://www.amazon.co.jp/Kaggle%E3%81%A7%E5%8B%9D%E3%81%A4%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90%E3%81%AE%E6%8A%80%E8%A1%93-%E9%96%80%E8%84%87-%E5%A4%A7%E8%BC%94/dp/4297108437)

[![thumbnail](https://m.media-amazon.com/images/I/41zp6hN7f+L._SX258_BO1,204,203,200_.jpg)](https://www.amazon.co.jp/Kaggle%E3%81%A7%E5%8B%9D%E3%81%A4%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90%E3%81%AE%E6%8A%80%E8%A1%93-%E9%96%80%E8%84%87-%E5%A4%A7%E8%BC%94/dp/4297108437)
本のタイトルの通り、言わずと知れた**機械学習エンジニアプラットフォームの**[**Kaggle**](https://www.kaggle.com/)**で開催されるコンペで勝つこと**を目指した、機械学習の初学者向けの本です。

Kaggleで勝つ、と言いつつ機械学習の初歩から説明されているのでKaggle関係なく機械学習の初学者の方にお勧めです！
テーブルデータにフォーカスして回帰分析やクラス分類タスクやその評価指標に関する説明に始まり、特徴量作成、時系列データの取り扱い、教師なし学習、決定木、パラメータチューニング等、**機械学習の基礎的なトピックを広く浅く取り扱ってます。**

※ Kaggleで勝つ前に、そもそもKaggleがどのようなものか知りたい方は[こちらの記事](https://aiacademy.jp/media/?p=607)等を参考にしてください。

## S2-a. もっと機械学習を頑張りたい人

機械学習のスキルアップへの最短ルートは実際に手を動かして実践することだと考えており、「Kaggleで勝つデータ分析の技術」で学んだ知識を生かして、**Kaggleコンペに参加してみましょう！**
また、基本は英語表記のKaggle以外にも、日本語で取り組める[**Signate**](https://signate.jp/)もお薦めです。

KaggleやSignateで上位入賞すると金・銀・銅メダルがもらえ、メダルを沢山集めるとExpertやMasterといった称号を手に入れることが出来るゲーム性もあり、ハマる人も多いのではないでしょうか？

コンペには複数人でのチーム参加が可能で、**AcademiXでも様々なコンペにチーム参加**しておりますので、１人では参加するのは心細い初学者の方も、皆で協力してメダルを狙いたい人も（[メダル獲得実績あり！](https://prtimes.jp/main/html/rd/p/000000003.000091404.html)）、**是非我々と一緒にコンペに参加しませんか？**

※ **ここまでで学べているのはテーブルデータを扱う機械学習が中心**で、画像系や自然言語系のコンペは深層学習の知識も無いと参入が難しいので、そのようなコンペに参加したい場合は次に紹介する深層学習を先に学びましょう！

# S3. 深層学習初学者

次に、深層学習（ディープラーニング）初学者向けの勉強法に行きましょう。
ここ10年くらいのAI・機械学習ブームは基本的にこの深層学習が中心であるため、早くここに入りたい人も多いでしょうが、機械学習の基礎を理解してこその深層学習なので順を追って学習していきましょう。

### [ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8BDeep-Learning-%E2%80%95Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E5%AE%9F%E8%A3%85-%E6%96%8E%E8%97%A4-%E5%BA%B7%E6%AF%85/dp/4873117585/ref=sr_1_1?adgrpid=52107981806&gclid=Cj0KCQiA-JacBhC0ARIsAIxybyP-9lWZoo2Dv78p_QkoL0cLhaBmk2m_fCPM-IkGykWb14ILYpYLTpIaArLnEALw_wcB&hvadid=618622174780&hvdev=c&hvlocphy=1009308&hvnetw=g&hvqmt=e&hvrand=1214529308354177891&hvtargid=kwd-335459916878&hydadcr=27272_14598082&jp-ad-ap=0&keywords=%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8Bdeep+learning&qid=1669732611&qu=eyJxc2MiOiIyLjM5IiwicXNhIjoiMi4wMiIsInFzcCI6IjEuOTgifQ%3D%3D&sr=8-1)

[![thumbnail](https://m.media-amazon.com/images/I/513J77QZHgL._SX350_BO1,204,203,200_.jpg)](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8BDeep-Learning-%E2%80%95Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E5%AE%9F%E8%A3%85-%E6%96%8E%E8%97%A4-%E5%BA%B7%E6%AF%85/dp/4873117585/ref=sr_1_1?adgrpid=52107981806&gclid=Cj0KCQiA-JacBhC0ARIsAIxybyP-9lWZoo2Dv78p_QkoL0cLhaBmk2m_fCPM-IkGykWb14ILYpYLTpIaArLnEALw_wcB&hvadid=618622174780&hvdev=c&hvlocphy=1009308&hvnetw=g&hvqmt=e&hvrand=1214529308354177891&hvtargid=kwd-335459916878&hydadcr=27272_14598082&jp-ad-ap=0&keywords=%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8Bdeep+learning&qid=1669732611&qu=eyJxc2MiOiIyLjM5IiwicXNhIjoiMi4wMiIsInFzcCI6IjEuOTgifQ%3D%3D&sr=8-1)
有名どころを選択しましたが、本書では安易に**Pytorch等の深層学習ライブラリに頼らず一から実装を行う**点において、深層学習の理論・実装を理解する上では最適ではないかと思います。

深層学習の基礎である、**パーセプトロン、活性化関数、誤差逆伝播等をしっかり解説・実装した後、CNN（畳み込みニューラルネットワーク）の実装まで**行います。

AcademiXでは本書に関する勉強会の開催もしています。

### Pytorchを学ぶ（AcademiXメンバー限定教材を使用）

上では、理論と実装の理解の為、深層学習ライブラリを用いませんでしたが、実際に複雑なネットワークを構築・学習する際にはライブラリを活用する必要があります。
※ 使わないで実装することもできますが、相当な苦行である上にGPUを使用するのが困難となる等、全くお勧めできません。

AcademiXでは、深層学習ライブラリのひとつである[**Pytorch**](https://pytorch.org/)を学ぶことを推奨しています。
教材に関しては、**私が自作したPytorch教材をAcademiXメンバーに限定公開しています。**
深層学習の基礎は分かっている方が、Pytorchの要点を効率的に学べる教材に仕上げたつもりです。

# S4. 深層学習を深めたい人

ここまでで、深層学習の理論・実装の基礎的な部分は一通り勉強出来たと思いますので、応用に入ります。
深層学習の応用可能範囲は非常に広いので、今回はAcademiXで行っている学習内容にフォーカスしますが、この段階まで来た人で他に学びたいトピックがある場合はそちらに取り組んでもらっても構いません。

### [つくりながら学ぶ! PyTorchによる発展ディープラーニング](https://www.amazon.co.jp/%E3%81%A4%E3%81%8F%E3%82%8A%E3%81%AA%E3%81%8C%E3%82%89%E5%AD%A6%E3%81%B6-PyTorch%E3%81%AB%E3%82%88%E3%82%8B%E7%99%BA%E5%B1%95%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0-%E5%B0%8F%E5%B7%9D%E9%9B%84%E5%A4%AA%E9%83%8E/dp/4839970254)

[![thumbnail](https://m.media-amazon.com/images/I/51+F0cSeYvL._SX387_BO1,204,203,200_.jpg)](https://www.amazon.co.jp/%E3%81%A4%E3%81%8F%E3%82%8A%E3%81%AA%E3%81%8C%E3%82%89%E5%AD%A6%E3%81%B6-PyTorch%E3%81%AB%E3%82%88%E3%82%8B%E7%99%BA%E5%B1%95%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0-%E5%B0%8F%E5%B7%9D%E9%9B%84%E5%A4%AA%E9%83%8E/dp/4839970254)
Pytorchを用いて、主に**画像系タスク**を中心とした深層学習モデルの実装を行います。
**転移学習・物体検出・セマンティックセグメンテーション・GAN等、画像認識系の重要なトピックをそれぞれ深く取り上げており**、非常に学習しがいのある一冊です。
また、本のタイトル通りPytorchによる実装も載っているので心強いです。

ただし、上で取り上げた深層学習初学者向けの内容とは少しレベル差がありますので、適宜サーベイ等をしながら理解を進めていくのが良いかと思います。

また、以前私が作成した、[画像認識に関して「タスク」ではなく「モデル」の発展に着目して説明した資料](https://www.slideshare.net/awful/20223image-classificaiton)も公開していますので、参考になればと思います。

### [BERTによる自然言語処理入門: Transformersを使った実践プログラミング](https://www.amazon.co.jp/BERT%E3%81%AB%E3%82%88%E3%82%8B%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86%E5%85%A5%E9%96%80-Transformers%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E5%AE%9F%E8%B7%B5%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E3%82%B9%E3%83%88%E3%83%83%E3%82%AF%E3%83%9E%E3%83%BC%E3%82%AF%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE/dp/427422726X/ref=sr_1_1?adgrpid=130279160304&gclid=Cj0KCQiA-JacBhC0ARIsAIxybyOIrgA0YlVb6DcMkMCwZJht9SjooAIWPjCywcIVXeJAuCDPYTwtP-IaAjbQEALw_wcB&hvadid=626664662619&hvdev=c&hvlocphy=1009308&hvnetw=g&hvqmt=e&hvrand=14800963195042205710&hvtargid=kwd-1313569528319&hydadcr=1794_13549930&jp-ad-ap=0&keywords=bert%E3%81%AB%E3%82%88%E3%82%8B%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86%E5%85%A5%E9%96%80&qid=1669733389&qu=eyJxc2MiOiIyLjQxIiwicXNhIjoiMS44NCIsInFzcCI6IjEuODMifQ%3D%3D&sr=8-1&asin=4274702405&revisionId=&format=4&depth=1)

[![thumbnail](https://m.media-amazon.com/images/I/51oAHbdzEcS._SX218_BO1,204,203,200_QL40_ML2_.jpg)](https://www.amazon.co.jp/BERT%E3%81%AB%E3%82%88%E3%82%8B%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86%E5%85%A5%E9%96%80-Transformers%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E5%AE%9F%E8%B7%B5%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E3%82%B9%E3%83%88%E3%83%83%E3%82%AF%E3%83%9E%E3%83%BC%E3%82%AF%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE/dp/427422726X/ref=sr_1_1?adgrpid=130279160304&gclid=Cj0KCQiA-JacBhC0ARIsAIxybyOIrgA0YlVb6DcMkMCwZJht9SjooAIWPjCywcIVXeJAuCDPYTwtP-IaAjbQEALw_wcB&hvadid=626664662619&hvdev=c&hvlocphy=1009308&hvnetw=g&hvqmt=e&hvrand=14800963195042205710&hvtargid=kwd-1313569528319&hydadcr=1794_13549930&jp-ad-ap=0&keywords=bert%E3%81%AB%E3%82%88%E3%82%8B%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86%E5%85%A5%E9%96%80&qid=1669733389&qu=eyJxc2MiOiIyLjQxIiwicXNhIjoiMS44NCIsInFzcCI6IjEuODMifQ%3D%3D&sr=8-1&asin=4274702405&revisionId=&format=4&depth=1)
こちらは自然言語処理（NLP）に関する本で、現在NLPのスタンダードとなっているモデルである**Transformer・BERTをPytorchで実装する**という内容となっています。
また、単語分割やトークン化等のNLP特有の前処理や、Word2VecやLSTM等のTransformerとは直接関係ないものの深層学習 x NLPの歴史語る上で外せないトピックもきっちりと説明されており、**現代の学習を用いた自然言語処理に入門するのにふさわしい一冊です！**

### そのほかの分野・内容

上記では、深層学習をベースとした画像認識・自然言語処理の基礎に関する本を取り上げましたが、その他にも、**音声認識**・**生成モデル**・**強化学習**といった様々な分野が存在しますので、興味があれば学んでみると良いと思います。
これらの分野の本もお薦めを出そうとも思いましたが、長くなりますので今回は割愛します。

### コンペ参加

「S2-a. もっと機械学習を頑張りたい人」向けでも書きましたが、力を付けるのにコンペでの実践は非常に有効です。深層学習を用いるタイプのコンペもありますので、より実践的な学習をしたい方は参加してみてはいかがでしょうか？


# S5. より発展的な学習を行いたい人

ここまで来ると内容が多岐にわたり過ぎて、画一的なカリキュラムを示すのは正直難しいです。
ただし、どの方面でも共通しているのは**AI分野の研究は進展が非常に速く、情報のキャッチアップ**が必要不可欠であることです。
また、内容に合った本も次第に少なくなるので**専門誌や論文から情報を仕入れる**ことが肝要になります。

個人的にお薦めなのは、
- **重要な論文・気になる論文をピックアップして読む（ことを中心としつつ）**
- **論文中で分からなかった知識を、本や別の論文で調べる**
- **適宜ソースコードを読む and 動かす**
- **参考文献をベースに関連研究も調べる**

の繰り返しです。
論文のピックアップ方法としては、特定分野のまとめ記事（Qiitaにも多くありますね）やサーベイ論文をベースに、その分野における重要な研究を選び出すのが良いと思います。
また、自分一人では限界がありますので、適宜情報交換できる仲間を見つけることも必要かと思います。

将来的にはAcademiXでも論文の読み会などが出来たら良いなと思っていますので、乞うご期待下さい！

# おわりに

今回は私が作成したAI学習・実践カリキュラムを紹介しました。あくまで一例なので合わない方もいらっしゃると思いますが、どのように勉強したら良いか分からない方は参考にして頂ければ幸いです。

また、本記事では「実践」に重きを置いた内容になっており、PRMLの様な理論方面の内容に関してはスコープ外としましたのでご了承ください。