30.37 순환 신경망(RNN)에서의 기울기 폭발/소실과 야코비안 행렬의 고유값

30.37 순환 신경망(RNN)에서의 기울기 폭발/소실과 야코비안 행렬의 고유값

1. 순환 신경망의 상태 전이 구조

순환 신경망(Recurrent Neural Network, RNN)의 기본 상태 전이 방정식은

h_t = f(W_h h_{t-1} + W_x x_t + b)

이다. 여기서 h_t \in \mathbb{R}^d는 시각 t에서의 은닉 상태, W_h \in M_{d \times d}(\mathbb{R})는 순환 가중치 행렬, W_x는 입력 가중치 행렬, x_t는 입력, b는 편향, f는 원소별 활성화 함수이다.

시각 T에서의 손실 L_T에 대한 시각 t의 은닉 상태 h_t (t < T)에 대한 기울기는 연쇄 법칙에 의하여

\frac{\partial L_T}{\partial h_t} = \frac{\partial L_T}{\partial h_T} \prod_{k=t+1}^{T} \frac{\partial h_k}{\partial h_{k-1}}

로 계산된다. 이 야코비안 곱의 거동이 기울기 문제의 핵심이다.

2. 야코비안 행렬의 구조와 고유값

상태 전이의 야코비안 행렬은

J_k = \frac{\partial h_k}{\partial h_{k-1}} = \operatorname{diag}(f'(z_k)) \, W_h

이다. 여기서 z_k = W_h h_{k-1} + W_x x_k + b이고, \operatorname{diag}(f'(z_k))는 활성화 함수의 도함수를 대각 성분으로 갖는 행렬이다.

T - t 시간 단계에 걸친 야코비안의 곱

\prod_{k=t+1}^{T} J_k = \prod_{k=t+1}^{T} \operatorname{diag}(f'(z_k)) \, W_h

의 특이값이 기울기의 증폭/감쇠를 결정한다.

2.1 단순화된 분석

활성화 함수의 도함수를 상수 \gamma로 근사하면 (f'(z_k) \approx \gamma)

\prod_{k=1}^{T} J_k \approx (\gamma W_h)^T

W_h의 고유값을 \lambda_1, \ldots, \lambda_d라 하면 (\gamma W_h)^T의 고유값은 (\gamma \lambda_i)^T이다. 따라서:

  • \lvert \gamma \lambda_i \rvert < 1: 해당 방향의 기울기가 T에 대하여 지수적으로 감쇠한다. 기울기 소실(vanishing gradient).
  • \lvert \gamma \lambda_i \rvert > 1: 해당 방향의 기울기가 지수적으로 증폭된다. 기울기 폭발(exploding gradient).
  • \lvert \gamma \lambda_i \rvert = 1: 기울기의 크기가 보존된다.

3. 기울기 소실의 고유값 분석

\tanh 활성화 함수에서 \lvert f'(z) \rvert = 1 - \tanh^2(z) \leq 1이므로 \gamma \leq 1이다. 따라서 \rho(W_h) \leq 1이면 모든 방향에서 \lvert \gamma \lambda_i \rvert \leq 1이 되어 기울기가 소실한다. 더 구체적으로:

\left\lVert \prod_{k=1}^{T} J_k \right\rVert \leq \prod_{k=1}^{T} \lVert J_k \rVert \leq (\gamma \cdot \sigma_{\max}(W_h))^T

\gamma \cdot \sigma_{\max}(W_h) < 1이면 기울기 노름이 지수적으로 감소하며, 시간 간격 T - t가 클수록 기울기가 급속히 소실된다. 이것이 바닐라 RNN에서 장기 의존성(long-term dependency) 학습이 어려운 근본 원인이다.

4. 기울기 폭발의 고유값 분석

\sigma_{\max}(W_h) > 1/\gamma이면 야코비안 곱의 노름이 지수적으로 증가할 수 있다. 기울기 폭발은 매개변수 갱신에서 극단적으로 큰 단계를 유발하여 학습을 불안정하게 만든다.

기울기 폭발에 대한 표준적 대응은 **기울기 클리핑(gradient clipping)**이다:

\hat{g} = \begin{cases} g & \text{if } \lVert g \rVert \leq \tau \\ \tau \cdot g / \lVert g \rVert & \text{if } \lVert g \rVert > \tau \end{cases}

이는 기울기의 방향을 보존하면서 크기만 임계값 \tau로 제한한다. 그러나 기울기 소실에 대하여는 효과가 없다.

5. 순환 가중치 행렬의 스펙트럼 제어

5.1 직교 초기화

순환 가중치 행렬 W_h를 직교 행렬로 초기화하면 모든 특이값이 1이므로, W_h^T의 특이값도 모두 1이다. 이는 기울기의 초기 보존을 보장한다. 그러나 학습 과정에서 W_h가 직교성을 잃을 수 있다.

5.2 유니터리/직교 제약 RNN

Arjovsky, Shah, Bengio (2016)의 유니터리 RNN은 순환 가중치 행렬을 유니터리 행렬로 매개변수화하여, 학습 전 과정에 걸쳐 \lvert \lambda_i \rvert = 1을 유지한다. 이를 위하여 유니터리 행렬을 하우스홀더 반사, 기븐스 회전, 대각 유니터리 행렬 등의 곱으로 매개변수화한다.

5.3 항등 초기화

Le et al. (2015)의 IRNN(Identity RNN)은 W_h = I로 초기화하고 ReLU 활성화를 사용한다. 이 초기화에서 W_h의 모든 고유값이 1이므로 초기 기울기가 보존된다.

6. LSTM의 게이트 메커니즘과 고유값

LSTM의 셀 상태 전이는

c_t = f_t \odot c_{t-1} + i_t \odot \tilde{c}_t

이며, 셀 상태에 대한 야코비안은

\frac{\partial c_t}{\partial c_{t-1}} = \operatorname{diag}(f_t)

이다. 망각 게이트 f_t \in (0, 1)^d의 각 성분이 이 대각 야코비안의 고유값이다. f_t의 성분이 1에 가까우면 해당 방향의 기울기가 보존되어 장기 의존성 학습이 가능해진다.

이를 고유값 관점에서 보면, LSTM은 상태 전이 야코비안의 고유값을 **입력 의존적(input-dependent)**으로 (0, 1) 범위에서 적응적으로 조절하는 메커니즘이다.

7. 리야프노프 지수(Lyapunov Exponent)

야코비안 곱의 장기 거동은 최대 리야프노프 지수

\lambda_{\max}^{\text{Lyap}} = \lim_{T \to \infty} \frac{1}{T} \ln \left\lVert \prod_{k=1}^{T} J_k \right\rVert

에 의하여 특성화된다. \lambda_{\max}^{\text{Lyap}} < 0이면 기울기 소실, \lambda_{\max}^{\text{Lyap}} > 0이면 기울기 폭발, \lambda_{\max}^{\text{Lyap}} = 0이면 기울기 보존에 해당한다.

Pascanu, Mikolov, Bengio (2013)의 “On the difficulty of training recurrent neural networks“는 이 관점에서 RNN의 기울기 문제를 체계적으로 분석하였다.

8. 복소 고유값과 진동적 기울기

W_h가 비대칭이면 복소 고유값 \lambda = re^{i\theta}가 발생한다. 이 경우 \lambda^T = r^T e^{iT\theta}이므로, 기울기 성분은 주기 2\pi/\theta로 진동하면서 r^T에 비례하여 증폭/감쇠한다. r = 1이면 등폭 진동으로서 기울기 크기가 보존되나, 방향이 주기적으로 변한다.

고유값 조건r기울기 거동
실수, \lvert \lambda \rvert < 1r < 1지수 감쇠
실수, \lvert \lambda \rvert > 1r > 1지수 증폭
복소, r < 1r < 1진동하며 감쇠
복소, r > 1r > 1진동하며 증폭
복소, r = 1r = 1등폭 진동 (보존)