パーセプトロンで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回路は成立します。