AI VIDEO BRIEFING

어텐션 메커니즘과 트랜스포머 원리 정리: 쿼리·키·값의 역할과 셀프 어텐션 이해하기

대학 강의로 따라가는 어텐션의 출발점과 셀프 어텐션의 철학을 정리했다. 순환신경망이 남긴 한계는 무엇이었는지, 쿼리와 키와 값이 각각 어떤 역할을 맡는지, 트랜스포머가 기존 신경망과 어떻게 다른지 짚는다.

동시통역사에게 메모를 허락하다 — 어텐션과 트랜스포머를 처음부터 이해하기 영상 대표 이미지

핵심 메시지

  • 순환신경망의 근본 한계는 아무리 긴 문장이라도 고정된 크기의 벡터 하나에 모두 욱여넣어야 한다는 점이다.
  • 어텐션은 인코딩 도중 만들어 둔 중간 상태들을 버리지 않고 '메모'처럼 남겨, 필요할 때 골라 보게 하는 장치다.
  • 쿼리는 지금 내 상태, 키는 후보들을 대표해 유사도를 재는 벡터, 값은 실제로 합쳐지는 알맹이라는 역할 분담이 핵심이다.
  • 트랜스포머는 입력을 '작은 구성 요소들의 유기적 조합'으로 보고, 각 요소가 문맥을 참조해 자기 표현을 다시 쓰게 한다.
  • 셀프 어텐션을 통과해도 시퀀스의 길이와 각 벡터의 크기는 그대로이고, 값만 문맥을 반영해 조금씩 달라진다.

쉽게 이해하기

강의는 순환신경망의 세 가지 문제 중 마지막 하나가 끝내 해결되지 않았다는 점에서 출발한다. 기울기가 사라지거나 폭발하는 문제는 게이트 구조로 완화했고, 입력과 출력의 길이가 다른 번역 문제는 인코더-디코더 구조로 풀었지만, 긴 문장의 앞부분을 잊어버리는 경향은 남았다. 은닉 상태의 크기가 정해져 있는 이상 백과사전 분량의 글을 벡터 하나에 담는 것은 물리적으로 불가능하기 때문이다.

강의자는 이 상황을 아주 뛰어난 동시통역사에게 메모를 금지한 채 두 시간을 듣게 한 뒤 통역을 시키는 일에 비유한다. 사람이라면 들으면서 기록을 남기고 그 기록을 보며 복원할 텐데, 모델에게도 같은 능력을 주자는 발상이 어텐션이다. 인코딩 과정에서 단어를 하나씩 읽을 때마다 만들어 둔 은닉 상태들을 버리지 않고 남겨, 디코딩 단계마다 참고하게 하는 것이다.

어텐션 함수는 세 가지 입력을 받아 하나의 값을 내놓는다. 현재 상태를 나타내는 쿼리, 참조 대상을 대표하는 키, 그리고 실제로 합쳐질 값이다. 쿼리와 각 키를 내적해 점수를 구하고 소프트맥스로 합이 1이 되도록 바꾸면 가중치가 나오며, 이 가중치로 값들을 가중합한 것이 어텐션 값이 된다. 강의자는 키를 '자기 자신을 대표해 나서는 변호사 같은 벡터'로, 값을 '실제로 합산에 참여하는 본체'로 설명한다.

유사도를 재는 방법으로 학습 가능한 가중치를 끼워 넣거나 별도의 신경망을 쌓는 방식도 시도됐지만, 계산량만 늘고 수렴은 느려지면서 성능은 비슷하거나 오히려 나빠졌다고 한다. 결국 단순한 내적이 표준으로 굳었다는 설명이다. 실제 어텐션 맵을 보면 해석도 어느 정도 가능하다. 영어를 스페인어로 옮길 때 첫 글자로 거꾸로 된 물음표를 찍어야 하는데, 모델이 문장 맨 끝의 물음표에 높은 가중치를 준 사례가 제시된다.

후반부는 트랜스포머의 철학으로 넘어간다. 완전연결층이든 합성곱이든 순환신경망이든 크게 보면 입력들의 가중합을 어떻게 만들지 배우는 모델이지만, 트랜스포머는 입력 자체를 작은 구성 요소들의 조합으로 본다. 단어가 모여 문장이 되고 프레임이 모여 영상이 되듯이, 각 요소가 자신이 속한 문맥을 참조해 스스로의 표현을 다시 쓰게 하는 것이 셀프 어텐션이다.

주요 인사이트

  • 셀프 어텐션에서는 쿼리·키·값을 따로 주어지는 것이 아니라 만들어 쓴다. 각 단어 임베딩에 학습된 세 개의 가중치 행렬을 곱해 그 단어가 쿼리로서, 키로서, 값으로서 잘 기능하는 벡터로 바꾸고, 합산이 끝나면 출력 행렬을 한 번 더 곱해 원래 크기로 되돌린다. 결국 이 층이 배우는 것은 '어떤 단어가 들어와도 세 가지 역할을 잘 하도록 바꾸는 방법'이다.
  • 문맥화의 효과는 정도의 문제다. 강의에서 든 예시에서는 한 단어가 자기 고유의 의미를 90% 남짓 유지하고 나머지 일부만 주변 단어의 정보를 받아들이는 형태로 벡터가 조금 바뀌었다. 이런 블록을 여러 층 쌓을수록 각 요소는 서로 조금씩 더 닮아가며 문맥을 충분히 반영하게 된다.
  • 강의자는 타이타닉을 예로 든다. 재난 장면과 로맨스 장면이 섞인 영화에서 재난 장면 하나를 주인공으로 두고 셀프 어텐션을 통과시키면, 여전히 재난 장면이되 로맨스의 색이 옅게 섞인 표현이 나온다. 반대로 로맨스 장면이 주인공이면 그 반대가 된다.
  • 쿼리와 키를 굳이 따로 만들 필요가 있느냐는 학생 질문에 대해, 하나로 합쳐 시도해 봤지만 성능이 떨어져 분리해야 한다는 답이 돌아왔다. 다만 둘이 완전히 다른 방향으로 학습되는 것도 아니어서, 자기 자신과의 유사도가 높게 나오는 정도로 적절히 자리를 잡는다고 설명한다.
  • 트랜스포머 블록의 입출력 규격은 그대로다. 다섯 개짜리 시퀀스가 들어가면 다섯 개가 나오고 각 벡터의 크기도 같으며, 달라지는 것은 값뿐이다. 이 성질 덕분에 같은 블록을 계속 쌓아 올릴 수 있다.

자주 묻는 질문

키와 값은 왜 굳이 구분하나?

키는 쿼리와 유사도를 계산하기 위한 대표 벡터이고, 값은 가중치가 정해진 뒤 실제로 합산되는 알맹이라서 역할이 다르다. 초기의 어텐션 모델처럼 같은 벡터를 두 용도로 쓸 수도 있지만, 기능이 다르므로 서로 다른 벡터를 쓰는 것이 원칙이다.

어텐션 값을 구한 다음에는 무엇을 하나?

디코더의 현재 은닉 상태에 어텐션 값을 이어 붙이면 벡터 크기가 두 배가 되므로, 완전연결층을 한 번 통과시켜 원래 크기로 줄인다. 그래야 매 스텝 같은 가중치를 반복해 쓸 수 있고, 그 결과로 다음 단어의 확률 분포를 뽑는다.

어텐션은 번역 말고 어디에 쓰이나?

강의에서는 단어 단위가 아니라 문장 단위로도 적용할 수 있다고 소개한다. 글 전체의 주제를 맞히도록 학습시킨 뒤 어느 문장에 가중치가 몰렸는지 보면 중심 문장을 골라 요약에 쓸 수 있고, 비전 분야에서는 모델이 이미지의 어느 부분을 보고 판단했는지 확인하는 도구로도 널리 쓰인다.

원문과 출처

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

YouTube 원본 영상 보기 ↗

관련 AI 소식