퍼셉트론은 딥러닝의 기원이 되는 알고리즘입니다. 따라서 퍼셉트론을 공부하는 것은 신경망과 딥러닝으로 나아가는 데 중요한 아이디어를 배우는 일입니다.
퍼셉트론을 수식으로 나타내면 다음과 같습니다.
$y= \begin{cases} 0, & (w_{1}x_{1}+w_{2}x_{2} \le \theta) \\ 1, & (w_{1}x_{1}+w_{2}x_{2} > \theta)\end{cases}$
여기서 $x_1, x_2$는 입력 신호, $y$는 출력 신호, $w_1, w_2$는 가중치를 나타냅니다.
수식을 보면 알 수 있듯, 가중치는 해당 노드의 중요도를 나타냅니다.
위 식에 편향을 추가해보겠습니다.
$y= \begin{cases} 0, & (w_{1}x_{1}+w_{2}x_{2}+b \le 0) \\ 1, & (w_{1}x_{1}+w_{2}x_{2} +b> 0)\end{cases}$
두 식을 관찰해보면 $\theta = -b$ 임을 알 수 있습니다.
편향은 노드(뉴런)이 얼마나 쉽게 활성화되느냐를 조정하는 변수입니다.
퍼셉트론을 이용한 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(w*x) + b
if tmp <= 0:
return 0
else:
return 1
print(AND(0, 0)) #0
print(AND(0, 1)) #0
print(AND(1, 0)) #0
print(AND(1, 1)) #1
구현한 AND게이트에서 가중치값만 변경하면 NAND 게이트와 OR게이트를 구현할 수 있습니다. 하지만 단일 퍼셉트론으로는 XOR게이트를 구현하는 데에는 문제가 있습니다.
XOR게이트를 구현하기 위해서 다층 퍼셉트론이 사용됩니다.
XOR게이트는 다음 그림과 같이 NAND, OR, AND게이트의 조합으로 만들 수 있습니다.
위의 회로를 코드로 나타내면 다음과 같습니다.
def XOR(x1, x2):
y1 = NAND(x1, x2)
y2 = OR(x1, x2)
return AND(y1, y2)
결론
퍼셉트론으로 AND, OR등의 논리 회로를 나타낼 수 있다.
단일 퍼셉트론으로는 XOR게이트를 나타낼 수 없지만 AND, NAND, OR게이트를 이용한 다층 퍼셉트론을 이용해서 XOR게이트를 나타낼 수 있다. → 다층 퍼셉트론은 비선형 영역을 나타낼 수 있다.
'[딥러닝] > [밑바닥부터 시작하는 딥러닝]' 카테고리의 다른 글
밑바닥부터 시작하는 딥러닝 1 - 4 경사 하강법 (0) | 2021.06.27 |
---|---|
밑바닥부터 시작하는 딥러닝 1 - 4 신경망 학습 (0) | 2021.06.26 |
밑바닥부터 시작하는 딥러닝 1 - 3 손글씨 숫자 인식 예제 (0) | 2021.06.26 |
밑바닥부터 시작하는 딥러닝 1 - 3 신경망 (0) | 2021.06.25 |
[밑바닥부터 시작하는 딥러닝] 교재 소개 (0) | 2021.05.28 |