AI VIDEO BRIEFING

스탠퍼드 CS25 트랜스포머 입문 정리 — 카파시가 짚은 어텐션의 기원과 nanoGPT 구현

안드레이 카파시가 스탠퍼드 CS25 강의에서 트랜스포머의 역사와 내부 구조를 정리했다. 어텐션이 번역 연습에서 착안된 과정, 메시지 패싱으로 보는 해석, nanoGPT 구현, 그리고 이 구조가 5년째 살아남은 이유를 짚는다.

카파시가 다시 짚은 트랜스포머: 어텐션은 어떻게 태어났고 왜 아직 안 바뀌었나 영상 대표 이미지

핵심 메시지

  • 어텐션은 처음부터 대단한 발명으로 등장한 것이 아니라, 인코더가 문장 전체를 벡터 하나에 욱여넣던 병목을 풀려는 시도에서 나왔다.
  • 카파시는 어텐션을 '방향 그래프 위에서 노드들이 서로 정보를 주고받는 메시지 패싱'으로 설명한다. 쿼리는 내가 찾는 것, 키는 내가 가진 것, 값은 내가 전달할 것이다.
  • GPT·BERT·T5의 차이는 결국 노드들이 서로 어디까지 볼 수 있게 허용하느냐, 즉 마스킹 한 줄의 차이로 정리된다.
  • 2017년에 제안된 구조가 5년이 지나도록 거의 바뀌지 않았다는 사실 자체가 이례적이며, 바뀐 것은 층 정규화의 위치와 위치 인코딩 방식 정도다.
  • 카파시는 이 구조를 '어텐션이 전부'라기보다 '범용적이고 효율적이며 최적화하기 쉬운 컴퓨터'로 부르는 편이 정확하다고 말한다.

쉽게 이해하기

스탠퍼드가 2023년 겨울학기에 진행한 CS25 '트랜스포머스 유나이티드' 두 번째 시즌의 첫 강의다. 강의는 트랜스포머가 자연어를 넘어 컴퓨터 비전, 강화학습, 생물학, 로보틱스까지 퍼져 나간 배경을 훑은 뒤, 안드레이 카파시가 이 구조의 역사와 내부 동작을 직접 해설하는 순서로 이어진다.

카파시는 자신이 AI에 뛰어든 2012년 무렵의 컴퓨터 비전을 먼저 떠올린다. 당시에는 논문 세 쪽이 온갖 특징 서술자 목록으로 채워져 있었고, 연구자들은 그것들을 긁어모아 SVM을 얹는 방식으로 작업했으며 그마저도 잘 되지 않았다. 분야마다 어휘가 완전히 달라 다른 영역의 논문은 읽는 것조차 어려웠다는 회고도 덧붙인다.

그 판도를 바꾼 것이 2012년의 대규모 신경망이었고, 2017년 트랜스포머는 여기서 한 발 더 나아가 아키텍처 자체를 통일해 버렸다. 카파시는 어텐션의 계보를 2003년 신경망 언어모델, 2014년 시퀀스 투 시퀀스, 그리고 인코더 병목을 풀기 위해 '소프트 검색'을 제안한 기계번역 논문으로 거슬러 올라가 정리한다.

강의의 중반은 어텐션을 그래프 위의 통신 단계로, 다층 퍼셉트론을 계산 단계로 보는 해석에 할애된다. 이어서 300줄짜리 nanoGPT 코드를 따라가며 배치 구성, 토큰과 위치 임베딩의 결합, 인과 마스킹, 그리고 인코더·디코더·크로스 어텐션이 코드상 어떻게 갈라지는지를 보여준다.

마지막으로 카파시는 GPT-3 논문이 보여준 맥락 내 학습을 근거로, 트랜스포머가 프롬프트라는 프로그램을 실행하는 범용 컴퓨터에 가깝다고 정리한다. 표현력, 최적화 용이성, GPU 효율이라는 세 조건을 동시에 만족한 것이 이 구조가 살아남은 이유라는 설명이다.

주요 인사이트

  • 어텐션의 착안점은 수학이 아니라 경험이었다. 논문 제1저자는 중학교 시절 번역 연습에서 원문과 번역문 사이를 시선이 오가던 기억에서 아이디어를 얻었고, 첫 시도에서 곧바로 작동했다고 카파시에게 회신했다.
  • '어텐션'이라는 이름은 원래 'RNN 검색'이었고, 논문을 마무리하던 단계에서 요슈아 벤지오가 지금의 이름을 제안했다.
  • 인코더와 디코더의 차이는 개념이 아니라 코드 한 줄이다. 미래 토큰으로 가는 어텐션을 음의 무한대로 막는 마스킹을 지우면 그대로 인코더가 되고, 키와 값을 인코더 쪽에서 가져오면 크로스 어텐션이 된다.
  • 카파시가 특히 저평가됐다고 보는 항목은 효율성이다. 트랜스포머는 얕고 넓은 계산 그래프라 GPU 병렬성을 그대로 쓸 수 있고, 길고 얇은 그래프인 RNN은 표현력이 있어도 최적화와 효율에서 밀린다.
  • 컨텍스트 길이 문제에 대해 그는 창을 무작정 늘리기보다, 모델이 스스로 '메모장'을 열고 쓰고 다시 참조하도록 가르치는 방향을 더 흥미롭게 본다.

자주 묻는 질문

셀프 어텐션과 크로스 어텐션은 무엇이 다른가?

수학적 연산은 동일하고, 키와 값을 어디서 만드느냐만 다르다. 셀프 어텐션은 쿼리·키·값을 모두 같은 노드에서 만들고, 크로스 어텐션은 쿼리만 현재 노드에서 만들고 키와 값은 인코더 쪽 노드들에서 가져온다.

멀티헤드 어텐션은 왜 여러 개를 쓰는가?

같은 메시지 패싱을 서로 다른 가중치로 동시에 여러 번 수행하기 위해서다. 카파시의 표현으로 헤드는 병렬 복사, 층은 직렬 복사이며, 각 헤드가 서로 다른 종류의 정보를 찾아 한 노드에 모아 온다.

트랜스포머는 이미지나 음성 같은 다른 데이터를 어떻게 처리하는가?

이미지는 작은 정사각형 패치로 잘라 그대로 집어넣고, 음성은 멜 스펙트로그램을 조각내 마치 텍스트처럼 다룬다. 어떤 신호에서 왔는지는 학습되는 특수 토큰과 위치 인코딩으로 알려주고, 나머지는 셀프 어텐션이 알아서 조합한다.

원문과 출처

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

YouTube 원본 영상 보기 ↗

관련 AI 소식