Deep Learning from Scratch1 - Ch2 퍼셉트론 논리회로 정리
퍼셉트론(Perceptron)
- 다수의 신호를 입력으로 받아 하나의 신호를 출력하는 알고리즘
- 복수의 입력신호 각각에 고유한 가중치를 부여하여 출력을 결정한다.
입력이 2개인 퍼셉트론
수식으로 표현
(뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때 1을 출력, 그 임계값을 θ(세타)로 표현)
논리회로 표현
AND 게이트
진리표
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
NAND 게이트
진리표
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 게이트
진리표
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
- AND, NAND, OR 게이트 모두 퍼셉트론의 구조는 동일하고, 가중치에 따라 출력이 달라지는 형태이다.
- 위 세가지 게이트의 공통점은 xy좌표계로 표현할 때 출력이 1인 영역과 0인 영역이 직선 하나로 구분된다는 점이다.
- 하지만, XOR게이트의 경우 진리표를 xy좌표계로 표현할 때 하나의 직선으로 구분할 수 없다.
- 이때, 다층퍼셉트론의 개념이 등장한다.
다층 퍼셉트론
- 퍼셉트론을 층을 쌓아 만든 구조
XOR 게이트
진리표
다층 퍼셉트론 구현을 위해 변형된 진리표
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y
- 단층 퍼셉트론으로는 표현하지 못한 것을 층을 하나 늘림으로써 구현할 수 있게 되었다.
[참고자료]
- 밑바닥부터 시작하는 딥러닝
Leave a comment