試纏

ためしてまとめる〜色々なトピックやテーマについて試してみたり、まとめてみたりするブログです。

『ゼロから作るDeep Learning』実践記録 2章:パーセプトロン

f:id:shinyaa31:20170116084551j:plain:w200

『ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装』の読解&実践、2章は『パーセプトロン』についての内容となります。読み進めて行った内容の要約メモとPythonプログラミング実践内容について纏めたエントリです。

これまでの関連エントリ

読解メモ

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章についても引き続き読解とコーディングを進めて行きたいと思います。