퍼셉트론이란?
퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다. 퍼셉트론 신호는 1이나 0 두가지 값을 가질 수 있다.
x1, x2는 입력 신호, w1, w2는 가중치, y는 출력신호를 뜻한다. 원은 뉴런 혹은 노드라고 부른다.
입력 신호가 뉴런에 보내질 때 각각 고유한 가중치가 곱해지고 이것들의 총 합이 임계값 θ를 넘어서면 1, 아니면 0을 출력한다.
퍼셉트론은 복수의 입력 신호에 각각 고유한 가중치를 부여하는데 이 가중치가 결과를 결정하는 요소로 작용한다. 즉, 가중치가 클수록 해당 신호가 그만큼 더 중요하다는 뜻이다.
단순한 논리 회로
AND 게이트
두 입력이 모두 1일 때만 1을 출력한다.
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 # element-wise product
if tmp <= 0:
return 0
else:
return 1
- 가중치 w와 b는 무한한 조합을 가질 수 있다.
- 행렬의 요소별 곱을 element-wise product라고 한다.
NAND 게이트
not AND로 AND 게이트와 반대의 출력을 낸다. 즉, 두 입력이 모두 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 # element-wise product
if tmp <= 0:
return 0
else:
return 1
- AND와 달라진 점은 가중치와 편향이다.
OR 게이트
두 입력이 모두 0일 때만 0을 출력한다.
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
- 마찬가지로 가중치와 편향만 달라졌다.
퍼셉트론의 한계
XOR 게이트
단순한 퍼셉트론으로는 XOR 게이트를 구현할 수 없다. 왜그런지 이유를 알아보자
위의 그림은 OR 게이트를 시각적으로 나타낸것이다. 이처럼 퍼셉트론은 직선으로 나뉜 두 영역을 만든다. 즉, 선형이다.
XOR 게이트처럼 영역을 나누기 위해서는 비선형이어야 한다.
다층 퍼셉트론
퍼셉트론을 여러 층을 쌓아 만든 것을 다층 퍼셉트론(Multi Layer Perceptron)이라 한다. 다층 퍼셉트론은 비선형을 표현할 수 있다. 그래서 AND, NAND, OR 게이트를 조합하여 XOR 게이트를 표현할 수 있다.
- NAND 게이트의 출력부에 있는 동그라미 기호는 출력을 반전한다는 뜻
앞에서 구현한 AND, NAND, OR 게이트를 사용하여 XOR 게이트를 쉽게 구현할 수 있다.
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y
'책 > 밑바닥부터 시작하는 딥러닝' 카테고리의 다른 글
5장 오차역전파법 (2) (0) | 2023.09.19 |
---|---|
5장 오차역전파법 (1) (0) | 2023.09.19 |
4장 신경망 학습 (2) (0) | 2023.09.14 |
4장 신경망 학습 (1) (0) | 2023.09.13 |
3장 신경망 (0) | 2023.09.13 |