機械学習理論の考え方をゲームを使ってみてみる

橘と申します。
機械学習を勉強中の身でありながら、機械学習に関して記事を書いていく予定です。

前回までに、機械学習を学んでいくための数学の準備をしていきました。

前回までのリンク
機械学習を学ぶための準備 その1(微分について)
機械学習を学ぶための準備 その2(級数と積分について)
機械学習を学ぶための準備 その3(行列について)
機械学習を学ぶための準備 その4(行列の掛け算について)
機械学習を学ぶための準備 その5(行列のいろいろ)

とここまで「数学が必要です」と言っておきながら、今回は数学を使わずに、「機械学習理論の考え方」をゲームで考えていきたいと思います。機械学習そのものがどのようなものかを解説するものではありませんので、ご注意ください。

想像ゲームをしてみる

唐突ですが、想像ゲームをしてみます。(原始的なゲームです。)
次の画像を見て下さい。
(もしご覧になっている環境がPCであれば、ダウンロードしてペイント等で開いていただくとより体験いただけるかもしれません。)

machine1_1

赤い点と青い点があります。これらの2点を通る線は無数に書くことができます。

machine1_2

想像ゲームとは、こちらで3つ☆マークを準備します。
あなたには、「赤マークで始まり」、「青マークで終わり」、そして「すべての☆マークを通過している」線を「一本だけ」想像して(もしくはペイントで書いて)いただきます。
更に、想像してもらう線には、更にもう一つ条件を設けます。

それは、「3回曲げる」というルールです。
「3回曲げる」とは、次の図で説明している3回「山」か「谷」を作る、という意味です。

machine1_3

簡単だとは思いますが、おわかりいただけたでしょうか。
それでは1ステージ。「想像」してみてください。

machine1_4

想像できましたか?
今回の答えは次の図です。

machine1_5

上の図以外でも構いません。

あ、1つ言い忘れていたルールがありました。実は、この問題の図には、「隠れスター」という星マークが隠されていたのです。
この「隠れスター」の上に想像した線が乗っていると、400万点のボーナスが入ります!
(注: アト○ンチスの謎とかというゲームの隠しステージのボーナス点と同じなのは偶然です。)

machine1_6

もしあなたの「想像した線」が「隠れスター」を通っていれば、400万10点獲得です!
(注: 通常ステージ攻略は10点です。)

ではステージ2に移りましょう。

machine1_7

想像できたら、次の答えを見てください。

machine1_8

今回は「隠れスター」を発見するのは難しかったのではないでしょうか。
星の散らばり方から、「まさかこんな右上にあるなんて」と思っていただければ、執筆者の腹黒さを感じてもらえるかと思います。

さてさて、飽きないうちに最後の第3ステージに移ります!
それでは想像してみましょう。

machine1_9

今度は星が偏っていて、線を想像するのも少し難しかったかもしれませんね。
それでは答えを見てみましょう。

machine1_10

どこかで見覚えが・・・。そう、ステージ3はステージ2と同じでした!
今回は星の位置から、答えと同じ線を引くことも、隠れスターを当てることも難しかったですね。

で、これで何が言いたいの?

今やった「想像ゲーム」が、機械学習の理論の基本的な考え方です。

はじめの星が「あなたが持っているデータ」です。
はじめの星を元に線を「想像する」作業が「機械学習」です。
引いた線の上にある「隠れスター」を探すことが「機械学習による恩恵」です。

今回は星の数を3つにしましたが、星の数は多ければ多いほど「いい線」が書けます。
要するに「用意するデータ」が多ければ多いほどいいわけです。

ですが、多くてもダメな時もあります。
それは、ステージ3で体感した「線の引きにくさ」です。
星が左のほうで固まってしまうと、どうしても右の方の線が「想像」しづらくなってしまいます。
これは「機械」も同じです。データが偏ってしまうことはいい結果を生み出しません。
そのため、「データの散らばり方」も重要になります。

なんとなく、統計学っぽい話だなぁ、と思いませんか?

また、「3回曲げる」という制約も、重要になってきます。
曲げる回数が多ければ多いほど複雑な曲線になって様々なデータを通る線をかけそうな気がしますが、複雑になることでかえって予測できなくなってしまうことがあります。
それはまた追々の話とします。

一本の線

今回の想像ゲームでは、「線が一本」を引いてもらうという条件を付けました。
これはあなたが「最もいい」と感じた一本を引いていただいたわけです。

この「最もいい」、少し堅苦しくいうと「最も尤(もっと)もらしい」一本の線を引く考え方を、
機械学習では「最尤推定」と言います。
考えられる線からいいものを一本だけ選ぶわけです。

この一番いいと思われる一本の線を選ぶ方法(理論)もたくさんあり、どの方法がいいかはデータによって変わってきます。
(ここが機械学習を難しくしているだと私は思っています。)

一本の線に頼るってリスク高くない?

一番いいとされる一本を選ぶのは、ステージ3の時のようなこともあるため、非常に怖いです。
(子供の頃の祭りの出店の綱を引くタイプのくじ引きを思い出しました(当たらないのに・・・)。)

その発想から、「幾つかの線を選ぶ」という考え方が生まれました。

最尤推定の時の一本を選ぶ方法がいくつもあると上でお話ししたように、「幾つかの線を選ぶ」という方法もいくつもあり、
どれがいいかはこれまたデータによって変わってきます。
ですが、基本的な考え方は、「パラレルワールドを作って、いろんな線の可能性を見ていく」という考え方をします。

machine1_11

上の図では、5個のパラレルワールドを作成して、5パターンの線を引いています。
線の太さが違うのは、線の太さによって「どの線が有力そうか」を示しています。

幾つかのパラレルワールドを見てみて、有力そうなものを重視し、有力そうでないものを軽視して「隠れスター=予測したいデータ」を探します。
この「有力そう」な度合いを「確率的に」求めていきます。

ここで、確率論っぽくなりましたね。

今回は5つのパラレルワールドで説明しましたが、ありとあらゆるパターン、厳密には無限のパターンから予測します。
この無限のパターンを計算するときに、「積分」が使われます。

最後に

私は、「機械学習に数学は絶対に必要」という立ち位置です。
その一方で、私の思いとしては、あまり「他の方の書いたものの焼き直しのようなことはしたくない」という思いがあり、
今回のようなご紹介をしてみました。

不足な点、歪みのある点があることは承知しているところではあるのですが、機械学習の一つの「見方」について共感していただけたら幸いです。

次回以降は数学を交えながらの紹介となります。
私の勉強に付き合っていただけたら、嬉しいです。