1. 퍼셉트론은이란?
- 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력, 여기서 말하는 신호란 전류나 강물처럼 흐름이 있는것
- 실제 전류와 달리 퍼셉트론 신호는 흐른다/안흐른다(1/0) 의 두 가지 값을 가짐.
- 퍼셉트론의 수식화( 가준치와 편향 포함)
b : 편향(얼마나 쉽게 활성화가 되느냐) , w1,w2 :가중치(입력신호가 결과에주는 영향력, 중요도), x1,x2 : 입력
y = 0 (b + w1x1 + w2x2 <= 0)
y = 1 (b + w1x2 + w2x2 > 0)
2. 퍼셉트론 파이썬코드로 구현
- AND, NAND, OR은 하나의 퍼셉트론으로 가능하다
- XOR은 NAND 와 OR의 출력을 AND의 입력으로 받아 처리하여함.(다층 퍼셉트론)
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(x * w) + 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(x * w) + 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(XOR(0, 0))
print(XOR(1, 0))
print(XOR(0, 1))
print(XOR(1, 1))
참고
AND게이트 진리표
x1 |
x2 |
y |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
NAND게이트 진리표(AND의 반대)
x1 |
x2 |
y |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
OR게이트 진리표
x1 |
x2 |
y |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
XOR게이트의 진리표
x1 |
x2 |
s1(NAND) |
s2(OR) |
y(s1 AND s2) |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
'프로그래밍 > 밑바닥부터 시작하는 딥러닝' 카테고리의 다른 글
CHAPTER1 파이썬 (0) | 2017.10.09 |
---|
댓글