이번 포스트에서는 단순한 Logistic Regression으로는 풀 수 없는 XOR 문제를 Neural Network로 해결하는 방법을 알아보겠습니다.
이 문제가 딥러닝의 역사에서 매우 중요한 의미를 가집니다.
XOR 문제란?
XOR은 두 입력이 다를 때만 1, 같을 때는 0이 나오는 연산입니다.
x1 x2 XOR
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
왜 하나의 Logistic Regression으로는 안 될까?
지금까지 배운 Logistic Regression은 하나의 직선(Decision Boundary) 으로 데이터를 나눕니다.
x2
↑
1 | o x
|
0 | x o
+--------→ x1
0 1
XOR 데이터는 어떤 직선 하나로도 o와 x를 깔끔하게 나눌 수 없습니다.
이것이 수학적으로 증명되었고, 이 때문에 많은 사람들이 "뉴럴 네트워크는 안 된다"고 믿었던 계기가 되었습니다.
Multiple Logistic Regression Units
하나가 안 된다면 두 개 또는 세 개를 합치면 가능합니다.
x1 ─┬─[Unit 1 : sigmoid]─ y1 ─┐
│ ├─[Unit 3 : sigmoid]─ y
x2 ─┼─[Unit 1 : sigmoid]─ y1 ─┘
│
x1 ─┤
│
x2 ─┴─[Unit 2 : sigmoid]─ y2 ─┐
├─[Unit 3 : sigmoid]─ y
y2 ─┘
하지만 레이어가 많아지면 각각의 W, b를 학습하는 것이 불가능하다는 문제가 있었습니다.
(이후 Backpropagation으로 해결됩니다)
직접 계산으로 이해하기
아래 W, b 값으로 XOR을 풀어봅시다.
Layer 1 (두 개의 유닛)
Unit 1 : W = [5, 5], b = -8
Unit 2 : W = [-7, -7], b = 3
Layer 2 (출력)
Unit 3 : W = [-11, -11], b = 6
x1=0, x2=0 일 때
Layer 1 계산:
Unit 1 : (0×5) + (0×5) - 8 = -8 → sigmoid(-8) ≈ 0 → y1 = 0
Unit 2 : (0×-7) + (0×-7) + 3 = 3 → sigmoid(3) ≈ 1 → y2 = 1
Layer 2 계산:
Unit 3 : (0×-11) + (1×-11) + 6 = -5 → sigmoid(-5) ≈ 0 → y = 0 ✅ (XOR 정답 : 0)
전체 결과 확인
x1 x2 y1 y2 y (예측) XOR (정답)
| 0 | 0 | 0 | 1 | 0 | 0 ✅ |
| 0 | 1 | 0 | 0 | 0 | 1 - |
| 1 | 0 | 1 | 0 | 0 | 1 - |
| 1 | 1 | 1 | 0 | 1 | 0 - |
위 W, b 값은 개념 설명용 예시입니다. 실제 학습을 통해 최적의 W, b를 찾아야 합니다.
Matrix로 표현하기
이 구조는 지난 포스트에서 배운 Multi-variable Classification 과 유사합니다.
Layer 1 을 행렬로:
x = [x1, x2]
W = [ 5, -7] b = [-8, 3]
[ 5, -7]
xW + b → sigmoid → [y1, y2]
x와 W를 행렬 곱하고 b를 더한 뒤 sigmoid를 통과시키면 y1, y2가 한 번에 나옵니다.
Layer 2 를 행렬로:
[y1, y2] * W + b → sigmoid → y
W = [-11] b = 6
[-11]
Neural Network 수식
이 전체 구조를 수식으로 표현하면:
K(X) = sigmoid(XW₁ + b₁) ← Layer 1 (Hidden Layer)
y = H(X) = sigmoid(K(X)W₂ + b₂) ← Layer 2 (Output Layer)
- K(X) : 첫 번째 레이어의 출력 (Hidden Layer)
- H(X) : 최종 출력값
- 각 레이어에서 Linear 연산 → Sigmoid 를 반복합니다
이것이 바로 Neural Network(신경망) 의 기본 구조입니다.
전체 흐름 정리
입력 X (x1, x2)
↓
Layer 1 : K(X) = sigmoid(XW₁ + b₁)
→ 두 개의 유닛이 각각 특징을 추출
↓
Layer 2 : H(X) = sigmoid(K(X)W₂ + b₂)
→ 추출된 특징으로 최종 분류
↓
XOR 문제 해결! ✅
정리
개념 설명
| XOR 문제 | 단일 Logistic Regression으로는 풀 수 없는 분류 문제 |
| Multiple Units | 여러 유닛을 합치면 XOR 해결 가능 |
| Hidden Layer | 입력과 출력 사이의 중간 레이어 K(X) |
| Neural Network | 여러 레이어를 쌓아 복잡한 문제를 푸는 구조 |
| NN 수식 | K(X) = sigmoid(XW₁+b₁), H(X) = sigmoid(K(X)W₂+b₂) |
단순한 직선 하나로 풀 수 없던 XOR 문제를 Neural Network로 해결할 수 있다는 것이 딥러닝 발전의 중요한 시작점이 되었습니다. 🚀
'AI > ML' 카테고리의 다른 글
| XOR 문제 Neural Network로 구현하기 (TensorFlow) (0) | 2026.03.21 |
|---|---|
| Backpropagation : 역전파 알고리즘 (0) | 2026.03.21 |
| Overfitting : 과적합 이해하고 해결하기 (0) | 2026.03.13 |
| 머신러닝 학습 팁 : Learning Rate, 데이터 전처리 (0) | 2026.03.12 |
| Softmax Classifier : 실제 데이터로 동물 분류하기 (TensorFlow) (0) | 2026.03.11 |