『ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装』の読解&実践、2章は『パーセプトロン』についての内容となります。読み進めて行った内容の要約メモとPythonプログラミング実践内容について纏めたエントリです。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (9件) を見る
これまでの関連エントリ
読解メモ
2.1 パーセプトロンとは
- パーセプトロン:アルゴリズムの一種。ニューラルネットワーク(ディープラーニング)の起源となるもの。
- ニューロン:総和を保持する要素みたいなものと考えて良いのかしら。書籍では○=ニューロン、としていたけれど。
- 入力信号が送られる際に固有の重みが乗算され、総和が閾値を超えるとニューロンが『発火』する。
2.2 単純な論理回路
- ANDゲート:2つの入力が1の時だけ1を、それ以外は0を出力
- NANDゲート:ANDの逆、2つの入力が0の時だけ1を、それ以外は0を出力
- ORゲート:2つの入力のいずれかが1の時に1を、それ以外は0を出力
構造は上記3つの全てで同じ、パラメータ(重みと閾値)の値を調整するだけで対応が可能に。
2.3 パーセプトロンの実装
- 上記論理回路(AND,NAND,OR)それぞれをPythonで実装。
- 重みとバイアスを加えて調整
- バイアスの重みによって発火のしやすさが決まる。
- 重みとバイアスは区別して呼ばれるが、文脈によっては全てのパラメータを指して『重み』という事もある
2.4 パーセプトロンの限界
- XORゲート(排他的論理和):x1,x2いずれかが1の時だけ1を出力。
- 実はパーセプトロンではこれを実現出来ない。
- パーセプトロンは1本の直線で分けた領域だけしか表現出来ないという『限界』がある。
- 直線による領域を『線形』、曲線による領域となる場合は『非線形』と呼ぶ。
2.5 多層パーセプトロン
- パーセプトロンの素晴らしさは『層を重ねる事が出来る』という点。(これが深層学習=Deep Learningの語源という事でOK?)
- 複数層のパーセプトロンの動作はパイプラインによる組み立てに似ている。
- 層を重ねる(深くする)事でより柔軟な表現が可能になる。
2.6 NANDからコンピュータへ
実践内容
実践内容は下記GitHubリポジトリにPythonコードとしてコミット済です。
まとめ
2章を読む前は『ニューロン?パーセプトロン?なんのこっちゃ』な感じでしたが、読み進めて見れば何てことはない、条件式の組み合わせと調整パラメーターによる判定(の多層の組み合わせ)で処理を行っているのだと分かりました。第3章についても引き続き読解とコーディングを進めて行きたいと思います。