[밑바닥부터 시작하는 딥러닝] Ch 2. 퍼셉트론$(3)$

퍼셉트론의 한계

 

1. XOR 게이트

 

XOR 게이트는 배타적 논리학이라는 논리 회로입니다. $x_1, x_2$ 중 한쪽이 1일 때만 1을 출력합니다.

XOR 게이트의 진리표

지금까지 본 퍼셉트론으로는 XOR 게이트를 구현할 수 없습니다. 이유를 한 번 살펴보도록 하겠습니다. 

우선 OR 게이트의 동작을 시각적으로 보겠습니다. OR 게이트는, 가중치 매개변수가 $(b, w_1, w_2)$일 때 퍼셉트론은 아래의 식으로 표현이 됩니다.

위의 식의 퍼셉트론은 직선으로 나뉜 두 영역을 만듭니다. 직선으로 나뉜 한쪽 영역은 1을 출력하고 다른 한쪽은 0을 출력합니다. 이를 시각화하면 아래의 그림처럼 보입니다. 

퍼셉트론의 시각화-회색영역은 0을 출력하는 영역이고, 전체 영역은 OR게이트의 성질을 만족합니다.

 

OR 게이트는 $(x_1, x_2) = (0,0)$일 때 0을 출력하고, (0,1), (1,0), (1,1) 일 때는 1을 출력합니다. 그림에서는 0을 원, 1을 삼각형으로 표시되어 있습니다. OR 게이트를 만들려면 원과 삼각형을 직선으로 나눠야 합니다. 

 

이번에는, XOR 게이트의 경우를 살펴보겠습니다. XOR 게이트에서는 원과 삼각형을 직선 하나로 나눌 수 없습니다. 다만, 곡선이라면 나눌 수 있습니다. 

 

딥러닝 분야에서는, 위의 그림과 같이 곡선의 영역을 비선형 영역, 직선의 영역을 선형 영역이라고 부릅니다. 


2. 다층 퍼셉트론

 

위에서 살펴봤듯이 퍼셉트론으로는 XOR 게이트를 표현할 수 없습니다. 그렇다면 다른 관점에서 이 문제를 살펴보도록 하겠습니다. 

AND, NAND, OR 게이트를 조합하면 XOR 게이트를 구현할 수 있습니다. 

[왼] AND, NAND, OR 게이트를 조합하여 구현한 XOR 게이트 [오] 각 게이트 기호

$x_1, x_2$가 입력 신호, $y$가 출력 신호입니다. $x_1, x_2$는 NAND와 OR 게이트의 입력이 되고, NAND와 OR의 출력이 AND 게이트의 입력으로 이어집니다. 

 

NAND의 출력을 $s_1$, OR의 출력을 $s_2$로 해서 진리표를 만들면 아래의 그림과 같습니다. $x_1, x_2, y$를 보면 분명히 XOR의 출력과 같습니다. 


3. XOR 게이트 구현하기

 

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

 

위의 함수를 실행햐면 다음과 같은 결과값이 출력됩니다. 

XOR(0,0) # 0을 출력
XOR(1,0) # 1을 출력
XOR(0,1) # 1을 출력
XOR(1,1) # 0을 출력

 

이처럼 구현한 XOR을 뉴런을 이용한 퍼셉트론으로 표현하면 아래의 그림처럼 됩니다. 

XOR의 퍼셉트론

XOR은 다층 구조의 네트워크입니다. AND, OR 퍼셉트론은 단층 퍼셉트론인 데 반해, XOR은 2층 퍼셉트론입니다. 층이 여러 개인 퍼셉트론을 다층 퍼셉트론이라고 합니다. 

 

2층 퍼셉트론의 동작은 아래와 같습니다. 

1. 0층의 두 뉴런이 입력 신호를 받아 1층의 뉴런으로 신호를 보냅니다. 
2. 1층의 뉴런이 2층의 뉴런으로 신호를 보내고, 2층의 뉴런은 $y$를 출력합니다. 

 

 

이 글은 밑바닥부터 시작하는 딥러닝 책을 보며 공부하여 작성한 글입니다.

한빛미디어에서 출간한 '밑바닥부터 시작하는 딥러닝'의 코드를 담고 있습니다.