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

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

 

ドイツはとても寒くなってきたと思ったら、今週末は暖かくなりそうですね。土曜日は最高気温23度だそうです。2018年、暖かくなるのは今年最後かもしれませんね。

 

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

第3章は「ニューラルネットワーク」ですね。

 

f:id:KinnikuMegane:20181006005127p:plain

 

さて、3章については、きちんと理解しておくべき項目が複数あるので、5つの記事に分けて書いていきます。

 

本日の記事、そして次に書く記事の2つの記事で、「単層パーセプトロンとニューラルネットワークの違いは使っている活性化関数の違いである。」という事を理解できるようになりましょう。

ここで、1つだけ、はっきりさせておきたいのは、本書では多層パーセプトロンとニューラルネットワークというものをほぼほぼイコールで扱っている、という点ですね。

1つ前の記事で、パーセプトロンの弱点は重みを自己学習できない点だと書いていたんだけれども、これを鵜呑みできなんですよね。という事でこの点は保留にしましょう。なぜなら「パーセプトロン(単層、多層)が重みを自己学習できない、という事が本当か?」という疑問はこれ以降そんなに重要ではない気がするので。

 

それで、先ずパーセプトロンって、なんだっけ、と言うと、前の記事で書いた通り、関数でしたね。それで、単層だと線形な表現しかできないんだけれども、複数の層を重ねると非線形な表現ができる、というものでした。

そして、複数の層を重ねたパーセプトロンが何をできるのか、と言うと、前の記事の例を使うとするならば、ロープを使って、運動場に散らばっている男の子と女の子の人数を均等に隔てる事ができる、というものでしたね。

ここで1つ、言葉を紹介しましょう。

めがね君がロープを使って解いた問題、これは、分類問題、というんです。異なる性質を持つデータの集合を、似通った複数の集団に分ける、というものです。

機械学習の分野では、分類問題、回帰問題、という言葉が頻出します。それぞれ、次の記事で説明しましょう。

でも、前の記事では、めがね君がロープを使って1つの分類問題を解いた、って何となく分かりますよね。

 

そして、先ほども書いた通りですが、本書では多層パーセプトロンをニューラルネットワークとほぼほぼ同義で捉えているような気がします。

という事を前提に置いて、それでは、ニューラルネットワークとは何なのか。

いろんな記事を読むと、人の脳内にある神経細胞とそのつながりを数式的なモデルで表現したもの、とかそんな感じの説明がありますよね。ニューロンから次のニューロンへ信号が送られる、とか。

難しい説明はWikipediaさんに任せるとして、ニューラルネットワークというものがあると、何が嬉しいのか、という事を書いていきましょう。

 

f:id:KinnikuMegane:20181006073334p:plain

 

例えば、上の手書きの文字、これ何の数字でしょうか。

これ、504192ですよね。 

では、どうして僕らが、それぞれの数字を判断できているのか、というと、物心ついてからずーっと、こういう手書きの数字は5という数字、こういう手書きの数字も5という数字、と、膨大な量の情報を吸収し、それら膨大な数の5という手書きの数字を5と認識した、という膨大な事実を積み重ねることによって、たとえ赤の他人が書いた5という数字でさえ、5と判断する事ができているようになっているんですよね。言い方がくどーいけれどもそれはご愛嬌という事で。

f:id:KinnikuMegane:20181006081037p:plain

これがニューラルネットワークがやっている事そのものですね。

 

 

えっ、この数字が3に見える?って?

うん、見えなくもないよね。そして、国によって数字の書き方が変わるよね。ドイツ風の1を日本で書いたら、7と勘違いされる事なんてしょっちゅうあるよね。気をつけましょう。

 

次の記事では、活性化関数について書いていきます。そして、単層パーセプトロンとニューラルネットワークの違いがきちんと理解できたら、万々歳ですね。

 

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