AI VIDEO BRIEFING

어텐션 메커니즘 원리 정리: 쿼리·키·밸류 세 행렬과 소프트맥스로 이해하는 트랜스포머의 핵심 계산 과정

트랜스포머의 어텐션이 실제로 무엇을 계산하는지 쿼리·키·밸류 세 가중치 행렬과 소프트맥스 가중치를 중심으로 단계별로 풀어 설명하고, 문장 속 단어들이 서로를 얼마나 참조하며 임베딩을 갱신하는지, 그리고 내적을 차원의 제곱근으로 나누는 이유까지 짚었다.

트랜스포머의 어텐션, 세 개의 행렬로 이해하기 영상 대표 이미지

핵심 메시지

  • 어텐션 층은 입력 단어 벡터들 사이에 정보를 주고받게 해서, 각 단어의 벡터가 의미상 관련된 단어의 정보를 흡수하도록 만든다.
  • 쿼리 가중치 행렬과 키 가중치 행렬은 단어 임베딩을 더 낮은 차원 공간으로 투영하고, 그 공간에서의 내적이 '얼마나 주목할지'를 수치화한다.
  • 내적 값을 낮은 차원 공간의 차원 수의 제곱근으로 나누는 이유는 값이 지나치게 커져 소프트맥스가 불안정해지는 것을 막기 위해서다.
  • 밸류 가중치 행렬은 '이 단어에 주목한다면 임베딩을 어떻게 갱신할지'에 해당하는 업데이트 벡터를 만들어 준다.
  • 세 행렬은 모두 학습 과정에서 조정되는 파라미터이며, 다음 단어 예측이라는 목표에 맞춰 스스로 튜닝된다.

쉽게 이해하기

트랜스포머를 이해하려 할 때 가장 먼저 막히는 지점이 어텐션이다. 이 영상은 트랜스포머 전체를 한꺼번에 다루는 대신 어텐션 하나만 떼어 개념·시각·수식 순서로 설명한다. 설명자는 트랜스포머를 공부하며 자신이 가장 어려워한 주제가 바로 어텐션이었다고 밝히며, 그래서 이 주제만 따로 시간을 들여 다룬다고 말한다.

예시는 아주 단순하다. 여섯 단어로 된 음식 또는 영화 후기 문장이 있고, 네 번째 단어는 항상 '식사' 아니면 '영화'이며, 두 번째와 세 번째 단어가 그 명사를 수식한다. 마지막 단어는 감상평인데 영화면 good 또는 bad, 음식이면 divine 또는 dreadful이 온다. 앞의 다섯 단어만 보고 마지막 단어를 맞히는 것이 과제다.

어텐션 층은 n개의 벡터를 받아 n개의 벡터를 내놓는다. 그 사이에서 벌어지는 일이 핵심인데, 한 문장으로 요약하면 입력 벡터들 사이에 정보를 전달해 출력 벡터가 의미상 관련된 단어의 정보를 흡수하게 만드는 것이다. 마지막 단어를 잘 맞히려면 명사가 무엇인지, 그 명사를 꾸미는 형용사가 무엇인지를 한자리에 모아야 하기 때문이다.

수식으로 내려가면 세 개의 가중치 행렬이 등장한다. 쿼리 행렬과 키 행렬은 각 단어 임베딩을 원래보다 낮은 차원 공간으로 투영한다. 학습이 끝나면, 어떤 단어가 다른 단어에 주목해야 할 때 그 단어의 쿼리 벡터가 상대 단어의 키 벡터와 가까운 자리에 놓이도록 조정된다. 쿼리 벡터는 일종의 기준점이고, 주목받아야 할 단어의 키 벡터가 그 주위에 모이는 셈이다.

가까운 정도는 단순한 내적으로 잰다. 모든 쿼리 벡터를 행으로 쌓은 행렬 Q와 키 벡터를 쌓은 K를 두고 Q에 K의 전치를 곱하면 모든 조합의 내적이 한 번에 정사각 행렬로 모인다. 여기에 차원 수의 제곱근으로 나눈 뒤 행 단위 소프트맥스를 적용하면 각 행의 합이 1이 되어, 한 단어가 총 1.0의 주의력을 다른 단어들에 어떻게 배분하는지로 읽을 수 있게 된다.

주요 인사이트

  • 어텐션 가중치 행렬을 읽는 법은 의외로 직관적이다. 행은 '주목하는 쪽' 단어, 열은 '주목받는 쪽' 단어이며, 각 행의 값이 합쳐서 1이 되기 때문에 주의력의 배분 비율로 해석할 수 있다.
  • 학습된 어텐션이 실제로 형용사와 명사를 서로 강하게 연결한다는 점은, 우리가 '이렇게 동작해야 한다'고 예상한 것과 모델이 스스로 찾아낸 해법이 일치한다는 사례다.
  • 제곱근으로 나누는 스케일링은 임의의 장식이 아니라, 낮은 차원 공간이라도 실제 응용에서는 충분히 고차원이라 내적의 크기가 커지고 소프트맥스가 극단값에 취약해지는 문제를 막기 위한 장치다.
  • 이 영상이 다루는 것은 어텐션의 한 갈래일 뿐이다. 단어의 순서를 어떻게 반영하는지, 멀티헤드 어텐션이 무엇인지, 왜 이 과정을 정확히는 셀프 어텐션이라 불러야 하는지는 별도의 주제로 남는다.
  • 밸류 행렬을 낮은 차원이 아닌 원래 차원의 정사각 행렬로 놓는 설명 방식은 널리 알려진 표기와 형태가 달라 보이지만, 설명자는 두 형식이 수학적으로 동등하며 장부 정리의 차이일 뿐이라고 정리한다.

자주 묻는 질문

어텐션 층은 입력과 출력이 어떻게 다른가?

입력과 출력 모두 n개의 벡터로 개수는 같다. 달라지는 것은 내용으로, 출력 벡터는 문장 안에서 의미상 관련된 다른 단어들의 정보를 흡수해 더 구체적인 맥락을 담은 임베딩이 된다.

내적 값을 차원 수의 제곱근으로 나누는 이유는 무엇인가?

쿼리와 키가 투영되는 공간이 실제 응용에서는 여전히 상당히 고차원이라 내적의 크기가 커질 수 있는데, 소프트맥스는 아주 크거나 작은 값에 취약하기 때문에 값의 크기를 억제하려는 목적이다.

밸류 가중치 행렬은 어떤 역할을 하나?

각 단어의 임베딩을 같은 차원 공간으로 옮겨, 그 단어에 주목한 다른 단어가 자신의 임베딩을 어떻게 갱신해야 하는지를 알려 주는 업데이트 벡터를 만든다. 이 업데이트는 주의력 비중에 비례해 반영된다.

이 세 행렬의 값은 어떻게 정해지나?

쿼리·키·밸류 가중치 행렬은 모두 학습 과정에서 갱신되는 파라미터다. 다음 단어를 가장 잘 예측하도록 훈련 중에 조정된다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식