【初心者向け】独学で機械学習・AIエンジニアになりたい人向けのオススメの勉強方法

はじめに

この記事は弊社代表の谷Qiitaの記事をAI Academy Mediaにて微修正して再投稿したものです。

サービス紹介(AI Academy Bootcamp)

我々が運営している個人向けAI学習サービスです。

AI Academy Bootcamp
個人向けの短期集中AIプログラミングブートキャンプ(AIプログラミングスクール)

この記事の対象者

・将来Pythonでデータ解析をしたいと考えているが、何から手をつけたら良いか知りたい方
・将来、人工知能に関連した業務に携わりたいと検討中の初学者の方
・未経験者からAIエンジニアになりたく、そのためにどのような知識が必要か知りたい方
・AIプログラミングスクールや専門学校に進学しようか考えているが、独学で勉強できる方法を知りたいという方

対象ではない方

・既に業務でデータ解析している方
・ディープラーニングを使ったWebアプリなどを作りたいと考えている方
※HTML/CSS/JavaScriptなどを始めとする技術に関しての勉強方法や、サーバ構築、Webサービス開発に到るまでに必要なスキルや一連の話はここではしないため)
・ディープラーニング資格試験の勉強方法(G検定、E資格等)
などなどは対象としておりません。

AIエンジニアに最低限必要な知識

まずは、AIエンジニアに最低限必要な知識を大きく6つに分けて見ました。
ここでは、将来AIエンジニアとして業務を行うにあたり、大きく分けて6つの内容の基礎知識の全体像を把握してください。
①プログラミングスキル
– Python (必要に応じて、RやC++、Juliaなど)
– numpy、pandas、matplotlibなどのデータ分析では欠かせないライブラリ
– scikit-learnやTensorFlowやkeras(他にもPyTorch等)の機械学習ライブラリやフレームワーク

機械学習を行う上で、データ前処理が必須なのですが、データ前処理を行う上で便利なライブラリです。
②数学
– 微分、線形代数、ベクトル、行列、確率など
③統計の知識
– 標準偏差、分散、確率分布、推定、検定などなど
④機械学習の基礎知識
– 教師あり学習と教師なし学習
– 前処理、特徴量設計、学習と評価
– 単回帰、重回帰分析、ラッソ、リッジ、最小二乗法、パーセプトロン、ロジスティック回帰
– 決定木、ランダムフォレスト、サポートベクトルマシン、K-means、アンサンブル学習
– ディープラーニングの実装スキル及び知識
– scikit-learnやXGBoost
– TensorFlowやKerasなどのフレームワークの知識
– scikit-learnで学習済みモデルを作るまでの流れなど。

1.データの収集とデータの前処理欠損値の補完や外れ値の削除)

2.特徴量の設計(特徴量の選択)

3.モデル開発(モデルの選択と学習)

4.モデル評価・・・交差検定、混合行列で評価など

⑤SQLを使ってデータベースを操作する知識
– select、insert、update、delete、where、like、limit、sum、avg、max、group by、having、order by、テーブル結合、ビュー、サブクエリ、caseなどなど
⓺クラウドの知識
– AWSやGCPやAzureなどのクラウドインフラ回りの知識
大きく6つもあり意外と多いなと思われたかもしれませんが、一度に全てやるのではなく、まずは①と④の2つに絞ることをオススメします。
理由は、実際にプログラムを書き、目に見える形にすることで継続して学びやすくなるからです。
はじめに理論から入ると独学だと挫折してしまうので。

人工知能を独学で勉強するオススメの方法

必要な知識は前の節で紹介しましたが、どのようにそれらを学べば良いのでしょうか。
①から⑥を学ぶ上で、以下のような順で知識を身につけていくことをオススメしています。
フェーズ1 pythonによる機械学習プログラミングと人工知能概論を学ぶ
フェーズ2 機械学習プログラミング
フェーズ3 Kaggleに挑戦
フェーズ4 SQL、スクレイピング、クラウドなどの技術も身につける。
フェーズ5 教える
このフェーズごとに学んでいくことがもっとも自分自身に負荷をかけず、楽しく学ぶことができると考えています。
フェーズ1ではプログラミング初学者の方を指しております。
もし、プログラミングを初めてという方は是非フェーズ1から目を通してください。
フェーズ2では実際にフェーズ1で学んだ内容をベースに、機械学習プログラミングに関する勉強方法を説明して参ります。
既にscikit-learnを使った機械学習プログラミングを行なっている方は飛ばして頂いても構いません。
フェーズ3ではKaggleといったコンペティションを通じて実践的なプログラミングを学ぶ方法を記述しています。
フェーズ4 機械学習をやる上で、データベースからデータを取り出すことは頻繁に行われますので、SQLの知識は必須です。ここでは、SQLの他にスクレイピング(データ収集用)、クラウドなどの技術の身につけ方を紹介します。
フェーズ5 人に教えることで自分の分かっていなかったことが明確になることがあります。なので、友人などに機械学習を教えて自分の理解を深めることもよいでしょう。

以降、5つのフェーズごとに、どのようにこれらに取り組めば良いのか、オススメの書籍などを紹介しながら説明していきます。

フェーズ1 pythonによる機械学習プログラミングと人工知能概論を学ぶ

独学で、書籍を使って、
人工知能開発に最低限必要な知識は「機械学習の知識」と「Pythonの知識」と「機械学習のための数学と確率・統計学」です。
このフェーズでは、「機械学習の知識」と「Pythonの知識」に絞り、一旦「機械学習のための数学と確率・統計学」は違うフェーズに回しても大丈夫です。
数学や確率がわからなくても、機械学習用のライブラリを使えば機械学習を体験でき、理論だけの学びよりモチベーションが保ち安いからです。(人によっては理論からの方が継続できる方もいるかと思いますので断言はしません。)
その後、ライブラリに頼った実装をした後に、中で何が行われているのか気になってから、一度立ち戻って数学・統計学などを学ぶことをオススメします。
では、オススメ書籍を紹介していきます。
まず、プログラミング初心者または、Pythonの基本文法に自信がない方は下記書籍がオススメです。
・Python3 入門ノート
p.jpg
http://amzn.asia/8ccnGQH
2894円
こちらの書籍はpythonの基礎にあたる基本文法だけでなく、機械学習プログラミングに関する基礎も学べます。
この書籍を一通り読み終えることで、pythonプログラミングの基礎力と、機械学習プログラミングの体験が出来ます。
また、pythonプログラミングを始める際には、開発環境いらずのブラウザかつ無料で使える、CPU/GPUの機械学習環境が整ったGoogle Colaboratoryを利用してPythonプログラミングをしていきましょう。
次に、人工知能の概要に関してさらっと学びたい方は下記の書籍をお勧めします。
・人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書) [単行本]
ai.png
http://amzn.asia/iW1Ms5S
1512円
上記2冊はPythonの本を読み、出てくるプログラムを手を動かしながら進めてください。
さて、上記2冊で人工知能に関する知識及びPythonプログラミングの基礎が固まった方は、
機械学習の一連の流れと統計的機械学習のプログラミングを始めましょう。

フェーズ2 機械学習プログラミング

・Pythonではじめる機械学習
download.jpg
こちらも手を動かしながらコードを書き、またその後コードを読む(写経)をおこなってください。
ただ本を読むだけより、手を動かしながら進める方が理解が深まります。
http://amzn.asia/0GskuMa
3672円

61qCGR2QqGL._SX390_BO1,204,203,200_.jpg
http://amzn.asia/9EPUIpg
4320円
ここまで来てライブラリの中でどのような処理がされているか気になった方は、ニューラルネットワークをnumpyなどの最小限のライブラリを使って、実装してみましょう。
数学の知識が不安な方は、下記で紹介している数学の本などを参考にしてみてください。
ニューラルネットワーク、ディープラーニング
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
download.jpg
http://amzn.asia/caXkYL3
こちらも実際に手を動かしながら、ニューラルネットを作りながら学びます。
3672円
数学
やさしく学ぶ 機械学習を理解するための数学のきほん
5149k70AUiL._SX348_BO1,204,203,200_.jpg
http://amzn.asia/b2XXln9
2786円
数学がアレルギーの方は上記のほんと合わせて、2つの動画を利用することをオススメします。
【キカガク流】人工知能・機械学習 脱ブラックボックス講座 – 初級編 – | Udemy
【キカガク流】人工知能・機械学習 脱ブラックボックス講座 – 中級編 – | Udemy

上記2つの動画を見終わった次は、

AIのための数学講座:少しづつ丁寧に学ぶ人工知能向けの線形代数/確率・統計/微分

最短コースでわかる ディープラーニングの数学
51dYVqu6B6L._SX351_BO1,204,203,200_.jpg

を読み進めてください。

統計学

もし初めて統計学を学ぶのであれば最初の1冊は「文系でも仕事に使える統計学はじめの一歩」をおすすめ致します。この本の良いところは、マンガを読んでいるような感覚でスラスラ読めてしまうからです。

文系でも仕事に使える統計学はじめの一歩

513ftYuikPL._SX352_BO1,204,203,200_.jpg

先ほどの書籍と同じくらい読みやすく、難易度も同じくらいです。

統計学がわかる
51QkvwqrbCL._SX355_BO1,204,203,200_.jpg

データ前処理
前処理大全[データ分析のためのSQL/R/Python実践テクニック]
download.jpg
http://amzn.asia/aa5dHB0
3240円
次に、ライブラリを用いてDeepLearningの学習をしましょう。
ライブラリはTensorFlowまたはKerasをオススメしています。
初心者にオススメなのはKerasの方です。
・Keras
PythonとKerasによるディープラーニング
51-0e4nTugL._SX387_BO1,204,203,200_.jpg
http://amzn.asia/8Ya7Xu5
4190円

2808円
書籍以外にも、Udemyなどがオススメです。
次の動画も合わせてご利用してみてください。
Pythonで機械学習:scikit-learnで学ぶ識別入門

フェーズ3 Kaggleに挑戦

さて、フェーズ1,2では書店で販売されている機械学習関連の書籍を紹介しました。
上記の書籍を順番に1〜3ヶ月ほど手を動かしながら進めると、機械学習の一連の流れや、自分で機械学習のモデルを読み書きできるレベルになっているはずです。
ここでは、次のフェーズとしてKaggleSIGNATE(旧 DeepAnalytics)を使って、実践します。
Kaggleは、世界中のデータサイエンティストが集まるコンペティションサイトです。
企業などが分析してほしいデータをここに載せて、ユーザーが分析をして、分析の精度を競います。
上位3位にはデータをあげた企業から賞金も出ます。
Kaggleのオススメの使い方としては、Kernels(カーネル)という機能を使うことです。
カーネルでは、各データセットに対して他のユーザーが構築したモデルのコードの説明などがわかりやすく書いてあります。
Kaggleで実際にデータ解析を行うとわかりますが、データの前処理が大変重要です。
ここでのポイントとしては、pandasを上手く使いこなせるかが鍵になっております。
pandasのデータ加工でわからないことがあれば、
pandas公式 チュートリアルから再度復習してみてください。
書籍としてはPythonによるデータ分析入門がオススメです。

フェーズ4 SQL、スクレイピング、クラウドなどの技術も身につける。

実データに関しては、Web上のデータであればデータベースに保存されていることが多いため、SQLの知識も必要になります。
ここでは、SQLを使ってデータ分析をするための参考になる書籍を紹介します。
・ProgateのSQL編(SQL初級者向け)
Progate[プロゲート] SQL

・SQLを使って分析をする(SQL初心者向け)

SQLデータ分析・活用入門 データサイエンスの扉を開くための技術 MySQL/PostgreSQL 両対応

download.jpg

・SQLを使って分析をする(SQL中級者向け)
ビッグデータ分析・活用のためのSQLレシピ
61kzm62vzeL._SX382_BO1,204,203,200_.jpg
データ収集はデータベースから行うこともあれば、スクレイピング等で行うこともあります。
スクレイピングはWebサイトに掲載されている情報を収集するための技術です。
ここでは、スクレイピングの技術習得のためにオススメの書籍を二冊紹介いたします。
・1冊目にオススメ
Pythonによるスクレイピング&機械学習 開発テクニック BeautifulSoup,scikit-learn,TensorFlowを使ってみよう
61sxmRFvyfL._SX376_BO1,204,203,200_.jpg
・2冊目にオススメ
Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド
51IiWeYB-7L._SX399_BO1,204,203,200_.jpg
・クラウド
ここではGoogle Cloud Platform(GCP)の簡単な説明をします。
Google Cloud Platformは、Googleが保有する膨大なインフラストラクチャや機械学習等といったサービスを使った分だけの支払いで利用することができるクラウドサービスの総称であり、GCPを使うことでサービスを開発する上でのインフラ周りや、高性能なデータ分析・機械学習サービスを各種APIを通じて利用が出来ます。
GCPとよく比較されるサービスとしてAmazonのAWS、Micro softのAzureなどがありますがそれらの違いは下記記事を参考にして見てください。
Google Cloud Platform とAWS、Azureの違い
また、GCPのAPIをPythonで呼び出すことが出来ますが、下記画像にある通り画像認識・動画解析、音声認識、自然言語処理などのAPIが用意されています。
自分の作りたいものを作るときに、0からscikit-learnやKerasなどを使って自前で作るより、APIを使った方が簡単にかつ、精度の良いものを作ることが出来ます。
自分にあったAPIを探し、ドキュメントや、Googleで検索したり、qiitaで調べたりして出てきた記事を参考にすれば実装が出来たりします。
スクリーンショット 2018-05-07 16.55.00.png
GOOGLE CLOUD PLATFORM での PYTHON

フェーズ5 教える

プログラミングや機械学習を学んだら、友人でも良いので誰かに教えることをオススメします。
教える方法としては、イベントやセミナーを行うのも良いですし、Skypeなどを使い、友人にマンツーマンレッスンを行なったり、カフェで直接教えたりするのが良いです。
教える以外にもQiitaやブログに記事を書いたり、本を書くとかも良いかと思います。
AI Academyでは受講生の交流会やLT会もやっており、人前で教える機会も提供しておりますので、是非ご活用して見てください!

学習ロードマップ

スクリーンショット 2020-03-13 16.56.02.png

左の書籍(STEP1)から右の書籍(STEP3)まで順に読み進めてください。
すでにpythonプログラミングの基本がわかっている方はSTEP1を飛ばしても構いませんし、既にscikit-learnで機械学習プログラミングの基本や機械学習の数学もわかる方はSTEP2も飛ばしても構いません。
自分の現在のレベルにあったSTEPから初めてください。
もし、pythonプログラミングの経験がない方や、人工知能ってなに?という方はSTEP1から初めてください。
何度も記述していることですが、ポイントなのが、基本的に書籍に出てくるコードは実際に書いて進めることです。
例えば、英語などを勉強するときも教材を眺めるだけより、書いたり読み上げたり聞いたりすることが有効だったりします。
プログラミング言語も同様で、ただ本を眺めるだけより、実際に写経することでより理解が深まります。
ただし、どの教材も100%理解する必要はありません。
どのタイミングで、次のSTEPへ進むかの判断基準ですが、書籍に書いてあること全て理解せずに、7割理解できたかなというレベルで十分です。
そこに到達したら次へ進みましょう。
また、詳細は上記人工知能を独学で勉強するオススメの方法を参考に進めてください。
STEP1から始められる方で、○○のデータ解析ができるようになりたい!というのであれば、ニューラルネットワークやKerasによるディープラーニングの部分は飛ばしても構いません。
一旦、STEP1→STEP2→フェーズ3 Kaggleに挑戦→その後必要に応じて、ニューラルネットワーク実装&ディープラーニングライブラリ(TensorFlowやkerasなど)へ進めて頂ければと思います。
というのも、scikit-learnにもニューラルネットワークを使うことができますので、業務でディープラーニングを使うことが決まっていなかったり、データ解析をゴールにおいている場合はがっつりディープラーニングを学ぶ必要はそこまでないかなという理由です。
しかし、AIエンジニアとして就職・転職希望の方はしっかり『ゼロから作るディープラーニング』の中身は理解しておきましょう。

専門領域のスキルを身に付けたい方へ

もし、上の本を全て読み終えた方は、実はまだAIエンジニア(機械学習エンジニア)になるために読んでおいた方が良い書籍(良書)がありますのでそちらも紹介致します。
※人工知能と一口に言っても、画像認識、自然言語処理、音声認識、生成等いくつかあります。
それらの専門分野のスキルを身に付けられるオススメの書籍を紹介します。
(※更新予定)

・ディープラーニング全般

つくりながら学ぶ! PyTorchによる発展ディープラーニング
51+F0cSeYvL._SX387_BO1,204,203,200_.jpg

・自然言語処理

ゼロから作るDeep Learning ❷ ―自然言語処理編
download.jpg

15Stepで踏破 自然言語処理アプリケーション開発入門
51ztG2GhaSL._SX384_BO1,204,203,200_.jpg

機械学習・深層学習による自然言語処理入門 ~scikit-learnとTensorFlowを使った実践プログラミング~
51fQPA3mCIL._SX389_BO1,204,203,200_.jpg

・画像生成

実践GAN ~敵対的生成ネットワークによる深層学習~

51Ri2cTWuML._SX386_BO1,204,203,200_.jpg

・画像認識

今すぐ試したい! 機械学習・深層学習(ディープラーニング) 画像認識プログラミングレシピ

51zBxv5H8kL._SX385_BO1,204,203,200_.jpg

・データ分析
Kaggleで勝つデータ分析の技術
41zp6hN7f+L._SX394_BO1,204,203,200_.jpg

まとめ

ここまでの流れをまとめます。
フェーズ1 pythonによる機械学習プログラミングと人工知能概論を学ぶ
フェーズ2 機械学習プログラミング
フェーズ3 Kaggleに挑戦
フェーズ4 SQL、スクレイピング、クラウドなどの技術も身につける。
フェーズ5 教える

英語に自信がある方へ

ここまでは、学習方法やオススメの書籍などを紹介しましたが、英語に自信がある方にはオススメのサービスを紹介します。
※英語苦手だとしてもCoursera (コーセラ)の機械学習は是非受講することをオススメします。
①Coursera (コーセラ)
Coursera Machine Laerning
コーセラは世界中の人に最高の教育を無料で提供するということを理念にしているオンライン教育サービスです。
特に機械学習のコースの講師はStanford Universityのアンドリュー・ウ(Andrew Ng)氏です。
アンドリュー氏は、人工知能の研究をしており、Google Brainの立ちあげやCouseraのファンダーでもあります。
シリコンバレーにあるBaiduの研究所で勤務しておられる方であり、機械学習を学ぶのに最も適した教材とも言え、機械学習の主要なアルゴリズムを直感的に理解し、実際にプログラミングできるように教えてくれます。
Andrew Ng氏は沢山褒めてくれるので、とても嬉しくなります笑
(※プログラミング言語はPythonではなく、Octave・MATLABです)
スクリーンショット 2018-05-07 0.01.55.png
②Learn with Google AI (ai.google education)
Learn with Google AI
スクリーンショット 2018-05-07 0.01.23.png
Google社内教育プログラムで無料で利用可能です。
コンテンツは、大変わかりやすい動画です。

こちらもオススメ

Udacity「Intro to Machine Learning
スクリーンショット 2018-05-07 0.02.32.png
Machine Learning with Python (YouTube)
スクリーンショット 2018-05-07 0.44.24.png

本気でAIエンジニアを目指している方へ

上記内容を順に学んでいくことで、一定の基礎スキルが身につき、AIエンジニアとしての入り口に入れるかと思います。
ですが、実務でAIエンジニアとして活躍していくにはまだまだ知識的に足りない可能性があります。
その際には、以下に挙げる勉強法と、その書籍にも目を通していくことをオススメします。
1. C++及びJava言語で機械学習のアルゴリズムも書けるようにする。
2. 『データ解析のための統計モデリング入門――一般化線形モデル・階層ベイズモデル・MCMC』以上の統計学の知識
統計学入門 (基礎統計学Ⅰ)
3. 統計的学習の基礎 ―データマイニング・推論・予測

関連:【保存版・初心者向け】 AIエンジニアを目指す上での必読書5選

関連:【初学者向け】Python 目的別 学習ロードマップ

関連:AIエンジニアとは AIエンジニアを目指したい方必読!

関連:【初心者向け】独学でデータサイエンティストになるには?オススメのロードマップや勉強法を紹介!

 

終わりに

ここまでお読みいただきありがとうございました。
弊社ではAI AcademyというオンラインAIプログラミング
学習サービスを運営しており、AIを学びたい方の目標を最短で実現するサポートを行なっております。
メインサービスとして行なっていることは、以下の3点です。
・今回取り上げた書籍の中でもさらに必要な部分のみを抽出したテキストコンテンツ(スマホからでもPCからでも閲覧できます。)
・チャットでの質問対応やコードレビュー(※AI Academyのコンテンツ以外のことも質問可能です。)
・学習進捗サービス(作りたいプロダクトへの最短ルートの提示、次に何をしたらいいかの提示)
これまで長々と書いておりましたが、上記した書籍を全て1から学ぶにはそれなりの学習コスト(最低でも6ヶ月程度)がかかります。
弊社のような短期間ブートキャンプ(オンラインとオフラインの2軸のスクール)をご利用いただければ、大幅に学習コストを減らせるので、一度ご検討していただけると幸いです。