PythonでパーセプトロンのORゲートを実装する!

  • このエントリーをはてなブックマークに追加

前回はニューラルネットワークの基礎であるパーセプトロンでANDゲートを作ってみました。さらなる理解のために、今回はOR回路を作って同じように特性をみてみます。

こんにちは。wat(@watlablog)です。
ディープラーニングを理解するために、引き続きパーセプトロンを学びます。
ここでは論理回路の1つであるOR回路をパーセプトロンで実装します

パーセプトロンについては様々なWebページで紹介がされていますが、本記事は「斎藤康毅, ゼロから作るDeep Learning, オライリー・ジャパン, (2016), pp.21-27」で学んだ内容を元に、自分なりのコーディングをした結果をまとめています。式の解釈等詳細は書籍をご参照下さい。

パーセプトロンでORゲートを作る!

ORゲートとは?

前回の記事「PythonでパーセプトロンのANDゲートを実装する!」でパーセプトロンの概要と論理回路、ANDゲートについては簡単に説明しました。今回は前回の話を前提に進みますので、もしよろしければご覧下さい。

今回はORゲートについてパーセプトロンで調べていきます。ORゲートとは、論理回路の1つで「論理和」を意味します。図にすると以下のようにANDゲートと異なり少しとがった形をしています。

ORゲート

真理値表は以下の表です。入力の中で少なくとも1つが1であれば1を出力するという回路です。

\(x_{1}\)\(x_{2}\)\(y\)
000
011
101
111

パーセプトロンによるORゲートのコーディング

ANDゲートで一度Python標準関数による出力確認は実施したので、今回は飛ばして、いきなりパーセプトロンによるコーディングに入ります。

作ったのは以下の2入力のパーセプトロン関数です。ANDゲートの時に使った関数と全く同じものです

この単純ニューラルネットワークは重み\(w\)と閾値\(\theta\)で出力の特性を変える、というのが強みなので引き続きパラメータの調整作業を行います。

以下が本文です。w1, w2, thetaに入っている値がORゲートの特性を実現するためのパラメータです。ANDの時と同様に組み合わせは無限にあります。

これを実行すると0, 1, 1, 1と真理値表通りの応答が得られるはずです。

さらに入力範囲を拡張してみる

ANDと同様に入力範囲を0と1以外に拡張してみます。するとやはりある所で線を引くことができ、その線を境に0と1が切り替わります。

パーセプトロンで作ったORゲートはこの1つの側面を見ているに過ぎないんですね。

パーセプトロンの出力分布

上図の分布図は以下のコードで得ることができます。パラメータが異なるだけですが、詳しくは前回のANDゲートの記事を参照下さい。

<広告>
人工知能のプロに最速でなるには、独学よりも効果的なオンラインゼミがあります。これを機会に是非ご検討下さい!

まとめ

このページではANDゲートに引き続き、ORゲートをパーセプトロンで実装してみました。

中身はパラメータ以外全くANDゲートと同じという、ちょっと拍子抜けするような記事になってしまいましたが、パラメータ以外は全く同じという部分に可能性を感じます。

歴史を見るとパーセプトロンは一度は下火になったアルゴリズムですが、現代ではこのアルゴリズムを基礎において、多層、4層以上でも学習を進めるためのディープネットワーク、活性化関数等工夫がされ盛り上がってきています。

何事も基礎をしっかり身に着けることは重要です。ディープラーニングにいきなり飛びつく前に、1層、3層等で十分経験を積んでみよう!

Twitterでも関連情報をつぶやいているので、wat(@watlablog)のフォローお待ちしています!

SNSでもご購読できます。

コメント

コメントを残す

*