밑바닥부터 시작하는 딥러닝을 공부하며 정리한 글입니다.
자세한 내용은 생략하고 핵심만 담았습니다.
1. 퍼셉트론이란?
퍼셉트론은 신경망(딥러닝)의 기원이 되는 알고리즘으로 다수의 신호를 입력으로 받아 하나의 신호를 출력합니다.
(그림1)은 입력으로 2개의 신호를 받은 퍼셉트론의 예입니다. $x_1$과 $x_2$는 입력 신호, $y$는 출력 신호, $w_1$과 $w_2$는 가중치를 뜻합니다. 그림의 원을 뉴런 혹은 노드라고 부릅니다.
입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해집니다($w_1x_1,w_2x_2$). 뉴런에서 보내온 신호의 총합($y$)이 정해진 한계를 넘어설 때(활성화)만 1을 출력합니다.
그 한계를 임계값이라 하며, $\theta$(theta, 세타)기호로 나타냅니다.
이상을 수식으로 나타내면 다음과 같이 됩니다.
$$ y = \begin{cases} 0, & (w_1x_1 + w_2x_2 \leq \theta) \\1, & (w_1x_1 + w_2x_2 > \theta) \end{cases} $$
여기서 $\theta$를 $-b$로 치환하면 퍼셉트론의 동작이 다음과 같이 됩니다.
$$ y = \begin{cases} 0, & (b + w_1x_1 + w_2x_2 \leq 0) \\1, & (b + w_1x_1 + w_2x_2 > 0) \end{cases} $$
위의 두 식은 기호 표기만 바꿨을 뿐, 그 의미는 같습니다. 여기에서 b를 편향(bias)이라 하며 $w_1$과 $w_2$는 그대로 가중치입니다.
즉, 이 관점에서 해석해보자면, 퍼셉트론은 입력 신호에 가중치를 곱한 값과 편향을 합하여, 그 값이 0을 넘으면 1을 출력하고 그렇지 않으면 0을 출력합니다.
2. 논리 회로
1) AND 게이트
그림2와 같은 입력 신호와 출력 신호의 대응 표를 진리표라고 합니다.
이 그림은 AND 게이트의 진리표로, 두 입력이 모두 1일 때만 1을 출력하고, 그 외에는 0을 출력합니다.
2) OR 게이트
OR 게이트는 입력 신호 중 하나 이상이 1이면 출력이 1이 된느 논리 회로입니다.
3) 퍼셉트론 구현
이제 논리 회로를 파이썬으로 구현합니다. 다음은 x1과 x2를 인수로 받는 AND라는 함수입니다.
매개변수 w1, w2, theta는 함수 안에서 초기화하고, 가중치를 곱한 입력의 총합이 임계값을 넘으면 1을 반환하고 그 외에는 0을 반환합니다. 함수의 출력이 그림2와 같이 잘 작동하고있습니다.
4) 가중치와 편향 구현
가중치와 편향을 도입한 AND 게이트와 OR게이트는 다음과 같이 구현할 수 있습니다.
여기에서 $\theta$가 $-b$로 치환되었습니다. 가중치 $w_1$과 $w_2$는 각 입력 신호가 결과에 주는 영향력(중요도)을 조절하는 매개변수고, 편향은 뉴런이 얼마나 쉽게 활성화(결과로 1을 출력)하느냐를 조정하는 매개변수입니다.
3. 퍼셉트론의 한계
1) XOR 게이트
XOR 게이트는 배타적 논리합이라는 논리 회로입니다. 그림4와 같이 $x_1$과 $x_2$ 중 한쪽이 1일 때만 1을 출력합니다.
이 XOR 게이트는 지금까지 본 퍼셉트론으로는 구현할 수 없습니다. 왜 AND와 OR은 되고 XOR는 안될까요? 그림으로 그려보며 시각적으로 설명하겠습니다.
우선 OR 게이트의 동작을 시각적으로 생각해보면, OR 게이트는, 예를 들어 가중치 매개변수가 (b, w1, w2) = (-0.5, 1.0, 1.0)일 때 그림3의 진리표를 만족합니다. 이때의 퍼셉트론은 다음과 같이 표현됩니다.
$$ y = \begin{cases} 0, & (-0.5 + x_1 + x_2 \leq 0) \\1, & (-0.5 + x_1 + x_2 > 0) \end{cases} $$
위 식의 퍼셉트론은 직선으로 나뉜 두 영역을 만듭니다. 직선으로 나뉜 한쪽 영역은 1, 다른 한쪽은 0을 출력합니다. 이를 그려보면 다음과 같이 됩니다.
그림에서는 0을 원, 1을 삼각형으로 표시했습니다. OR 게이트를 만들려면 원과 삼각형을 직선으로 나눠야 합니다. 실제로 이 그림의 직선은 네 점을 제대로 나누고 있습니다.
그럼 XOR 게이트는 원과 삼각형을 직선 하나로 나눌 수 있을까요?
사실 XOR 게이트는 직선 하나로 나누기란 불가능합니다.
2) 선형과 비선형
직선 하나로는 그림6의 원과 삼각형을 나눌 수 없습니다. 하지만 다음과 같이'직선'이라는 제약을 없앤다면 가능하죠.
퍼셉트론은 직선 하나로 나눈 영역만 표현할 수 있다는 한계가 있습니다. 그림7과 같은 곡선의 영역을 비선형 영역, 그림5와 같은 직선의 영역을 선형 영역이라고 합니다.
4. 다층 퍼셉트론
1) 기존 게이트 조합하기
XOR 게이트를 만드는 방법은 다양합니다. 그중 하나는 앞서 만든 AND, OR 그리고 NAND(Not AND, AND의 반대) 게이트를 조합하는 방법입니다.
위와 같은 조합이라면 XOR 게이트를 구현할 수 있습니다. $x_1$과 $x_2$는 NAND와 OR 게이트의 입력이 되고, NAND와 OR의 출력이 AND 게이트의 입력으로 이어집니다.
그럼 조합이 정말 XOR를 구현하는지 살펴보겠습니다. NAND의 출력을 $s_1$, OR의 출력을 $s_2$로 해서 진리표를 만들면 다음과 같이 됩니다.
$x_1$, $x_2$, $y$에 주목하면 분명히 XOR의 출력과 같습니다.
2. XOR 구현하기
지금까지 정의한 함수 AND, OR 그리고 NAND를 사용하여 다음과 같이 XOR을 구현할 수 있습니다.
이로써 XOR 게이트를 완성할 수 있었습니다. 지금 구현한 XOR를 뉴런을 이용한 퍼셉트론으로 표현하면 다음과 같이 됩니다.
XOR은 다음과 같은 다층 구조의 네트워크입니다. 이처럼 층이 여러 개인 퍼셉트론을 다층 퍼셉트론이라 합니다.
이상으로 2층 구조를 사용해 퍼셉트론으로 XOR 게이트를 구현하였습니다. 다시 말해 단층 퍼셉트론으로는 표현하지 못한 것을 층을 하나 늘려 구현할 수 있었습니다. 이처럼 퍼셉트론은 층을 쌓아(깊게 하여) 더 다양한 것을 표현할 수 있습니다.
다음장에서는 퍼셉트론에서 확장된 신경망에 대해서 알아보겠습니다.
'Data Science > Deep Learning' 카테고리의 다른 글
서브워드 토큰화(Subwords Tokenization) (2) | 2024.11.18 |
---|---|
신경망 분류 문제 (classification) (0) | 2021.01.21 |
신경망 (Neural Network) (0) | 2021.01.20 |