はじめに
こんにちは! 第4回となる今回は機械学習について詳しく解説する記事になります。 それでは見ていきましょう!
この記事で書くこと
改めてこの記事で書くことを整理していきます。
1. 機械学習とは
2. 機械学習の種類
3. ニューラルネットワーク
4. 畳み込みニューラルネットワーク(CNN)
↑この順に説明していきます! 後半に 「ニューロン」 とか 「ニューラルネットワーク」 とか難しい専門用語が出てきますが、機械学習をやっていく上では知っておかなければならない知識なのでしっかり覚えましょう!
1.機械学習とは
まず機械学習について説明していきます。ズバリ機械学習とは 「多量のデータから特徴を見つけ出すこと」 です!
例えば人間の場合、猫を見てそれを猫と認識出来るのはなぜでしょうか?その答えは猫と認識するための材料(特徴)を知っているからです。
特徴の例
1. 尖った耳
2. もふもふした毛並み
3. 長めの髭
4. 大きくて丸い眼 etc.....
こんな感じですよね! 実際に猫として認識する場合は、 「猫っぽい」 という漠然としたようなものですが、猫の画像から具体的な特徴をあげるとすればこんな感じになると思います。私たち人間はこれらの特徴を、生まれてから今まで見てきた大量の猫から学んで「こいつは猫!」と学習してきたはずです。
ではこのような感じで、機械に猫を教えてあげたい場合にはどうすればよいでしょうか?
結論から言うと、大量の猫の画像から猫の特徴を機械自身に学習させる と言う方法があり、これが機械学習になります!
2.機械学習の種類
前章では機械学習について説明してきましたが、機械学習とは大きな枠組みの一つになります。つまり機械学習の中にも様々な手法があり、その枝分かれは複数あります。
この記事では、代表的な 「教師あり学習」「教師なし学習」「強化学習」 について説明していきます。
教師あり学習
教師あり学習と言うのは、学習するデータと答えがセットになっている学習方法です。 「機械学習とは」で説明した猫の学習方法はこれに当たります。「猫の画像」と「猫という答え」がセットになっているので、 大量に学習させることで猫を認識できるというわけです。
また、教師あり学習の場合は与えられた答えにしか回答することができません。例えば、猫と犬しか学習させていない状態でウサギの画像を与えても、帰ってくる答えは猫と犬のどちらかにしかならないという感じです。
これが教師あり学習の特徴といえます。この特徴上、既にある情報の中から予測することに適しています。
教師なし学習
教師あり学習が答えとセットになっているのに対し、教師なし学習は答えが与えられていないデータを学習させる方法です。データからコンピュータ自身で頻出パターンや規則性(答え)を見つけ出すことに適しています。
主な使われ方としては、購買履歴からよく変われる組み合わせを見つけるなどです。例えば、スーパーの購買履歴から「コーラ」と「トイレットペーパー」が同時に変われるパターンが多いことが分かれば、コーラとトイレットペーパーを同じコーナーに配置することで売上アップを狙えたりします。このように一見関係なさそうな頻出パターンも教師なし学習を使うことで発見することができます。
強化学習
強化学習とは教師なし学習と同様に答えを与えません。その代わりに 「行動」と「報酬」の二つの値を与え、この値がいかに高くなるかを学習させる方法です。
わかりやすい例で考えると、将棋のAIも強化学習で作られたものになります。将棋は1ターンごとに各プレイヤーが手を指していくゲームなので、常に最善手と呼ばれる手が存在します。この最善手を、過去の棋譜データを学習させることで見つけ出します。
人間が将棋で最善手を見つける場合は、その時々の流行や今までの将棋の歴史で積み重ねられた定跡などの固定概念に邪魔される場合があります。しかし機械にはそういった思考が無いので、人間では推測することができない最善手 を指すことができるというわけです。
3.ニューラルネットワーク
続いてニューラルネットワークについて書いていきます。ニューラルネットワークという言葉を初めて聞くという人もいるのではないでしょうか?
ニューラルネットワークとは
ニューラルネットワーク(NN)とは、人間の脳のしくみから着想を得て作られたもので、脳機能の特性のいくつかをコンピュータ上で表現するために作られた数学モデルのことです。簡単に説明すると、人間が脳内で行なっている学習の過程を機械にやらせたものと考えてもらって構いません。
↑イメージ
様々な入力(x)の中から閾値(θ)を元に結果(y)を出力する仕組みです。図の中に重みという要素がありますが、これは物事を判断する際に「どれくらい入力を重視するか」を示す値のことを表します。
ニューラルネットワークにも様々な種類があります。代表的なものでいうと、「ディープニューラルネットワーク(DNN)」「再帰型ニューラルネットワーク(RNN)」「畳み込みニューラルネットワーク(CNN)」があげられます。中でも、畳み込みニューラルネットワークは画像認識で多く使われる技術であり、本ブログでもこれを利用した機械学習を行なっていきます。
4.畳み込みニューラルネットワーク(CNN)
ニューラルネットワークがNNで略されるのに対して、畳み込みニューラルネットワークはCNNで略されます。このCが何なのかというと「Convolutional(畳み込み)」のことです。
畳み込みとは
まず畳み込みとは、画像データから特徴を抽出するため、または特徴をよりはっきりさせるための処理のことを言います。
↑このように4x4の画像データがあるとします。この画像データに対してカーネルと呼ばれる3x3のマトリクスでフィルターを行います。
畳み込み処理の流れ
このように3x3のカーネルでフィルターをかけることで、2x2の特徴マップを生成することができました。実際の画像を使う場合は、これよりももっと大きい画像データを使用するので、特徴マップもそれに応じて大きくなります。
ここでは、畳み込みってこんな感じなんだなってのがわかってもらえればOKです!
Pooling処理
CNNの中には、畳み込みの他にもう一つ重要な処理があります。それがPooling処理になります。Pooling処理とは、入力データを扱いやすい形に圧縮する処理のことで、主に畳み込み処理の後に行われることが多いです。
Pooling処理には「Max Pooling」と「Avg Pooling」の二つがあります。
Max Poolog
↑図にある通り、範囲の中で最大の値でPoolingします。
Avg Pooling
↑こちらも図にある通り、範囲の中の値の平均値でPoolingします。
畳み込みニューラルネットワーク
畳み込みニューラルネットワークでは、畳み込みとPoolingを行なってデータをうまい具合に整形します。そして、整形したデータで機械学習を行う感じになります!
最後に
今回は本ブログで扱う機械学習の概要について説明してきましたが、いかがだったでしょうか? 次回からは実際にプログラミングしていくのでお楽しみに!