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

f:id:kazunroi-t:20180508123850j:plain

はじめに

我々サイバーブレインは2016年6月からオンライン・オフラインにてAI Academyというサービスを通じて、これまで1500名以上の方々に、プログラミング(Python)、統計的機械学習、深層学習(Deep Learning)、機械学習のための数学、確率・統計などを教えてきました。

そんな中、サービスを通じて一人一人に最適な勉強方法を日々出会う初学者の方々に、私達なりの学習アドバイスを行なっていたのですが、1500名以上の初学者に教えていく中で、人工知能を勉強するにあたって、多くの『わからない』には、共通する点があることに気づきました。

それは、勉強の仕方がわからないということです。

この記事では、我々が解決してきた受講生の方々の、この共通の『わからない』を体系的にまとめることで、
これからAIエンジニアになりたいと考えている多くの初学者にとって、役に立てれるのではないかと思い記事にすることに致しました。

今回の記事を通して、1人でも多くの方に何か参考になることがありましたら幸いです。

 

この記事の対象者

・将来Pythonでデータ解析をしたいと考えているが、何から手をつけたら良いか知りたい方

・将来、人工知能に関連した業務に携わりたいと検討中の初学者の方

・未経験者からAIエンジニアになりたく、そのためにどのような知識が必要か知りたい方

・AIプログラミングスクールや専門学校に進学しようか考えているが、独学で勉強できる方法を知りたいという方

 

対象ではない方

・既に業務でデータ解析している方

ディープラーニングを使ったWebアプリなどを作りたいと考えている方

ディープラーニングの資格試験の勉強方法

などなどは対象としておりません。


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

まずは、AIエンジニアに最低限必要な知識を大きく6つに分けて見ました。
ここでは、将来AIエンジニアとして業務を行うにあたり、大きく分けて__6つの内容の基礎知識__の全体像を把握してください。

①プログラミングスキル
- Python
- numpy、pandas、matplotlib、scikit-learn、TensorFlowやkeras

この中で特にpandasを使いこなせると良いです。
機械学習を行う上で、データ前処理が必須なのですが、データ前処理を行う上で便利なライブラリです。

②数学
- 微分線形代数、ベクトル、行列、確率など

 

③統計の知識
- 標準偏差、分散、確率分布、推定、検定などなど

 

機械学習の基礎知識

- 教師あり学習と教師なし学習
- 前処理、特徴量設計、学習と評価
- 単回帰、重回帰分析、最小二乗法、パーセプトロン、ロジスティック回帰
- 決定木、ランダムフォレスト、サポートベクトルマシン、K-means
- ディープラーニングの実装スキル及び知識
- scikit-learn
- TensorFlowやKerasなどのフレームワークの知識
- scikit-learnで学習済みモデルを作るまでの流れなど。<br>
1.データの収集とデータの前処理欠損値の補完や外れ値の削除)<br>
2.特徴量の設計(特徴量の選択)<br>
3.モデル開発(モデルの選択と学習)<br>
4.モデル評価・・・交差検定、混合行列で評価など<br>


SQLを使ってデータベースを操作する知識
- select、insert、update、delete、where、like、limit、sum、avg、max、group by、having、order by、テーブル結合、ビュー、サブクエリ、caseなどなど

 

クラウドの知識
- AWSGCPやAzureなどのクラウドインフラ回りの知識

大きく6つもあり以外と多いなと思われたかもしれませんが、一度に全てやるのではなく、まずは①と④の2つに絞ることをオススメします。
理由は、実際にプログラムを書き、目に見える形にすることで継続して学びやすくなるからです。
はじめに理論から入ると独学だと挫折してしまうので。

 

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

必要な知識は前の節で紹介しましたが、どのようにそれらを学べば良いのでしょうか。
①から⑥を学ぶ上で、以下のような順で知識を身につけていくことをオススメしています。

フェーズ1 pythonによる機械学習プログラミングと人工知能概論を学ぶ
フェーズ2 機械学習プログラミング
フェーズ3 Kaggleに挑戦
フェーズ4 SQLスクレイピングクラウドなどの技術も身につける。
フェーズ5 機械学習スキルを活用してプロダクト制作をする
フェーズ6 教える

 

このフェーズごとに学んでいくことがもっとも自分自身に負荷をかけず、楽しく学ぶことができると考えています。

 

フェーズ1ではプログラミング初学者の方を指しております。
もし、プログラミングを初めてという方は是非フェーズ1から目を通してください。

フェーズ2では実際にフェーズ1で学んだ内容をベースに、機械学習プログラミングに関する勉強方法を説明して参ります。
既にscikit-learnを使った機械学習プログラミングを行なっている方は飛ばして頂いても構いません。

フェーズ3ではKaggleといったコンペティションを通じて実践的なプログラミングを学ぶ方法を記述しています。

フェーズ4 機械学習をやる上で、データベースからデータを取り出すことは頻繁に行われますので、SQLの知識は必須です。ここでは、SQLの他にスクレイピング(データ収集用)、クラウドなどの技術の身につけ方を紹介します。

フェーズ5 機械学習スキルを活用してプロダクト制作に取り掛かりましょう。このレベルまで到達した方は、プロダクトを通じて学ぶことが多いです。

フェーズ6 人に教えることで自分の分かっていなかったことが明確になることがあります。なので、友人などに機械学習を教えて自分の理解を深めることもよいでしょう。

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

 

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

独学で、書籍を使って、
人工知能開発に最低限必要な知識は「機械学習の知識」と「Pythonの知識」と「機械学習のための数学と確率・統計学」です。

このフェーズでは、「機械学習の知識」と「Pythonの知識」に絞り、一旦「機械学習のための数学と確率・統計学」は違うフェーズに回しても大丈夫です。
数学や確率がわからなくても、機械学習用のライブラリを使えば機械学習を体験でき、理論だけの学びよりモチベーションが保ち安いからです。(人によっては理論からの方が継続できる方もいるかと思いますので断言はしません。)
その後、ライブラリに頼った実装をした後に、中で何が行われているのか気になってから、一度立ち戻って数学・統計学などを学ぶことをオススメします。

では、オススメ書籍を紹介していきます。

まず、プログラミング初心者または、Pythonの基本文法に自信がない方は下記書籍がオススメです。


・Python3 入門ノート

f:id:kazunroi-t:20180508124710j:plain

http://amzn.asia/8ccnGQH

2894円

 

こちらの書籍はpythonの基礎にあたる基本文法だけでなく、機械学習プログラミングに関する基礎も学べます。
この書籍を一通り読み終えることで、pythonプログラミングの基礎力と、機械学習プログラミングの体験が出来ます。

また、pythonプログラミングを始める際には、__開発環境いらずのブラウザかつ無料で使える、CPU/GPU機械学習環境が整ったGoogle Colaboratoryを利用してPythonプログラミングをしていきましょう。

次に、人工知能の概要に関してさらっと学びたい方は下記の書籍をお勧めします。

人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書) [単行本]

 

f:id:kazunroi-t:20180508125144p:plain

 

http://amzn.asia/iW1Ms5S

1512円


上記2冊はPythonの本を読み、出てくるプログラムを手を動かしながら進めてください。


さて、上記2冊で人工知能に関する知識及びPythonプログラミングの基礎が固まった方は、
機械学習の一連の流れと統計的機械学習のプログラミングを始めましょう。

 

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

Pythonではじめる機械学習

f:id:kazunroi-t:20180508125241j:plain


こちらも手を動かしながらコードを書き、またその後コードを読む(写経)をおこなってください。
ただ本を読むだけより、手を動かしながら進める方が理解が深まります。

http://amzn.asia/0GskuMa

3672円

 

 

f:id:kazunroi-t:20180508125325j:plain


http://amzn.asia/9EPUIpg
4320円


ここまで来てライブラリの中でどのような処理がされているか気になった方は、ニューラルネットワークをnumpyなどの最小限のライブラリを使って、実装してみましょう。
数学の知識が不安な方は、下記で紹介している数学の本などを参考にしてみてください。


ニューラルネットワークディープラーニング
ゼロから作るDeep LearningPythonで学ぶディープラーニングの理論と実装

f:id:kazunroi-t:20180508125411j:plain

http://amzn.asia/caXkYL3

こちらも実際に手を動かしながら、ニューラルネットを作りながら学びます。

3672円

 

・数学
やさしく学ぶ 機械学習を理解するための数学のきほん

f:id:kazunroi-t:20180508125505j:plain

 

http://amzn.asia/b2XXln9

2786円

 

・数学+α
Pythonで動かして学ぶ! あたらしい機械学習の教科書

f:id:kazunroi-t:20180508125618j:plain

http://amzn.asia/fzt2aXa

 

・確率、統計学
Pythonで学ぶあたらしい統計学の教科書

f:id:kazunroi-t:20180508125704j:plain

http://amzn.asia/1zA7oAJ

3240円

 

・データ前処理
前処理大全[データ分析のためのSQL/R/Python実践テクニック]

f:id:kazunroi-t:20180508125751j:plain

http://amzn.asia/aa5dHB0


3240円

 

次に、ライブラリを用いてDeepLearningの学習をしましょう。
ライブラリはTensorFlowまたはKerasをオススメしています。
初心者にオススメなのはKerasの方です。

この際、ライブラリを用いないフルスクラッチでの実装に取り組むことはオススメしていません

モチベーションが保てないことが多いからです。

 

・Keras
PythonとKerasによるディープラーニング

f:id:kazunroi-t:20180508125835j:plain

http://amzn.asia/8Ya7Xu5

4190円

※日本版は2018年5/28日に発売予定です。
英語版は下記から購入可能です。

Deep Learning with Python (英語)
5891円

 

・TensorFlow
TensorFlowではじめるDeepLearning実装入門

f:id:kazunroi-t:20180508125947j:plain

http://amzn.asia/hLtvTDT

2808円


書籍以外にも、Udemyなどがオススメです。
次の動画も合わせてご利用してみてください。

Pythonで機械学習:scikit-learnで学ぶ識別入門

 


フェーズ3 Kaggleに挑戦

さて、フェーズ1,2では書店で販売されている機械学習関連の書籍を紹介しました。
上記の書籍を順番に1〜3ヶ月ほど手を動かしながら進めると、機械学習の一連の流れや、自分で機械学習のモデルを読み書きできるレベルになっているはずです。

ここでは、次のフェーズとしてKaggleやSIGNATE(旧 DeepAnalyticsを使って、実践します。
Kaggleは、世界中のデータサイエンティストが集まるコンペティションサイトです。
企業などが分析してほしいデータをここに載せて、ユーザーが分析をして、分析の精度を競います。
上位3位にはデータをあげた企業から賞金も出ます。
Kaggleのオススメの使い方としては、Kernels(カーネル)という機能を使うことです。
カーネルでは、各データセットに対して他のユーザーが構築したモデルのコードの説明などがわかりやすく書いてあります。

Kaggleで実際にデータ解析を行うとわかりますが、データの前処理が大変重要です。

ここでのポイントとしては、pandasを上手く使いこなせるかが鍵になっております。

 

pandasのデータ加工でわからないことがあれば、
pandas公式 チュートリアルから再度復習してみてください。

書籍としてはPythonによるデータ分析入門がオススメです。

 

フェーズ4 SQLスクレイピングクラウドなどの技術も身につける。
実データに関しては、Web上のデータであればデータベースに保存されていることが多いため、SQLの知識も必要になります。

ここでは、SQLを使ってデータ分析をするための参考になる書籍を紹介します。
・ProgateのSQL編(SQL初級者向け)
Progate[プロゲート] SQL

 

SQLを使って分析をする(SQL中級者向け)
ビッグデータ分析・活用のためのSQLレシピ

f:id:kazunroi-t:20180508130437j:plain

 

データ収集はデータベースから行うこともあれば、スクレイピング等で行うこともあります。
スクレイピングはWebサイトに掲載されている情報を収集するための技術です。
ここでは、スクレイピングの技術習得のためにオススメの書籍を二冊紹介いたします。
・1冊目にオススメ
Pythonによるスクレイピング&機械学習 開発テクニック BeautifulSoup,scikit-learn,TensorFlowを使ってみよう

f:id:kazunroi-t:20180508130700j:plain

 

・2冊目にオススメ
Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド

f:id:kazunroi-t:20180508130814j:plain

 

クラウド
ここではGoogle Cloud Platform(GCP)の簡単な説明をします。

Google Cloud Platformは、Google保有する膨大なインフラストラクチャや機械学習等といったサービスを使った分だけの支払いで利用することができるクラウドサービスの総称であり、GCPを使うことでサービスを開発する上でのインフラ周りや、高性能なデータ分析・機械学習サービスを各種APIを通じて利用が出来ます。
GCPとよく比較されるサービスとしてAmazonAWS、Micro softのAzureなどがありますがそれらの違いは下記記事を参考にして見てください。

Google Cloud Platform とAWS、Azureの違い

また、GCPAPIPythonで呼び出すことが出来ますが、下記画像にある通り画像認識・動画解析、音声認識自然言語処理などのAPIが用意されています。
自分の作りたいものを作るときに、0からscikit-learnやKerasなどを使って自前で作るより、APIを使った方が簡単にかつ、精度の良いものを作ることが出来ます。
自分にあったAPIを探し、ドキュメントや、Googleで検索したり、qiitaで調べたりして出てきた記事を参考にすれば実装が出来たりします。

f:id:kazunroi-t:20180508130927p:plain

 

GOOGLE CLOUD PLATFORM での PYTHON

 
フェーズ5 機械学習スキルを活用してプロダクト制作をする

フェーズ5まで、機械学習スキルやそれ以外の人工知能関連技術を学びました。
ほとんど最後のフェーズですが、次のフェーズとしてはプロダクト制作をすることをオススメします。

プロダクトには様々な形があると思いますが、ひとまずWebアプリケーションが学習コストが少なく済むので、オススメです。
次に、モバイルのアプリなどに取り組んで見ても良いでしょう。
Webアプリケーション作成にはPyhonの他にも、HTML, CSS, JavaScriptの知識が必要です。
これらの知識はプロゲート, ドットインストールなどを利用して身につけましょう。

・HTML, CSS, JavaScript

Progate(プロゲート)
3分動画のドットインストール(dotinstall)

 

また、PythonでのWebアプリケーション開発はDjango,Flaskなどのフレームワークが有効ですが、一人で学ぶには、Flaskが学びやすいです。
FlaskはUdemyの動画を参考にすると良いでしょう。
Udemy -Flask-


動画を見るだけでなく、動画のプログラムを打ち込みながら手を動かして進めるのがオススメです。

 


さらに、Web開発を身につけた方は、Google CloudのAPIなども合わせ学び、これまで学んだことを合わせてあなたのアイデアを形にしてみてください。
Google Cloudでは、画像・動画分析、音声認識、テキスト分析などを容易に扱うことが可能です。


フェーズ6 教える

プログラミングや機械学習を学んだら、友人でも良いので誰かに教えることをオススメします。
教える方法としては、イベントやセミナーを行うのも良いですし、Skypeなどを使い、友人にマンツーマンレッスンを行なったり、カフェで直接教えたりするのが良いです。

教える以外にもQiitaやブログに記事を書いたり、本を書くとかも良いかと思います。
AI Academyでは受講生の交流会やLT会もやっており、人前で教える機会も提供しておりますので、是非ご活用して見てください!

 

学習ロードマップ

f:id:kazunroi-t:20180508131457p:plain

 

左の書籍(STEP1)から右の書籍(STEP4)まで、順に読み進めてください。
すでにpythonプログラミングの基本がわかっている方はSTEP1を飛ばしても構いませんし、既にscikit-learnで機械学習プログラミングの基本や機械学習の数学もわかる方はSTEP2も飛ばしても構いません。


自分の現在のレベルにあったSTEPから初めてください。
もし、pythonプログラミングの経験がない方や、人工知能ってなに?という方はSTEP1から初めてください。

 

何度も記述していることですが、ポイントなのが、基本的に書籍に出てくるコードは実際に書いて進めることです。

例えば、英語などを勉強するときも教材を眺めるだけより、書いたり読み上げたり聞いたりすることが有効だったりします。
プログラミング言語も同様で、ただ本を眺めるだけより、実際に写経することでより理解が深まります。

 

ただし、どの教材も100%理解する必要はありません
どのタイミングで、次のSTEPへ進むかの判断基準ですが、書籍に書いてあること全て理解せずに、7割理解できたかなというレベルで十分です。
そこに到達したら次へ進みましょう。

 

また、詳細は上記、人工知能を独学で勉強するオススメの方法を参考に進めてください。

STEP1から始められる方で、○○のデータ解析ができるようになりたい!というのであれば、ニューラルネットワークやKerasによるディープラーニングの部分は飛ばしても構いません。


一旦、STEP1→STEP2→フェーズ3 Kaggleに挑戦→その後必要に応じて、ニューラルネットワーク実装&ディープラーニングライブラリ(TensorFlowやkerasなど)へ進めて頂ければと思います。


というのも、scikit-learnにもニューラルネットワークを使うことができますので、業務でディープラーニングを使うことが決まっていなかったり、データ解析をゴールにおいている場合はがっつりディープラーニングを学ぶ必要はそこまでないかなという理由です。
しかし、AIエンジニアとして就職・転職希望の方はしっかり『ゼロから作るディープラーニングの中身は理解しておきましょう。

 

まとめ

ここまでの流れをまとめます。

フェーズ1 pythonによる機械学習プログラミングと人工知能概論を学ぶ
フェーズ2 機械学習プログラミング
フェーズ3 Kaggleに挑戦
フェーズ4 SQLスクレイピングクラウドなどの技術も身につける。
フェーズ5 機械学習スキルを活用してプロダクト制作をする
フェーズ6 教える


英語に自信がある方へ

ここまでは、学習方法やオススメの書籍などを紹介しましたが、英語に自信がある方にはオススメのサービスを紹介します。
※英語苦手だとしてもCoursera (コーセラ)の機械学習は是非受講することをオススメします。

 

①Coursera (コーセラ)
Coursera Machine Laerning

コーセラは世界中の人に最高の教育を無料で提供するということを理念にしているオンライン教育サービスです。
特に機械学習のコースの講師はStanford Universityのアンドリュー・ウ(Andrew Ng)氏です。
アンドリュー氏は、人工知能の研究をしており、Google Brainの立ちあげやCouseraのファンダーでもあります。
シリコンバレーにあるBaiduの研究所で勤務しておられる方であり、機械学習を学ぶのに最も適した教材とも言え、機械学習の主要なアルゴリズムを直感的に理解し、実際にプログラミングできるように教えてくれます。
Andrew Ng氏は沢山褒めてくれるので、とても嬉しくなります笑
プログラミング言語Pythonではなく、OctaveMATLABです

f:id:kazunroi-t:20180508132127p:plain

 


②Learn with Google AI (ai.google education)
Learn with Google AI

f:id:kazunroi-t:20180508132213p:plain

 

Google社内教育プログラムで無料で利用可能です。
コンテンツは、大変わかりやすい動画です。

 

③udacity

Udacity "Intro to Machine Learning"

f:id:kazunroi-t:20180508132320p:plain

 

Youtube "Machine Learning with Python"

Machine Learning with Python (YouTube)

f:id:kazunroi-t:20180508132449p:plain

 

本気でAIエンジニアを目指している方へ
上記内容を順に学んでいくことで、一定の基礎スキルが身につき、AIエンジニアとしての入り口に入れるかと思います。
ですが、実務でAIエンジニアとして活躍していくにはまだまだ知識的に足りない可能性があります。
その際には、以下に挙げる勉強法と、その書籍にも目を通していくことをオススメします。

 

1. C++及びJava言語で機械学習アルゴリズムも書けるようにする。
2. 『データ解析のための統計モデリング入門 〜一般化線形モデル・階層ベイズモデル・MCMC〜』

3. 統計学入門 (基礎統計学Ⅰ)
4. 統計的学習の基礎 ―データマイニング・推論・予測


終わりに

ここまでお読みいただきありがとうございました。

弊社ではAI AcademyというオンラインAIプログラミング
学習サービスを運営しており、AIを学びたい方の目標を最短で実現するサポートを行なっております。

メインサービスとして行なっていることは、以下の3点です。
・今回取り上げた書籍の中でもさらに必要な部分のみを抽出したテキストコンテンツ(スマホからでもPCからでも閲覧できます。)
・チャットでの質問対応やコードレビュー

 

※AI Academyのコンテンツ以外のことも質問可能です。
・学習進捗サービス(作りたいプロダクトへの最短ルートの提示、次に何をしたらいいかの提示)

これまで長々と書いておりましたが、上記した書籍を全て1から学ぶにはそれなりの学習コスト(最低でも6ヶ月程度)がかかります。
弊社のような教育系サービスをご利用いただければ、大幅に学習コストを減らせるので、一度ご検討していただけると幸いです。
AI Academyの詳細について聞きたい方は、aiacademy@cyberbra.inに何なりとメールでお申し付けください。
なお、AI Academyのサービスサイトはhttp://aiacademy.jp/ です。


# この記事を書いた人

サイバーブレイン株式会社
代表取締役CEO 谷 一徳

フォローお待ちしております!
Twitter
Facebook


1000名以上が参加しいてるAIコミュニティも運営しております。
毎日AIに関する情報を提供しておりますので、こちらのご参加もお待ちしております!
人工知能研究コミュニティ