본문 바로가기

LLM/트랜스포머(BERT,GPT,BART,T5)

2-2. 어텐션 메커니즘, 쿼리(Query)-키(Key)-값(Value)

2.3 어텐션 이해하기

 

  어텐션 메커니즘트랜스포머 모델입력된 문장의 각 단어 간의 관계를 이해하는 데 중요한 역할을 해요. 이를 통해 특정 단어나 문장이 문맥에서 얼마나 중요한지를 계산할 수 있죠.어텐션(Attention)이란 영어 뜻도 '집중', '주목'이라는 뜻이죠. 즉, 문장에서 중요한 단어끼리의 관계에 집중하는 것이 어텐션 메커니즘의 뜻이에요. 어텐션 덕분에 트랜스포머는 긴 문장이나 복잡한 문맥도 쉽게 처리할 수 있죠.

 

 


2.3.1 쿼리, 키, 값 이해하기

  이전에 배운 쿼리(Query), 키(Key), 값(Value) 개념을 다시 떠올려볼게요. 이 세 가지 요소가 어텐션 메커니즘의 핵심이에요.

  • 쿼리(Query): 문장에서 특정 단어를 선택해, 그 단어가 다른 단어들과 어떤 관련이 있는지 확인하는 역할을 해요. 쉽게 말해, 어떤 단어가 다른 단어들과 어떻게 연결되는지를 묻는 거예요.
  • 키(Key): 다른 단어들과의 관계확인하기 위한 기준값이에요. 각 단어가 자신을 설명하는 정보라고 생각할 수 있어요.
  • 값(Value): 최종적으로 선택된 단어들에 대한 가중합 결과를 제공해요. 즉, 어떤 단어가 가장 중요한지 계산한 후, 그 결과를 값으로 반환해요.

  어텐션 메커니즘은 이 세 가지를 사용해 문장 내에서 중요한 부분을 선택하고, 그에 따라 다음 단어를 예측하거나 문장을 생성해요.

 

  • 요약:
    쿼리, 키, 값은 문장 내에서 중요한 단어를 선택하고, 문맥을 이해하는 데 중요한 역할을 해요.
  • 용어설명:
    • 쿼리(Query): 선택된 단어가 다른 단어와 어떤 관련이 있는지를 확인하는 역할이에요.
    • 키(Key): 각 단어가 자신을 설명하는 기준값으로, 관계를 확인하는 데 사용돼요.
    • 값(Value): 중요도를 계산해 최종적으로 반환된 결과를 제공해요.

2.3.2 코드로 보는 어텐션

  이제 어텐션 메커니즘코드로 구현해볼게요. 쿼리-키-값 어텐션을 간단히 구현한 코드입니다.

 

import torch
import torch.nn.functional as F

# 쿼리, 키, 값 벡터 정의
query = torch.rand(1, 3)  # 쿼리 벡터 (1x3)
key = torch.rand(3, 3)    # 키 벡터 (3x3)
value = torch.rand(3, 3)  # 값 벡터 (3x3)

# 어텐션 점수 계산
attention_scores = torch.matmul(query, key.T)

# 소프트맥스를 통해 확률 분포로 변환
attention_probs = F.softmax(attention_scores, dim=-1)

# 최종 어텐션 값 계산 (값 벡터에 확률 가중치 곱하기)
attention_output = torch.matmul(attention_probs, value)

print("어텐션 점수:\n", attention_scores)
print("어텐션 확률:\n", attention_probs)
print("어텐션 출력:\n", attention_output)

 

 

  이 코드는 어텐션 점수를 계산한 후, 그 점수를 바탕으로 어텐션 확률을 구하고, '최종값(Value)'을 가중합하는 방식이에요. 이를 통해 트랜스포머가 문장 내에서 어떤 부분에 더 집중해야 하는지를 결정할 수 있죠. 쿼리와 키의 상호작용을 통해 어떤 단어가 중요한지 판단하고, 그에 따라 값(Value)을 선택하게 돼요.

  • 요약:
    코드에서는 쿼리, 키, 값을 통해 어텐션 점수를 계산하고, 최종적으로 중요한 정보를 선택하는 과정을 보여줘요.

정리

  1. 어텐션 메커니즘은 트랜스포머가 문장 내에서 중요한 단어에 더 집중할 수 있도록 도와줘요.
  2. 쿼리(Query), 키(Key), 값(Value)는 어텐션 메커니즘의 핵심 요소로, 문장 내 중요한 부분을 선택하는 역할을 해요.
  3. 코드를 통해 어텐션 점수를 계산하고, 그 결과로 문맥 내에서 중요한 단어를 선택하는 과정을 알 수 있어요.