5. 다층 신경망

5장 다층 신경망 개요

4장에서 살펴본 단층 신경망은 XOR과 같은 선형 분리 불가능 문제를 해결할 수 없었다. 이를 해결하기 위해 은닉층(hidden layer) 을 추가한 다층 신경망(Multi-Layer Network) 이 등장했고, 핵심 학습 방법인 오차 역전파(Back-Propagation, BP) 알고리즘과 개선 알고리즘들을 공부한다.

5.1 다층 신경망의 기능 및 구조

단층 신경망이 하나의 직선으로 패턴을 분리했다면, 다층 신경망은 여러 개의 경계선을 조합해서 복잡한 영역을 분리할 수 있다.

  • 2차원: 여러 직선이 만드는 볼록 영역 / 비볼록 영역을 분리
  • 3차원: 평면을 조합한 다면체 영역을 분리

예를 들어 2차원에서 그룹 1 {A, D}, 그룹 2 {B, C, E}를 분리하려면 3개의 경계선이 필요하다. 이때 은닉층 뉴런 3개가 각각 하나의 경계선을 담당하고, 출력층에서 이들을 조합한다.

기본 구조:

  • 입력층(input): 외부 입력 받음
  • 은닉층(hidden): 입력의 좌표값을 변환, 그룹별 판정값 계산
  • 출력층(output): A, D vs B, C, E 등으로 최종 분류

다층 신경망 구조 및 XOR 예제

예제 5.1 (p.181) — XOR 연산 (다층 신경망)

input x₁ x₂ 1
A 0 0 1 -1
B 0 1 1 1
C 1 0 1 1
D 1 1 1 -1

주의: bias는 XOR 연산 표시 X

경계선 1: $-x_1 + x_2 - \frac{1}{2} = 0$ → $w_0 = [-1, 1, -\frac{1}{2}]$
경계선 2: $x_1 - x_2 - \frac{1}{2} = 0$ → $w_0 = [1, -1, -\frac{1}{2}]$

두 경계선으로 부분 신경망을 각각 설계한 뒤, 두 결과를 합쳐 다층 신경망을 구성한다. 최종 조합은 $y_1 + y_2 + 1 = 0$ 형태로 합성된다.

증명

$y_1, y_2, y_3$는 양극성 계단함수($T=0$)를 사용하는 Perceptron이며 출력 $y$는 다음과 같다.

$$y = \begin{cases} 1 & (\text{Net} > T) \\ 0 & (\text{Net} = T) \\ -1 & (\text{Net} < T) \end{cases}$$

입력 $X_A = [0, 0, 1]$에 대해:

$$\text{Net}_{1A} = [0,0,1]\begin{bmatrix}-1\\1\\-1/2\end{bmatrix} = -1/2 \to y_{1A} = -1$$

$$\text{Net}_{2A} = [0,0,1]\begin{bmatrix}1\\-1\\-1/2\end{bmatrix} = -1/2 \to y_{2A} = -1$$

$$\text{Net}_{3A} = [-1,-1,1]\begin{bmatrix}1\\1\\1\end{bmatrix} = -1 \to y_{3A} = -1$$

같은 방식으로 $X_B, X_C, X_D$를 계산하면 XOR 결과가 정확히 나온다. 최종 가중치: $W_1 = [-1, 1, -1/2]$, $W_2 = [1, -1, -1/2]$, $W_3 = [1, 1, 1]$.

5.2 MADALINE

MADALINE (Many ADALINE): 여러 개의 ADALINE을 결합한 다층 구조. 3장의 ADALINE 학습법(LMS)을 다층으로 확장한 것이다.

  • 여러 ADALINE의 출력을 MAJORITY vote 또는 AND/OR 게이트로 합성
  • 은닉층에서 여러 개의 선형 경계선을 학습 → 결합해서 복잡한 비선형 경계 생성
  • XOR 같은 문제를 풀기 위한 초기 다층 학습 기법 중 하나

다층 구조 상세 및 MADALINE

5.3 오차 역전파 (Back-Propagation) 알고리즘

Backward Propagation algorithm of errors. 다층 신경망의 핵심 학습 알고리즘. 전체 과정은 두 단계로 나뉜다.

  1. Feedforward phase: 입력 → 은닉층 → 출력층 순으로 계산해서 출력 $y$를 구함
  2. Backward phase: 출력에서 나온 오차 $E$를 이용해 출력층 → 은닉층 → 입력층 방향으로 가중치 업데이트

활성화 함수

BP 학습에서는 미분 가능한 AF가 필요하다 (계단함수는 미분 불가능). 대표적으로:

  • Sigmoid: $f(x) = \frac{1}{1 + e^{-\lambda x}}$ — 출력 범위 $[0, 1]$
  • Bipolar sigmoid: $f(x) = \frac{2}{1 + e^{-\lambda x}} - 1$ — 출력 범위 $[-1, 1]$

시그모이드의 도함수 $f'(x) = \lambda \cdot f(x)(1 - f(x))$ 처럼 자기 자신으로 표현 가능하기 때문에 계산 효율이 좋다.

활성화 함수 및 BP 전개

학습 과정

오차 함수:

$$E = \frac{1}{2}\sum_{k=1}^{M}(y_k^d - y_k)^2$$

출력층 가중치 업데이트 (Gradient descent):

$$\Delta w_{jk} = -\lambda \frac{\partial E}{\partial w_{jk}} = \lambda (y_k^d - y_k) f'(\text{Net}_k) z_j$$

여기서 $z_j$는 은닉층 출력, $\delta_k = (y_k^d - y_k)f'(\text{Net}_k)$ 을 출력층 delta로 정의한다.

은닉층 가중치 업데이트: 출력층 delta를 역전파해서

$$\delta_j = f'(\text{Net}_j) \sum_k \delta_k w_{jk}$$

$$\Delta v_{ij} = \lambda \delta_j x_i$$

의 형태로 은닉층의 델타를 계산하고 가중치를 업데이트한다. Sigmoid 사용 시 $f'$이 자기 자신으로 표현되므로 계산이 편하다.

BP 알고리즘 상세 수식

XOR 예제 BP 학습

앞서 경계선 두 개로 설계했던 XOR 구조를 학습으로 얻는다. 초기 가중치를 random하게 설정한 뒤 입력 패턴 A, B, C, D에 대한 forward 계산 → 오차 → backward 가중치 업데이트를 반복.

주요 계산 흐름 (요약):

  • $\text{Net}_j = \sum x_i v_{ij}$, $z_j = f(\text{Net}_j)$
  • $\text{Net}_k = \sum z_j w_{jk}$, $y_k = f(\text{Net}_k)$
  • $\delta_k = (y_k^d - y_k) f'(\text{Net}_k)$
  • $\delta_j = f'(\text{Net}_j) \sum \delta_k w_{jk}$
  • $w_{jk} \leftarrow w_{jk} + \lambda \delta_k z_j$
  • $v_{ij} \leftarrow v_{ij} + \lambda \delta_j x_i$

BP 학습 예제 계산

5.4 은닉층 뉴런 수 (p.211)

은닉층 뉴런 수는 너무 적으면 표현력 부족, 너무 많으면 과적합과 학습 속도 저하가 생긴다. 경험적 추정식과 몇 가지 지침:

입력 패턴 공간의 선형 분할 영역

입력 공간이 $P$개 영역으로 나뉠 때 은닉층 뉴런 수는 대략 $P = \log_2 8 = 3$개가 적당. 즉 출력 분류 수에 로그를 취한 값 정도.

입력 패턴의 표현 방법

예: ㄱ, ㄴ, ㄷ 같은 글자를 3×3 격자로 입력:

  • (a) $n = 9$ (행렬로 표현)
  • ㄱ → $X = [111, 001, 001]$, $y^d = [1, 0, 0]$
  • ㄴ → $X = [100, 100, 111]$, $y^d = [0, 1, 0]$
  • ㄷ → $X = [111, 100, 111]$, $y^d = [0, 0, 1]$
  • 입력층 9개, 출력층 3개 → 은닉층 $P = \log_2 3 \approx 2$개 (반올림 3개)
  • 전체 연결 강도 수 (bias 포함): $(9+1) \times 2 + (2+1) \times 3 = 29$개
  • (b) $n = 2$ (좌표로 표현)
  • 각 글자의 검은 칸 좌표만 입력 → 입력층 2개
  • 학습 패턴 수 증가 (9개)
  • 전체 연결 강도 수: $(2+1) \times 2 + (2+1) \times 3 = 15$개 → 더 적은 수로 표현 가능

학습률 및 학습 패턴 수 (p.217)

  • 학습률 $\lambda$: $0.001 \sim 10$ 내의 값, 연결 강도를 조정하는 scaling factor, 수렴 속도에 영향
  • 학습 패턴 수 (E. Baum & D. Haussler):

$$P = \frac{N}{1-a}$$

($N$: 연결 강도 수, $a$: 정확도 accuracy)

  • 예) $a = 0.1 \to P = \frac{6}{1-0.1} \approx 6$
  • $a = 0.3 \to P = \frac{6}{1-0.3} \approx 8$
  • 학습 패턴이 많을수록 학습 속도 ↓, 정확도 ↑
  • 학습 속도: 양극성 data > 이진 data

은닉층 뉴런 수 및 학습률

5.5 개선된 BP 알고리즘 (p.220)

기본 BP는 학습 속도가 느리고 local minimum에 빠질 수 있다. 이를 개선한 두 가지 대표 알고리즘:

① 모멘텀(Momentum) BP 알고리즘

이전 단계의 연결강도 변화량을 보조적으로 활용해서 학습 관성을 주는 방식.

$$v^{k+1} = v^k + \Delta v^k = v^k + \lambda \delta_j X^k + \beta \Delta v^{k-1}$$

$$w^{k+1} = w^k + \Delta w^k = w^k + \lambda \delta_k Z^k + \beta \Delta w^{k-1}$$

$\beta$는 모멘텀 계수 (보통 $0 \sim 0.8$). 추가적으로 사용하며 이전 업데이트 방향을 기억해 진동을 줄이고 안정적으로 수렴하게 한다.

② 적응식 학습률 BP 알고리즘 (p.223)

연결강도 변화 상황에 따라 학습률 $\lambda$를 적응적으로 변경. 너무 작게/크게 잡았을 때 생기는 문제를 잡기 위해 상황에 따라 바꿔준다.

Δ-$\bar{\Delta}$ (delta-bar-delta) 방법

출력층:

$$\Delta w \triangleq -\delta_k Z^k, \quad \overline{\Delta w} \triangleq (1-\beta)\Delta w + \beta \overline{\Delta w^{k-1}}$$

은닉층:

$$\Delta v \triangleq -\delta_j X^k, \quad \overline{\Delta v} \triangleq (1-\beta)\Delta v + \beta \overline{\Delta v^{k-1}}$$

학습률 업데이트 규칙:

$$\lambda^{k+1} = \begin{cases} \lambda^k + \kappa & (\overline{\Delta^{k-1}}(\Delta^k)^T > 0) \\ (1+r)\lambda^k & (\overline{\Delta^{k-1}}(\Delta^k)^T < 0) \\ \lambda^k & (\overline{\Delta^{k-1}}(\Delta^k)^T = 0) \end{cases}$$

($\kappa, r, \beta$는 임의의 상수)

성능 비교 (XOR 연산)

학습 방법 학습 시도 횟수 학습 성공 횟수 반복 평균 표준편차
BP 알고리즘 25 24 16859.8 10866.3
모멘텀 BP 25 25 2056.9 1051.2
delta-bar-delta 25 22 447.3 258.2

임의 초기값(랜덤)으로 221회/661회 시도한 결과, delta-bar-delta가 반복 평균이 가장 빠르지만 학습 성공 횟수는 약간 떨어진다. 모멘텀 BP가 안정성과 속도 모두에서 균형이 좋다.

개선된 BP 알고리즘 및 성능 비교

정리

기법 핵심 아이디어
다층 구조 은닉층 도입으로 비선형 분리 가능
BP 알고리즘 오차를 출력→입력 방향으로 역전파, gradient descent로 가중치 업데이트
모멘텀 BP 이전 변화량 $\beta \Delta w^{k-1}$ 추가해 관성 부여
적응식 BP (Δ-Δ̄) 학습률 $\lambda$를 상황에 맞게 증감

다층 신경망 + BP의 등장으로 XOR 같은 선형 분리 불가능 문제까지 학습으로 해결할 수 있게 되었으며, 이후 CNN/RNN 같은 심층 구조의 기반이 된다.

비슷한 글 추천

Comments (0)

No comments yet. Be the first to comment!