4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Deep Learningを学ぶ #2 〜多層パーセプトロンとXOR〜

Last updated at Posted at 2019-10-16

最初に

本記事は以下の本から得た知見を自分用のメモも兼ねてまとめた記事となります。ただし本の内容をそのまま書き写ししているわけではなく、ある程度自身で調べたものや感想が混じっています。ご了承ください。

f:id:rossamu:20190103000547p:plain
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

今回はパーセプトロンを用いたXORゲートについて考えていきます。

1 : Deep Learningを学ぶ #1 〜単純パーセプトロンと論理回路〜

以降は「 Enjoy Engineer Life 」にて投稿していきます。

XORゲート

排他的論理和と呼ばれる論理回路です。

$X_1$ $X_2$ $Y$
0 0 0
1 0 1
0 1 1
1 1 0

これはパーセプトロンで実装することができません。

例えばANDやORを図として表してみます。

image.png

image.png

次にXORの図を作成してみます。

image.png

今までのように直線で0と1を分けることができません。分けようと思った場合には、パーセプトロンでは表現ができない曲線(非線形)を描かなければなりません。

XORをパーセプトロンで表現するためには、パーセプトロンの「層を重ねる」必要があります。つまり、**「AND, NAND, ORゲートを組み合わせる」**ということになります。この辺は学校で「論理回路」や「デジタル回路」について学んだ時にやった覚えがあるかもしれません。

image.png

$X_1$ $X_2$ NAND OR $Y$(AND)
0 0 1 0 0
1 0 1 1 1
0 1 1 1 1
1 1 0 1 0

(実装例)

 def XOR(x1,x2):
     nand_y = NAND(x1,x2)
     or_y = OR(x1,x2)
     xor_y = AND(nand_y,or_y)
     return xor_y

このように層(x1,x2→nand_y,or_y→xor_y)を重ねたパーセプトロンのことを**「多層パーセプトロン」**と言います。ニューロンによる表記を行うと以下のようになります。

image.png

多層パーセプトロンにすることで、より柔軟な表現が可能になります。多層パーセプトロンを用いることで(理論上は)コンピュータを再現することも可能です(ただし骨が折れるレベルの調整が必要とのこと)。

しかし、ここまでの知識だけでは、重みづけを手作業で行う必要があります。この必要性をなくすために適切な重みパラメータを自動学習する性質をもつ「ニューラルネットワーク」について、今後学んでいきます。

最後に

これで二章が終わりました。本の1/7が終わったというところです。これからどんどん難しくなっていくと思いますが、できるだけスピーディーに読了したいと思います。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?