[Home] AI로 돌아가기

Attention 메커니즘

Attention 메커니즘은 인공신경망이 주어진 입력에서 어떤 정보에 "집중"해야 하는지를 동적으로 결정하는 알고리즘적 기법이다. 본 메커니즘은 자연어처리(NLP)를 비롯한 다양한 인공지능 분야에서 핵심적인 역할을 수행하며, 특히 Transformer 아키텍처의 기반 구성 요소로 활용된다.

Transformer k2k.png
Transformer and Attention

[Shorts] 트래스포머를 이해하기

[공식집] Transformer란 무엇인가?

1. 개요

Attention이란 입력 시퀀스 내의 각 요소가 출력에 얼마나 영향을 미치는지를 계량적으로 산출하여, 중요도가 높은 요소에 더 많은 비중을 두도록 하는 메커니즘이다. 이는 인간이 복잡한 문장을 해석할 때 특정 단어에 집중하는 인지적 과정을 수학적으로 모델링한 것이라 할 수 있다.

전통적인 순환신경망(RNN)이나 장단기 메모리 네트워크(LSTM)는 입력을 순차적으로 처리하며, 입력 길이가 길어질수록 초기 정보의 영향력이 감소하는 문제가 존재한다. 이러한 구조는 문맥의 장기 의존성을 처리하는 데 한계가 있으며, 이에 대한 보완으로 Attention 메커니즘이 도입되었다. 본 방식은 입력 전체를 동시에 고려함으로써 정보 손실 없이 더 정교한 표현을 생성할 수 있다.

Attention 메커니즘은 현대 인공지능 기술의 핵심 기법 중 하나로, 정보 간 상호작용을 동적으로 조절함으로써 모델이 의미적 중요도에 기반하여 학습할 수 있도록 한다.

이는 단순한 데이터 처리 단계를 넘어, 인지적 집중과 유사한 방식으로 정보를 재해석하는 구조를 갖추고 있다. 특히 GPT, BERT, T5 등 주요 언어 모델들이 이 메커니즘을 기반으로 설계되어 있으며, 앞으로도 다양한 AI 시스템의 근간을 이루게 될 것이다.

2. 작동 절차

Attention 메커니즘의 작동 절차는 다음과 같다.

  1. 입력 시퀀스를 각각의 임베딩 벡터로 변환한다.
  2. 각 벡터를 Query(질의), Key(열쇠), Value(값) 세 개의 역할로 분리한다.
  3. Query와 Key 간의 유사도를 내적 연산을 통해 계산한다.
  4. 유사도 결과에 정규화를 적용하여 가중치(Attention Weight)를 산출한다.
  5. Value 벡터에 가중치를 곱하여 출력 벡터를 구성한다.

이 과정을 모든 입력 시퀀스 요소에 반복 수행하면, 입력 간의 상호 연관성을 반영한 출력이 생성된다.

3. 예시

예제 1: 번역 작업에서의 어텐션

입력 문장 (영어):
"I am a student."

목표 출력 문장 (프랑스어):
"Je suis étudiant."

이 번역 과정에서 어텐션 메커니즘은 출력 단어를 생성할 때마다 입력 문장의 어떤 단어에 집중해야 할지를 동적으로 결정한다.

Je (I): → "I"에 가장 높은 가중치를 둠
suis (am): → "am"에 집중
étudiant (student): → "student"에 집중

이때, 어텐션 메커니즘은 입력 문장의 각 단어에 대해 가중치를 할당하는데, 이 가중치는 현재 번역하고자 하는 단어와 얼마나 관련 있는지를 반영한다. 즉, 번역 과정의 각 단계마다 "어디를 봐야 할지" 알려주는 역할을 한다.

4. 장점

5. 셀프 어텐션: 트랜스포머의 핵심

셀프 어텐션은 트랜스포머 알고리즘의 핵심이다. 어텐션 메커니즘과 차이는 바로 ‘self’라는 말이 붙은 것이다. 두 가지 모두 어텐션이라는 이름을 쓰지만 하나는 서로 다른 두 시퀀스 간, 다른 하나는 하나의 시퀀스 내에서 동작한다는 점에서 다르다.

먼저 기존의 어텐션은 주로 번역 모델 등에서 인코더와 디코더를 연결하는 데 사용된다. 입력 문장과 출력 문장 사이에서 어떤 단어가 서로 대응되는지에 집중한다. 그렇기 때문에 서로 다른 두 시퀀스 간에서 동작한다.

반면에 셀프 어텐션은 번역처럼 두 문장을 잇는 것이 아니다. 하나의 문장 내부에서 단어 간 관계를 학습하는 방법이다. 즉, 하나의 시퀀스 내에서 동작하는 것이다. 그래서 셀프 어텐션은 한 문장 내부에서의 단어 관계 학습에 초점을 맞춘다. 셀프 어텐션은 하나의 시퀀스(문장) 내에서 각 단어가 다른 단어에 얼마나 영향을 주고받는지 계산하는 메커니즘이다.

...
어텐션과 셀프 어텐션의 비교
출처: 길벗

예를 들면 셀프 어텐션은 ‘나는 학교에 갔다’에서 ‘나’라는 단어와 ‘갔다’는 단어의 관계를 파악하여 누가 갔다는 의미를 연결한다. 또는 대명사 ‘그’가 지칭하는 대상 단어를 같은 문장 앞부분에서 찾아내는 등 역할을 한다. 이것으로 한 문장 안에서 각 단어가 다른 단어와 얼마나 연관되어 있는지 스스로 판단하여 문맥을 이해한다. 이렇게 함으로써 모델은 문장 속 문맥(context)을 더 깊이 이해할 수 있다.

셀프 어텐션에서는 각 단어가 다른 단어와 소통하기 위해 세 가지 정보를 만들어 낸다. 이것이 바로 쿼리(Query), 키(Key), 밸류(Value)이며, 이 값을 서로 비교하고 조합하면서 중요한 정보를 찾아낸다.

...
셀프 어텐션의 절차
출처: https://sebastianraschka.com/blog/2023/self-attention-from-scratch.html

자, ‘인간의 심리’ 문서에 다음 단어가 포함되어 있다고 생각해 보자. 여기에 등장하는 단어를 팀원으로 가정해 보자. 등장하는 팀원은 ‘기쁨’, ‘슬픔’, ‘버럭’, ‘까칠’, ‘소심’이 다섯 명이다. 이 다섯 명은 함께 감정 보고서를 작성하고 있는데, 각자 서로를 잘 이해하고자 노력하고 있다.

자, 그럼 이제 회의에서 실제로 셀프 어텐션이 어떻게 진행되는지 살펴보자. 회의에 참석한 팀원 ‘기쁨’이가 자신의 쿼리를 떠올리고, 다른 팀원들의 키를 하나씩 확인한다고 상상해 보자. 이제 ‘기쁨’이는 회의에 있는 다른 팀원들의 키를 하나씩 살펴보며 생각한다.


“‘소심’이라는 감정을 더 알고 싶은데, 누구에게 물어보면 좋을까?”
이렇게 관련성을 비교해서 중요도 점수(어텐션 가중치)를 계산한다.

‘소심’이의 키가 ‘소심’, ‘버럭’이의 키가 ‘분노’이기 때문에 ‘기쁨’이는 ‘소심’이의 키가 자신의 쿼리와 가장 맞는다고 판단하고, ‘소심’이에게 높은 가중치를 준다. 즉, ‘소심’이의 이야기를 가장 집중해서 들었다는 의미다.

이때 소심이가 제공하는 밸류, 예를 들어 “‘소심’함은 낯선 환경에서 쉽게 긴장하고 조심스러운 행동을 보인다.” 같은 내용은 ‘기쁨’이가 참고하는 핵심 정보가 된다. 반면에 키가 ‘슬픔’이나 ‘분노’처럼 덜 관련된 주제를 가진 ‘슬픔’이나 ‘버럭’이에게는 낮은 가중치가 부여되고, 그들의 밸류는 덜 중요해진다.

그런데 이 과정은 ‘기쁨’이 혼자만 하는 것이 아니다. 회의에 참석한 모든 팀원, 즉 문장을 이루는 모든 단어가 동시에 이와 똑같은 일을 한다. 각 단어는 자신만의 쿼리를 기준으로 다른 단어들의 키를 비교하고, 그 가중치를 기반으로 다른 단어들의 밸류를 참고해 자기만의 새로운 표현(이해)을 만들어 낸다. 결국 회의가 끝나면 모든 팀원이 서로의 발언 속 자신에게 중요하다고 판단한 정보를 중심으로 참고했기 때문에 각자 더욱 풍부하고 정확한 문맥 이해를 갖게 된다.

이러한 방식이 바로 트랜스포머에서 사용되는 셀프 어텐션 메커니즘입니다. 결국 문장을 구성하는 각 단어는 자신만의 쿼리를 만들고, 다른 단어들의 와 비교하여 그들의 밸류를 중요도에 따라 참고하는 과정을 거친다. 이 메커니즘 덕분에 모델이 문장 속 모든 단어가 어떤 관계를 맺고 있는지 이해하게 되고, 문맥 정보를 풍부하게 반영해 새로운 표현을 만들어 낼 수 있다. 그래서 번역, 요약, 질문 답변 같은 작업에서도 트랜스포머는 훨씬 더 자연스럽고 정확한 결과를 내게 된다.

6. 멀티헤드 어텐션

...
The Multi-head Attention Mechanism
출처: https://newsletter.theaiedge.io/p/the-multi-head-attention-mechanism

트랜스포머에서는 문장을 읽을 때 단 하나의 시선으로만 바라보지 않는다. 하나의 어텐션만 사용하면 문장을 한 가지 방식으로 해석할 수 있는데, 이렇게 하면 놓치는 정보가 생길 수도 있다. 그래서 트랜스포머는 멀티헤드 어텐션(multi-head attention)이라는 구조를 사용한다. 구조도에서 ‘Multi-Head Attention’은 말 그대로 여러 개의 어텐션 헤드(head)가 동시에 문장을 바라보며 각기 다른 관점에서 정보를 처리하는 방식이다. 그렇다면 이 ‘헤드’는 정확히 무엇일까?

앞에서 배운 셀프 어텐션에서는 각 단어(토큰)가 세 가지 정보, 즉 쿼리(Query), 키(Key), 밸류(Value)를 만들어 서로 관계를 계산했다. 멀티헤드 어텐션에서도 마찬가지로 쿼리, 키, 밸류를 사용한다. 하지만 중요한 차이는 ‘여러 개의 서로 다른 쿼리, 키, 밸류’가 동시에 만들어진다는 점이다. 예를 들어 특정한 하나의 단어에서

이렇게 서로 시선이 다른 여러 헤드가 동시에 동작하면서 하나의 문장을 훨씬 풍부하게 이해할 수 있게 되었다.

앞에서 팀 비유를 계속하자면 한 명의 팀원이 하나의 시선이 아니라 여러 개의 시선으로, 즉 여러 부캐(부캐릭터의 준말. 여러 명의 자신이 있는 모습)가 되어 내용을 분석한다고 상상해 보자.

이 모든 분석 결과를 합쳐서 최종 어텐션 결과를 만들어 내는 것, 그것이 바로 멀티헤드 어텐션의 핵심이다.

하나의 시선만 가질 때보다 훨씬 더 다양한 문맥 정보를 얻을 수 있어 트랜스포머는 번역, 질문 응답, 요약 같은 작업에서 놀라운 성능을 낼 수 있다.