Skip to main content

RNN (Recurrent Neural Network)

등장 배경

Word2Vec은 단어 수준의 표현은 해결했지만, 문장이나 문서 전체 를 이해하려면 단어의 순서(sequence) 를 처리할 수 있는 모델이 필요했습니다.

핵심 원리

RNN은 이전 시간 단계의 출력을 다음 시간 단계의 입력에 연결 하는 순환 구조입니다:
시간 단계입력 (x)은닉 상태 (h)출력 (y)
t=1”나는”h₁y₁
t=2”오늘”h₂ (← h₁ 반영)y₂
t=3”회사에”h₃ (← h₂ 반영)y₃
t=4”간다”h₄ (← h₃ 반영)y₄
핵심: 각 시간 단계의 은닉 상태 h_t는 이전 은닉 상태 h_{t-1}을 입력으로 받아, 순차적으로 정보를 전달합니다.
각 시간 단계에서:
h_t = tanh(W_hh · h_{t-1} + W_xh · x_t + b)
이전 은닉 상태 h_{t-1}이 현재 계산에 참여하므로, 이론적으로는 과거의 모든 정보 를 기억할 수 있습니다.

치명적 문제 — 기울기 소실 (Vanishing Gradient)

실제로는 역전파(Backpropagation) 과정에서 기울기가 시간을 거슬러 올라갈수록 기하급수적으로 작아집니다:
문장: "서울에서 태어나고 부산에서 자란 김철수는 ... (50단어) ... 한국어를 유창하게 말한다"

RNN이 "한국어"를 예측할 때, "서울"이라는 단서는 50단계 전에 있음
→ 기울기가 50번 곱해지면서 0에 수렴 → "서울" 정보가 학습에 반영되지 않음

LSTM (Long Short-Term Memory, Hochreiter & Schmidhuber, 1997)

RNN의 기울기 소실 문제를 해결하기 위해 고안된 아키텍처입니다. 실제로 널리 활용된 것은 2014년 이후입니다.

핵심 아이디어 — 게이트 메커니즘

LSTM은 세 개의 게이트 로 정보의 흐름을 정교하게 제어합니다:
게이트역할비유
Forget Gate(망각 게이트)이전 정보 중 버릴 것을 결정불필요한 기억을 삭제하는 기능
Input Gate(입력 게이트)새로운 정보 중 저장할 것을 결정중요한 새 정보만 기억에 추가
Output Gate(출력 게이트)현재 출력에 사용할 정보를 결정상황에 맞는 기억만 꺼내 사용
경로역할특징
Cell State(장기 기억)정보가 직통으로 전달되는 고속도로Forget Gate가 불필요한 정보를 삭제, Input Gate가 새 정보를 추가
Hidden State(단기 기억/출력)h_{t-1} → h_t로 전달Output Gate가 Cell State에서 현재 출력에 필요한 정보만 추출
성공 비유: RNN이 “메모장 한 장”에 모든 것을 적다 보니 앞 내용이 지워지는 것이라면, LSTM은 서류 캐비닛 입니다. 어떤 서류를 보관하고(Input Gate), 어떤 서류를 폐기하고(Forget Gate), 어떤 서류를 꺼낼지(Output Gate)를 판단합니다.

GRU (Gated Recurrent Unit, Cho et al., 2014)

LSTM의 경량화 버전 입니다. 세 개의 게이트를 두 개(Reset, Update) 로 줄여 더 빠른 학습을 가능하게 했습니다.
비교LSTMGRU
게이트 수3개 (Forget, Input, Output)2개 (Reset, Update)
파라미터 수더 많음~25% 적음
학습 속도느림빠름
성능긴 시퀀스에서 약간 우세짧은 시퀀스에서 동등 또는 우세
실무 선택복잡한 의존성이 중요한 작업빠른 실험, 리소스 제한 환경

CNN 기반 NLP — TextCNN (Yoon Kim, 2014)

RNN/LSTM이 시퀀스 처리의 주류로 자리잡던 시기에, 합성곱 신경망(CNN) 으로도 텍스트를 효과적으로 처리할 수 있다는 연구가 등장합니다. 컴퓨터 비전에서 이미지 패턴을 포착하던 CNN을 NLP에 적용한 것입니다.

핵심 아이디어

TextCNN은 다양한 크기의 1D 합성곱 필터 를 텍스트 위로 슬라이딩하여, 로컬 N-gram 패턴 을 포착합니다.
입력: "이 영화는 정말 재미있다"
      [이] [영화는] [정말] [재미있다]
       ↓      ↓      ↓      ↓
      임베딩 벡터들 (행렬)

필터 크기 2: [이, 영화는] [영화는, 정말] [정말, 재미있다]  ← bigram 패턴
필터 크기 3: [이, 영화는, 정말] [영화는, 정말, 재미있다]   ← trigram 패턴

→ 각 필터의 최대값(Max Pooling) → 최종 분류

RNN vs CNN for NLP

비교 항목RNN/LSTMTextCNN
처리 방식순차적 (한 토큰씩)병렬적(모든 필터 동시 적용)
학습 속도느림 (순차 의존성)빠름(GPU 병렬화 용이)
장거리 의존성LSTM으로 부분 해결약함— 필터 크기 내의 로컬 패턴만 포착
강점 태스크번역, 텍스트 생성, 요약텍스트 분류, 감성 분석
시퀀스 생성가능 (Decoder로 활용)부적합 — 순서 정보 약함
참고 TextCNN의 의의: RNN만이 텍스트를 처리할 수 있다는 고정관념을 깨고, 분류 태스크에서는 CNN이 더 빠르고 동등한 성능 을 보일 수 있음을 입증했습니다. 다만 CNN은 시퀀스 생성(번역, 요약) 에는 적합하지 않아, RNN이 생성 태스크에서는 주류를 유지했습니다. 이 “병렬 처리가 가능한 모델이 더 효율적”이라는 통찰은 이후 Transformer의 Self-Attention 으로 완성됩니다.

성과와 공통 한계

성과:
  • 기계 번역, 감성 분석, 음성 인식 등에서 획기적 성능 향상
  • Google 번역이 2016년 통계 기반에서 LSTM 기반 신경망 번역으로 전환
  • 가변 길이 시퀀스를 자연스럽게 처리
공통 한계: RNN, LSTM, GRU, TextCNN 모두가 공유하는 근본적 한계입니다. 이 세 가지 문제를 동시에 해결한 것이 바로 Transformer 입니다.
한계설명영향
순차 처리토큰을 하나씩 순서대로 처리해야 함GPU 병렬 처리 불가 → 학습 속도 느림
장거리 의존성LSTM도 수백 토큰 이상에서는 정보 손실긴 문서 처리에 한계
고정 차원 은닉 상태아무리 긴 문장도 하나의 고정 크기 벡터에 압축정보 병목 (bottleneck)