어텐션 메커니즘(Attention Mechanism)은 Seq2Seq(Sequence-to-Sequence) 모델의 한계를 보완하고 성능을 크게 향상시키기 위해 도입된 핵심 기술입니다. 두 기술의 관계를 이해하려면 먼저 각각의 동작 방식과 그 상호작용을 살펴봐야 합니다.
🔍 어텐션 메커니즘의 필요성
기존의 Seq2Seq 모델은 입력 시퀀스를 고정된 크기의 벡터로 압축하여 디코더에 전달합니다.이러한 구조는 긴 문장이나 복잡한 문맥을 처리할 때 정보 손실이 발생할 수 있습니다.어텐션 메커니즘은 디코더가 출력 시퀀스를 생성할 때, 인코더의 모든 출력(hidden states)을 동적으로 참고하여 필요한 정보를 선택적으로 활용할 수 있도록 합니다.
🧠 1. Seq2Seq 모델: 기본 구조와 한계
📌 기본 구조
Encoder: 입력 시퀀스를 처리하여 **고정된 크기의 벡터(context vector)**로 압축
Decoder: 이 벡터를 기반으로 출력 시퀀스를 하나씩 생성
❗ 한계점
입력 문장의 길이가 길어질수록 정보 손실이 발생함
고정된 벡터 하나에 모든 정보를 담다 보니, 복잡하거나 긴 문맥을 반영하기 어려움
디코더가 단어를 생성할 때 입력의 어느 부분에 주목해야 할지 알 수 없음
💡 2. 어텐션 메커니즘: Seq2Seq의 한계를 해결
📌 핵심 개념
디코더가 출력을 생성할 때, **Encoder의 모든 출력(hidden states)**를 동적으로 가중합하여 사용
이 과정에서 입력 시퀀스의 각 요소에 대해 **“얼마나 집중할지” (attention score)**를 계산
🔁 작동 방식 요약
디코더의 현재 상태와 인코더의 각 출력 상태 간의 유사도 계산
소프트맥스를 통해 가중치(어텐션 가중치)로 변환
이 가중치를 이용해 인코더의 출력 벡터들을 가중합한 컨텍스트 벡터 생성
디코더가 이 벡터를 사용하여 현재 출력을 생성
🔗 3. Seq2Seq와 어텐션의 상관관계
항목Seq2Seq만 사용Seq2Seq + 어텐션
입력 처리 방식
전체 문장을 하나의 벡터로 요약
각 단어별로 가중치를 두고 다르게 반영
출력 예측
정보 압축으로 정확도 저하 가능
특정 입력 단어에 집중하여 더 정확한 예측
길이 제약
긴 문장에 취약
긴 문장도 유연하게 처리 가능
문맥 반영
전체 맥락을 고정된 벡터로만 전달
시점마다 동적으로 문맥을 반영
🎯 요약: 어텐션은 디코더가 입력 시퀀스의 '어디를 봐야 하는지'를 스스로 결정할 수 있도록 해주며, Seq2Seq 모델의 정보 손실 문제를 효과적으로 해결합니다.
🌍 실전 예시: 영어 → 프랑스어 번역
문장: “How are you?” 번역: “Comment allez-vous ?”
디코더가 “allez”를 생성할 때는 인코더 출력 중 “are”에 집중
“vous”를 생성할 땐 “you”에 집중 → 이처럼 출력 단어마다 집중하는 입력 단어가 다르므로, 어텐션이 필수적입니다.
🧠 결론: 왜 둘은 함께 쓰일까?
Seq2Seq는 시퀀스를 다루는 기본 구조지만 문맥 유지에 제한
어텐션은 그 제한을 유연한 정보 접근 방식으로 해결
두 기술은 서로를 보완하며, 특히 기계 번역, 요약, 질의응답 등에서 표준 구조로 사용됩니다