パーセプトロンはどこまで可能なのか

>>> 本サイトのTOPはこちら。

こんにちは。株式会社マックスネット 人工知能・AI開発チームのIsoです。
今回はパーセプトロンは単体だと、一体どこまで通用するのかを見てみましょう。

*********

さてpythonを使って、AND演算を作り、Numpyの使い方も学んだところで、このパーセプトロンはどこまで作れるのかという問題が出てきます。

いきなりですが、下の真理値表をご覧ください。

x1 x2 y
0 0 0
1 0 1
0 1 1
1 1 0

 

これは排他的論理和と呼ばれるもので、この単純な仕組みをパーセプトロン単体でプログラムを組むことができません。
(線形問題は解けるが、非線形問題は解けない、なんて言い方をします)

かつてのAIの歴史で、この単純問題が解けない(実現できない)とのことで、冬の時代を迎えたこともあったようです。

しかし、この問題も工夫をすることでクリアできるんですね。

それが、多層パーセプトロンと呼ばれるものです。
さきほどのパーセプトロンは単体では解けないが、いくつも層を重ねて多層にすることで、解けるようになるんですね。

では、実際にやってみましょう。
まず前回までにAND演算というものが出てきましたが、
ここでNAND演算とOR演算をpythonで組んでいきます。

まずNAND演算の真理値表です。

x1 x2 y
0 0 1
1 0 1
0 1 1
1 1 0

続いて、OR演算の真理値表です。

x1 x2 y
0 0 0
1 0 1
0 1 1
1 1 1

 

では、NAND演算のpythonによる実装です。

次に、OR演算のpythonによる実装です。

AND演算も使うので、こちらも載せておきます。

これで論理演算の代表格のゲートが揃いましたね。
この3つのゲートを組み合わせて、さきほど単体のパーセプトロンで解けなかった排他的論理和を解いていきます。

では、pythonで実装です。

pythonのインタプリタで確認してみましょう。
上記の全コードをコピーして、貼り付けてください。
おっと、下記のコードも忘れずに。Numpy を使うので、これを入れないとエラーが出ます。

では、実行してみましょう。
>>> XOR(0,0)
0
>>> XOR(1,0)
1
>>> XOR(0,1)
1
>>> XOR(1,1)
0

さて、どうでしょうか。
排他的論理和の真理値表通りですね。

このように単体のパーセプトロンでも層を重ねることで、複雑な問題も解くことができるようになるんです。

ここから次に出てくるニューラルネットワークへと繋がっていきます。

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です