はじめに
勉強したことをアウトプットする試み。
自分なりの思考でまとめてみる。
書いてる内容に対するご指摘は大歓迎!
機械学習とは何ぞやと自分なりに理解できたが、機械学習をどう使うかのイメージは分かりづらい。
私として素人目に機械学習に期待するのは、「これは何が写ってる?」「明日雨予報だけど売上はどんな感じ?」「ネット上からパンダの写真を集めてきて」「将棋で私に勝って」などなど。
でも、これを実現するためにどういう方法で学習させればいいのだろうか。
機械学習の手法
機械学習はどういうふう行われるのか。手法として大きく3つあるらしい。
1.教師あり学習(Supervised Learning)
入力値と出力値のセットを用いて学習させる。「入力と出力の関係」を学習するもの。
2.教師なし学習(Unsupervised Learning)
入力値のみを用いて学習させる。「データの構造」を学習するもの。
3.強化学習(Reinforcement Learning)
試行錯誤を通じて環境に適応するように学習させる。「価値を最大化するような行動」を学習するもの。
言葉の意味はわかるけど、実際どう使うのかイメージがわかない。
教師あり学習とは
既に答えが分かっているデータを何らかのアルゴリズムを用いて、入力(問)と出力(答)の関係性を獲得する学習手法。
学習で獲得した関係性を「学習モデル」とし、「学習モデル」に未知のデータを入力すると何かしらの出力を得るようになる。
この段階で、教師あり学習の完了となるわけね。
「学習モデル」というのは、入力と出力の関係性を「何かしらのアルゴリズム(数式やルールなど)」と「学習で得たパラメータ」とで構成されたものと理解している。
「学習で得たパラメータ」とは、なんとなく良い感じに出力にするために計算する時に加える手心(を数値化したもの)って感じ?
これらをざっくり言うと、答えが分かっている事柄、答えが予測できる事柄を学習させる手法ってことなんだと思う。
もう少し具体的に考えてみよう・・・
それじゃあ、写真画像を入力して「猫」か「犬」かを出力(判定)させる「学習モデル」を獲ようとした場合、
やることは、教師データ(入力値と出力値のセット)を使って学習させる。
教師データ例
[入力値]画像A [出力値]猫 ・・・セットA
[入力値]画像B [出力値]犬 ・・・セットB
[入力値]画像C [出力値]猫 ・・・セットC
・
・
[入力値]画像n [出力値]猫 ・・・セットn
上記のように「画像Aは猫ですよー」「画像Bは犬ですよー」って学習させるわけですね。
何かしらのアルゴリズムを使って・・・(何らしかのアルゴリズムは後日書として)
学習が完了すると「学習モデル」が出来上がる。
出来上がった「学習モデル」に猫か犬の画像を入力すると「猫」か「犬」を出力するわけだ。
”教師あり学習”いっちょ上がりっ!
教師なし学習とは
答えが分からないデータを何らかのアルゴリズムを用いて、データの持つ規則性や傾向を獲得する学習手法。
まあ、答えが分からないデータを学習させるわけだから、機械自身に何かを見つけ出してもらうわけだ。
与えられたデータの中から、よく似ているデータ、珍しいデータを選り分け、グルーピングしていく感じかな。
こちらも具体的に考えてみよう・・・
購買情報を元に顧客を数種類のグループに分けるような問題を解くことができるかな。
入力は購買情報や顧客情報、出力はグループとしてみよう。
顧客番号 | 年齢 | 性別 | 生鮮食品平均購入額 | 生活用品平均購入額 | 惣菜弁当平均購入額 | 平均来店数 |
---|---|---|---|---|---|---|
A0100254 | 48 | 男 | 891 | 1547 | 0 | 5 |
A0201758 | 21 | 女 | 754 | 261 | 158 | 20 |
A0575462 | 60 | 女 | 259 | 501 | 586 | 12 |
A0250148 | 34 | 男 | 0 | 1238 | 0 | 2 |
A0365479 | 28 | 男 | 0 | 0 | 498 | 21 |
A0152473 | 54 | 女 | 843 | 247 | 163 | 24 |
. | . | . | . | . | . | . |
上記のようなデータを学習させると、何かしらの出力が得られて、
・グループAに分類された顧客は、惣菜弁当の購入金額が高い。
・グループBに分類された顧客は、全体的に購入金額が低い。
・グループCに分類された顧客は、生鮮食品の購入金額が高い。
などなどと分析する。
分析結果を「グループCの顧客には生鮮食品のセール情報をDMしてみよう」みたいなマーケティング戦略に使ったりするんだろうね。
”教師なし学習”いっちょ上がりっ!
強化学習とは
機械の行動に対して、アメ(報酬)を与えて、より価値が高くなる行動を選択させる学習手法。
何らかのアルゴリズムを使って出した行動に対して報酬を与え、報酬がより多く貰える行動を学習していく感じかな。
例えば、ロボットがボールを掴む動作を学習するとしよう。教師あり学習の場合、「腕や肘の関節が何度で、動作速度がXXのときは、掴め」などといちいち正解を教えてあげる必要がある。
しかし、強化学習の場合、うまくボールを掴めた行動に掛かった時間を報酬として与える。すると強化学習は「次はもっと早くボールを掴めるように、掴み方を少し変更してみよう」と制御アルゴリズムを自ら変更して行動する。これをたくさん繰り返すとボールを掴む動作がうまくなり、失敗しなくなるってことだね。
将棋や囲碁のAIにもこういった学習を行ってるみたいだ。
これは、機械自身が試行錯誤を繰り返し、少しずつ成長していく夢のある学習方法じゃないか!(でも、大変らしいw)
”強化学習”いっちょ上がりっ!
まとめ
機械学習のどんな学習方法を選択するべきかを理解するには、経験がないとなかなか難しい。
やはり、試行錯誤を繰り返して、自分自身が強化学習していくべきだなw