Perceptron 이란?
다수의 신호를 입력으로 받아 하나의 신호를 출력(1 or 0)하는 알고리즘
논리 회로
AND 게이트
X1 | X2 | y |
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
def AND(x1, x2):
w1, w2, theta = 0.5, 0.5, 0.7
tmp = x1*w1 + x2*w2
if tmp <= theta:
return 0
elif tmp > theta:
return 1
+ 편향 (bias) 추가
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
elif tmp > 0:
return 1
- 두 가지 모두 1일 경우 1 출력
NAND 게이트
- Not AND : AND 게이트의 출력을 뒤집은 것
X1 | X2 | y |
0 | 0 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
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
elif tmp > 0:
return 1
OR 게이트
X1 | X2 | y |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
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
elif tmp > 0:
return 1
- 둘 중 하나라도 1일 경우 1 출력
XOR 게이트
- x1, x2 중 한쪽만 1일 때 1을 출력
- '선형'이라는 제약을 없애고 '비선형' 개념을 추가
- 층을 쌓아서 Multi Layer Perceptron 구현
X1 | X2 | y |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
- 다층 Perceptron을 쌓아서 비선형으로 분류 가능하도록 함
x1 | x2 | s1 | s2 | y |
0 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 1 | 1 |
0 | 1 | 1 | 1 | 1 |
1 | 1 | 0 | 1 | 0 |
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y
'Learning > Deep Leaning' 카테고리의 다른 글
합성곱 신경망(CNN) (0) | 2021.08.31 |
---|---|
학습관련 기술들 (0) | 2021.08.09 |
오차역전파법 (0) | 2021.08.04 |
신경망 학습 (0) | 2021.07.28 |
Neural Network(Activate Function) (0) | 2021.07.18 |