콘텐츠로 이동

순환 신경망(RNN)과 어텐션(Attention)의 이해

🚀 개요

텍스트나 시계열 데이터처럼 순서가 있는 데이터(Sequence Data)를 처리할 때는 이전 단계의 정보가 다음 단계에 영향을 주는 구조가 필요합니다. 이 포스트에서는 기본 RNN의 한계를 극복한 LSTM과, 현대 딥러닝의 판도를 바꾼 어텐션(Attention) 메커니즘을 다룹니다.

💡 RNN에서 LSTM으로

기본 RNN은 문장이 길어질수록 앞부분의 정보가 뒤로 전달되지 않는 장기 의존성(Long-term Dependency) 문제를 가지고 있습니다.

LSTM (Long Short-Term Memory)

  • 핵심: '셀 상태(Cell State)'라는 일종의 컨베이어 벨트를 통해 정보를 오래 유지하거나, 필요 없는 정보는 삭제(Forget Gate)합니다.
  • 실습 예제 (로이터 뉴스 분류):
    from tensorflow.keras.layers import LSTM, Embedding, Dense
    
    model = Sequential()
    model.add(Embedding(1000, 100))
    model.add(LSTM(100, activation='tanh'))
    model.add(Dense(46, activation='softmax'))
    
  • 결과: 수천 개의 뉴스 기사를 46개의 카테고리로 정확하게 분류할 수 있습니다.

🎯 어텐션(Attention): 중요한 것에 집중하기

RNN이나 LSTM도 문장이 아주 길어지면 정보 손실이 발생합니다. 어텐션은 이를 해결하기 위해 "입력 데이터의 모든 부분 중, 지금 출력할 단어와 가장 관련 있는 부분에 더 집중하자"는 아이디어를 제안합니다.

어텐션의 동작 원리

  1. 스코어 계산: 현재 출력하려는 단어와 입력 문장의 각 단어 사이의 유사도를 계산합니다.
  2. 가중치 부여: 계산된 스코어를 확률값(Attention Weight)으로 변환합니다.
  3. 가중합 산출: 입력 단어들의 정보를 가중치에 따라 합쳐서 디코더에 전달합니다.

어떻게 학습되는가?

어텐션 가중치는 별도의 정답이 주어지지 않습니다. 대신, 전체 모델의 예측 오차(Loss)가 역전파(Backpropagation)되면서 "어느 단어에 집중했을 때 오차가 줄어드는지"를 스스로 학습합니다.

🛠 Self-Attention (GPT, BERT의 근간)

문장 쌍이 아닌 단일 문장 내에서 단어들 간의 관계를 파악하는 방식입니다. - 예: "The cat sat on the mat"에서 "sat"은 "cat"과 높은 연관성을 가짐을 스스로 학습하여 문장 구조를 파악합니다.

📐 아키텍처 비교

모델 특징 한계
RNN 순서대로 처리 장기 의존성 문제 (정보 유실)
LSTM 기억과 망각 게이트 추가 여전히 매우 긴 문장에서는 성능 저하
Attention 입력의 모든 지점을 직접 참조 연산 복잡도 증가 (병렬화로 극복)

📝 배운 점 및 결론

  • 집중의 미학: 모든 정보를 동등하게 처리하지 않고, 맥락에 따라 중요도를 다르게 부여하는 것이 인간의 인지 과정과 매우 닮아 있다는 점이 인상적입니다.
  • 트랜스포머의 시대: 이 어텐션 메커니즘을 극대화한 것이 바로 Transformer 구조이며, 이것이 현재의 ChatGPT와 같은 거대 언어 모델의 근간이 되었습니다.

작성자: kim-hyunjin 작성일: 2026-04-21