花火大会から学ぶパーセプトロンの考え方


はじめに

先日ポテチ製造から学ぶTensorflowの考え方という記事を投稿しました。パーセプトロンについても先の記事と同じような例えで理解したノートが残っているので、それをここに自分用のメモとしてまとめておくことにします。お役に立てればとても嬉しいです。

注意
この記事は、パーセプトロンを理解する上で、直感的な理解をどう進めていくかを助けるものです。人によって例えが適切でない可能性もあるので、その際は適切なものに置き換えて読み進んでいただければ幸いです。

参考文献
- Neural networks and deep learning

この記事は上の文献に依っています。

パーセプトロンと花火大会

パーセプトロン

パーセプトロンとは、ニューラルネットワーク上で入力と出力を扱う演算の単位となるものです。たとえば以下のようなものが考えられますね。これは入力3つと出力一つです:

各パーセプトロンは、重み$w$が付与されており、$\sum_{i}w_{i}x_{i}$がある閾値(threshold)より大きいかどうか: $$\sum_{i}w_{i}x_{i} > {\rm threshold}$$で次のアウトプットを決めます。小さければ$0$, 大きければ$1$と考えます。$1$が出力されるときは、「発火する」とも言うようです。なお、非線形活性化関数を用いるときは、$0$から$1$までの値が出力されることもあります。

で、もちろん数式の上ではthresholdより大きいか小さいかを見てやって、その出力があるかどうか($0$か$1$か)ということと、(非線形活性化関数ならその値) がネットワーク上では重要になるのですが、数が多くなってもその理解が続くでしょうか?

ここで線形代数がどうのこうのとか、数学的な議論が展開され、数学が必要になってくるかと思うのですが、数式に埋もれちゃうのはもったいないです。もう少し流れるデータの視点に立ってネットワークの中のパーセプトロンがどういう役割を果たしているかみてみたいと思います。

花火大会の例

ドイツでは夏祭りなんてのはありません。ましてや花火大会なんてありません。家族単位では旅行に行ったりするようですが、地域での祭りは無いようです。ということで、とても寂しいです。かわいいあの子と花火大会とか行きたかったです。

・・・ともかく花火大会からどうやってパーセプトロンが理解できるでしょうか?

あなたは隣町の花火大会に行きたいと考えているが、行くか決めかねれている。そこで理想的な花火大会の条件を挙げてみた。私だったらこんな花火大会だったら参加するかも・・・

A. 大規模な花火大会: 花火大会で打ち上げられる花火の種類とか、数によっては行く価値があったりなかったり・・・。私は大きめのが好きです。
B. 晴れ(天気): 晴れれば開催、雨天なら順延もあるでしょう。
C. 電車が空いている: 花火大会ともなればいつも使っている電車は混むだろう。そうなればスケジュールも考え直さなければならなくなり、めんどくさくなっていかないこともあるでしょう。
D. 彼女(or 彼氏)が来る: 花火大会といえばカップルで行く方も多い(僕は・・・)。パートナーが行かないともなれば行く意味もないだろう、と考える方もいそう。
E. 友達が来る: パートナー同士でプラス友達とも考えていいし、独り身で(涙) 友達誘っていく場合もコレ。

以上のような条件を考えることができるでしょう。もっとも他に要因があれば追加されて構いません。さて、ここでみなさんに、重要なものを5、そこまで重要視しないものを0として番号付けてください。

はい。それが重み$w$です。重みというのは、どの程度その条件を重視するかにほかならないのです。

例として私の点を挙げておきます:

A: 2
B: 5
C: 3
D: 2
E: 3

ここでしていただいたのは、パーセプトロンAからEに対して、重みを設定してもらいました。実際はこの重みは初期値で決まっており、最適化法によって変化していくので完全に固定されているわけではありません。ある一つのパーセプトロンを出たデータは、次の層のパーセプトロンのthresholdに依存して、さらに発火されるかどうかが決まります。

ところで、$\sum_{i}w_{i}x_{i}$をthresholdと比べて考えましたが、その値を新たに$b=-{\rm threshold}$とおいてバイアスと定義します。この時、上の条件は$$\sum_{i}w_{i}x_{i} - b>0$$という条件に置き換えることができます。

このように決めると、たとえば先程の花火大会の例でバイアスを$b=2.5$とすれば、実際の花火大会で$2.5$以上の条件を満たしているものに参加するということになります。(私の例ならB, C, Eです。)他の条件はそこまで重要じゃないので、花火大会に参加するかどうかということからは除外したことになります。(要するに単に優先順位付けただけ)

これまでの議論でやってきたことはあまり大したことじゃないかもしれませんが、thresholdを設定しているのは、ただ余計な条件を切り落とすためだということがわかれば、ニューロンが発火しないとはどういうことかがわかると思います。また、数が多くなってもそれはただ単に条件が増えただけだと考えられるようになれば、流れるデータの立場に立って、より各層の具体的なイメージがしやすくなるかと思います。

読んでいただきありがとうございました。

参考文献