퍼셉트론
퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력하는 것을 말한다. 입력신호인 x1과 x2를 넣으면 가중치인 w1과 w2에 각각 곱해진 후 더해진다. 만약 이 값이 특정 역치값(theta)보다 크면 1, 작으면 0을 return한다.
논리 회로
논리 회로는 AND, OR, NAND, XOR 게이트가 있다.
AND 게이트
입력이 모두 참일 때 출력도 참이다.
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
OR 게이트
입력이 하나라도 참이면 출력은 참이다.
def OR(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.3
tmp = np.sum(x*w) + b
if tmp <= 0:
return 0
else:
return 1
NAND 게이트
입력이 하나라도 0이면 출력은 0이다.
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
그리고 게이트를 나타내는 기호는 아래 그림과 같다.
XOR게이트
입력이 같으면 0을 출력하고, 서로 다르면 1을 출력한다.
XOR 게이트는 한 층의 퍼셉트론으로 만드는 것은 불가능하다. 따라서 OR, NAND, AND게이트를 섞어서 XOR게이트를 만들 수 있다. 아래 그림과 같이 조합하면 가능하다.
코드로 구현하기
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = ANd(s1, s2)
return y
'책리뷰' 카테고리의 다른 글
(밑바닥부터 시작하는 딥러닝) 7장. 합성곱 신경망(CNN) (0) | 2022.06.23 |
---|---|
(밑바닥부터 시작하는 딥러닝) 6장. 학습 관련 기술들 (0) | 2022.06.23 |
(밑바닥부터 시작하는 딥러닝) 5장. 오차역전파법 (0) | 2022.06.23 |
(밑바닥부터 시작하는 딥러닝) 4장. 신경망 학습 (0) | 2022.06.23 |
(밑바닥부터 시작하는 딥러닝) 3장. 신경망 (0) | 2022.06.23 |