見出し画像

【技術関連】流行りのAIについて

こんばんわ あにき です。

自己流ですが、AIの学習を兼ねて学んだことを自分の言葉で説明する機会をここで。

教師データって?

機械学習を学ぶ際に「教師データ」って用語よく出てきますが、

有り無しの差ってあまり一般に知られていないので自学を兼ねてここで纏めます。

主に機械学習のジャンルとしてはSupervised(教師あり学習)UnSupervised(教師なし学習)Reinforcement(強化学習)の3つの学習方法があります。

各学習の背後にある統計学はRegression(回帰)、Classification(分類)、Clustering(クラスタリング)、Bandit Algorithms(バンデットアルゴリズム)、Q-Learning(Q学習)が存在します。

統計の解を求める方法としては「決定木」「k平均法」「サポートベクタマシーン」等があり、それらを用途に合わせて選択します。

例えば、売り上げ予測には「教師あり学習」「回帰」「決定木」といった具合です。

図版に纏めたので下図を参照してください。

学習分類

Supervised(教師あり学習)

学習データに「正解」のラベルを付けて学習する方法です。

例えば、樹木の名前を教えてくれるAIを作るなら、学習データにこの木は「けやき」、これは「もみの木」という風にラベルを付けて学習させます。何種類名前を覚えるかがカギになります。

どんな優秀なアルゴリズムを作っても習っていない(覚えさせていない)データに関しては答えられません。

これが教師あり学習です。

UnSupervised(教師なし学習)

教師なし学習についてですが、教師ありとは異なり「ラベル」を付けません。

どういうことかというと、Web上の画像や、動画をラベル無しで時間をかけて読み続けます。

そうするとAIが自律的に「これは猫だ」「これは花だ」といった具合に認識していきます。(子供の学習に似てますね)

用途としては流動的なデータに対しAIを使って分類させることに向いています。

Reinforcement(強化学習)

強化学習は、正解を与える代わりに将来の価値を最大化することを学習するモデルです。

(自分で書いていて良く分かりませんが、将来を予測し可能性の最大値を正とすると言い直した方が良いでしょうか。。)

将棋・囲碁のように、必ずしも人間に正解がわかるわけではない場合でも学習できるので、人間を超える力を身につけることが期待されています。 

Regression(回帰)とClassification(分類)

Regression(回帰)とは、端的に言うと「これまでのデータを元に傾向(関数)を導き出し、今後の数値を予測する」事です。

例を挙げるとコンビニとかの量販店で明日何がどれだけ売れるだろうという事を予測できれば品切れを避けて、廃棄を最小限にできます。

そこで、過去数年の売り上げデータを元にそこに曜日、天気、気温、広告、イベント、前日何が売れたか、などの情報をかぶせて、それらの要因がどの位影響するか機械学習させます。(これが教師データです)。

過去2、3年前のデータを学習し過去1年のデータでテストして相関関係が得られれば発注支援の「売上予測AI」の出来上がりです。

意外とAIって↑みたいなイメージを皆さん持たれるのではないでしょうか?

売上予測以外にも来店者数予測や需要予測など様々な分野で Regression(回帰)を使った予測AIが商用化されています。

今は実証実験レベルの導入が多いですが、近いうちに「本当の成功事例の予測」ができるようになると思います。

これに対し、 Classification(分類)とは、「特徴を見つけてその名の通り分類していく」事です。

この分野も幅広くAI分野では使われていて、例えば花の種類の分析の様な場合に使います。

(出来上がった分類ラベルを分度器と呼びます)

花の認識のように Object (物体)を見分ける Image classification (画像分類)の他にも、正常と不良を見分ける Daiagnostics (故障診断)や離れていきそうな顧客を検知する Customer Retention (顧客維持 )など、さまざまな分野で使われています。

この、「分類」というアルゴリズムは古くから使われてきたAI(人工知能)の代表格です。

そのため、「分類」を行うアルゴリズムは多数ありルールベースで分類する Decision Tree(決定木)や確率で表現する K近傍法 など様々なものが使い分けられてます。

そして、、「特徴点」を見つけて分類してゆく作業はディープラーニングも得意なジャンルなので、ルールベースで決まらない曖昧なものの分類にはディープラーニングが使われるようになってきています。

Clustering(クラスタリング)

端的に「教師データのない Classification(分類)」「色んなものの中から似たようなもの同士を集めてグループ化すること」です。

例えば、花の場合「赤い花」「青い花」「白い花」。。と色で分類してグループ化する。これが Clustering(クラスタリング)です。

じゃぁ、 Classification(分類)といっしょじゃん!って言葉が聞こえてくるので、

比較しましょう。

Classification(分類)・・・・・・分類精度が高い、目的に沿った分類をしてくれる

Clustering(クラスタリング)・・分類精度が低いが、学習データ・ラベル付けが要らない。予想外の結果が得られる

Clustering(クラスタリング)が使われてるシーンはECサイトでのおすすめ商品レコメンドや購買実績に基づいて顧客向けのマーケティング手法を選定する。等と言ったゆるふわな使われ方です。(少し前によく聞いたデータマイニングも基本的にクラスタリングをベースにした手法です)

強化学習

強化学習は、教師あり学習のように「答え」が与えられるわけではなく、「報酬」を得るために自ら学んで賢くなる学習法で、ゲームなどで力を発揮します。

例を挙げると、将棋・囲碁などで1手目、2手目、、、10手目と打ち手の力量に応じてどうすべきか?をコーチングしてあげるのが「教師あり」学習とすると、強化学習には教師が居ません。

投了してから報酬(勝利)が得られなかった場合、じゃぁ最終前の手をどう打つべきか、その前の手をどう打つべきか.....とどうすれば報酬(勝利)を得られるか自ら反省し強くなっていく学習法です。

将棋・囲碁を例えに上げたのは、対局終了後対戦者同士で感想戦を行って、互いにどの手が悪かったのか話し合い最善報酬(最善手)を追求していきます。そしてその内容を記録します。次回の対戦ではその記録した内容を参考にしながら戦い、負けたらまた反省して記録を更新する。この作業を繰り返すうちにだんだん強くなってゆく学習方法です。

学習方法概要が分かった所で
バンディットアルゴリズムとABテスト について「報酬を最大化する手法」について説明します。

ABテスト

A/Bテストは、AパターンとBパターンを用意して、どちらのパターンが報酬が大きい(効果がある)かを調査するテスト手法です。
例えば、Web広告で使われる場合は、AデザインとBデザインのどちらがクリックされるか一定期間テストして、クリックの多かった方のデザインを採用するというように使われます。
例としてじゃんけん勝負にABテストを使ってみましょう。
最初に10回ずつグーチョキパーを均等に出して相手の癖を探索し、パーが一番多いと判断したら残り20回はチョキを出し続けることになります。この場合の期待値は、10回×0.5×3枚(チョキ)+10回×0.3×3枚(パー)+10×0.2×3枚(グー)+20回×0.5×3枚(チョキ)=60枚です。
この最初の癖を見抜くための30回を「Explore(探索)」と呼び、その後チョキを出し続けることを「Exploit(活用)」とよびその関係は回数上限がある中ではトレードオフの関係にあります。

前述だと効率の良いABテストの期待値(60枚)としましたが、Explore(探索)のとき見つけた癖が間違いだった場合は期待値はさらに下がります。

纏めると、ABテストには以下の弱点があります。
・探索の際に確率の悪い手も均等に出さなければならない 
・探索の結果見つけた癖が正解じゃなかった場合に、同じ手を出し続けて
 大きな損失になる

この問題を解決するのがバンディットアルゴリズムです。

バンディットアルゴリズム

ABテストは一定期間の探索とその後の活用を完全に分けていますが、バンディットアルゴリズムはこの2つをミックスして探索しながら活用します。
・Greedy・UCB(Upper Confidence Bounds)・Softmax・Thompson Sampling 
色々とやり口はありますが、共通点は「Explore(探索)をしながらExploit(活用)する」「初期処理からこれまでのExploit情報を(活用)しながら、適度にExplore(探索)する」ExploreとExploitのバランスの違いが上のアルゴリズムの違いです。
徐々にExploit(活用)の比率をUPさせていくやり方をannealing(焼きなまし)といいます。ライブラリ出てますので上記の名称でググってみて実装してみると面白いかもしれません。

optimism in face of uncertainty
(不確かなときは楽観的に)


ここまで書くとバンデットアルゴリズムすげぇってなるかもしれませんが、世の中そう甘くありません。パチンコやスロットのように勝つ確率が不明確なのが世の中です。上のじゃんけんの例を挙げると1/3の確率で勝てる設定になっていないんじゃないか?という心理状態になった場合、「パス」を選択して最適解に到達しなくなるジレンマに陥ってしまいます。
そうならない為の原理をoptimism in face of uncertainty(不確かなときは楽観的に)と言います。

また、じゃんけんを例にするとチョキにグーで勝ったとします。それが何回か続くと「グーが強いんじゃね?」と思いグー多めに出しますよね。(確率は1/3なのに....)繰り返すうち、だんだんと負けこんできた場合「グー弱いんじゃ....」と反省してグーを出すのを止めます。「楽観的な間違いを解消して次の手を」。グーを止めて別の手をだします。
上が不確かなときに楽観的な選択をした例です。

これに対し、グーに対し何回かチョキで負けた場合「あぁ..チョキだと負ける」と思い次第にチョキを出さなくなり、チョキが最適解だと気が付かないままになってしまうことを「悲観的な間違いは解消されない」最適解にたどり着かない。
上記のバイアスを解消するには楽観的にならなくてはなりませんね。それをoptimism in face of uncertainty(不確かなときは楽観的に)と呼び方法はいくつかありますが代表的な処理方法として楽観的初期化です。これは、例えば最初にグーチョキパーそれぞれで10回勝ったと初期値を与えてスタートします。
序盤チョキで負けが続いたとしても、10回勝っているという貯金が働くので粘り強くたびたびチョキを出し、そのうちチョキで勝つことが増えて正解にたどり着けるわけです。

今回の記事は数式や統計用語を一切排除してAIの学習方法と統計方法を書いてみました。文字数の限界が近づいてきましたので、他の手法は別記事で日本語化してみます。

最後に、optimism in face of uncertainty(不確かなときは楽観的に)
これってゲームで勝つアルゴリズムのお話しじゃなく生き方に適応できるんじゃ。と。

ではでは。

この記事が気に入ったらサポートをしてみませんか?