「初心者だけど機械学習を学びたい」「ゼロからAIを作れるようになりたい」という方向けに、最短で機械学習を習得する方法を書いてみました。

目次

やっぱり機械学習ツールはPythonとscikit-learn
機械学習の実装に必要な知識
機械学習のプログラミングは簡単
機械学習のおすすめ勉強法
 STEP1 機械学習の基礎知識
 STEP2 開発手法の知識
 STEP3 プログラミングの知識
 STEP4 機械学習アルゴリズムの知識
機械学習に数学の知識は必要か
自分に合った勉強方法を選ぼう
1ヶ月間集中して機械学習を学ぶと周囲に宣言しよう
集中学習にはTechAcademyがおすすめ

※忙しい方は、「STEP1 機械学習の基礎知識」からお読みください。

やっぱり機械学習ツールはPythonとscikit-learn

データサイエンス界のロイター通信的存在であるKDnuggetsから、今年最も利用されたデータサイエンスや機械学習ツールのランキングが発表されました。
top-analytics-data-science-machine-learning-software-2015-2017
元記事:New Leader, Trends, and Surprises in Analytics, Data Science, Machine Learning Software Poll

トップがpythonです。またAnaconda、Tensorflow、scikit-learnなどpython関連のライブラリもトップ10にランクインしています。また前年比から見た伸び率も非常に高いです。

Pythonは名実ともにAIのディファクトススタンダードになりました。我らがscikit-learnも9位と大健闘しています。Pythonとscikit-learnがあれば、機械学習は何とかなるのです。

機械学習の実装に必要な知識

機械学習を作るためには、大きく4つの知識が必要です。ちなみに機械学習は人工知能の中核技術です。機械学習が分かれば人工知能も分かります。

①プログラミングの知識

Pythonのほかに、scikit-learn、pandas、numpyなどPython用ライブラリのAPIの理解。

参考記事:これだけは知っておけ!PythonでAI開発の基礎まとめ
参考記事:実務で使うとこだけ!python機械学習(AI)のデータ処理(pandas/scikit-learn)

②機械学習の基礎知識

機械学習の基礎全般。教師あり学習と教師無し学習、回帰と分類、学習と推論。
パターン認識とモデルという概念の理解。

参考記事:人工知能(AI)入門 ~機械学習でできることを解説~

③機械学習アルゴリズムの知識

ロジスティック回帰、決定木、ランダムフォレスト、SVMなどのアルゴリズム。またディープラーニングの知識。パラメータ学習における線形代数、最小二乗法における微分の知識。

参考記事:ランダムフォレストで特徴量の重要度を評価する

④開発手法の知識

機械学習の開発手法の知識。開発工程、データの前処理、特徴量の設計、モデル開発と評価。

参考記事:交差検定(クロスバリデーション)など機械学習の評価方法まとめ


他にも、SQLやAWSなどインフラ回りの知識、自然言語処理や画像処理の知識もありますが、csvに収まる構造データを扱う場合はとりあえず不要です。ただ最低限必要な知識が4つもあるので、機械学習に挫折する人が多いんです。

機械学習のプログラミングは簡単

機械学習のプログラミング自体は、驚くほど簡単です。
例えばScikit-learnを使ってディープラーニングで実装したコードが以下の感じです。

#scikit-learnから必要な関数をインポート
import numpy as np
from sklearn.neural_networkimport MLPClassifier
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.metrics import confusion_matrix

#データの読み込み
data = np.loadtxt("neet.csv",delimiter=",", skiprows=1)

#特徴量データをXに、教師データをyに格納
X = data[:, 0:-1]
y = data[:, -1]

#学習データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

#ニューラルネットワークで学習と評価 
clf = MLPClassifier()
print cross_val_score(clf, X_train, y_train, cx=10)

#混合行列で評価
y_predict = clf.predirct(X_train)
print confusion_matrix(y_train, y_predict)

たった13行で実装が終わっています。ライブラリの読み込みを抜いたら8行です。必要な知識を効率的に学ぶことが出来れば、機械学習の習得はそこまで難しくありません。私自身も独学で少し学んだ結果、仕事で機械学習を開発する立場になりました。

機械学習のおすすめ勉強法

必要な知識が4つあるため、学習のステップは4つになります。ゼロから独学で勉強する人を想定しています。

STEP1 機械学習の基礎知識

まずは機械学習の基礎をざっくり学ぶ。教師あり学習と教師無し学習、回帰と分類など、初心者向け解説サイトをいろいろネットサーフィンして機械学習のイメージを掴む。

初心者が一番最初に読む本は、松尾先生の「人工知能は人間を超えるか」です。機械学習や人工知能の書籍はたくさん出版されていますが、いまだにこの本を超える入門書はありません。



GOAL:「機械学習ってデータからパターンを抽出してるんだなー」「教師あり学習が基本で目的変数と説明変数があるんだなー」

STEP2 開発手法の知識

機械学習の成果物である「学習済みモデル」の作り方を学ぶ。4つの工程があるので、それぞれ何をするか把握する。機械学習の作り方は、実務家が集まるslideshareやQiitaに情報が集まっている。

・データの前処理・・・テーブル結合、欠損値の補完、外れ値の削除
・特徴量の設計・・・特徴量の選択、相関係数の算出、ランダムフォレストの評価
・モデル開発・・・特徴量をディープラーニングやSVMで学習
・モデル評価・・・交差検定、混合行列で評価

GOAL:「欠損値は平均値で補完しとけばいいかなー」「外れ値はグラフ作って見ればいいかなー」「モデル評価は交差検定と混合行列だよなー」

※STEP2の目的は、機械学習プログラミングのための事前知識の習得です。あまり時間をかけず、ある程度理解したらSTEP3に進まれることをおすすめします。

STEP3 プログラミングの知識

Pythonの基礎文法と、scikit-learn、pandas、numpyなどPython用ライブラリのAPIの理解。プログラミングは慣れの部分が大きいので、paizaラーニングとかでひたすらプログラミングに触れる時間を作る。pythonがある程度理解出来たら、scikit-learnのコードを写経して理解していく。おすすめの書籍は"pythonで始める機械学習"。お金がなければ、ネットのコードを写経していく。

GOAL:「pandasのデータ処理便利だなー」「fit関数で学習させればいいんだよなー」「パラメータはグリッドサーチしとけばいいなー」



※【追記】これまで当ブログでは、おすすめ書籍として「python機械学習プログラミング」を勧めてきましたが、「pythonではじめる機械学習」の方が、より難易度が低く初心者向けのため、こちらを紹介しています。

STEP4 機械学習アルゴリズムの知識

機械学習アルゴリズムは、まず決定木、ランダムフォレスト、SVMあたりを理解していく。決定木は直観的にわかるので最初に学びたい。SVMやロジスティック回帰も分類問題ではよく利用されるので理論的な部分含めて理解したい。

本丸のディープラーニングの知識は、ネットで分かりやすい解説がたくさんあるので、しっかり読み込んで理解したい。一番のおすすめは、ゼロから始めるディープラーニングの本。お金がなければ、ネットだけでもOK。理論を解説してくれている論文もネットに転がっているので、斜め読みすると理解が進む。

GOAL:「ディープラーニングって計算結果と答えの誤差関数を最小二乗法でぐるぐる回してるだけなんだなー」「SVMのCとγパラメータ増やすと過学習しやすいなー」「アルゴリズムは難しいけどscikit-learn使っとけばなんとかなるなー」



機械学習に数学の知識は必要か

機械学習の理論は、線形代数や行列などの数学がベースになっています。そのため、数学が分からないと機械学習が理解できません。しかし、いきなり線形代数の本を買って勉強すると、高確率で挫折してしまいます。少なくとも私は挫折しました。

実は機械学習のプログラミングには、数学の知識はほとんど必要ありません。なぜなら、難しい計算はscikit-learnやchainerなどのライブラリがやってくれるからです。私たちは、ライブラリにデータを渡すだけでよいのです。そのため、まずは機械学習のプログラミングを学び、余裕が出てきてから数学を学ぶことをおすすめします。

どうしても数学をしっかりやりたいと思われる方は、Udemyの「人工知能・機械学習 脱ブラックボックス講座 - 初級編 -」がおすすめです。機械学習の数学講師として、キカガクの吉崎先生を超える人はちょっと見当たりません。



自分に合った勉強方法を選ぼう

「本を読んで勉強することが苦手!」と思う方もいるかもしれません。人間にはNLPタイプというものがあり、視覚優位の人と聴覚優位の人がいるようです。右利きと左利きの人がいるように、得意な感覚器官は人によって異なるそうです。

視覚優位の人は、情報を"目"で見て理解することが得意で、聴覚優位の人は、情報を"耳"で聴いて理解することが得意とのこと。もしあなたが、本を読んでもいまいち理解が進まないと感じているなら、あなたが聴覚優位である可能性があります。

聴く能力が高い人は、講義やセミナーを聴くことが効率的な勉強法になります。そのため機械学習のセミナーや研修に参加すると理解度は相当上がるでしょう。

また「udemy」というオンライン動画で学習する方法もあります。受講者は1500万人程いるので名前くらいは聞いたことあるかもしれません。udemyの特徴は、「機械学習」や「データサイエンス」のコースがとても豊富なところです。また大学の先生や実務経験豊富な方が講師をされており、教材の品質も非常に高いです。費用は、コースの大半が2000円以下で受講できます。

私も「Pythonで機械学習:scikit-learnで学ぶ識別入門」コースを受講し、仕事が終わった後や土日に少しずつ受講して勉強しました。機械学習の基礎知識からプログラミングまで教えてくれるので、実はこのコースだけで上述の学習STEP1~4を網羅しています。

内容も大変分かりやすく、大学の先生でここまで分かりやすい説明をしてくれる方もいるのかと感動しました。自信を持ってお勧めできるコースです。

 

1ヶ月間集中して機械学習を学ぶと周囲に宣言しよう

プログラミングや機械学習の知識は、だらだらやってもなかなか身につきません。理由は、成長実感が得られにくいからです。

一方集中的に勉強すると、短期間で成長実感が得られます。また、点の知識は忘却しやすいですが、短期間で集中学習することで、点と点の知識を線になっていきます。知識が線になれば、記憶も定着するので成長が速いです。

自分を追い込むためにも、職場などで、1カ月間集中して学ぶと周りに宣言してみましょう。得られるメリットはいろいろあります。

①期間を区切ることで学習のモチベーションが維持できる
②短期間で成長実感が得られるのでモチベーションが高まる
③職場で早めに帰宅する口実が出来る
④職場での成果報告を条件に、業務時間中の勉強を認めてもらえる可能性がある。

どこまで言うかは職場の風土によりますが、できれば非公式にでも良いので直属の上長には伝えておきたいところです。会社でAIをやろうという話になったときに、「一番最初に名前が上がる」ようになればベストです。

集中学習にはTechAcademyがおすすめ

もしあなたが機械学習を集中的に学ぶと決意されたら、後は教材を選ぶことになります。書籍で学ぶことが王道ですが、機械学習の範囲の広さに加え、分からない事の部分の調査にじかんがかかったり、勉強の持続が大変だったりといくつか課題もあります。

機械学習でよく利用するpython言語の習得は、javaなど他の言語より習得しやすい言語ではありますが、独特の癖があったりします。
特に文字コードなどのエラーを調査していくと、平気で3時間とかかかります。また数値計算周りのエラーは慣れないとちょっときついです。


そこで、オンラインスクールTechAcademyの「AIコース」に通う方法もあります。

サポート体制と勉強の"型"で学習効率が高まる

TechAcademyの「AIコース」では、あなたの学習を現役AIエンジニアが支援してくれます。具体的には、週2回のメンタリング、毎日のチャットなどで、短期間で機械学習・ディープラーニングを学べるプログラムです。pythonのライブラリを使い、機械学習の開発を実践的に学べます。

漠然とオンラインスクールを受講するのは、効果が薄いかもしれません。しかし、自分で設定した集中期間のサポートツールとして活用することで、学習効果を高めることが出来ます。現役AIエンジニアに質問できるので、バグで詰まったりしなくなり、学習効率が上がります。

そういう意味で、数あるオンラインスクールを選ぶポイントは、サポートの手厚さです。メンターに質問してどれだけ早く適切な回答が返ってくるかで学習効果が大きく異なってきます。TechAcademyは、経験豊富で非常に優秀なメンターがサポートしてくれます。また業界最大手という事もあり、サポート体制は万全です。

費用もかかりますが、その道のプロが何年何十年もかけて蓄積した経験値を吸収できるのですから、得られるものは大きいでしょう。他社と比べ、費用的にもかなり低めです。

新しいことを勉強する際、その人の頭の良さではそこまで大きな差は尽きません。むしろ、何を重点的に学べばよいのか、どうやって勉強すればよいのかと言う部分で大きな差がついているように感じます

TechAcademyは、その勉強の"型"を提供してくれます。
TechAcademyをもう少し詳しく知りたい方には、 無料のオンライン説明会動画 もあります。メンターのサポート、学習の進め方、実際の受講風景が分かります。

よく練られている教材ですので、学習のイメージを掴むためにも、まず一見されることをおすすめします。



「近いうちに人工知能開発の仕事をしたい社会人」など、将来的にAIエンジニアを目指す方におすすめします。
人工知能ブログ画像1

まとめ

いかがでしょうか。機械学習を最短で学べる方法について書きました。
機械学習がこれからの未来を大きく変える技術ならば、機械学習の知識は、あなたの未来を強く明るく照らしてくれるはずです。


合わせて読みたい
未経験からAIエンジニアになる方法