1. RNN(Recurrent Neural Network)
- RNN은 시퀀스(sequence) 데이터를 처리하기 위한 신경망 구조입니다.
- 일반적인 MLP나 CNN은 입력을 독립적으로 처리하지만, RNN은 **이전 시점의 은닉 상태(hidden state)**를 다음 시점의 입력과 함께 처리함으로써 **시간적 의존성(temporal dependency)**을 학습할 수 있습니다.
- 수식으로 표현하면 다음과 같습니다.
ht=f(Wxhxt+Whhht−1+bh)
yt=Whyht+by
⇒ 여기서,
- xt: 시점 t의 입력 벡터
- ht: 시점 t의 hidden state
- Wxh,Whh,Why: 가중치 행렬
- f: 활성화 함수 (tanh, ReLU 등)
⇒ 즉, 현재 입력 + 이전 hidden state를 기반으로 새로운 hidden state를 계산하는 방식입니다.
RNN의 한계
- 긴 시퀀스를 처리할 때 기울기 소실/폭발(vanishing/exploding gradient) 문제가 발생합니다.
- 긴 문맥을 반영하기 어렵습니다.
⇒ 이 문제를 해결하기 위해 LSTM(Long Short-Term Memory)이나 GRU(Gated Recurrent Unit) 같은 구조가 제안되었습니다.
2. Seq2Seq(Sequence to Sequence)
- Seq2Seq는 RNN을 확장하여 입력 시퀀스를 다른 형태의 출력 시퀀스로 변환하는 모델입니다.
- 기계 번역, 챗봇, 요약 등에 널리 사용됩니다.
구조
- 기본 구조는 **인코더(Encoder) – 디코더(Decoder)**로 구성됩니다.
-
인코더: 입력 시퀀스를 받아 최종 hidden state(맥락 벡터, context vector)를 생성합니다.
ht=f(Wxhxt+Whhht−1)
마지막 hidden state hT가 문장의 의미를 담은 벡터가 됩니다.
-
디코더: 인코더의 마지막 hidden state를 받아 시작하고, 이전에 생성한 단어를 입력으로 받아 새로운 단어를 생성합니다.
st=f(Wysyt−1+Wssst−1+WhshT)
yt=Softmax(Wsyst)
⇒ 즉, 디코더는 인코더가 요약한 정보를 기반으로 하나씩 출력을 만들어냅니다.
3. Seq2Seq의 한계와 Attention의 등장
- Seq2Seq의 문제는 **맥락 벡터(context vector)**가 고정 길이라는 점입니다.
- 긴 문장을 번역할 때 모든 정보를 하나의 벡터에 압축하면 정보 손실이 심각하게 발생합니다.
- 이를 보완하기 위해 Attention 메커니즘이 등장했습니다.
- 디코더는 출력할 때마다, 인코더의 모든 hidden state를 참조하여 가중합을 계산합니다.
- 이로써 긴 문맥도 동적으로 반영할 수 있게 되었습니다.
4. 구조 그림
RNN 구조
x1 → [RNN Cell] → h1
x2 → [RNN Cell] → h2
x3 → [RNN Cell] → h3 → ...
Seq2Seq 기본 구조
Encoder: x1 → h1 → h2 → ... → hT → [context vector]
↓
Decoder: y0 → s1 → y1 → s2 → y2 → ...
Seq2Seq + Attention 구조
Encoder: x1 → h1
x2 → h2
...
xT → hT
Decoder: y0, {h1,...,hT} → s1 → y1
y1, {h1,...,hT} → s2 → y2
5. 궁금했던 포인트 정리
-
RNN과 Seq2Seq의 차이점:
RNN은 단순히 입력 시퀀스를 받아 출력을 내놓는 구조이고, Seq2Seq는 입력 시퀀스를 다른 길이의 시퀀스로 변환하는 데 특화된 구조입니다.
-
Seq2Seq의 병목(bottleneck) 문제:
모든 입력 정보를 하나의 context vector에 담기 때문에 정보 손실이 발생합니다. → Attention으로 해결되었습니다.
-
Attention = Seq2Seq의 확장:
Attention은 Seq2Seq의 한계를 보완하기 위한 메커니즘이며, 이후 Transformer로 확장되었습니다.
👉 정리하면, RNN은 시퀀스를 처리할 수 있는 기본 단위, Seq2Seq는 이를 발전시켜 입력 → 출력 시퀀스 변환을 가능하게 만든 구조, Attention은 그 과정에서의 정보 손실 문제를 해결하기 위해 등장한 핵심 기술입니다.