AI VIDEO BRIEFING

트랜스포머 원리 강의 - 셀프 어텐션·Q/K/V·멀티헤드 어텐션 정리

모든 현대 AI의 기반이 된 트랜스포머를, 어텐션과 셀프 어텐션의 차이부터 Q/K/V, 멀티헤드, 포지셔널 인코딩, 인코더·디코더 구조까지 단계별로 풀어 설명한다.

트랜스포머 완전 해부: 셀프 어텐션부터 인코더·디코더 구조까지 영상 대표 이미지

핵심 메시지

  • 트랜스포머는 2017년 'Attention Is All You Need' 논문에서 제안된, 오늘날 거의 모든 AI 모델의 기반이 되는 인코더·디코더 구조의 모델이다.
  • 어텐션이 인코더와 디코더 사이의 관계를 나타내는 가중치라면, 셀프 어텐션은 인코더(또는 디코더) 내부에서 단어들 사이의 관계를 나타내는 가중치다.
  • 입력 자연어는 워드 임베딩으로 벡터화한 뒤, 순서 정보를 담는 포지셔널 인코딩(사인·코사인 기반)을 더해 트랜스포머의 입력이 된다.
  • 셀프 어텐션의 핵심은 학습으로 얻은 Q(쿼리)·K(키)·V(밸류) 행렬로, 쿼리와 키의 내적으로 단어 간 관계 점수를 구하고 소프트맥스로 확률화한 뒤 밸류에 곱해 합산한다.
  • 멀티헤드 어텐션은 여러 관점에서 문장을 보기 위해 Q/K/V 행렬을 여러 벌 사용하며, RNN과 달리 순차 처리가 아니어서 병렬 연산이 가능하다.

쉽게 이해하기

강의는 트랜스포머가 왜 중요한지부터 짚는다. 2017년 발표된 'Attention Is All You Need' 논문에서 제안된 이 구조는 자연어 처리를 넘어 시각·청각·다중 모드·강화 학습까지 폭넓게 쓰이는 현대 AI의 토대가 되었다. 다만 트랜스포머를 이해하려면 일반적인 신경망과 CNN, RNN의 개념이 먼저 필요하다고 강조한다.

먼저 어텐션과 셀프 어텐션을 구분한다. 어텐션은 인코더와 디코더 사이의 관계, 예를 들어 번역에서 디코더의 '나는'이 인코더의 'I love you'와 어떤 관계인지를 나타내는 가중치다. 반면 셀프 어텐션은 같은 인코더 내부에서 '나는·학생·이다'처럼 한 문장 안 단어들끼리의 관계를 보는 가중치다. 트랜스포머에는 인코더 셀프 어텐션, 디코더의 마스크드 셀프 어텐션, 인코더-디코더 어텐션 이렇게 세 종류의 어텐션이 있다.

입력 처리 과정도 자세히 다룬다. '나는 학생이다'라는 문장은 토큰으로 나뉘어 원-핫 후 워드 임베딩으로 기계가 이해하는 벡터가 된다. 트랜스포머는 RNN처럼 단어를 순차적으로 받지 않으므로 순서 정보가 사라지는데, 이를 보완하려고 사인·코사인 함수로 만든 포지셔널 인코딩 벡터를 임베딩에 더한다. 가까운 위치는 유사도가 크고 먼 위치는 작아지도록 설계되어 단어의 순차성을 반영한다.

핵심인 셀프 어텐션은 Q/K/V로 작동한다. 학습으로 얻은 세 가중치 행렬을 임베딩에 곱해 각 단어의 쿼리·키·밸류 벡터를 만든다. 기준이 되는 단어의 쿼리와 모든 단어의 키를 내적해 관계 점수를 구하고, 헤드 수로 나눈 뒤 소프트맥스를 취하면 합이 1인 어텐션 점수가 된다. 이 점수를 각 밸류 벡터에 곱해 모두 더하면 그 단어의 문맥이 반영된 최종 특징 벡터가 만들어진다.

이어 멀티헤드 어텐션, 잔차 연결(residual)과 레이어 정규화, 피드포워드 신경망을 거쳐 인코더 한 블록이 완성되며, 원 논문은 인코더·디코더를 여러 층 쌓는다. 디코더에서는 미래 단어를 보지 못하도록 마스크를 씌운 셀프 어텐션과, 키·밸류를 인코더에서 가져오는 인코더-디코더 어텐션을 사용한다. 마지막으로 RNN의 직렬 구조와 달리 병렬 연산이 가능하다는 점, 어텐션을 대량으로 사용해 학습으로 가중치를 미세 조정한다는 점을 트랜스포머의 강점으로 정리한다.

주요 인사이트

  • 어텐션과 셀프 어텐션의 차이는 '두 네트워크 사이(between)냐, 한 네트워크 내부(within)냐'로 명확히 구분된다.
  • 포지셔널 인코딩은 트랜스포머가 순차 구조를 버린 대가로 잃은 '순서'를 다시 주입하는 장치다.
  • Q·K·V 행렬은 모두 손실 함수를 최소화하는 방향으로 학습되는 가중치이며, 트랜스포머의 표현력은 여기서 나온다.
  • 멀티헤드는 CNN에서 여러 필터로 이미지를 여러 관점에서 보는 것과 같은 발상으로, 한 문장을 여러 시각에서 분석한다.
  • 어텐션을 전면 사용해 순차 의존성을 없앤 덕분에 병렬 처리가 가능해졌지만, 그만큼 연산량이 많아 무거운 모델이 된다.

자주 묻는 질문

어텐션과 셀프 어텐션의 차이는 무엇인가요?

어텐션은 인코더와 디코더 사이의 단어 관계를 나타내는 가중치이고, 셀프 어텐션은 인코더(또는 디코더) 내부에서 한 문장 안 단어들끼리의 관계를 나타내는 가중치입니다. 강의에서는 'between이냐 within이냐'의 차이로 설명합니다.

트랜스포머에서 포지셔널 인코딩은 왜 필요한가요?

트랜스포머는 RNN과 달리 단어를 순차적으로 받지 않아 순서 정보가 사라집니다. 그래서 사인·코사인 함수로 만든 포지셔널 인코딩 벡터를 워드 임베딩에 더해 단어의 위치와 순차성을 반영합니다.

Q, K, V는 어떻게 사용되나요?

학습으로 얻은 쿼리·키·밸류 행렬을 임베딩에 곱해 각 단어의 Q·K·V 벡터를 만듭니다. 기준 단어의 쿼리와 모든 단어의 키를 내적해 관계 점수를 구하고, 소프트맥스로 확률화한 어텐션 점수를 밸류 벡터에 곱해 합산함으로써 문맥이 반영된 특징 벡터를 얻습니다.

디코더의 마스크드 셀프 어텐션은 무엇을 하나요?

디코더가 특정 시점의 단어를 번역할 때 아직 나오지 않은 미래 단어를 참고하지 못하도록, 미래 시점의 어텐션 점수를 음의 무한대로 바꿔 0이 되게 만듭니다. 그 결과 현재까지의 단어 정보만으로 특징 벡터를 계산합니다.

원문과 출처

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

YouTube 원본 영상 보기 ↗

관련 AI 소식