はじめに
ふと思い立って勉強を始めた「ゼロから作るDeep LearningーーPythonで学ぶディープラーニングの理論と実装」の2章で私がつまずいたことのメモです。
実行環境はmacOS Mojave + Anaconda 2019.10です。詳細はこのメモの1章をご参照ください。
(このメモの他の章へ:1章 / 2章 / 3章 / 4章 / 5章 / 6章 / 7章 / 8章 / まとめ)
この記事は個人で作成したものであり、内容や意見は所属企業・部門見解を代表するものではありません。
2章 パーセプトロン
この章はパーセプトロンの説明です。
2.1 パーセプトロンとは
特につまずくところはなかったのですが、なぜニューロンと呼ぶのか?などの背景がもう少しあった方が丸暗記するより面白いかと思いましたので、わかる範囲で少し補足してみます。
1943年に神経生理学者・外科医のマカロックさんと論理学者・数学者のピッツさんがタッグを組み、脳の神経細胞をコンピューターで実現するモデルを考えました1。脳の仕組みを調べてコンピューターでマネすれば、ヒトと同じように思考できるAIが完成するはず!そんな奇想天外なアプローチです。
ヒトの脳は、複数の神経細胞が複雑に結びついてネットワークを形成していることが分かっています。この個々の神経細胞のことを英語でneuron(ニューロン)と呼び、この神経細胞をコンピューター上で実現しようとしたモデルの1つがパーセプトロン(人工ニューロン、単純パーセプトロン)です。パーセプトロンの説明でニューロンという言葉が出てくるのはそのためです。
神経細胞は他の神経細胞から電気信号を受けて、それが一定量を越えると一瞬だけ発火状態(興奮状態)になり、別の神経細胞にそれを伝えます。パーセプトロンの仕組みはまさにそれを表現しています。入力信号$ x_1 $や$ x_2 $は他の神経細胞からの入力を示し、重み$ w_1 $と$ w_2 $は他の神経細胞からの発火状態の伝わりやすさを示し、閾値$ \theta $は自身の神経細胞がどれくらいの信号を受けると発火するのかを示しているわけです。
また、ヒトの脳を実現すべく複数の神経細胞(ニューロン)によるネットワークをコンピューター上で実現しようとしたのが、次の章に出てくるニューラルネットワークです。
ヒトの脳をマネしようというアプローチが面白いですよね。なお、ヒトの脳の仕組みはまだ解明されていないので、世の中のアルゴリズムもヒトの仕組みを忠実に再現しているわけではありませんし、AIの研究者の方々もヒトの脳を忠実に再現することにはこだわっていないみたいです。
2.2 単純な論理回路
ニューロン1つだけでは大したことはできませんが、ロジックは変えずにパラメーターの$ w_1 $と$ w_2 $と$ \theta $を変えるだけで、AND、OR、NANDという3種類の計算が実現できるのは面白いです。
2.3 パーセプトロンの実装
バイアス$ b $の登場が少し混乱しますが、自身の発火しやすさを示すという意味では$ \theta $と変わらないので、式の表現が違うだけということであまり深く考えずに進みましょう。
2.4 パーセプトロンの限界
本にあるように、XORの◯と△は、どうがんばっても直線では実現できません。ニューロン1つのパーセプトロンではここが限界です。
なお、線形と非線形という言葉は、本にあるように直線で分けられる/分けられないくらいの理解で先に進めば良さそうです。
2.5 多層パーセプトロン
多層になるとXORが実現できたように、できることが増えることが分かりました。
2.6 NANDからコンピュータへ
NANDだけでコンピューターも作れるという話はイマイチ分からなかったのですが、紹介されている「NANDからテトリスへ」の本が解決してくれそうです。今はとても手を出す余裕がないのですが、機会があれば読んでみたいと思います。
2.7 まとめ
2章も大きくつまずくことはありませんでした。
この章は以上です。誤りなどありましたら、ご指摘いただけますとうれしいです。
(このメモの他の章へ:1章 / 2章 / 3章 / 4章 / 5章 / 6章 / 7章 / 8章 / まとめ)