PythonMania

普段はロボットとAIを組み合わせて色々作ってます。Python関係以外も色々投稿していくと思います。

機械学習まとめ①

機械学習アルゴリズムまとめ①

f:id:mizuhiki0111:20180813232328j:plain

 

 

最近機械学習のアルゴリズムについて勉強中なのでそのまとめとして記事にまとめます。

 

今回は初回として、機械学習の定義・大まかな分類について書いていこうと思います。

 

 

なお今回の記事については以下の書籍を参考にまとめています。

https://www.amazon.co.jp/scikit-learn%E3%81%A8TensorFlow%E3%81%AB%E3%82%88%E3%82%8B%E5%AE%9F%E8%B7%B5%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92-Aur%C3%A9lien-G%C3%A9ron/dp/4873118344/ref=sr_1_1?ie=UTF8&qid=1534171131&sr=8-1&keywords=scikit

 

 

 

 

 

 

機械学習とは・・・

→「コンピューターがデータから学習できるようにするためのコンピュータプログラミング」のこと。

 

つまり「プログラミングのコードで明確なルールを示さなくても、与えられたデータから学習してタスクをうまくこなすマシンをつくること」である。

 

 

 

 

 

例として機械学習で作成したモデルに、「スパムメールの例」と「正常なメールの例」を与えて学習させると、新しく受信したメールを「スパムメール」か「正常なメール」かコンピュータが判別できるようになります。

 

これを機械学習を使わず、プログラミングのコードだけで判別しようとした場合、既存のメールは判別することが出来るが、新しく受信したメールは判別することは難しいです。

 

例えば、「4U」を含むメールを「スパムメール」として定義した場合、新たに受信したメールに「4U」の文字列が含まれる場合は「スパムメール」と認識することが出来ますが、代わりに「For You」と書かれていた場合は新たにソースコードを書き直さなければならなくなります。

 

対して機械学習を使った場合は、今まで学習したデータから「For You」が含まれるメールも「スパムメールではないか?」と予測し、正確な判別をすることが出来るでしょう。

 

 

 

 

※ちなみに、よく耳にする「AI」、「機械学習」、「深層学習(ディープラーニング)」の関係を図で表すとこんな感じ

f:id:mizuhiki0111:20180816222101j:plain

 

 

深層学習(ディープラーニング)も機械学習の一つのアルゴリズムだったんですね。

深層学習は、機械学習のモデルの中間層やノードの数を増やすことで、データから学習する際「データのどこに注目するか」をコンピュータ自身が判断することが大きな特徴です。一般的な機械学習の場合、データのどこに着目するかは人間がコンピュータに教えます。

こうした機械学習や深層学習の仕組みをまとめて「AI」と呼んでいます。

 

 

 

 

 

 

2:機械学習システムのタイプ

 

機械学習システムのタイプは非常に多いが、以下の基準で大まかに分けることが出来ます。

 

 

①人間の関与のもとで訓練されるかどうか

 

②その場で少しづつ学習できるかどうか

 

③単純に新しいデータポイントと既知のデータポイントを比較するか、科学者が行うように訓練データからパターンを見つけ出して予測モデルを構築するか

 

 

 

 

今回は上記三つのうち、①についてまとめていきます。

 

 

 

 

 

①人間の関与のもとで訓練されるかどうか

機械学習システムは訓練中に受ける人間の関与の程度、タイプによって分類できる。

主要な分類カテゴリは以下の4つあります。

 

 

Ⅰ.教師あり学習

これはアルゴリズムに与えられる訓練データの中にラベルと呼ばれる答えが含まれています。

主要なアルゴリズムには以下のようなものがあります。

・k近傍法(分類)

・線形回帰(回帰)

・ロジスティック回帰(回帰)

・サポートベクトルマシン(分類・回帰)

・決定木(分類・回帰)

・回帰木(回帰)

・ランダムフォレスト(分類・回帰)

・勾配ブースティング木(分類・回帰)

・パーセプトロン(分類・回帰)

・CNN(分類)

・RNN(回帰)

・ResNet(分類)

・単純ベイズ(分類)

・時系列(回帰)

・アンサンブル(ブースティング・バギング)

 

 

Ⅱ.教師無し学習

教師無し学習は、教師あり学習とは違い訓練データに正解ラベルがはられていません。

システムに答えを与えないことから、訓練データのなかから人間が見つけることのできなかったパターンを見つけ出すのに使われます。

 

主要なアルゴリズムには以下のようなものがあります。

 

・クラスタリング

 k平均

 階層型クラスタ分析(HCA)

    非階層クラスタリング

    EMアルゴリズム(期待値最大化法)

 トピックモデル(LDA)

 

・可視化と次元削減

 PCA(主成分分析)

 カーネルPCA

    LLE(局所線形埋め込み)

 t-SNE(t分布型確率的近傍埋め込み法)

 

 

・相関ルール学習

 アプリオリ

 eclat

 

・その他

 アソシエーション分析

 

 

 

Ⅲ.半教師あり学習

 半教師あり学習はⅠとⅡの組み合わせであり、一部だけラベルがつけられたデータ

 を扱います。訓練データ全てにラベル付けすることが難しい場合や、逆に一部だけ

 ラベルがあれば事足りる場合に用いられます。

 

主要なアルゴリズムには以下のようなものがあります。

 

・DBN

・制限付きボルツマンマシン(RBM)

 

 

 

 Ⅳ.強化学習

 強化学習は上記3つと比べて非常に特異な種類です。

 仕組みは以下の通り

 学習システム(エージェント)は環境を観察して行動し、「報酬」を得る。

 (行動に応じてペナルティを受けることもある)エージェントは「方策」と呼ばれる

 最良の戦略を学習していき、時間とともに高い報酬を得るようになる。

 ロボットの多くは歩き方を学習するために強化学習アルゴリズムを搭載しており、

 DeepMindの「Alpha Go」は強化学習アルゴリズムを用いて、囲碁の世界チャンピ

 オンKe Jie氏を破った。

 

 

 

今回は「機械学習とは何か」、「具体的にどのような種類があるのか」についてまとめてみました。