RNN 기반 번역 모델의 한계 극복: 2014년 어텐션 메커니즘 도입 전, RNN 인코더-디코더 모델은 긴 텍스트 처리 시 마지막 은닉 상태(문맥 벡터)가 병목 현상을 일으켜 정보 손실 문제가 있었습니다. 🧠
어텐션 메커니즘의 등장: RNN 인코더의 모든 은닉 상태를 활용하여 디코더가 각 출력 토큰을 생성할 때 더 풍부한 문맥 정보를 참조하게 함으로써 번역 성능을 크게 향상시켰습니다. 💡
트랜스포머의 혁신: RNN 제거: 2017년 구글이 발표한 트랜스포머 모델은 RNN을 완전히 제거하고 오직 어텐션 메커니즘만을 사용하여 입력 텍스트를 동시에 처리할 수 있게 함으로써 병렬 처리 효율을 극대화했습니다. 🚀
셀프 어텐션의 작동 원리: 트랜스포머의 핵심인 셀프 어텐션은 각 토큰이 쿼리(Query), 키(Key), 값(Value) 벡터를 생성하고, 쿼리와 키의 유사도를 기반으로 다른 토큰에 대한 주의(가중치)를 스스로 학습하여 문맥 정보를 통합합니다. 🧘♀️
멀티 헤드 어텐션으로 다양한 관점 학습: 여러 개의 셀프 어텐션 "헤드"를 병렬로 사용하여 입력 임베딩의 다른 부분에 집중하고 다양한 관점에서 문맥 관계를 학습한 후, 이들을 결합하여 더 풍부한 표현을 생성합니다. 🧠🧠🧠🧠
위치 인코딩의 필요성: RNN이 제거되면서 토큰의 순서 정보가 사라지는 문제를 해결하기 위해, 토큰 임베딩에 위치 정보를 추가하여 각 토큰이 문장 내에서 어느 위치에 있는지 모델이 인지하도록 돕습니다. 📍
층 정규화 (Layer Normalization) 도입: 배치 정규화와 달리 각 샘플 내의 토큰별 특성 차원에 대해 정규화를 수행하여, 가변적인 토큰 길이를 가진 텍스트 데이터에 더 적합한 안정적인 학습을 가능하게 합니다. 📏
트랜스포머 인코더 모듈의 구조: 멀티 헤드 어텐션과 피드포워드 네트워크를 중심으로 잔차 연결(Residual Connection), 드롭아웃(Dropout), 층 정규화(Layer Normalization)가 반복적으로 적용되어 깊은 네트워크를 안정적으로 학습하고 풍부한 표현을 추출합니다. 🏗️
피드포워드 네트워크의 역할: 인코더 모듈 내에서 두 개의 댄스층으로 구성되며, 첫 번째 층에서 은닉 차원을 확장하고 두 번째 층에서 원래 차원으로 복원하여 비선형성을 추가하고 표현력을 높입니다. 📈
패딩 마스크를 통한 유연한 처리: 가변적인 입력 토큰 길이를 처리하기 위해 패딩된 부분에 어텐션이 적용되지 않도록 마스크를 사용하여 불필요한 계산을 방지하고 정확도를 유지합니다. 🎭