은닉 상태
은닉 상태 (Hidden State)
1. 개요
은닉 상태(Hidden State)란 순환 신경망(RNN, Recurrent Neural Network)과 같은 시퀀스 데이터 처리 모델에서 과거의 입력 정보를 압축하여 저장하고, 이를 다음 시점으로 전달하는 일종의 '내부 메모리' 역할을 하는 벡터이다. 시퀀스 데이터(텍스트, 음성, 주가 등)는 데이터의 순서가 중요한 특성을 가지는데, 은닉 상태는 현재 시점의 입력을 처리할 때 이전 시점까지의 맥락(Context)을 반영할 수 있게 함으로써 모델이 시간적 의존성을 학습할 수 있도록 돕는다.
2. 작동 원리 및 메커니즘
은닉 상태는 매 시점($t$)마다 업데이트되며, 현재의 입력값과 직전 시점의 은닉 상태를 결합하여 계산된다.
2.1 수학적 흐름
기본적인 RNN에서 시점 $t$의 은닉 상태 $h_t$는 다음과 같은 수식으로 정의된다.
$$h_t = \tanh(W_{hh}h_{t-1} + W_{xh}x_t + b_h)$$
- $W_{hh}$: 이전 상태에 곱해지는 가중치 행렬
- $W_{xh}$: 현재 입력에 곱해지는 가중치 행렬
- $x_t$: 현재 시점의 입력 벡터
- $h_{t-1}$: 이전 시점의 은닉 상태 벡터
- $b_h$: 편향(Bias)
- $\tanh$: 활성화 함수(Hyperbolic Tangent), 출력값을 -1과 1 사이로 제한하여 값의 폭주를 방지한다.
은닉 상태 $h_t$는 단순한 값이 아니라 벡터(Vector)이며, 이 벡터의 크기(hidden_size)는 모델의 '표현 용량(Capacity)'을 결정한다. 은닉 상태의 차원이 클수록 더 복잡한 정보를 저장할 수 있지만, 연산 비용이 증가하고 과적합(Overfitting)의 위험이 있다.
2.2 업데이트 과정 및 구조
- 입력 결합: 현재 입력 $x_t$와 이전 상태 $h_{t-1}$이 각각의 가중치와 곱해진 후 합산된다.
- 비선형 변환: 합산된 값에 $\tanh$ 함수를 적용하여 새로운 은닉 상태 $h_t$를 생성한다.
- 전달 및 출력: 생성된 $h_t$는 다음 시점 $t+1$의 입력으로 전달됨과 동시에, 필요에 따라 출력층으로 전달되어 예측값($y_t$)을 생성하는 데 사용된다.
[RNN 전개도 (Unrolled RNN)]
(그림: 시점 $t$마다 은닉 상태가 순차적으로 전달되는 RNN의 전개 구조)
3. 은닉 상태의 한계: 기울기 소실 문제
기본 RNN의 은닉 상태는 시퀀스의 길이가 길어질수록 초기 시점의 정보를 유지하기 어려운 장기 의존성(Long-Term Dependency) 문제를 겪는다.
3.1 기울기 소실 (Vanishing Gradient)
역전파(Backpropagation) 과정에서 가중치를 업데이트하기 위해 기울기(Gradient)를 계산할 때, 동일한 가중치 행렬이 반복적으로 곱해진다. 이때 가중치 값이 1보다 작으면 시퀀스가 길어질수록 기울기가 기하급수적으로 작아져 0에 수렴하게 되며, 결과적으로 초기 입력 정보가 현재의 은닉 상태에 반영되지 않는 현상이 발생한다.
4. 발전된 은닉 상태 관리 모델
기울기 소실 문제를 해결하기 위해 정보를 선택적으로 기억하거나 삭제하는 게이트(Gate) 메커니즘이 도입되었다.
4.1 LSTM과 셀 상태 (Cell State)
LSTM(Long Short-Term Memory)은 은닉 상태($h_t$) 외에 셀 상태($C_t$)라는 개념을 추가로 도입했다.
- 셀 상태(Cell State): 컨베이어 벨트와 같이 정보가 흐르는 통로로, 게이트를 통해 정보의 추가/삭제가 이루어지며 장기 기억을 보존한다.
- 은닉 상태(Hidden State): 셀 상태의 정보를 바탕으로 현재 시점에서 출력에 필요한 정보만을 필터링하여 전달하는 단기 기억 역할을 한다.
4.2 GRU (Gated Recurrent Unit)
GRU는 LSTM의 구조를 간소화하여 셀 상태와 은닉 상태를 하나로 통합하고, 업데이트 게이트(Update Gate)와 리셋 게이트(Reset Gate)만을 사용하여 연산 효율성을 높였다.
4.3 모델 구조 비교
| 구분 | RNN | LSTM | GRU |
|---|---|---|---|
| 상태 구성 | 은닉 상태 ($h_t$) | 셀 상태 ($C_t$) + 은닉 상태 ($h_t$) | 은닉 상태 ($h_t$) |
| 제어 메커니즘 | 없음 (단순 $\tanh$) | 3개 게이트 (Forget, Input, Output) | 2개 게이트 (Reset, Update) |
| 기억 능력 | 단기 기억 (소실 심함) | 장기/단기 기억 모두 가능 | 장기/단기 기억 가능 (효율적) |
| 연산 속도 | 매우 빠름 | 느림 (파라미터 많음) | 보통 |
5. 현대적 관점: Attention과 State
최근의 딥러닝 패러다임은 고정된 크기의 벡터 하나에 모든 과거 정보를 압축하는 방식에서 벗어나고 있다.
- 병목 현상(Bottleneck): 시퀀스가 매우 길 경우, 단 하나의 은닉 상태 벡터에 모든 정보를 밀어 넣는 과정에서 정보 손실이 발생한다.
- 어텐션(Attention) 메커니즘: 특정 시점의 출력을 생성할 때, 과거의 모든 은닉 상태들을 다시 훑어보며 현재 시점에서 가장 관련성이 높은 부분에 '집중(Attention)'하여 정보를 가져오는 방식이다. 이는 Transformer 모델의 핵심 원리가 되었으며, 순차적 업데이트 과정 없이도 전체 맥락을 파악할 수 있게 하였다.
6. 활용 예시 및 구현
6.1 활용 사례
- 자연어 처리(NLP): 문장의 앞부분에 나온 주어를 기억하여 뒷부분의 동사 성분을 결정하는 문맥 파악.
- 시계열 예측: 과거의 주가 흐름이나 기온 변화 패턴을 은닉 상태에 저장하여 미래 값 예측.
- 음성 인식: 연속적인 오디오 신호의 특징을 누적하여 단어 및 문장으로 변환.
6.2 은닉 상태 초기화 방법
모델이 처음 입력을 받을 때 $h_0$ 값이 필요하며, 주로 다음과 같은 방법을 사용한다. 1. 제로 초기화(Zero Initialization): 모든 요소를 0으로 설정하는 가장 일반적인 방법이다. 구현이 간단하지만 초기 학습 단계에서 대칭성 문제나 느린 수렴이 발생할 수 있다. 2. 학습 가능 파라미터(Learnable Parameter): $h_0$ 자체를 학습 가능한 변수로 설정하여, 데이터셋의 전반적인 특성에 최적화된 초기 상태를 모델이 스스로 찾게 한다. 3. 상태 전이(State Transfer): 이전 배치(Batch)의 마지막 은닉 상태를 다음 배치의 초기 상태로 사용하는 방식이다. 이는 매우 긴 시퀀스를 처리하는 Truncated BPTT(Backpropagation Through Time)에서 문맥을 유지하기 위해 활용된다.
6.3 구현 예시 (PyTorch)
import torch
import torch.nn as nn
# RNN 모델 정의
class SimpleRNN(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(SimpleRNN, self).__init__()
self.hidden_size = hidden_size
self.rnn = nn.RNN(input_size, hidden_size, batch_first=True)
self.fc = nn.Linear(hidden_size, output_size)
def forward(self, x):
# h0: 은닉 상태 초기화 (num_layers, batch_size, hidden_size)
# 하드코딩 대신 self.hidden_size를 사용하여 유연성 확보
h0 = torch.zeros(1, x.size(0), self.hidden_size).to(x.device)
# out: 모든 시점의 은닉 상태, hn: 마지막 시점의 은닉 상태
out, hn = self.rnn(x, h0)
# 마지막 시점의 은닉 상태를 사용하여 결과 예측
out = self.fc(out[:, -1, :])
return out
[부록] 상태 유지 방식의 장단점 비교
| 방식 | 장점 | 단점 |
|---|---|---|
| 단순 은닉 상태 (RNN) | 구조가 단순하고 연산 비용이 매우 낮음 | 장기 의존성 문제(기울기 소실)가 심각함 |
| 이원화 상태 (LSTM) | 셀 상태를 통해 매우 긴 시퀀스의 정보 보존 가능 | 파라미터 수가 많아 학습 속도가 느리고 메모리 사용량이 높음 |
| 통합 게이트 상태 (GRU) | LSTM의 성능을 유지하면서 연산 효율성을 개선함 | LSTM보다 표현력이 다소 부족할 수 있음 |
| 어텐션 기반 (Transformer) | 정보 압축 손실이 없으며 병렬 연산이 가능함 | 입력 길이의 제곱에 비례하는 메모리 복잡도 발생 |
이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.