XOR 게이트
def XOR(x1, x2) :
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y
- XOR 게이트는 배타적 논리합 이라는 논리 회로; x1, x2 중 한 쪽이 1일 때만 1을 출력
- 배타적; 자기 외에는 거부 - 따라서 하나만 자기일 때 1 출력
- 퍼셉트론(단층)으로는 비선형 영역을 나타내야 하는 XOR 게이트 표현 불가
- 따라서 층을 쌓은 '다층 퍼셉트론'을 통해 구현
- = 단층 퍼셉트론으로는 비선형 영역을 분리할 수 없다.
- AND, NAND, OR 게이트를 조합하여 구현하기
XOR(0, 0) # 0을 출력
XOR(1, 0) # 1을 출력
XOR(0, 1) # 1을 출력
XOR(1, 1) # 0을 출력
- 단층 퍼셉트론으로는 표현하지 못한 것을 층을 하나 늘려 구현할 수 있음
- 퍼셉트론은 층을 쌓아 (깊게 하여) 더 다양한 것 표현 가능
- 덧셈을 처리하는 가산기, 2진수를 10진수로 변환하는 인코더 등등 다양하게 표현 가능
- 퍼셉트론을 이용해 '컴퓨터' 마저 표현 가능 - 컴퓨터 = 정보를 처리하는 기계
- 컴퓨터에 무언가를 입력하면 정해진 방법으로 처리하고 그 결과를 출력
- 정해진 방법으로 처리한다는 것은 컴퓨터도 마치 퍼셉트론처럼 입력과 출력으로 구성된 특정 규칙대로 계산을 수행한다는 뜻
- 컴퓨터 내부에서 이뤄지는 처리 매우 복잡할 것 같지만, 사실은 NAND 게이트의 조합만으로 컴퓨터가 수행하는 일 재현 가능
- 즉 퍼셉트론으로도 컴퓨터를 표현할 수 있다는 놀라운 사실 - 대체 얼마나 퍼셉트론 층을 깊게 쌓아야 컴퓨터를 표현할 수 있을까?
- 놀랍게도 이론상 2층 퍼셉트론이면 가능
- 비선형인 시그모이드 함수를 활성화 함수로 이용하면 임의의 함수를 표현할 수 있다
- but 2층 퍼셉트론 구조에서 가중치를 적절히 설정하여 컴퓨터 만들기란 너무 어려움
- NAND 등의 저수준 소자에서 시작하여 컴퓨터를 만드는 데 필요한 부품(모듈)을 단계적으로 만들어가는 쪽이 자연스러운 방법
--> AND와 OR 게이트 - 반가산기와 전가산기 - 산술 논리 연산 장치 (ALU) - CPU 이런식으로 퍼셉트론으로 표현하는 컴퓨터는 이렇게 여러 층을 다시 층층이 겹친 구조로 만드는 방향
** 총 정리
- 퍼셉트론은 입출력을 갖춘 알고리즘 - 입력을 주면 정해진 규칙에 따른 값 출력
- 퍼셉트론에서 '가중치'와 '편향' 매개변수로 설정
- 퍼셉트론으로 AND, OR 게이트 등의 논리 회로 표현 가능
- XOR 게이트는 단층 퍼셉트론으로는 표현할 수 없음
- 2층 퍼셉트론을 이용하면 XOR 게이트 표현할 수 있음
- 단층 퍼셉트론은 직선형 영역만 표현 가능, 다층 퍼셉트론은 비선형 영역도 표현 가능
- 다층 퍼셉트론은 (이론상) 컴퓨터 표현 가능
Reference
- 밑바닥부터 시작하는 딥러닝
'Deep Learning' 카테고리의 다른 글
계단 함수 (step function) 란? (0) | 2022.05.29 |
---|---|
신경망과 활성화 함수 (activation function) (0) | 2022.05.29 |
AND, OR, NAND 게이트 구현 (논리 회로 구현하기) (0) | 2022.05.29 |
딥러닝 주요 알고리즘 1 - 딥러닝 기초 이론 (2) 역전파 알고리즘, 훈련 (0) | 2021.12.13 |
딥러닝 주요 알고리즘 1 - 딥러닝 기초 이론 (1) 확률적 경사 하강법(Stochastic gradient descent, SGD) (0) | 2021.12.11 |
댓글