본문 바로가기

Learning/Deep Leaning

Perceptron

Perceptron 이란?

 다수의 신호를 입력으로 받아 하나의 신호를 출력(1 or 0)하는 알고리즘

입력이 2개인 Perceptron

 

논리 회로

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을 쌓아서 비선형으로 분류 가능하도록 함

각 게이트 기호
XOR 게이트 

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

XOR의 Perceptron

 

'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