パーセプトロンでANDを作る

人工知能の某入門書ではパーセプトロンで論理回路を作っていました。
そういえば大学の授業でも、論理回路を作っていたような気がします。
そこで、パーセプトロンでANDを作ってみることにします。
言語は何でもいいのですが、定番のPythonを使ってみます。

Windows環境における導入方法は
Pythonをインストール
を参照してください。

# coding: utf-8
import numpy as np

def AND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.5
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1

print("(0, 0) -> " + str(AND(0, 0)))
print("(0, 1) -> " + str(AND(0, 1)))
print("(1, 0) -> " + str(AND(1, 0)))
print("(1, 1) -> " + str(AND(1, 1)))

 

このプログラムを実行すると

(0, 0) -> 0
(0, 1) -> 0
(1, 0) -> 0
(1, 1) -> 1

という出力が得られます。
見事にAND回路を作ることができています。
念のため、各パターンで手で計算してみると

(0, 0) のときは (0 × 0.5 + 0 × 0.5) – 0.5 = 0
(0, 1) のときは (0 × 0.5 + 1 × 0.5) – 0.5 = 0
(1, 0) のときは (1 × 0.5 + 0 × 0.5) – 0.5 = 0
(1, 1) のときは (1 × 0.5 + 1 × 0.5) – 0.5 = 0.5

ということになります。
よくできたAND回路ですね。

少し考えると気が付くと思いますが、0.5という値自体に意味はありません。
例えば0.7などに置き換えても、このAND回路は成立します。

システム開発

Posted by @erestage