詳しくわかりやすい説明はいくらでも他のサイトがしているので、ここでは勉強したものを「実際に動かす」点に主眼を置いてまとめます。
アルゴリズムの項ではKaggleのデータセットを使ってモデルを検証します。
フレームワーク、クラウドの項では簡単なアプリケーションを作ってみます。
機械学習とは
コンピューターにチェッカーをプレイさせたArthur Samuelは機械学習を以下のように定義しています。
Field of study that gives computers the ability to learn without being explicitly programmed.
引用: What Is Machine Learning? (IT Best Kept Secret Is Optimization)
厳密にプログラムすることなく問題解決能力をコンピュータに与えること、といったところでしょうか。
入力情報に対して全てif文で分岐するようなものは機械学習ではないということです。
学習方法による分類
機械学習の分類には様々な切り口があり、わかりやすく分類することが難しいのですが、courseraのMachine Learning講座では機械学習を以下の4つに大別していました。
- 教師あり学習(supervised learning)
- 教師なし学習(unsupervised learning)
- 強化学習(reinforcement learning)
- レコメンダシステム(reccomender systems)
(ほとんどは教師あり学習、教師なし学習に分類されるため講義ではこれら2つに時間を割くそうです)
教師あり学習
データセットに正しい出力(ラベル)が含まれている。
出力によって回帰、分類などに分けられる。
- 回帰(regression)
- 出力が連続値(例: 価格、年齢)
- 分類(classification)
- 出力が離散値(例: 生死、野菜の種類)
教師なし学習
データセットに正しい出力(ラベル)が含まれていない。
- クラスタリング
- 顧客のグルーピング
機械学習アルゴリズム
ここでは個別のアルゴリズムについて分類します。
分け方は仕事ではじめる機械学習に準拠しました。
実際に自分で試したものは記事のリンクを併記します。
分類
- パーセプトロン(Perceptron)
- ロジスティック回帰(Logistic regression)
- SVM(Support Vector Machine)
- ニューラルネットワーク(Neural Network)
- k近傍法(kNN)
- 決定木(Decision Tree)
- ランダムフォレスト(Random Forest)
- GBDT(Gradient Boosted Decision Tree)
回帰
- 線形回帰(Linear regression)
- 多項式回帰(Polynomial Regression)
- Lasso回帰(Lasso Reggression)
- Ridge回帰(Ridge Regression)
- Elastic Net
- 回帰木(Regression Tree)
- SVR(Support Vector Regression)
精度を高めるテクニック
フレームワーク
以下のものが有名なようです。
上二つは細かいとこまでチューニングできるけど、初心者には難しく、下二つがとりあえず触ってみるのに良いらしいです。
よく話題に挙がるKerasはフレームワークではなく、ラッパーライブラリだそうです。
初心者には複雑なTensorflowやTheanoを扱いやすくしてくれます。
Tensorflow + Kerasで学習を始めれば、とりあえずとっつきやすくて後々Tensorflowを直接いじってより高度なことができていいのかな、と思います。
国内ではChainerが盛り上がっていますが、日本語の情報こそ多いものの全体で見ればやはりKerasの方がユーザが多いようですね。
ちなみにPytorchはChainerをフォークして作ったものらしいです。最近は論文実装でPyTorchが多いらしいです。
Google Trends(検索の人気度合)でそれぞれを比較するとこんな感じ。
一見Kerasがかなり人気に見えますが、初リリースの2015年3月27日の前からもそれなりに検索数があるので別の文脈での検索数がそれなりにあるみたいです(10~20ぐらい)。
それを差し引いてみるとPyTorchがかなり迫っているように見えます。
しかしTensorflow初出時の検索数の伸びがすごい。それだけ衝撃的だったってことですね。
Keras
PyTorch
- PyTorch 入門 -Mac book proでチュートリアル-
- PyTorch DL for NLP -イントロダクション-
- PyTorch DL for NLP -bag of wordsで英語とスペイン語を分類-
クラウドサービス
自身でアルゴリズムを構築しなくとも、いわゆる「AI」を利用したクラウドサービスを利用することで簡単にアプリケーションを開発することができます。
色々と試してみたものをタスク別に記事にしました。
画像認識
可視化
学習教材
書籍: 人工知能は人間を超えるか
人工知能、機械学習、ディープラーニング、そこらへんのバズワードをさっくり知りたい人向け。
人工知能が普及したらどうなるのか、読み物として面白いです。
動画: coursera Machine Learning講座
courseraはスタンフォード大学などの授業をオンラインで無料受講できるMOOCです。
こちらのMachine Learning講座は非常に評価が高く、機械学習の入門として挙げる方が多いです。
無料という点では気軽に始められますが、それなりの英語力が要求される点で少し敷居が高いかもしれません(字幕はだいたい日本語が付いています)。
またお金を払えば正式にスタンフォード大学の修了証を取得できます。
書籍: Pythonによるスクレイピング&機械学習
スクレイピングでデータを集めて、自分で学習させるところまで学べます。
全編が機械学習というわけではありませんが、実践的に機械学習を使って何かをしようとした時に付随して必要になる知識を勉強するのに役立ちます。
「機械学習のアルゴリズム自体を構築したい」という人より、「機械学習を使って何かしたい」という人におすすめ。
書籍: 詳解ディープラーニング
書籍: ゼロから作るDeep Learning
学びの深い一冊です。ディープラーニングの中身を細かく解剖し、一つずつ自分で構築します。
Tensorflowなどのライブラリを使わないので、これらのライブラリの中身がどうなっているかということも学べます。
機械学習をブラックボックスではなくしっかり理解したい人向けです。
書籍: 仕事ではじめる機械学習
データ取得先
機械学習には大量のデータが必要になりますが、自分で集めるとなると結構骨が折れます。
こちら「arXivTimes」にまとめてあるのでまずはこちらから探してみることをオススメします。
うまくいけば大量のラベル付きデータを見つけることができるかもしれません。