AI VIDEO BRIEFING

트랜스포머 구조 완전 분해: 멀티헤드 어텐션과 위치 인코딩부터 BERT와 ViT까지

대학 머신러닝 강좌의 마지막 강의 정리. 트랜스포머를 직접 구현할 수 있는 수준까지 분해해 CLS 토큰과 멀티헤드 어텐션, 위치 인코딩, 디코더 마스킹과 빔 서치, BERT와 ViT를 차례로 다룬다.

트랜스포머를 구현할 수 있을 만큼 뜯어보기: CLS 토큰부터 ViT까지 영상 대표 이미지

핵심 메시지

  • 트랜스포머 블록은 들어온 시퀀스와 같은 길이, 같은 크기의 시퀀스를 내보내며 바뀌는 것은 값, 즉 표현뿐이다.
  • 문장 전체를 하나의 벡터로 모을 때 단순 평균은 정보를 잃기 때문에, 학습되는 분류용 토큰(CLS)을 붙여 어텐션이 알아서 중요한 곳을 고르게 만든다.
  • 멀티헤드 어텐션은 대명사처럼 문맥에 따라 가리키는 대상이 달라지는 단어를 다루기 위해 쿼리·키·값을 여러 벌 학습한다.
  • 위치 인코딩의 목표는 두 가지다. 어떤 길이에서도 같은 값이 겹치지 않을 것, 그리고 가까운 위치끼리는 비슷한 벡터를 가질 것.
  • ViT 논문 한 번의 학습에 든 비용은 강의 계산으로 약 48만 달러, 우리 돈 7억 원 수준이었다.

쉽게 이해하기

한 학기 머신러닝·딥러닝 강좌의 마지막 강의는 트랜스포머로 마무리된다. 강사는 이 구조가 GPT를 비롯한 거대 언어 모델은 물론 영상과 음성 처리까지 거의 모든 영역의 기본이 됐고, 취업 면접의 단골 질문이기도 하다며 '직접 구현할 수 있을 만큼' 정확히 아는 것이 중요하다고 말한다. 앞선 시간에는 개념 수준에서만 다뤘고, 이번에는 논문에 실린 그림을 단계별로 따라간다.

복습은 어텐션의 세 요소에서 시작한다. 쿼리는 지금 내 상태, 즉 번역 중이라면 어디까지 말했고 다음에 무엇을 말해야 하는지를 담은 벡터다. 키는 참조 대상들과의 유사도를 재기 위한 벡터이고, 값은 실제로 더해질 벡터다. 유사도만큼 가중치를 매겨 값들을 더한 결과가 어텐션의 출력이며, 트랜스포머는 이 셋을 서로 다른 행렬로 따로 만들어 쓴다.

첫 번째 실전 문제는 '그래서 이걸로 무엇을 하느냐'다. 시퀀스가 들어가 시퀀스가 나올 뿐이라면 분류나 회귀를 할 수 없다. 가장 단순한 방법은 모든 벡터를 평균 내는 것인데, 강사는 유튜브 영상 추천이 꽤 최근까지 프레임 임베딩을 평균 내는 방식이었고 5분짜리에는 그럭저럭 통하지만 두세 시간짜리에서는 성능이 떨어질 수밖에 없다는 예를 든다. 대안이 학습 가능한 분류용 토큰을 하나 더 붙이는 것이다.

이 토큰은 어떤 문장이 들어와도 똑같이 붙기 때문에 특정 단어와 유사도가 높아질 이유가 없고, 그래서 전체를 고르게 반영한 표현이 된다. 그렇다면 평균과 다를 게 없어 보이지만, 이 위에 분류기를 달아 학습시키면 정답을 맞히기 위해 어디에 더 주목해야 하는지를 배우게 된다. 재난 장면과 로맨스 장면이 섞인 영화가 로맨스로 분류돼 있다면 모델은 그쪽에 더 어텐션을 걸도록 학습된다는 설명이다.

이어 강의는 논문 그림의 왼쪽 인코더와 오른쪽 디코더를 차례로 분해한다. 인코더는 멀티헤드 어텐션과 피드포워드 층을 N번 쌓아 문맥이 반영된 표현을 만들고, 디코더는 아직 만들지 않은 단어를 마스크 토큰으로 채운 채 한 단어씩 채워 나간다. 마지막에는 BERT와 ViT를 통해 이 구조가 텍스트와 이미지로 각각 어떻게 확장됐는지를 보여주며 마무리한다.

주요 인사이트

  • 멀티헤드가 필요한 이유를 대명사로 설명한 대목이 명료하다. '동물이 길을 건너지 않았다, 너무 피곤했기 때문에'에서 it은 동물을 가리키지만, 뒷부분을 '너무 넓었기 때문에'로 바꾸면 길을 가리킨다. 쿼리·키·값이 한 벌뿐이면 학습된 하나의 해석에 고정되므로, 여러 벌을 두어 서로 다른 곳에 주목할 후보를 늘린다.
  • 스킵 커넥션의 존재 이유가 흥미롭다. 층을 스무 개 쌓았는데 다섯 개만으로 충분하다면 나머지는 아무 일도 하지 말아야 하는데, 신경망은 입력을 그대로 내보내는 항등 함수를 배우기가 의외로 어렵다. 반면 0을 출력하는 것은 잘한다. 그래서 입력을 그대로 더해 주면 불필요한 층을 스스로 건너뛰게 만들 수 있다.
  • 디코더의 두 번째 어텐션에는 마스킹이 없고, 없어도 되는 게 아니라 없어야 한다는 지적이 나온다. 이 어텐션은 쿼리를 디코더에서, 키와 값을 인코더에서 가져오는데 번역을 하려면 원문 전체를 봐야 하기 때문이다. 강사는 이 디코더 구조 자체가 번역이라는 과제에 최적화된 형태라고 짚는다.
  • BERT의 두 학습 과제 중 다음 문장 예측은 논문에서 필수라고 주장했지만, 이후 여러 연구가 재현해 본 결과 빈칸 맞히기가 거의 모든 일을 하고 나머지는 없어도 크게 상관없다는 쪽으로 결론이 났다는 후일담이 붙는다.
  • ViT는 데이터가 적을 때는 CNN에 지고, 조금 키우면 비슷해지고, 구글만 가진 3억 장 규모 데이터셋에서야 겨우 이겼다. 강사는 이것이 '주변만 보라'는 CNN의 귀납적 편향을 모델이 데이터만으로 스스로 배웠다는 뜻이라 대단한 발견이지만, 그 대가로 7억 원을 써야 한다는 단서가 붙은 승리라고 평가한다.

자주 묻는 질문

위치 인코딩에 왜 하필 사인·코사인을 쓰나요?

두 조건을 동시에 만족해야 하기 때문입니다. 문장 길이가 얼마든 첫 번째와 31번째 단어가 같은 벡터를 갖는 일이 없어야 하고, 앞에 감탄사 하나가 붙어 순서가 한 칸씩 밀려도 표현이 급격히 달라지지 않아야 합니다. 사인·코사인은 길이 제한 없이 이어지고, 차원마다 주기를 다르게 주면 값이 겹치지 않으면서도 이웃한 위치끼리는 서서히 변합니다.

빔 서치는 무엇을 해결하나요?

한 단어씩 생성하는 방식에서는 앞쪽 단어 하나가 틀리면 뒤가 모두 틀어집니다. 그래서 후보를 하나만 들고 가지 않고 다섯 개 정도를 유지합니다. 다섯 후보마다 다음 단어를 뽑으면 스물다섯 개가 되는데, 순위를 매겨 다시 다섯 개로 잘라내는 식을 반복해 마지막에 문장 수준에서 가장 그럴듯한 것을 고릅니다.

ViT는 이미지를 어떻게 시퀀스로 만드나요?

이미지를 16×16 같은 작은 패치로 쪼개, 문장 속 단어 하나처럼 취급합니다. 각 패치를 선형 변환으로 벡터로 바꾸고 분류용 토큰을 붙인 뒤 위치 정보를 더하는데, 여기서는 사인·코사인 대신 학습되는 위치 임베딩을 씁니다. 학습 후 확인해 보니 같은 행과 같은 열끼리 유사도가 높게 나오도록 위치 관계가 제대로 학습돼 있었습니다.

원문과 출처

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

YouTube 원본 영상 보기 ↗

관련 AI 소식

#트랜스포머#어텐션#BERT#VisionTransformer#딥러닝강의