Broccoli's House

#1-(3) 퍼셉트론 : XOR 게이트 본문

공부/딥러닝

#1-(3) 퍼셉트론 : XOR 게이트

김콜리 2018. 1. 23. 01:05

※ 이 글의 내용은 O'REILLY의 <밑바닥부터 시작하는 딥러닝> 책을 기반으로 한다.




퍼셉트론 : XOR 게이트




  • XOR 게이트

 - XOR 게이트(Exclusive-OR) : 배타적 논리합. 입력이 같을 때는 0을, 입력이 다르면 1을 출력한다. 


x1

x2

y

 0

0

0

 1

0

1

 0

1

1

 1

1

0



<XOR 게이트의 시각화>


 - 퍼셉트론은 직선으로 나뉘는 두 영역을 만든다. 직선으로 나뉜 한쪽 영역은 1을 출력하고, 다른 한쪽은 0을 출력한다. 그러나 XOR 게이트의 경우 직선 하나로 영역을 나누는 것은 불가능하다. 따라서 선형 영역으로는 불가능하고, 곡선으로 나누는 비선형 영역에서는 가능하다. 즉, 단층 퍼셉트론으로는 비선형 영역을 분리할 수 없는 것이다.




  • 다층 퍼셉트론
 - 다층 퍼셉트론(Multi-Layer Perceptron) : 여러 개의 퍼셉트론을 층으로 쌓아 만든 것을 다층 퍼셉트론이라 한다. 이렇게 하면 단층 퍼셉트론으로는 표현하지 못하는 것을 층을 늘림으로써 구현할 수 있다. 즉 AND 게이트, OR 게이트, NAND 게이트를 가진 퍼셉트론 3개를 쌓으면 XOR 게이트를 구현할 수 있다.


<XOR의 퍼셉트론>



 x1

x2

s1

s2

 0

0

 1

 0

 1


 - 각각의 입력 x1과 x2의 NAND 게이트의 출력을 s1, OR 게이트의 출력을 s2로 둔 다음, s1과 s2를 다시 입력으로 AND 게이트에 주면 XOR 게이트의 출력이 완성된다. 




  • XOR 게이트 구현

def XOR(x1, x2) :
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y

print(XOR(0,0)) # >> 0
print(XOR(1,0)) # >> 1
print(XOR(0,1)) # >> 1
print(XOR(1,1)) # >> 0


'공부 > 딥러닝' 카테고리의 다른 글

#2-(3) 신경망 : 3층 신경망 구현  (1) 2018.01.25
#2-(2) 신경망 : 활성화 함수  (0) 2018.01.24
#2-(1) 신경망 : 소개  (0) 2018.01.24
#1-(2) 퍼셉트론 : 단순 논리 회로  (0) 2018.01.23
#1-(1) 퍼셉트론 : 소개  (0) 2018.01.22
Comments