パーセプトロン とは、ニューラルネットワーク (ディープラーニング) の期限となるアルゴリズムです。複数の信号を入力として受け取り、ひとつの信号を出力します。
以下はパーセプトロンを数式で表したものです。
x, y は入力値
は 重み
は閾値
bはバイアス
AND、NAND、ORは、重み と バイアス の調整で実装していきます。
XORは、AND、NAND、ORの組み合わせで実装します。
以下、Python による実装です。
import numpy as np def AND(x1, x2): x = np.array([x1, x2]) w = np.array([0.5, 0.5]) b = -0.7 tmp = np.sum(w*x) + b if tmp <= 0: return 0 else: return 1 def NAND(x1, x2): x = np.array([x1, x2]) w = np.array([-0.5, -0.5]) b = 0.7 tmp = np.sum(w*x) + b if tmp <= 0: return 0 else: return 1 def OR(x1, x2): x = np.array([x1, x2]) w = np.array([0.5, 0.5]) b = -0.2 tmp = np.sum(x*w) + b if tmp <= 0: return 0 else: return 1 def XOR(x1, x2): s1 = NAND(x1, x2) s2 = OR(x1, x2) y = AND(s1, s2) return y print("--- AND ---") print(AND(0, 0)) print(AND(1, 0)) print(AND(0, 1)) print(AND(1, 1)) print("--- NAND ---") print(NAND(0, 0)) print(NAND(1, 0)) print(NAND(0, 1)) print(NAND(1, 1)) print("--- OR ---") print(OR(0, 0)) print(OR(1, 0)) print(OR(0, 1)) print(OR(1, 1)) print("--- XOR ---") print(XOR(0, 0)) print(XOR(1, 0)) print(XOR(0, 1)) print(XOR(1, 1))
参考
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る