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

지금까지 본 퍼셉트론으로는 XOR 게이트를 구현할 수 없습니다. 이유를 한 번 살펴보도록 하겠습니다.
우선 OR 게이트의 동작을 시각적으로 보겠습니다. OR 게이트는, 가중치 매개변수가 $(b, w_1, w_2)$일 때 퍼셉트론은 아래의 식으로 표현이 됩니다.
위의 식의 퍼셉트론은 직선으로 나뉜 두 영역을 만듭니다. 직선으로 나뉜 한쪽 영역은 1을 출력하고 다른 한쪽은 0을 출력합니다. 이를 시각화하면 아래의 그림처럼 보입니다.

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 게이트를 구현할 수 있습니다.


$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은 다층 구조의 네트워크입니다. AND, OR 퍼셉트론은 단층 퍼셉트론인 데 반해, XOR은 2층 퍼셉트론입니다. 층이 여러 개인 퍼셉트론을 다층 퍼셉트론이라고 합니다.
2층 퍼셉트론의 동작은 아래와 같습니다.
1. 0층의 두 뉴런이 입력 신호를 받아 1층의 뉴런으로 신호를 보냅니다.
2. 1층의 뉴런이 2층의 뉴런으로 신호를 보내고, 2층의 뉴런은 $y$를 출력합니다.
이 글은 밑바닥부터 시작하는 딥러닝 책을 보며 공부하여 작성한 글입니다.
한빛미디어에서 출간한 '밑바닥부터 시작하는 딥러닝'의 코드를 담고 있습니다.
'딥러닝' 카테고리의 다른 글
| [밑바닥부터 시작하는 딥러닝] Ch 3.1 활성화 함수 (0) | 2024.08.10 |
|---|---|
| [밑바닥부터 시작하는 딥러닝] Ch 3. 신경망 (0) | 2024.08.09 |
| [밑바닥부터 시작하는 딥러닝] Ch 2. 퍼셉트론$(2)$ (0) | 2024.08.05 |
| [밑바닥부터 시작하는 딥러닝] Ch 2. 퍼셉트론 (0) | 2024.08.04 |

