【読書メモ】ゼロから作るDeep Learning 2章
ゼロから作るDeep Learning
ゼロから作るDeep Learningの読書メモとしてまとめました。
本を読む目的
Coursera Machine Learningを受講してニューラルネットワークを理解したので、次はディープラーニングについて深く理解をしたいため。
前章までのまとめ
内容
パーセプトロンとは
- パーセプトロンとは複数の信号を入力として受け取り、一つの信号を出力するアルゴリズム
- ニューラルネットワーク(ディープラーニング)の起源となるもの
- パーセプトロンの信号は1or0の二値
パーセプトロンの実装
ANDゲート
# 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.7 tmp = np.sum(w*x) + b if tmp <= 0: return 0 else: return 1 if __name__ == '__main__': for xs in [(0, 0), (1, 0), (0, 1), (1, 1)]: y = AND(xs[0], xs[1]) print(str(xs) + " -> " + str(y))
$ python and_gate.py (0, 0) -> 0 (1, 0) -> 0 (0, 1) -> 0 (1, 1) -> 1
NANDゲート
# coding: utf-8 import numpy as np 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 if __name__ == '__main__': for xs in [(0, 0), (1, 0), (0, 1), (1, 1)]: y = NAND(xs[0], xs[1]) print(str(xs) + " -> " + str(y))
$ python nand_gate.py (0, 0) -> 1 (1, 0) -> 1 (0, 1) -> 1 (1, 1) -> 0
ORゲート
# coding: utf-8 import numpy as np def OR(x1, x2): x = np.array([x1, x2]) w = np.array([0.5, 0.5]) b = -0.2 tmp = np.sum(w*x) + b if tmp <= 0: return 0 else: return 1 if __name__ == '__main__': for xs in [(0, 0), (1, 0), (0, 1), (1, 1)]: y = OR(xs[0], xs[1]) print(str(xs) + " -> " + str(y))
python or_gate.py (0, 0) -> 0 (1, 0) -> 1 (0, 1) -> 1 (1, 1) -> 1
XORゲート
XORゲートは第一層にNANDとORゲート、第二層にAND。
# coding: utf-8 from and_gate import AND from or_gate import OR from nand_gate import NAND def XOR(x1, x2): s1 = NAND(x1, x2) s2 = OR(x1, x2) y = AND(s1, s2) return y if __name__ == '__main__': for xs in [(0, 0), (1, 0), (0, 1), (1, 1)]: y = XOR(xs[0], xs[1]) print(str(xs) + " -> " + str(y))