Week 7. 퍼셉트론과 다층 신경망(MLP)
신경망이 처음 죽었다가 부활한 이야기. XOR 문제와 그 해결책으로서의 비선형 활성함수.
이번 주에 배우는 것
- 퍼셉트론의 역사 — 1958년, 그리고 죽음
- 퍼셉트론 학습 규칙
- XOR 문제
- 다층 퍼셉트론(MLP)
- 활성함수들 — 시그모이드, tanh, ReLU, Leaky ReLU
1. 퍼셉트론 — 신경망의 시작과 비극
1958년, 코넬 대학교의 Frank Rosenblatt은 Mark I Perceptron이라는 기계를 만들었습니다. 400개의 광센서를 20×20 행렬로 배치하고, 가변 저항으로 가중치를 구현해 간단한 패턴을 학습시키는 물리적 장치였습니다. Rosenblatt은 뉴욕타임즈 인터뷰에서 "장차 걷고, 말하고, 보고, 쓰고, 자기 자신을 재생산하고, 자신의 존재를 의식하는 기계가 될 것"이라고 장담했습니다. 당시로선 충격적인 예언이었고, 신경망 연구의 첫 번째 황금기가 시작되었습니다.
Rosenblatt의 퍼셉트론은 사람의 생물학적 뉴런을 극도로 단순화한 모델입니다. 입력 $\mathbf x$에 가중치 $\mathbf w$를 곱해 더하고, 임계값을 넘으면 1, 아니면 0을 출력합니다:
$$ y = \begin{cases} 1 & \text{if } \mathbf{w}^\top \mathbf{x} + b > 0 \\ 0 & \text{otherwise} \end{cases} $$여기까지는 W4 로지스틱 회귀와 구조가 같습니다. 차이는 출력 함수 — 퍼셉트론은 시그모이드 대신 하드 임계(step function)를 씁니다. 그래서 출력이 확률이 아니라 $\{0, 1\}$ 둘 중 하나.
학습 규칙은 놀랍도록 간단합니다. 정답이 $y_\text{true}$이고 예측이 $y_\text{pred}$일 때, 오차 방향으로 가중치를 밀어주면 됩니다:
$$ \mathbf{w} \leftarrow \mathbf{w} + \eta (y_{\text{true}} - y_{\text{pred}}) \mathbf{x} $$맞으면 오차가 0이라 그대로 두고, 틀리면 $\mathbf x$를 더하거나(정답 1인데 0을 예측) 빼서(정답 0인데 1을 예측) 경계를 옮깁니다. 1962년 Rosenblatt은 퍼셉트론 수렴 정리(Perceptron Convergence Theorem)를 증명했습니다: 만약 데이터가 선형 분리 가능하면, 이 규칙은 유한 스텝 안에 반드시 완벽히 분리하는 $\mathbf w$를 찾는다.
하지만 이 정리에 치명적인 전제가 있었습니다 — "선형 분리 가능하면". 바로 다음 섹션에서 보듯, XOR 같은 아주 단순한 문제조차 선형 분리가 불가능하고, 이 사실이 신경망 연구를 거의 20년간 동면시킵니다.
🎮 인터랙티브: 퍼셉트론 학습 (AND/OR/XOR)
AND·OR은 직선으로 분리되어 수렴하지만 XOR은 영원히 헤맵니다. 이게 1969년 Minsky가 신경망을 거의 죽인 그 문제입니다.
2. XOR 문제 — 신경망의 죽음과 부활
XOR(배타적 논리합)의 진리표는 다음과 같습니다:
| $x_1$ | $x_2$ | XOR |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
"두 입력이 다르면 1, 같으면 0". 이 네 점을 2D에 그려보면, 정답 1인 두 점이 대각선 $(0,1), (1,0)$에 있고 정답 0인 두 점도 대각선 $(0,0), (1,1)$에 있습니다. 어떤 직선을 그어도 1들만 한쪽에, 0들만 다른 쪽에 모을 수 없습니다. 해보세요 — 직선을 어떻게 돌려도 반드시 한쪽에는 1과 0이 섞입니다.
수학적으로, XOR은 선형 분리 불가능(linearly non-separable)합니다. 퍼셉트론은 $\mathbf w^\top \mathbf x + b = 0$이라는 직선(초평면)만 그릴 수 있는데, 이 한계가 XOR을 해결 불가능하게 만듭니다.
1969년, MIT의 Marvin Minsky와 Seymour Papert는 책 Perceptrons에서 이 한계를 엄밀하게 증명하고 널리 알렸습니다. 그들은 "다층 퍼셉트론으로는 풀 수 있지만 학습 방법이 없다"고 지적했는데, 이 지적이 엄청난 파장을 일으켰습니다. 연구비가 끊기고 신경망은 학계의 "죽은 주제"가 되어 첫 번째 AI 겨울(First AI Winter)이 시작됩니다. 이 겨울은 1986년 Rumelhart, Hinton, Williams가 역전파(backpropagation)를 재발견하고 다층 퍼셉트론의 학습 방법을 제시할 때까지 이어집니다. 자세한 역전파 이야기는 W8에서 다룹니다.
2.1 XOR을 푸는 직관
XOR은 한 층으로 풀 수 없지만, 두 층이면 쉽게 풀립니다. 핵심 아이디어: 첫 층에서 입력을 새로운 표현으로 변환하면, 그 새 공간에서는 선형 분리 가능해진다는 것.
예를 들어 첫 층에서 두 개의 뉴런을 만듭니다:
- $h_1 = \text{AND}(x_1, \bar x_2)$ — "$x_1$이 1이고 $x_2$가 0일 때만 1"
- $h_2 = \text{AND}(\bar x_1, x_2)$ — "$x_1$이 0이고 $x_2$가 1일 때만 1"
그러면 XOR$(x_1, x_2) = h_1 \text{ OR } h_2$가 되어 두 번째 층에서 단순한 OR로 해결됩니다. 즉 한 층은 못 풀지만, 한 층이 "특징 변환"을 하면 다음 층이 선형으로 풀 수 있다. 이것이 다층 신경망의 본질적 힘입니다.
3. 다층 퍼셉트론 (MLP) — 비선형의 열쇠
해결책은 의외로 단순했습니다 — 층을 하나 더 쌓고 비선형 활성함수를 넣자. 입력층-은닉층-출력층의 구조에서 은닉층 뉴런 두 개만 있어도 XOR을 풀 수 있습니다.
$$ \mathbf{h} = \sigma(W_1 \mathbf{x} + \mathbf{b}_1), \quad \hat{y} = \sigma(W_2 \mathbf{h} + b_2) $$비선형 $\sigma$가 핵심입니다. 이게 없으면 아무리 층을 쌓아도 결국 큰 직선 하나로 줄어들기 때문입니다.
4. 활성함수 4총사
🎮 인터랙티브: 활성함수와 그 미분
함수를 골라 모양과 미분(점선)을 봅니다. ReLU의 단순함이 왜 딥러닝을 살렸는지 느껴보세요.
| 이름 | 식 | 장점 | 단점 |
|---|---|---|---|
| Sigmoid | $1/(1+e^{-x})$ | 확률 해석, 부드러움 | 기울기 소실, 0 중심 아님 |
| tanh | $\tanh(x)$ | 0 중심, 포화 면 살짝 낫 | 여전히 양 끝 포화 |
| ReLU | $\max(0,x)$ | 계산 빠름, 양쪽에서 기울기 안정 | 죽은 ReLU 문제 |
| Leaky ReLU | $x$ if $x>0$ else $0.01x$ | ReLU 죽음 완화 | 아주 약간의 계산 비용 |
| GELU/Swish | $x\sigma(x)$ 류 | Transformer에서 표준 | 약간 더 느림 |
4.1 시그모이드 vs ReLU — 왜 딥러닝의 주류가 바뀌었나
1990년대 중반까지 시그모이드와 tanh가 표준이었습니다. 그런데 2010년대 들어 ReLU가 지배적 선택이 되었습니다. 그 이유는 크게 세 가지입니다:
- 기울기 소실 문제 — 시그모이드의 미분 최댓값은 0.25($z=0$에서). 깊은 망에서 $n$층을 지나면 기울기가 $0.25^n$으로 곱해져, 10층이면 $10^{-6}$ 수준으로 증발합니다. ReLU는 양수 영역에서 미분이 항상 1이므로 기울기가 그대로 전달됩니다. 이 차이가 10층 이상의 깊은 망을 실제로 학습시킬 수 있게 만들었습니다. 자세한 수학은 W8 §역전파에서.
- 계산 속도 — 시그모이드는 지수함수가 필요하고 부동소수점 연산이 수십 사이클 소요되지만, ReLU는 "max(0, x)" 한 번이면 끝. GPU에서는 100배 이상 차이가 납니다.
- 희소성(sparsity) — ReLU는 음수 입력을 0으로 잘라내 출력이 자연스럽게 희소해집니다. 이것이 규제 효과를 내서 일반화를 돕는다는 경험적 관찰이 있습니다.
그러나 ReLU도 완벽하지 않습니다. 가중치가 나쁘게 초기화되거나 학습률이 너무 커서 한 뉴런이 항상 음수를 받게 되면, 그 뉴런은 영원히 0을 출력하고 기울기도 0이 되어 "죽은 ReLU" 문제가 발생합니다. 이를 완화하기 위해 음수 영역에서도 약간의 기울기를 두는 Leaky ReLU, PReLU, ELU 등이 제안되었고, 최근 Transformer 계열에서는 GELU나 Swish가 표준으로 자리잡았습니다.
4.2 보편 근사 정리 (Universal Approximation Theorem)
1989년 George Cybenko는 놀라운 정리를 증명했습니다: 비선형 활성함수를 가진 한 개의 은닉층으로도, 충분히 많은 뉴런이 있으면 어떤 연속 함수든 원하는 정확도로 근사할 수 있다.
이 정리는 "신경망은 어떤 복잡한 함수도 배울 수 있다"는 이론적 기초를 제공합니다. 하지만 두 가지 단서가 있습니다:
- "충분히 많은 뉴런"이 얼마나 많아야 하는지는 말해주지 않음. 실제로 어떤 함수는 1층으로 표현하려면 기하급수적으로 많은 뉴런이 필요
- "존재한다"고만 말하지 어떻게 학습하는지는 말하지 않음
그래서 실전에서는 한 층을 넓게보다 여러 층을 깊게가 훨씬 효율적임을 발견했고, 이것이 "Deep Learning"이라는 이름의 기원입니다. 깊이가 각 층마다 특징 추상화의 단계를 만들어 파라미터 수를 효율적으로 씁니다.
5. MLP가 XOR을 푸는 방법
앞서 §2.1에서 직관으로 설명했듯, 은닉층의 뉴런 한 개가 "$x_1$ AND NOT $x_2$"를 학습하고 다른 한 개가 "NOT $x_1$ AND $x_2$"를 학습한 뒤, 출력층이 두 결과를 OR하면 XOR이 됩니다. 다른 방식으로 말하면, 첫 층이 입력 공간을 "두 영역"으로 나누어 새로운 2차원 공간을 만들고, 그 공간에서 XOR이 선형 분리 가능해지는 것입니다.
수식으로 한 가능한 해답:
$$ h_1 = \text{ReLU}(x_1 - x_2 - 0.5), \quad h_2 = \text{ReLU}(-x_1 + x_2 - 0.5) $$ $$ y = h_1 + h_2 > 0 ? 1 : 0 $$이 설정이 XOR의 네 입력에 대해 어떻게 동작하는지 손으로 검증해 보세요 — $h_1, h_2$ 둘 중 하나가 정확히 XOR이 1인 경우에만 양수가 되고 0인 경우에는 둘 다 0이 됩니다. 이것이 "은닉층이 만드는 새로운 표현"의 가장 단순한 예시입니다.
🎮 인터랙티브: 작은 MLP가 XOR을 학습
2-2-1 구조의 작은 신경망이 XOR을 학습합니다. "학습"을 누르면 결정경계가 점점 휘어집니다.
6. 코드 예제
from sklearn.neural_network import MLPClassifier
import numpy as np
X = np.array([[0,0],[0,1],[1,0],[1,1]])
y = np.array([0,1,1,0]) # XOR
clf = MLPClassifier(hidden_layer_sizes=(2,), activation='tanh',
solver='lbfgs', max_iter=2000)
clf.fit(X, y)
print(clf.predict(X)) # [0 1 1 0]
📖 더 깊이 공부하기
- Sung Kim Lec 8 — XOR 이야기를 가장 친절하게.
- Perceptrons — Minsky·Papert (1969). 신경망을 죽인 그 책.
- Universal Approximation Theorem — 은닉층이 충분하면 어떤 함수든 근사 가능.
- Goodfellow Deep Learning, 6장 — 활성함수 비교의 표준.