브렌쏭의 Veritas_Garage

[3Blue1Brown] Attention 본문

[Project_하다]/[Project_공부]

[3Blue1Brown] Attention

브렌쏭 2024. 7. 5. 14:38

1706.03762 (arxiv.org) : Attention Is All You Need

 

트랜스포머의 경우 단어들은 토큰 단위로 나뉘어서 임베딩을 거친다.

고차원 벡터와 입력된 토큰을 연결지어서 여러 차원에서의 토큰의 의미를 방향으로 저장하게 되는 것.

 

중요한 점은 사전학습 과정에서 "고양이" 라는 단어가 특정 동물을 의미하는 것이며, 포유류이고 고양잇과의 동물이라고 이미 학습이 되었다 하더라도, 실제 사용과정에서 입력된 "고양이"문맥 안에서 어떤 의미를 내포하고 있는지 주의집중해야 한다.

 

어쩌면 고양이는 실제 집에서 키우는 고양이를 지칭하는 것일 수도 있고

어쩌면 실제 동물이 아닌 한 어린아이의 상상 속 친구일 수도,

혹여 고양이를 본적없는 누군가가 강아지를 보며 지칭하는 것일 수도 있다.

고양이라는 단어가 가진 수많은 차원의 속성들 중에 현재 입력과 관련도가 높은 것을 위주로 답변해야 한다

"고양이" 라는 단어를 써서 짧은 글을 작성해봐
여기 "고양이"를 주제로 장난스럽게 사용할 수 있는 짧은 글이 있습니다:

사랑해, 내 고양이 같은 여자친구야! 오늘도 네가 나를 보며 미소 짓는 걸 보고 나니, 마치 내가 참치 캔을 든 것처럼 네 관심을 한몸에 받는 기분이야. 너의 귀여운 눈망울은 언제나 나의 마음을 사르르 녹이지. 하지만 당신이 새벽에 내 발을 공격할 때는 정말로 진짜 고양이 같아서, 잠에서 깰 때마다 깜짝 놀라곤 해! 그래도 어떻게 화를 낼 수 있겠어? 내 사랑스러운 고양이 같은 그대니까. 오늘도 사랑한다고, 내 깜찍한 냥이야. 😻

 

GPT-4o에 의하면 새벽마다 발을 공격하는 고양이같은 여자친구도 있다고 하니, 이 얼마나 가능성이 넓은 것인가..


따라서 입력된 문장에서 문맥을 이탈하지 않도록 일관적인 답변을 생성하기 위해서, Attention이 필요하다.

선택과 집중, 주의집중

Attention 메커니즘은 모델이 입력 데이터 전체에서 중요한 정보를 선택적으로 집중하도록 하여, 전체적인 성능을 향상시키는 데 기여한다.

기존에 사전 설정된 임베딩에 추가적으로, 입력된 정보를 토대로 일종의 가중치를 생성한다.

 

어텐션 메커니즘은 세 가지 구성 요소로 이루어져 있다.

  • 쿼리(Query): 현재 처리하고 있는 정보 또는 타겟 데이터 포인트.
  • 키(Key): 비교 대상이 되는 전체 데이터 포인트.
  • 값(Value): 각 키에 대응하는 출력 데이터 포인트.

새벽마다 발을 공격한다는 괴담을 바탕으로 좀 더 공부해보자

Query : 현재 처리하고자 하는 정보

내 여자친구가 고양이처럼 귀엽다는 감정

 

표현하고 싶은, 반대로 모델 입장에서 이해하고 싶은 것은 바로 고양이와 여자친구를 연관짓는 것이다.

고양이와 여자친구가 모종의 공통점을 가지고 표현가능하다는 점이 쿼리가 된다.

Key : 비교대상이 되는 정보

“고양이”라는 단어는 다양한 특성(귀여움, 장난스러움, 애교, 참치캔 좋아함)을 키로 사용한다.

고양이라는 단어가 사전에 학습될때 부터 가지고 있던 여러 차원의 속성들 중 몇가지이며, 여자친구라는 단어가 가진 속성들과 비교하고 그 공통된 방향성이 키가 된다.

여자친구의 여러 특성 중에서 “고양이 같은 특성”이 키가 될 것이다.

Value : 각 Key와 대응되는 구체적인 정보

새벽마다 여자친구가 발을 공격

 

영문은 알수없지만 여하튼 새벽마다 발을 공격하는 여자친구의 행동은 장난스러운 고양이가 동일한 행동을 취하는 것과 대응된다.


Attention Score

주의집중의 핵심 아이디어는 쿼리와 각 키 사이의 유사성을 계산하는 것이다.

값과는 별개로 입력데이터를 바탕으로 어떤 부분이 출력에 있어 가장 관련도가 높은지를 측정하는 것이다.

 

쿼리는 “내 여자친구를 귀엽고 사랑스럽게 묘사하고 싶은 감정”

키는 여자친구의 “고양이 같은 특성”

 

그 사이의 연관도가 높다면 Attention Score의 값이 높아진다.

  1. 쿼리와 키의 유사성 평가: 여자친구의 특정 속성(발을 공격함)이 쿼리(사랑스러움, 장난스러움을 표현하고 싶은 감정)와 얼마나 잘 매치되는지 평가한다. 여기서 유사성은 감정적, 행동적 특징을 기반으로 한다.
  2. 스코어 산출: 이 유사성을 기반으로 각 키에 대해 숫자적인 스코어를 할당. 예를 들어, 발을 공격하는 장난스러운 행동이 사랑스러움을 표현하는 데 가장 적합하다고 판단되면, 이 키에 높은 스코어를 부여한다.
  3. 가중치 결정: 스코어가 높은 키(여기서는 장난스러움)에 더 많은 가중치를 부여하여 이야기에서 해당 특성을 더 강조. 반대로 스코어가 낮은 키는 적은 가중치를 받아 이야기에서 덜 강조된다.

계산된 스코어는 소프트맥스 함수를 통해 정규화되어, 모든 스코어의 합이 1이 된다.

이렇게 얻은 정규화된 스코어를 “어텐션 가중치(Attention Weights)“라고 하며, 이 가중치를 사용하여 각 에 가중치를 곱한 후 최종적으로 모두 더해 출력이 된다.

 

1) 새벽마다 발을 공격하는 여자친구의 괴담은 장난스러움이라는 키가 쿼리와 높은 연관도를 보여서,

2) 그것에 집중하기 위해 가중치가 곱해진 결과물이다.


물론 이 과정은 단순히 고양이나, 여자친구 같은 단어 뿐만 아니라, 방법에 따라 Query-Key 쌍이 상당히 많아질 수 있다.


Attention Mechanisms

  1. Single Attention: 가장 간단한 형태의 어텐션으로, 하나의 쿼리가 모든 키와 비교되어 최종 결과를 도출한다.
  2. Multi-Head Attention: 이 방식은 여러 개의 어텐션 메커니즘(“헤드”)을 동시에 사용하여 서로 다른 표현(subspace)에서 정보를 학습하고, 이를 통합하여 더 풍부한 정보를 얻는다. 이 방식은 특히 트랜스포머 모델에서 중요하다.
  3. Self-Attention: 입력 데이터 내의 모든 요소가 서로 비교된다. 즉, 쿼리, 키, 값 모두 같은 소스에서 가져온다. 셀프 어텐션은 문장 내의 각 단어가 문장의 다른 단어와 어떻게 상호 작용하는지를 모델링하는 데 매우 효과적.

GPT의 경우에는 멀티헤드 어텐션을 이용하고, 매 어텐션 계층에서 96개의 헤드를 생성한다고 한다. (GPT-3 기준)

정신나갈거같네

 

 

Comments