728x90
반응형
퍼셉트론의 한계 : XOR
단층 신경망은 입력값과 가중치의 곱의 합을 바로 출력값으로 내보내어 XOR 문제를 해결하려고 시도하는 과정에서 한계에 다다릅니다.
단층 신경망으로 구현할 수 없었던 XOR 게이트 문제를 다층 퍼셉트론이 개발되면서 해결되었습니다.
다층 퍼셉트론은 입력층, 은닉층, 출력층으로 구성된 모델로 XOR 게이트의 경우 두개의 입력값과 하나의 출력값을 가진 단층 퍼셉트론 세개를 조합하여 해결할 수 있습니다.
AND 구현
def AND(x1,x2):
w1,w2=0.4,0.4 # 가지돌기의 굵기
b=-0.6 # 축삭돌기의 굵기(두께), 역치
s=x1*w1+x2*w2+b
return 0 if s<=0 else 1 # 활성화 함수
NAND 구현
def NAND(x1,x2):
w1,w2=-0.5,-0.5 # 가지돌기의 굵기
b=1 # 축삭돌기의 굵기(두께), 역치
s=x1*w1+x2*w2+b
return 0 if s<=0 else 1 # 활성화 함수
OR 구현
def OR(x1,x2):
w1,w2=0.6,0.6 # 가지돌기의 굵기
b=-0.5 # 축삭돌기의 굵기, 역치
s=x1*w1+x2*w2+b
return 0 if s<=0 else 1 # 활성화 함수
XOR 구현
def XOR(x1,x2):
h1=OR(x1,x2)
h2=NAND(x1,x2)
return AND(h1,h2)
# AND 구현
def AND(x1,x2):
w1,w2=0.4,0.4 # 가지돌기의 굵기
b=-0.6 # 축삭돌기의 굵기(두께), 역치
s=x1*w1+x2*w2+b
return 0 if s<=0 else 1 # 활성화 함수
# NAND 구현
def NAND(x1,x2):
w1,w2=-0.5,-0.5 # 가지돌기의 굵기
b=1 # 축삭돌기의 굵기(두께), 역치
s=x1*w1+x2*w2+b
return 0 if s<=0 else 1 # 활성화 함수
# OR 구현
def OR(x1,x2):
w1,w2=0.6,0.6 # 가지돌기의 굵기
b=-0.5 # 축삭돌기의 굵기, 역치
s=x1*w1+x2*w2+b
return 0 if s<=0 else 1 # 활성화 함수
# XOR 구현
def XOR(x1,x2):
h1=OR(x1,x2)
h2=NAND(x1,x2)
return AND(h1,h2)
print(XOR(0,0),XOR(0,1),XOR(1,0),XOR(1,1))
728x90
반응형
'즐거운프로그래밍' 카테고리의 다른 글
[딥러닝] 딥러닝 동작원리 2입력 1출력 인공 신경망 구현하기 (1) | 2023.10.28 |
---|---|
[딥러닝] 딥러닝 동작 원리 7가지(순전파, 역전파 등) (0) | 2023.10.28 |
[딥러닝] 알고리즘 파이썬 기반 편향 개념의 AND, NAND, OR 구현하기 (0) | 2023.10.27 |
[딥러닝] 알고리즘 파이썬 기반 AND, NAND, OR 구현하기 (0) | 2023.10.27 |
[파이썬] 파이게임(pygame) 활용하기 (0) | 2023.10.27 |