목차8개 항목
출처와 참고
팔만코딩경(42Seoul 커뮤니티 위키)의 「[인공지능] 퍼셉트론 학습 기초이론」, 「인공신경망(AI) 학습 기본 원리」를 바탕으로 재구성한 노트다. 역전파의 행렬 표기는 임성빈의 「Matrix calculus」로 보강했다.
인공 신경망과 퍼셉트론
인공 신경망(Artificial Neural Network, ANN)은 뇌의 신경세포가 신호를 주고받는 방식을 수학적으로 흉내 낸 모델이다. 그 최소 단위가 퍼셉트론(perceptron) 으로, 1958년 로젠블랫(Rosenblatt)이 제안하고 학습이 가능함을 보였다. 오늘날의 딥러닝 모델도 결국 이 단위를 아주 많이, 깊게 쌓은 것이다.
퍼셉트론의 구조
flowchart LR
x0["x₀ = 1"] -->|"w₀(편향)"| s
x1["x₁"] -->|"w₁"| s
x2["x₂"] -->|"w₂"| s
xd["⋮<br/>x_d"] -->|"w_d"| s
s["s = Σ wᵢ·xᵢ<br/>가중합"] --> t["τ(s)<br/>활성화 함수"]
t --> y["y ∈ {-1, +1}"]| 요소 | 역할 |
|---|---|
| 입력층 | 특징 벡터 x의 d개 값 + 항상 1인 입력 x₀. x₀ 덕분에 임계값(threshold)을 가중치 w₀(편향, bias)로 함께 학습한다 |
| 가중치 w | 입력마다 곱하는 값. 학습으로 찾는 매개변수다 |
| 활성화 함수 τ | 가중합을 출력으로 바꾼다 |
| 출력층 | 노드 하나의 이진 출력 → 두 부류 분류기 |
가중합 wᵀx = 0은 특징 공간을 둘로 나누는 초평면이다. 그래서 퍼셉트론은 선형 분류기다.
활성화 함수
| 함수 | 식 | 특징 |
|---|---|---|
| 계단(step) | s ≥ 0이면 1, 아니면 -1(또는 0) | 원조 퍼셉트론. 미분할 수 없어 경사 기반 학습에 쓰기 어렵다 |
| 시그모이드(sigmoid) | 1 / (1 + e^(-s)) | 매끄럽고 미분할 수 있다. 양극형 tanh는 [-1, 1] 범위 |
| ReLU | max(0, s) | 현대 심층 신경망의 기본값. 깊어져도 기울기가 잘 사라지지 않는다 |
퍼셉트론 학습
패턴 인식의 학습 알고리즘은 세 단계로 설계한다. 이 틀은 머신 러닝의 네 단계 추상화와 같은 구조다.
| 단계 | 퍼셉트론에서 |
|---|---|
| 1. 분류기 구조와 식 정의 | y = τ(wᵀx), 매개변수는 w |
| 2. 품질을 재는 비용 함수 J(w) 정의 | 오분류된 샘플 집합 Y에 대해 J(w) = Σ_{x∈Y} (−t·wᵀx). 항상 0 이상이고, 오분류가 많고 심할수록 커진다 |
| 3. J를 최소화하는 알고리즘 | 경사 하강법: w ← w − ρ·∂J/∂w (ρ는 학습률) |
비용 함수를 미분해 정리한 갱신식을 델타 규칙(delta rule) 이라 한다.
w ← w + ρ · Σ_{x∈Y} t·x (t = 정답 부류 +1 / -1)이 비용 함수는 봉우리가 하나(uni-modal)여서 지역 최적에 빠지지 않는다. 데이터가 선형 분리 가능하면 유한 번 안에 수렴한다.
| 방식 | 갱신 시점 | 종료 조건 |
|---|---|---|
| 배치 모드 | 전체(또는 배치)를 돌며 오분류 샘플을 모은 뒤 한 번에 | 오분류 집합 Y가 빈다 |
| 패턴 모드 | 샘플 하나를 넣을 때마다, 틀렸으면 즉시 | 한 바퀴 동안 모든 샘플을 맞힌다 |
오늘날의 미니배치 확률적 경사 하강법(SGD)은 두 방식의 절충이다.
퍼셉트론의 한계: XOR
XOR은 (0,0)·(1,1)이 한 부류, (0,1)·(1,0)이 다른 부류다. 평면 위의 직선 하나로는 이 넷을 나눌 수 없다. 선형 분리가 불가능한 문제는 퍼셉트론 하나로 풀 수 없다. 이 한계가 알려지며 신경망 연구가 한동안 침체됐고, 해법은 퍼셉트론을 여러 층으로 쌓는 것이었다.
다층 퍼셉트론(MLP)
다층 퍼셉트론(Multi-Layer Perceptron)은 입력층과 출력층 사이에 은닉층(hidden layer) 을 둔다. 층과 층 사이 노드가 모두 연결되어 있어 완전 연결 층(fully connected layer)이라고도 한다.
flowchart LR X["입력층 x (d+1)"] -->|"U<br/>u_ij: 입력 i → 은닉 j"| Z["은닉층 z (p+1)"] Z -->|"V<br/>v_jk: 은닉 j → 출력 k"| O["출력층 o (c)"]
z_j = τ( Σᵢ u_ij·xᵢ ) o_k = τ( Σⱼ v_jk·z_j )- 은닉층이 입력 공간을 비선형으로 접어 펴 주므로 XOR 같은 문제도 나뉜다.
- 층 하나의 가중치는 행렬 하나다. 256 → 128 완전 연결 층의 매개변수 수는
256 × 128 + 128(편향) = 32,896개다. - 활성화 함수는 반드시 미분할 수 있어야 한다. 오차를 층을 거슬러 전달하려면 기울기를 계산해야 하기 때문이다.
오류 역전파 알고리즘
MLP의 비용 함수는 보통 출력과 정답의 제곱 오차 합 J = ½ Σ_k (t_k − o_k)²이다. 이 J를 각 가중치로 미분한 값을 연쇄 법칙(chain rule)으로 출력층에서 입력층 방향으로 차례로 구하는 것이 오류 역전파(backpropagation)다.
반복 (최대 epoch 또는 오류율 기준 도달까지):
각 훈련 샘플 (x, t)에 대해
1. 전방 계산 x → z → o
2. 출력층 오차 δ_k = (t_k − o_k) · τ'(o_k)
3. 은닉층 오차 η_j = τ'(z_j) · Σ_k δ_k·v_jk ← 출력 오차를 거꾸로 나눠 받음
4. 가중치 갱신 v_jk += ρ·δ_k·z_j, u_ij += ρ·η_j·xᵢ층이 L개인 일반 신경망에서는 같은 계산을 행렬로 한 번에 쓴다. 층 ℓ의 출력은 z_ℓ = f(W_ℓ z_{ℓ−1}), 입력은 z₀ = x다.
출력층 오차: δ_L = f'(W_L z_{L−1}) ⊙ ∇_ŷ L
뒤로 전파: δ_ℓ = f'(W_ℓ z_{ℓ−1}) ⊙ (W_{ℓ+1}ᵀ δ_{ℓ+1})
가중치 기울기: ∂L/∂W_ℓ = δ_ℓ z_{ℓ−1}ᵀ ← (d_ℓ × d_{ℓ−1}), W_ℓ와 같은 모양
갱신: W_ℓ ← W_ℓ − α · ∂L/∂W_ℓ⊙는 원소별 곱이다. 기울기 행렬이 가중치 행렬과 같은 모양인지 차원을 맞춰 보면 유도 실수를 잡을 수 있다. 손실은 회귀면 평균 제곱 오차, 이진 분류면 교차 엔트로피 −[y log ŷ + (1 − y) log(1 − ŷ)]의 배치 평균을 쓴다.
PyTorch·TensorFlow 같은 프레임워크는 이 미분을 자동 미분(autograd)으로 대신 계산한다. 직접 유도할 일은 드물지만, 기울기 소실·폭발 같은 학습 문제를 이해하려면 이 흐름을 알아야 한다.
정리
- 퍼셉트론은 가중합 + 활성화 함수로 이뤄진 선형 분류기다.
- 학습은 "구조 → 비용 함수 → 최적화" 세 단계로 설계하고, 경사 하강법으로 가중치를 고친다.
- 단층 퍼셉트론은 XOR처럼 선형 분리되지 않는 문제를 풀지 못한다.
- 은닉층을 쌓은 MLP와 오류 역전파가 그 한계를 넘었고, 이것이 딥러닝의 출발점이다.
- 층을 쌓는 힘은 비선형 활성화 함수에서 나온다. 선형 층만 쌓으면 결국 선형 변환 하나와 같다.
관련 노트: 머신 러닝 기초: 네 단계 추상화, 분류 모델 성능 평가 지표, 결정 트리와 앙상블, LLM은 무엇을 하고 왜 작동하나, 딥러닝 직관으로 이해하기