- 트랜스포머 아키텍처의 핵심은 논문의 제목 'Attention is All you need'에서도 알 수 있듯이 '어텐션'이다.
어텐션의 사전적 의미는 '주의'라고 번역할 수 있는데, 텍스트를 처리하는 관점에서는 입력한 텍스트에서
어떤 단어가 서로 관련되는지 '주의를 기울여'파악한다는 의미로 이해할 수 있다
- 어떻게 하면 딥러닝 모델이 관련 있는 단어를 찾도록 만들 수 있을까?
이번 절에서는 사람이 글을 읽는 방법을 들여다보며 어텐션을 직관적으로 이해할 수 있는 방법을 알아보고
어텐션의 핵심 개념인 쿼리(query), 키(key), 값(value)에 대해 살펴본 후, 코드 레벨에서 어텐션을 구현해 본다.
1) 사람이 글을 읽는 방법과 어텐션
- 사람이 글을 읽을 때를 생각해 보면, 쉬운 글을 읽을 때는 왼쪽에서 오른쪽으로 흐르듯이 읽지만
복잡하고 어려운 글을 읽을 때는 자주 멈추면서 어떤 단어가 어떤 단어와 연결되는지 문장 안에서 고민하기도 하고
문장 간에 찾아보기도 한다.
- 어텐션은 이렇게 사람이 단어 사이의 관계를 고민하는 과정을 딥러닝 모델이 수행할 수 있도록 모방한 연산이다.
어텐션 작동 방식을 직관적으로 이해하기 위해 먼저 사람이 단어 사이의 관계를 확인하는 방법을 살펴보자.
- 다음 문장을 봤을 때 '파리'가 도시인지 곤충인지 알 수 있겠는가?
1) OO OO 파리 OOO OOO
- '파리'의 앞뒤 단어가 가려져 있기 때문에 '파리'가 도시를 말하는지 곤충을 말하는지 판단할 수 없다.
하지만 다음 문장에서는 '파리'가 도시라는 사실을 명확히 알 수 있다.
- 나는 최근 파리 여행을 다녀왔다
- 왜 첫 문장에서는 알 수 없고, 두 번째 문장에서는 알 수 있었을까?
사람은 단어를 그 단어만으로 해석하지 않고 주변의 단어를 통해 맥락을 추가한 새로운 단어로
이해하기 때문이다.
- 그 과정을 그림으로 나타내면 그림 2.8과 같다.
'파리' 주변에 있는 '여행'과 '다녀왔다'라는 맥락을 더해서 새롭게 프랑스의 수도인 '파리'로 이해한다.
어텐션으로 이 과정을 바라보면, '파리'와 관련이 깊은 '여행을'과 '다녀왔다'에 주의를 기울여 '파리'가
도시라고 해석한 것이다.
- 사람이 자연스럽게 관련이 있는 단어를 찾고 그 맥락을 반영해 단어를 재해석하는 것처럼
어텐션 연산을 만들려면 어떻게 해야 할까?
먼저, 단어와 단어 사이의 관계를 계산해서 그 값에 따라 관련이 깊은 단어와 그렇지 않은 단어를 구분할 수 있어야 한다.
다음으로, 관련이 깊은 단어는 더 많이, 관련이 적은 단어는 더 적게 맥락을 반영해야 한다.
이어지는 절에서는 단어와 단어 사이의 관계를 계산하는 방법을 알아보고, 관계에 따라 맥락을 반영하는 방법을 알아본다.
'LLM을 활용한 실전 AI 애플리케이션 개발' 카테고리의 다른 글
| [LLM을 활용한 실전 AI 애플리케이션 개발] 쿼리, 키, 값 이해하기(2) (0) | 2025.06.03 |
|---|---|
| [LLM을 활용한 실전 AI 애플리케이션 개발] 쿼리, 키, 값 이해하기 (0) | 2025.06.03 |
| [LLM을 활용한 실전 AI 애플리케이션 개발] 텍스트를 임베딩으로 변환하기 (0) | 2025.06.02 |
| [LLM을 활용한 실전 AI 애플리케이션 개발] 트랜스포머 아키텍처란 (0) | 2025.05.15 |