[비전공자도 이해하는 트랜스포머] 1. Scaled Dot-Product Attention

필승! 강화도에서 해병대 장교로 국방의 의무를 다하고, 현재는 대학원에서 인공지능을 공부하고 있는 규씨입니다.


단순히 읽고 이해하는 것만으로는 기억에 오래 남지 않는다는 것을 깨닫고, 공부한 내용을 정리하고 공유하면서 더 오래 기억하기 위해 블로그를 시작하게 되었습니다.


읽으시면서 틀리거나 제가 잘못 이해한 부분 지적해 주시면 정말 감사하겠습니다. 함께 배우고 성장하는 공간이 되기를 바랍니다. 감사합니다!


트랜스포머의 전체적인 구조가 궁금하신 분은 아래 링크를 참고하시면 되겠습니다.

2024.06.07 - [논문 리뷰] - Attention Is All You Need

 

Attention Is All You Need

필승! 강화도에서 해병대 장교로 국방의 의무를 다하고,현재는 대학원에서 인공지능을 공부하고 있는 규씨입니다.단순히 읽고 이해하는 것만으로는 기억에 오래 남지 않는다는 것을 깨닫고,공

acting-rationally.tistory.com


Transformer의 핵심인 Self-Attention에 속하는 Scaled Dot-Product Attention의 구조입니다. 혹시 이 그림을 보고 한 번에 이해가 가시나요? 저는 이해하는데 시간이 오래 걸렸습니다. 그래서 어려운 수식 없이도 이해할 수 있는 트랜스포머를 주제로 글을 써보기로 했습니다.

 

물론 트랜스포머 구조를 이해하고 이 그림과 수식을 본다면 정말 잘 표현된 식이라고 할 수 있습니다. 다 제가 멍청한 탓...

 

 

  입력 임베딩과 변환

먼저 입력 데이터를 임베딩 벡터로 변환합니다. 이 임베딩 벡터들은 다시 세 가지 벡터로 변환되는데, 이를 Query, Key, Value 벡터라고 합니다. 벡터들에 대해 설명하자면

 

  • Query (Q): 현재 단어의 표현을 나타내는 벡터입니다.
  • Key (K): 다른 단어들과의 유사도를 계산하는 데 사용되는 벡터입니다.
  • Value (V): 최종 출력 벡터를 생성하는 데 사용되는 벡터입니다.

 

Query와 Key의 곱

Query와 Key 벡터를 사용하여 각 단어 간의 유사도를 계산합니다. 이때 Key 벡터는 전치행렬로 변환되어야 합니다. Query 벡터와 전치된 Key 벡터를 곱하면 새로운 벡터가 생성됩니다.

 

안정화와 소프트맥스 함수 적용

생성된 벡터는 안정화를 위해 각 원소에 1/sqrt(d)값을 곱합니다. 여기서 d는 벡터의 차원 수를 의미하며 트랜스포머 논문에서는 d=512로 설정했습니다. 그 후 소프트맥스 함수를 적용하여 값을 확률 분포로 변환합니다. 이 값들을 어텐션 스코어라고 부릅니다.

 

Value 벡터와의 결합

마지막으로 어텐션 스코어와 Value 벡터를 곱합니다. 이렇게 계산된 결과가 셀프 어텐션이 되며, 이를 통해 입력 데이터 간의 상호작용을 반영할 수 있습니다.

 

전체적인 그림

과정을 모두 거치면 Scaled Dot-Product Attention 완성됩니다. 메커니즘을 통해 트랜스포머 모델은 입력 데이터의 중요한 부분에 집중할 있게 됩니다.


지금까지 트랜스포머의 핵심 개념 중 하나인 Scaled Dot-Product Attention에 대해 알아보았습니다. 처음에는 이해하기 어려울 수 있지만 반복해서 읽고 적용해보면 분명히 도움이 될 것입니다. 궁금한 점이나 잘못된 부분이 있다면 언제든지 댓글로 알려주세요. 함께 배우고 성장하는 공간이 되기를 바랍니다. 읽어주셔서 감사합니다!