어텐션 메커니즘(Attention Mechanism)은 Seq2Seq(Sequence-to-Sequence) 모델의 한계를 보완하고 성능을 크게 향상시키기 위해 도입된 핵심 기술입니다. 두 기술의 관계를 이해하려면 먼저 각각의 동작 방식과 그 상호작용을 살펴봐야 합니다.

 

🔍 어텐션 메커니즘의 필요성

기존의 Seq2Seq 모델은 입력 시퀀스를 고정된 크기의 벡터로 압축하여 디코더에 전달합니다. 이러한 구조는 긴 문장이나 복잡한 문맥을 처리할 때 정보 손실이 발생할 수 있습니다. 어텐션 메커니즘은 디코더가 출력 시퀀스를 생성할 때, 인코더의 모든 출력(hidden states)을 동적으로 참고하여 필요한 정보를 선택적으로 활용할 수 있도록 합니다.


🧠 1. Seq2Seq 모델: 기본 구조와 한계

📌 기본 구조

  • Encoder: 입력 시퀀스를 처리하여 **고정된 크기의 벡터(context vector)**로 압축
  • Decoder: 이 벡터를 기반으로 출력 시퀀스를 하나씩 생성

❗ 한계점

  • 입력 문장의 길이가 길어질수록 정보 손실이 발생
  • 고정된 벡터 하나에 모든 정보를 담다 보니, 복잡하거나 긴 문맥을 반영하기 어려움
  • 디코더가 단어를 생성할 때 입력의 어느 부분에 주목해야 할지 알 수 없음

💡 2. 어텐션 메커니즘: Seq2Seq의 한계를 해결

📌 핵심 개념

  • 디코더가 출력을 생성할 때, **Encoder의 모든 출력(hidden states)**를 동적으로 가중합하여 사용
  • 이 과정에서 입력 시퀀스의 각 요소에 대해 **“얼마나 집중할지” (attention score)**를 계산

🔁 작동 방식 요약

  1. 디코더의 현재 상태와 인코더의 각 출력 상태 간의 유사도 계산
  2. 소프트맥스를 통해 가중치(어텐션 가중치)로 변환
  3. 이 가중치를 이용해 인코더의 출력 벡터들을 가중합한 컨텍스트 벡터 생성
  4. 디코더가 이 벡터를 사용하여 현재 출력을 생성

🔗 3. Seq2Seq와 어텐션의 상관관계

항목Seq2Seq만 사용Seq2Seq + 어텐션
입력 처리 방식 전체 문장을 하나의 벡터로 요약 각 단어별로 가중치를 두고 다르게 반영
출력 예측 정보 압축으로 정확도 저하 가능 특정 입력 단어에 집중하여 더 정확한 예측
길이 제약 긴 문장에 취약 긴 문장도 유연하게 처리 가능
문맥 반영 전체 맥락을 고정된 벡터로만 전달 시점마다 동적으로 문맥을 반영

🎯 요약: 어텐션은 디코더가 입력 시퀀스의 '어디를 봐야 하는지'를 스스로 결정할 수 있도록 해주며, Seq2Seq 모델의 정보 손실 문제를 효과적으로 해결합니다.


🌍 실전 예시: 영어 → 프랑스어 번역

문장: “How are you?”
번역: “Comment allez-vous ?”

  • 디코더가 “allez”를 생성할 때는 인코더 출력 중 “are”에 집중
  • “vous”를 생성할 땐 “you”에 집중
    → 이처럼 출력 단어마다 집중하는 입력 단어가 다르므로, 어텐션이 필수적입니다.

🧠 결론: 왜 둘은 함께 쓰일까?

  • Seq2Seq는 시퀀스를 다루는 기본 구조지만 문맥 유지에 제한
  • 어텐션은 그 제한을 유연한 정보 접근 방식으로 해결
  • 두 기술은 서로를 보완하며, 특히 기계 번역, 요약, 질의응답 등에서 표준 구조로 사용됩니다

+ Recent posts