EveryDay.DevUp

[AI] RNN모델부터 Seq2Seq 모델 까지 본문

AI

[AI] RNN모델부터 Seq2Seq 모델 까지

EveryDay.DevUp 2025. 6. 14. 14:58
RNN 계열 모델 완벽 가이드

RNN 계열 모델의 발전 과정

1986

RNN의 등장

기본적인 순환 신경망 구조가 제안되어 순차 데이터 처리의 새로운 패러다임을 열었습니다.

1997

LSTM 개발

Hochreiter & Schmidhuber가 기울기 소실 문제를 해결한 LSTM을 발표하여 장기 의존성 학습을 가능하게 했습니다.

2014

GRU 제안

Cho et al.이 LSTM을 단순화한 GRU를 제안하여 효율성과 성능의 균형을 맞췄습니다.

2014

Seq2Seq 모델

Google이 기계 번역을 위한 Seq2Seq 모델을 발표하여 다양한 NLP 태스크의 새로운 표준을 제시했습니다.

R
RNN (Recurrent Neural Network)

핵심 개념

순환 신경망의 기본형으로, 이전 시점의 히든 상태를 현재 시점의 입력과 함께 사용하여 순차적 데이터를 처리합니다.


RNN이 등장한 이유

기존 신경망(Feedforward NN)의 한계:

  • 고정된 크기의 입력만 처리 가능 (예: 이미지 28×28 픽셀)
  • 순서 정보를 고려하지 못함 ("I love you" vs "You love I"를 구분 못함)
  • 이전 정보를 기억하지 못함 (각 입력을 독립적으로 처리)
  • 가변 길이 데이터 처리 불가 (문장마다 다른 단어 수)

RNN이 해결한 문제들:

  • 순서 의존성: "은행에 돈을 맡겼다" vs "돈에 은행을 맡겼다" 구분 가능
  • 문맥 이해: "그가"라는 대명사가 앞서 언급된 누구를 가리키는지 파악
  • 가변 길이: 2단어부터 100단어까지 다양한 길이의 문장 처리
  • 시계열 패턴: 주식 가격의 상승/하락 추세 학습

💡 핵심: RNN은 "기억"이라는 개념을 신경망에 도입하여 인간처럼 순차적 정보를 처리할 수 있게 만든 혁신적 구조입니다.


시계열 데이터란?

시간 순서에 따라 배열된 데이터로, 과거의 값이 미래의 값에 영향을 미치는 특성을 가집니다. 예: 주식 가격, 날씨 데이터, 음성 신호, 문장 내 단어 순서 등

RNN 구조 다이어그램

예시 문장: "나는 학교에 간다"

시간 → RNN h y 나는 t=1 RNN h y 학교에 t=2 RNN h y 간다 t=3 "나는" 기억 "나는 학교에" 기억 다음 단어 예측 다음 단어 예측 다음 단어 예측 입력 단어 히든상태(메모리) 출력(예측) 메모리 전달

각 시점에서 단어를 입력받고, 이전까지의 문맥을 기억하여 다음 단어를 예측합니다.
핵심: "나는"을 기억 → "나는 학교에"를 기억 → 전체 문맥으로 "간다" 예측

주요 특징

✓ 메모리 기능으로 이전 정보 기억

히든 상태(hidden state)를 통해 이전 시점의 정보를 저장하고 전달합니다.
예시: "사과는 빨간색이고 달다"에서 "사과"라는 정보를 기억해서 "달다"가 무엇을 수식하는지 이해

✓ 가변 길이 시퀀스 처리 가능

입력 데이터의 길이가 달라도 처리할 수 있습니다.
처리 가능한 이유: RNN은 순환 구조로 인해 고정된 입력 크기에 제약받지 않고, 각 시점마다 하나씩 입력을 받아 처리하기 때문입니다. 시퀀스가 끝날 때까지 동일한 가중치를 반복 사용하여 임의의 길이를 처리할 수 있습니다.
예시: "안녕"(2글자)부터 "안녕하세요 반갑습니다"(9글자)까지 다양한 길이의 문장 처리

✓ 파라미터 공유로 효율적 학습

모든 시점에서 동일한 가중치를 사용하여 메모리 효율성을 높입니다.
예시: 첫 번째 단어와 열 번째 단어를 처리할 때 같은 가중치 매트릭스 사용

✓ 시간에 따른 역전파(BPTT) 사용

시간 축을 따라 거슬러 올라가며 오차를 전파하여 학습합니다.
예시: 문장 끝에서 발생한 오류를 문장 처음까지 거슬러 올라가며 가중치 업데이트

장점

• 순차 데이터 처리 가능
• 메모리 효율적
• 구조가 단순함

단점

• 기울기 소실/폭발 문제

긴 시퀀스에서 기울기가 점점 작아져(소실) 학습이 안 되거나, 반대로 너무 커져(폭발) 학습이 불안정해집니다.
예시: 100단어 문장에서 첫 번째 단어의 영향이 마지막 단어까지 전달되지 않음

• 장기 의존성 학습 어려움

시간적으로 멀리 떨어진 정보 간의 관계를 학습하기 어렵습니다.
예시: "철수는... (50단어 후) ...그가 좋아하는 음식을 먹었다"에서 "그가"와 "철수"의 연결 관계 파악 실패

• 병렬 처리 불가

이전 시점의 계산이 완료되어야 다음 시점을 계산할 수 있어 느린 학습 속도를 보입니다.
예시: GPU의 여러 코어를 동시에 활용할 수 없어 CNN보다 훨씬 느린 처리 속도

사용 예시

주식 가격 예측: "어제 100원, 오늘 105원" → "내일 예상 가격은?"
이전 가격 정보를 기억해서 다음 가격을 예측합니다.

L
LSTM (Long Short-Term Memory)

핵심 개념

RNN의 기울기 소실 문제를 해결하기 위해 게이트 메커니즘(forget, input, output gate)을 도입한 개선된 RNN입니다.


게이트 메커니즘이란?

정보의 흐름을 제어하는 '문'과 같은 역할을 하는 구조로, 어떤 정보를 기억하고, 잊고, 출력할지를 학습을 통해 결정합니다.

🚪 Forget Gate (망각 게이트)

역할: 이전 기억 중 불필요한 정보를 삭제

예시: "철수는 사과를 좋아한다. 그런데 오늘은 바나나를 먹었다." → "사과를 좋아한다"는 정보를 잊고 새로운 "바나나" 정보에 집중

📥 Input Gate (입력 게이트)

역할: 새로운 정보 중 중요한 것만 선별하여 기억

예시: "회의는 내일 오후 3시에 있다"라는 문장에서 "내일", "오후 3시", "회의"는 중요하므로 기억하지만 "에", "있다" 같은 조사는 무시

📤 Output Gate (출력 게이트)

역할: 현재 상황에서 필요한 기억만 선별하여 출력

예시: "김씨와 박씨가 만났다. 김씨가 말했다"에서 "김씨가"라는 주어가 나올 때, 저장된 여러 인물 정보 중 "김씨"에 관한 정보만 출력

주요 특징

  • 3개의 게이트로 정보 흐름 제어
  • 셀 상태(Cell State)로 장기 기억
  • 선택적 정보 기억/망각
  • 기울기 소실 문제 완화

장점

• 장기 의존성 학습 가능
• 기울기 소실 문제 해결
• 안정적인 학습

단점

• 계산 복잡도 높음
• 많은 파라미터 필요
• 학습 시간 오래 걸림

사용 예시

문서 요약: 긴 뉴스 기사를 읽고 핵심 문장들을 기억해서 짧은 요약문을 생성합니다. 중요한 정보는 기억하고 불필요한 정보는 잊어버립니다.

G
GRU (Gated Recurrent Unit)

핵심 개념

LSTM을 단순화한 모델로, 2개의 게이트(reset, update gate)만 사용하여 효율성과 성능의 균형을 맞춘 구조입니다.


2개 게이트 메커니즘

LSTM의 3개 게이트를 2개로 통합하여 계산 효율성을 높이면서도 핵심 기능은 유지합니다.

🔄 Reset Gate (리셋 게이트)

역할: 이전 기억을 얼마나 무시할지 결정 (과거 정보의 영향력 조절)

예시: "오늘 날씨가 좋다. 그런데 갑자기 비가 내리기 시작했다." → "날씨가 좋다"는 정보를 리셋하고 "비가 내린다"는 새로운 상황에 집중

💡 Reset = 0이면 과거를 완전히 무시, Reset = 1이면 과거를 완전히 보존

⬆️ Update Gate (업데이트 게이트)

역할: 이전 기억과 새로운 정보를 어떤 비율로 섞을지 결정

예시: "철수는 의사다. 철수는 오늘 수술을 했다." → "의사"라는 기본 정보(70%)와 "오늘 수술"이라는 새 정보(30%)를 적절히 조합하여 기억

💡 Update = 0이면 새 정보만 사용, Update = 1이면 이전 기억만 유지

LSTM vs GRU: LSTM의 forget + input gate → GRU의 update gate로 통합
LSTM의 output gate 기능은 reset gate에서 부분적으로 담당

주요 특징

  • 2개 게이트로 단순화
  • LSTM 대비 빠른 학습
  • 적은 파라미터 수
  • 효율적인 메모리 사용

장점

• LSTM보다 빠른 학습
• 적은 메모리 사용
• 단순한 구조

단점

• LSTM보다 표현력 제한
• 매우 긴 시퀀스에서 성능 저하
• 복잡한 패턴 학습 어려움

사용 예시

챗봇 대화: "안녕하세요" → "반갑습니다" → "날씨가 어때요?"
이전 대화 맥락을 기억하면서도 빠르게 응답을 생성합니다.

S
Seq2Seq (Sequence to Sequence)

핵심 개념

인코더-디코더 구조로 입력 시퀀스를 다른 길이의 출력 시퀀스로 변환하는 모델입니다. 주로 LSTM이나 GRU를 기반으로 구성됩니다.


인코더-디코더 구조란?

입력을 이해하는 부분(인코더)과 출력을 생성하는 부분(디코더)을 분리한 구조로, 두 단계로 나누어 시퀀스 변환을 수행합니다.

🔍 Encoder (인코더)

역할: 입력 시퀀스를 고정 크기의 벡터(컨텍스트 벡터)로 압축

예시: "How are you?" → [0.2, -0.5, 0.8, 0.1, ...] (256차원 벡터)
영어 문장의 의미를 숫자 벡터로 압축하여 저장

💡 마지막 히든 상태가 전체 입력 문장의 의미를 담은 컨텍스트 벡터가 됨

🎯 Decoder (디코더)

역할: 컨텍스트 벡터를 바탕으로 출력 시퀀스를 순차적으로 생성

예시: [0.2, -0.5, 0.8, 0.1, ...] → "안녕하세요?"
압축된 의미 벡터에서 한국어 문장을 단어별로 순차 생성

💡 이전에 생성한 단어와 컨텍스트 벡터를 모두 고려하여 다음 단어 예측

🌉 Context Vector (컨텍스트 벡터)

역할: 인코더와 디코더를 연결하는 정보의 다리

예시: "The weather is nice today" → 압축 → "오늘 날씨가 좋네요"
영어 문장의 모든 의미 정보가 하나의 벡터에 압축되어 전달

⚠️ 긴 문장에서는 정보 손실 가능성 존재 (병목 현상)

동작 과정:
1️⃣ 인코더가 "I love you" 전체를 읽고 의미를 벡터로 압축
2️⃣ 디코더가 이 벡터를 받아 "나는" → "당신을" → "사랑해요" 순서로 생성
3️⃣ 각 단어 생성 시 이전 단어와 컨텍스트 벡터를 모두 참고

Seq2Seq 인코더-디코더 구조

예시: "I love you" → "나는 당신을 사랑해요"

ENCODER DECODER RNN h I RNN h love RNN h you Context Vector 의미 압축 RNN y 나는 START RNN y 당신을 나는 RNN y 사랑해요 당신을 입력 시퀀스를 읽고 의미를 압축 압축된 의미로부터 출력 시퀀스 생성

핵심 과정:
1️⃣ 인코더가 "I love you"를 순차적으로 읽고 마지막 히든 상태에 의미를 압축
2️⃣ 컨텍스트 벡터가 압축된 의미 정보를 디코더에 전달
3️⃣ 디코더가 컨텍스트 벡터와 이전 출력을 이용해 한국어를 순차 생성

주요 특징

  • 인코더-디코더 구조
  • 가변 길이 입출력 처리
  • 컨텍스트 벡터로 정보 압축
  • 어텐션 메커니즘 적용 가능

🎯 어텐션 메커니즘이란?

기본 Seq2Seq의 한계를 해결하기 위해 도입된 기법으로, 디코더가 출력을 생성할 때 입력 시퀀스의 모든 부분에 동적으로 집중할 수 있게 하는 메커니즘입니다.

기본 Seq2Seq의 문제점:

긴 문장에서 컨텍스트 벡터 하나로는 모든 정보를 압축하기 어려워 정보 손실 발생

어텐션의 해결책:

각 출력 단어를 생성할 때마다 입력 시퀀스의 관련된 부분에 집중하여 정보를 가져옴

예시: "The cat sat on the mat"을 번역할 때
• "고양이"를 생성할 때는 "cat"에 높은 가중치
• "앉았다"를 생성할 때는 "sat"에 높은 가중치
• "매트"를 생성할 때는 "mat"에 높은 가중치를 부여

💡 어텐션은 후에 Transformer의 핵심 기술로 발전하게 됩니다!

장점

• 다양한 길이 시퀀스 변환
• 번역, 요약 등에 효과적
• 유연한 구조

단점

• 정보 압축으로 인한 손실
• 긴 시퀀스에서 성능 저하
• 병목 현상 발생

사용 예시

번역: "Hello, how are you?" → "안녕하세요, 어떻게 지내세요?"
영어 문장을 인코딩하고, 한국어로 디코딩하여 번역합니다.

'AI' 카테고리의 다른 글

[AI] Transformer  (0) 2025.06.14
[AI] Attention  (2) 2025.06.14
[AI] AI의 발전 과정  (0) 2025.06.14
[AI] 텍스트 임베딩  (4) 2025.06.14
[AI] 신경망과 액티베이션 함수: 선형성의 한계와 비선형성의 필요성  (1) 2025.06.13