ゼロから作るDeep Learning(2日目)

こんにちは、筋肉めがねです。

 

ドイツはとても寒くなってきました。つい数週間前までは扇風機を使っていたのですが、今は外に出るのが億劫なぐらいに冷えてきましたね。炬燵が恋しくなる季節でございます。

 

それでは、本日も「ゼロから作るDeep Learning」を学習していきましょう。

第2章は「パーセプトロン」ですね。

 

f:id:KinnikuMegane:20181005032811p:plain

最初に、2章のoutputを書きたいんだけれども、実は2章を読んだだけだとパーセプトロンを理解して何が嬉しいのか、あんまり良く分からないんですよね。それで、少しだけフライングをして3章の「ニューラルネットワーク」を一部読んで、パーセプトロンの位置付けがようやく分かりました。ということで、パーセプトロンについて、何を理解していると嬉しいのか、以下に書いていきましょう。

 

パーセプトロンとは、そもそも何なのか、というと複数の信号を入力として受け取り、一つの信号を出力するものです。要は関数ですね。大学で信号処理の授業を受けた方は何となくイメージがつきそうですね。

 

そして、どうして本書は第2章でパーセプトロンを扱っているのか、というと、実はパーセプトロンはニューラルネットワークの基礎となる理論なんですよね。人工知能、深層学習、という事に少なからず関心のある方は、ニューラルネットワークという言葉を聞いた事がありますよね。ニューラルネットワークをワンステップ退化させたモノがパーセプトロンと考えると良いかもしれません。そう、本書がパーセプトロンを2章で説明しているのは、3章のニューラルネットワークを説明するための布石だったんですね。

 

では、2章でtake awayすべき事を2点あげるとすれば、それは以下の2点に尽きます。

  1. パーセプトロンは単層だと線形な出力しか表現する事ができないが、複数の層を重ねる事で非線形な出力を表現する事ができる。
  2. でも、パーセプトロンの重み(上図のw1, w2)は人間が決めなければならない。

ナンノコッチャ、分かりづらいですよね。

という事で例を使ってみましょう。

 

運動場に男の子と女の子が15人ずつ、計30人、ばらばらにいる様子を想像してみてください。

先生が「じゃあ、めがねくん。運動場に真っ直ぐな線を一本引くよ。そして、その線の右側にいる男の子の人数と、左側にいる女の子の人数が大体同じようにしたいんだよ。どこに真っ直ぐな線を引いたら良いんだろ。」と言ったとしますね。すると、めがねくんは「男の子と女の子、ばらばらに散らばっとるやん。。。でも先生が言った事だし大体でやってみるか。」と、一生懸命考えながら、大体男の子の人数と女の子の人数が両側で同じになるようなところに線を引くんですね。

イメージとしてはこんな感じ。

f:id:KinnikuMegane:20181005042730p:plain

 これが、単層のパーセプトロン。

 

それで、先生が「じゃあ、めがねくん。次はくねくね曲がる一本のロープを使ってごらんよ。それで、さっきと同じようにロープの右側にいる男の子の人数と、左側にいる女の子の人数が大体同じようにしてみて。」すると、めがねくんは「それなら時間かかるけど、上手にできそうやん。」と、自分で運動場をあーだこーだと走り回りながら、時間はかかるけれども、最終的には、ロープの両側で男の子の人数と女の子の人数が同じになるように、綺麗にロープを置く事ができるんですね。

イメージとしてはこんな感じ。

f:id:KinnikuMegane:20181005042748p:plain 

これが、複数の層を重ねたパーセプトロン。

それでもって、このロープをめがねくん、という人間が自分で一生懸命動かさない、といけない、というのがパーセプトロの問題点であり、限界である。

 

それで、じゃあ、めがねくんの手を煩わせる事なく、ロープがひとりでに先生の指示を実行してくれたらめっちゃ嬉しいよね、という事を可能にしてくれるのが、ニューラルネットワーク。その時、めがねくんは何をしてるかっていうと、運動場の鉄棒を使って一人で筋トレしてても良いし、もしくは家に帰って本を読んでても良いよね。

 

なんとなく分かりましたね。

 

それでは、本日は以上でございます。