카테고리 없음
[딥러닝] 퍼셉트론 개념[AND, NAND, OR, XOR]
simplecode
2021. 8. 9. 16:10
퍼셉트론
퍼셉트론(Perceptron)은 프랑크 로젠블라트(Frank Rosenblatt)가 1957년에 제안한 초기 형태의 인공 신경망으로 실제 뇌를 구성하는 신경 세포 뉴런의 동작과 유사한데, 다수의 입력으로부터 하나의 결과를 내보내는 알고리즘입니다.
x는 입력값, w는 가중치, 원은 인공뉴런, y는 출력값으로 보시면 됩니다.
입력값이 가중치와 곱해져서 임계치(threshold)를 넘으면 인공뉴런은 1을 출력하며, 임계치를 넘지 않으면 0을 출력합니다.
이를 계단함수라고 부릅니다.
이에 대해 퍼셉트론의 입력신호의 조합에 따라 출력값이 어떻게 변경되는지 알아보겠습니다.
(0, 0), (1, 0), (0, 1), (1, 1) 입력에 대해서,
AND GATE: 0, 0, 0, 1
NAND GATE: 1, 1, 1, 0
OR GATE: 0, 1, 1, 1
XOR GATE:0, 1, 1, 0
입니다. 더 자세히 보자면 다음과 같습니다
AND GATE - 입력신호가 모두 1일 때 1을 출력
print(AND(0, 0)) # 0
print(AND(1, 0)) # 0
print(AND(0, 1)) # 0
print(AND(1, 1)) # 1
NAND GATE - NAND gate는 AND gate의 결과의 반대, Not AND
print(NAND(0, 0)) # 1
print(NAND(1, 0)) # 1
print(NAND(0, 1)) # 1
print(NAND(1, 1)) # 0
OR GATE - 입력신호가 하나만 1이어도 1을 출력
print(OR(0, 0)) # 0
print(OR (1, 0)) # 1
print(OR(0, 1)) # 1
print(OR(1, 1)) # 1
XOR GATE - 입력신호가 다를 때 1을 출력
퍼셉트론의 한계를 지적하며 나온 문제로, 정확하게 exclusive or 을 뜻합니다.
XOR을 만드는 또 다른 수식 : AND(NAND(x1, x2), OR(x1, x2))
print(XR(0, 0)) # 0
print(XOR (1, 0)) # 1
print(XOR(0, 1)) # 1
print(XOR(1, 1)) # 0