날짜: 2026-09-03 채널: Tech Bridge 원문 제목: [한영자막] 안드레 카파시의 스탠포드 1시간 강의 URL: https://www.youtube.com/watch?v=y2p8Va_zu00
📌 핵심 질문 / 트랜스포머는 왜 거의 모든 AI 문제에 복사해 붙일 수 있는가
==트랜스포머(Transformer)는 표현력이 풍부하고, GPU에서 효율적이며, 경사 하강법(gradient descent)으로 최적화하기 쉬운 범용 계산 장치다.==
- 2012년 이후 대규모 데이터와 대규모 신경망을 확장하는 방법이 컴퓨터 비전, 자연어 처리, 음성, 번역, 강화 학습으로 복사되었다.
- 2017년 트랜스포머는 여러 분야의 아키텍처를 하나의 구조로 수렴시켰고, 분야마다 달라지는 것은 주로 입력 데이터의 조각화와 인코딩 방식이 되었다.
- 자기 어텐션(self-attention)은 노드 사이의 데이터 의존적 메시지 전달이고, MLP는 각 노드를 개별적으로 계산하는 단계다.
- 잔차 연결(residual connection), 레이어 정규화(layer normalization), 병렬 처리 가능한 얕고 넓은 계산 그래프가 큰 모델을 안정적으로 학습시킨다.
2012년 무렵 AI에 진입했다면 분야마다 다른 용어와 손으로 만든 특징 추출기를 익혀야 했지만, 2023년 무렵에는 공통 신경망 도구와 트랜스포머를 여러 문제에 적용할 수 있다. 트랜스포머의 핵심은 특정 작업용 모델이라기보다, 프롬프트로 실행 시점에 재구성되는 텍스트용 범용 컴퓨터라는 관점에 있다.
1. AI가 분야별 도구 상자에서 하나의 아키텍처로 수렴한 과정
1.1. 2011년 이전의 컴퓨터 비전과 AI 진입 장벽
-
손으로 조립하던 이미지 분류 파이프라인
- 2011년 컴퓨터 비전에서 이미지를 분류하려면 논문 세 페이지에 걸쳐 소개된 특징 기술자(feature descriptor)들을 살펴보고, 학회 포스터 세션에서 연구자들이 제안한 각자의 특징을 비교해야 했다.
- 희소 히스토그램(sparse histogram), SIFT 계열 기술자, SSIM 계열 특징, 색상 히스토그램(color histogram), 텍스톤(texton), 타이니 이미지(tiny image), 기하 특화 히스토그램을 모두 추출한 뒤 그 위에 SVM을 얹는 식이었다.
- 특징마다 별도의 복잡한 코드가 필요했으므로 여러 곳에서 코드를 모아 실행해야 했고, 파이프라인은 관리하기 어려운 악몽에 가까웠다.
-
성능 실패와 분야별 언어의 분절
- 당시 시스템은 가끔 말이 안 되는 예측을 내놓았고, 사람들은 어깨를 으쓱하며 그런 일이 가끔 생긴다고 넘겼지만 오늘날이라면 버그를 찾을 상황이었다.
- AI의 각 하위 분야는 서로 완전히 다른 어휘를 사용했다. NLP 논문을 읽으려면 품사 태깅(part-of-speech tagging), 형태론적 분석(morphological analysis), 구문 분석(syntactic parsing), 공참조 해결(co-reference resolution)을 새로 익혀야 했다.
- NP, BT, JJ 같은 약어의 의미도 분야 밖 사람에게는 불분명했으며, 한 분야의 논문을 읽는 지식이 다른 분야로 쉽게 이전되지 않았다.
1.2. 2012년의 확장 규칙과 2017년의 구조 수렴
-
Alex Krizhevsky가 보여준 확장성
- 2012년 Alex Krizhevsky와 동료들은 대규모 데이터셋에 대규모 신경망을 적용하면 매우 강한 성능을 얻는다는 것을 보여주었다.
- 이전에는 알고리즘의 정교함이 주된 관심사였지만, 이 결과는 신경망이 잘 확장된다는 사실을 드러냈다. 이후 핵심 걱정거리는 컴퓨트(compute)와 데이터가 되었고, 둘을 키우면 성능이 좋아졌다.
- 같은 레시피가 컴퓨터 비전, NLP, 음성, 기계 번역, 강화 학습(RL)으로 복사되면서 신경망, 매개변수, 옵티마이저라는 공통 어휘가 생겼고 분야 간 진입 장벽이 크게 낮아졌다.
-
트랜스포머가 만든 아키텍처 수렴
- 2017년 트랜스포머 논문은 당시에는 평범해 보이는 기계 번역 논문이었지만, 이후 거의 어디에나 복사해 붙일 수 있는 하나의 아키텍처가 되었다.
- 대략적으로 같은 구조를 쓰고, 데이터의 세부 내용과 데이터를 어떻게 조각내며 어떻게 입력하느냐만 바꾸면 된다. 이는 과장된 캐리커처지만 1차 근사로는 맞는 설명이다.
- 신경망 도구가 분야 전체에서 비슷해진 데 이어 아키텍처까지 하나로 수렴하면서, 오늘날 AI 논문들이 서로 훨씬 비슷하게 읽힌다.
-
뇌와의 느슨한 유사성
- 대뇌 피질은 전체 시트에 걸쳐 매우 균질하고 균일하며, 청각 피질과 시각 피질도 세부 조정값은 달라도 기본 구조는 비슷해 보인다.
- 트랜스포머의 분야별 차이가 하이퍼파라미터 수준의 차이라면, 여러 감각을 처리하는 뇌가 하나의 강력하고 균일한 학습 알고리즘을 사용하는 것처럼 AI도 그런 방향으로 수렴하는 것일 수 있다.
2. 트랜스포머로 이어진 역사적 계보
2.1. 언어 모델에서 시퀀스-투-시퀀스로
-
2003년 신경 언어 모델
- 2003년 연구는 신경망을 언어 모델링(language modeling)에 적용한 초기의 대중적인 사례였다.
- 다층 퍼셉트론(MLP)이 앞의 세 단어를 입력으로 받아 네 번째 단어의 확률 분포를 예측했다.
- 다음 단어를 예측하면 텍스트에 대한 생성 모델을 만들 수 있다는 발상이 출발점이 되었다.
-
2014년 시퀀스-투-시퀀스
- 기계 번역의 목표는 세 단어를 보고 네 번째 단어를 맞히는 것이 아니라, 길이가 제각각인 영어 문장을 길이가 제각각인 프랑스어 문장으로 변환하는 것이다.
- 2014년 시퀀스-투-시퀀스(sequence-to-sequence) 연구는 가변 길이 입력을 처리하기 위해 인코더 LSTM과 디코더 RNN 또는 LSTM을 사용했다.
- 인코더는 단어를 하나씩 읽으며 문맥을 축적하고, 디코더는 그 조건 벡터를 바탕으로 번역문의 다음 단어를 하나씩 생성했다.
-
인코더 병목
- 전체 영어 문장이 인코더에서 디코더로 전달되는 하나의 고정 길이 벡터에 압축되었다.
- 임의로 긴 문장의 모든 정보를 단일 벡터가 유지해야 하므로 정보가 너무 많이 눌리는 인코더 병목(encoder bottleneck)이 생겼다.
- 고정 길이 벡터가 기본 인코더-디코더 구조의 성능 개선을 막는 병목이라는 판단이 다음 단계의 출발점이 되었다.
2.2. 어텐션의 탄생과 이름
-
정렬과 번역을 동시에 학습하는 소프트 검색
- 「Neural Machine Translation by Jointly Learning to Align and Translate」는 디코더가 목표 단어를 예측할 때 원문 문장에서 관련된 부분을 자동으로 소프트 검색하도록 구조를 확장했다.
- 디코딩 중인 목표 단어가 인코더의 모든 단어를 다시 볼 수 있게 하여, 전체 문장을 하나의 벡터로만 기억할 필요를 없앴다.
- 현재 디코더 상태와 인코더의 각 은닉 상태 사이의 적합도(compatibility)를 계산하고, 이를 소프트맥스(softmax) 가중치로 바꾼 뒤 인코더 은닉 상태의 가중합을 문맥 벡터로 사용했다.
-
Dimitri의 커서 비유
- 첫 저자 Dimitri는 인코더와 디코더 사이의 병목을 피하려고 시퀀스를 가로지르는 커서(cursor)를 생각했지만, 처음 아이디어는 잘 풀리지 않았다.
- 어느 날 디코더 RNN이 원문 시퀀스에서 커서를 어디에 둘지 학습하게 하면 좋겠다고 생각했다.
- 중학교에서 영어를 배우며 번역 연습을 할 때 원문과 목표 문장 사이로 시선이 앞뒤로 움직였던 경험이 영감이 되었다.
- 영어가 모국어가 아니었던 경험이 기계 번역의 어텐션으로 이어지는 독특한 이점이 되었을 가능성이 흥미로운 역사적 우연으로 남았다.
-
RNN search에서 attention으로
- Dimitri는 소프트 검색을 소프트맥스로 표현하고, 은닉 상태의 가중 평균을 계산했다. 이 방법은 첫 시도부터 작동해 큰 흥분을 안겼다.
- 처음 이름은 RNN search였지만 논문 최종 검토 과정에서 Yoshua Bengio가 더 나은 이름인 attention을 제안했다.
- 따라서 「Attention Is All You Need」가 RNN search 또는 비슷한 이름으로 불릴 수도 있었지만, Yoshua Bengio 덕분에 지금의 이름을 갖게 되었다.
3. 「Attention Is All You Need」가 남긴 핵심 구조
3.1. RNN을 지우고 어텐션만 남긴 조합
-
2017년의 과감한 제거
- 앞선 어텐션 논문에서 어텐션은 양방향 RNN, 인코더, 디코더에 붙은 작은 구성 요소였지만, 2017년 논문은 RNN을 전부 삭제하고 어텐션만 남겨도 된다고 주장했다.
- 논문의 독창성은 단일 점진적 개선이 아니라 여러 구성 요소를 동시에 독특하게 조합하고, 아키텍처 공간에서 좋은 지역 최솟값(local minimum)에 도달했다는 데 있다.
- 어텐션은 집합(set) 위에서 작동하므로 그 자체로는 위치나 공간 개념이 없다. 따라서 입력에 위치 인코딩(positional encoding)을 추가해야 한다.
-
안정적인 블록 구성
- 잔차 네트워크(ResNet) 구조를 가져와 잔차 경로를 만들고, 어텐션과 다층 퍼셉트론을 번갈아 배치했다.
- 다른 연구에서 나온 레이어 정규화를 사용하고, 여러 어텐션 헤드(head)를 병렬로 적용했다.
- MLP의 확장 비율을 4배로 두는 등 좋은 하이퍼파라미터 세트를 제공했으며, 이 설정은 오랫동안 남았다.
- 수많은 연구가 작은 세부 사항을 바꾸려 했지만 대부분의 변화는 정착하지 못했다. 대표적인 구조 변화는 레이어 정규화를 블록 뒤에 두는 방식에서 앞에 두는 프리놈(pre-norm)으로 재배치한 정도다.
- GPT를 비롯한 오늘날의 모델은 대체로 2017년 구조를 유지한다. 위치 표현은 회전 위치 인코딩(rotary positional encoding)이나 상대 위치 인코딩(relative positional encoding)으로 바뀌었지만, 핵심 구조는 놀라울 만큼 견고하다.
3.2. 어텐션을 그래프의 메시지 전달로 보기
-
통신 단계와 계산 단계
- 트랜스포머 블록은 노드들이 서로 정보를 교환하는 통신 단계와 각 노드가 혼자 계산하는 계산 단계가 교차하는 구조다.
- 통신 단계는 다중 헤드 어텐션(multi-headed attention)이고, 계산 단계는 MLP다.
- 각 노드에 벡터를 저장한 방향 그래프(directed graph)를 생각하면, 어텐션은 데이터에 따라 메시지를 전달하는 규칙이 된다.
-
Q·K·V 메시지 전달
- 노드의 개인 데이터 벡터에서 선형 변환으로 쿼리(query), 키(key), 값(value)을 만든다.
- 쿼리는 내가 찾는 것이 무엇인지, 키는 내가 가진 것이 무엇인지, 값은 내가 전달할 정보가 무엇인지를 나타낸다.
- 한 노드가 쿼리를 만들면 자신에게 연결된 다른 노드들이 키를 방송한다. 쿼리와 키의 내적(dot product)이 각 정보의 관련성 또는 친화도(affinity) 점수가 된다.
- 점수에 소프트맥스를 적용해 합이 1인 가중치 분포로 정규화하고, 그 가중치로 값들의 가중합을 구해 현재 노드를 업데이트한다.
- 실제 구현은 이 순수한 파이썬 메시지 전달 예시를 배치와 벡터 연산으로 병렬화하고, 레이어 정규화와 드롭아웃(dropout)을 섞어 학습을 안정화한 형태다.
-
헤드와 레이어
- 여러 헤드는 서로 다른 Q·K·V 가중치를 사용하는 동일한 메시지 전달을 병렬로 복제한 것이다. 서로 다른 노드에서 서로 다른 종류의 정보를 동시에 수집한다.
- 헤드는 병렬 복사이고, 레이어는 직렬 복사다. 각 레이어마다 다른 가중치로 메시지 전달을 다시 수행한다.
-
인코더·디코더의 연결 그래프
- 인코더의 토큰들은 서로 완전히 연결되어 여러 번 서로를 참조하며 입력 전체의 특징을 만든다.
- 디코더는 미래 토큰을 보면 정답을 미리 얻게 되므로, 현재 토큰이 자기 자신과 과거 토큰만 보도록 삼각형 모양의 인과적 연결(causal connectivity)을 사용한다.
- 인코더-디코더의 교차 어텐션(cross-attention)에서는 디코더 노드가 쿼리를 만들고, 인코더 최상단 노드들이 키와 값을 제공한다.
- 인코더 노드들이 입력 전체를 충분히 읽은 뒤 그 결과를 디코더의 모든 노드에 방송하므로, 교차 어텐션은 외부 정보가 디코더로 흐르는 통로가 된다.
3.3. 질의응답으로 다듬은 개념
-
자기 어텐션과 교차 어텐션의 차이
- 자기 어텐션(self-attention)은 각 노드가 자기 표현에서 쿼리·키·값을 모두 만든다.
- 교차 어텐션은 쿼리는 현재 디코더 노드에서 만들지만 키와 값은 인코더 같은 외부 노드에서 만든다.
- 다섯 번째 단어를 생성하는 디코더 노드는 다섯 번째 위치에 필요한 정보를 묻고, 답이 될 수 있는 정보는 현재 시퀀스의 앞선 노드나 인코더 최상단에서 온다.
- 두 방식은 키와 값의 출처만 다를 뿐 알고리즘의 수학적 연산은 동일하다.
-
노드의 의미
- 그래프의 노드는 토큰이며, 처음에는 해당 단어의 임베딩 벡터다.
- 참가자가 노드와 블록의 임베딩 관계를 묻자, 노드는 기본적으로 벡터라고 답했고 구현 코드를 먼저 보며 그래프와 연결하겠다고 했다.
- 해당 그래프 비유를 강의 당일 아침 또는 전날에 떠올렸다고 농담해 청중의 웃음을 끌어냈다.
4. nanoGPT로 읽는 디코더 전용 트랜스포머
4.1. 데이터와 학습 배치
-
작고 완전한 재현 구현
- nanoGPT는 최소한의 트랜스포머 구현으로, OpenWebText에서 GPT-2를 재현하도록 작성되었다.
- 약 300줄로 읽기 쉬우며, 8개의 GPU가 있는 한 노드에서 약 38시간 학습한 구현이라고 소개되었다.
- 디코더 전용 모델은 다른 영어 문장을 조건으로 번역하는 것이 아니라, 앞선 토큰으로부터 다음 단어 또는 다음 문자를 예측하는 언어 모델이다.
-
Tiny Shakespeare의 문자 데이터
- 셰익스피어 작품 전체를 이어 붙인 약 1MB짜리 Tiny Shakespeare 데이터셋은 작은 언어 모델을 훈련해 가짜 셰익스피어를 무한히 생성해 볼 수 있는 대표적인 장난감 데이터셋이다.
- 텍스트를 그대로 트랜스포머에 넣을 수 없으므로 가장 단순한 경우 각 문자를 정수로 바꾸고, 전체 문서를 하나의 긴 1차원 정수 시퀀스로 이어 붙인다.
- 독립 문서가 여러 개라면 문서 사이에 특수한 end-of-text 토큰을 삽입한다. 이 토큰 자체가 문서 내용을 모델링하는 것은 아니며, 역전파를 통해 문서 끝에서는 기억을 지워야 한다는 규칙을 학습시키는 경계 신호다.
-
블록 크기와 배치 크기
- 블록 크기(block size)가 8이면 트랜스포머가 처리할 수 있는 최대 문맥은 8개 문자이고, 이 8개를 보고 아홉 번째 문자를 예측한다.
- 배치 크기(batch size)는 여러 독립 시퀀스를 병렬 처리하는 개수이며, GPU의 병렬성을 활용하려면 가능한 한 크게 잡는다.
- 예시의 4×8 배치에서 각 행은 독립적인 짧은 시퀀스 조각이고, 각 위치마다 입력과 한 칸 뒤의 목표가 존재한다.
- 입력 47의 목표는 58이고, 입력 4758의 목표는 1이며, 입력 47581의 목표는 51인 식으로 한 4×8 배치 안에 많은 학습 예제가 들어간다.
- 행 방향 배치들은 독립적으로 학습하지만 시간 방향 위치들도 병렬 처리되므로 실제 학습 예제 수는 대략 B×T다. 다만 시간 방향으로 갈수록 예측에 사용할 문맥이 선형적으로 늘어난다.
4.2. GPT 클래스의 순전파
-
토큰 정체성과 위치의 결합
- 정수 인덱스를 임베딩 조회 테이블(embedding lookup table)에 넣어 각 토큰의 벡터를 얻는다.
- 어텐션은 집합을 자연스럽게 처리할 뿐 순서를 알지 못하므로, 토큰 임베딩에 위치 임베딩(positional embedding)을 더해 토큰이 무엇인지와 어디에 있는지를 함께 표현한다.
- 선택적 드롭아웃을 거친 표현은 여러 트랜스포머 블록으로 들어간다.
-
출력과 손실
- 블록들을 통과한 결과에 레이어 정규화를 적용하고, 선형 투영인 LM head(language model head)로 다음 토큰의 로짓(logit)을 계산한다.
- 데이터 로더가 만든 목표는 입력을 시간축으로 한 칸 이동한 값이다.
- 목표와 로짓 사이에는 일반적인 분류의 음의 로그 가능도인 교차 엔트로피(cross-entropy) 손실을 적용한다.
-
블록의 통신·계산
- 블록 크기가 8이면 그래프에 8개 노드가 있으며, 첫 노드는 자기 자신만 보고 둘째 노드는 첫째와 자기 자신을 보며, 셋째 노드는 앞의 두 노드와 자기 자신을 보는 식이다.
- 잔차 경로에서 입력을 꺼내 레이어 정규화와 자기 어텐션을 적용하고, 정보 교환 뒤 각 노드를 MLP로 개별 처리한다.
- MLP는 각 노드의 표현을 바꾸는 2층 신경망이며 GELU 비선형성을 사용한다. 핵심 난제는 MLP가 아니라 미래 정보를 차단하는 인과적 어텐션 구현이다.
4.3. 인과적 어텐션 코드와 생성
-
미래 정보 차단
- 다섯 번째 위치에서 네 번째 토큰을 입력받아 세 번째, 두 번째, 첫 번째 토큰을 참고해 다음 토큰을 예측할 때, 시간축 오른쪽에 이미 있는 정답은 볼 수 없어야 한다.
- 쿼리·키·값을 입력 X에서 만들고, 모든 쿼리와 모든 키의 내적을 배치·헤드·시간축에서 병렬 계산한다.
- 배치 차원, 헤드 차원, 시간 차원과 특징 차원이 함께 있는 5차원 텐서가 생겨 구현이 복잡해 보이지만, 앞서 설명한 단순한 Q·K 내적을 병렬화한 것이다.
- 통신하면 안 되는 위치의 점수를 음의 무한대로 마스킹한다. 그 뒤 소프트맥스를 적용하면 해당 위치의 가중치가 0이 된다.
- 어텐션 가중치 행렬과 값 V를 곱해 친화도에 따른 값의 가중합을 얻고, transpose·contiguous·view로 텐서 모양을 정리한 뒤 드롭아웃과 선형 투영으로 잔차 경로에 되돌린다.
-
문자 단위 자동 생성
- 시작 토큰으로 개행 문자를 넣으면 한 노드가 자기 자신과만 통신해 첫 문자 분포를 만든다.
- 문자를 하나 샘플링해 정수로 다시 인코딩하고, 새 토큰을 시퀀스에 붙여 다음 문자를 생성하는 과정을 반복한다.
- 문맥이 블록 크기 8에 도달하면 더 긴 문맥을 담을 수 없으므로 가장 오래된 부분을 잘라내고, 이 방식으로 무한히 생성한다.
- 순진한 트랜스포머는 유한한 문맥 길이를 가진다. 전형적인 모델에서는 약 124 또는 248 토큰 같은 길이가 될 수 있으며, 토큰·SentencePiece 토큰·WordPiece 토큰 등 인코딩 방식에 따라 실제 텍스트 길이는 달라진다.
- 어텐션의 계산량이 문맥 길이에 따라 커지기 때문에 문맥을 확장하는 일은 까다로운 문제다.
-
인코더와 인코더-디코더로의 변형
- 인코더를 만들려면 미래 차단 마스크 한 줄을 삭제하면 된다. 그러면 모든 노드가 서로 통신하며 입력 전체를 여러 층에 걸쳐 표현한다.
- 완전한 인코더-디코더 모델을 만들려면 디코더 블록의 자기 어텐션과 MLP 사이에 교차 어텐션 한 블록을 추가한다.
- 이때 쿼리는 현재 X에서 만들고 키와 값은 인코더 최상단 표현에서 만든다. 인코더 정보가 X의 모든 디코더 노드로 한 방향으로 흐른다.
- GPT는 디코더 전용, BERT는 인코더 전용, T5는 기계 번역 등에 쓰이는 인코더-디코더 구조의 예다.
- BERT는 다음 토큰을 순서대로 예측하는 자기회귀 언어 모델 방식으로 학습하지 않는다. 전체 문장이 서로 완전히 통신하게 한 뒤 감정 분류 같은 과제를 수행하고, 마스킹과 디노이징(denoising)으로 다른 학습 목표를 사용한다.
5. 트랜스포머를 고정 그래프로 이해하기
5.1. 동적 그래프 질문과 ResNet 유사성
-
연결성과 가중치의 구분
- 참가자는 트랜스포머가 매 순간 바뀌는 동적 그래프인지, 마스킹으로 제약을 주면서 데이터에 따라 연결을 바꾸는지 물었다.
- 연결 그래프 자체는 고정되어 있다고 보는 편이 자연스럽다. 블록 크기가 8이면 노드 8개를 두고 왼쪽에서 오른쪽으로 연결하며, 통신할 때마다 가중치만 달라진다.
- 인코더 전용 모델은 원하는 토큰들이 완전 연결되고, 디코더 전용 모델은 삼각형 연결을 가지며, 인코더-디코더 모델은 두 노드 풀을 교차 연결한다.
- 데이터에 따라 연결성이 동적으로 바뀌는 트랜스포머 사례는 흔히 보이지 않는다.
-
ResNet에 어텐션을 더한 구조
- ResNet은 자기 어텐션 없이 MLP와 잔차 경로를 가진 구조이며, 트랜스포머는 여기에 자기 어텐션 블록을 추가한 것으로 볼 수 있다.
- MLP는 엄밀히 말하면 1×1 컨볼루션(convolution)과 유사하고, 가중치-비선형성-가중치 연산을 수행한다.
- 트랜스포머를 바꾸려는 연구가 많았지만 5년이 지나도 기본 패키지는 거의 바뀌지 않았다. 2017년 논문은 이후의 파급력을 저자들조차 예상하지 못한 평범한 기계 번역 논문처럼 읽힌다.
- 역사적 결과를 알고 다시 제목을 붙인다면 「범용 효율적 최적화 가능 컴퓨터」에 가깝게 이름 지었을 것이라는 농담이 이어졌다.
5.2. 수식과 다른 모델에 대한 질문
-
RNN 검색의 한계와 확산 모델의 매력
- 자기회귀(autoregressive) 모델이 토큰을 하나 샘플링한 뒤 바로 확정하는 방식은 이상하게 느껴진다.
- 확산(diffusion)과 결합한 하이브리드나 생성 후 시퀀스를 편집하는 방법이 가능할 수 있다.
- 텍스트를 한 덩어리씩 생성해 확정하기보다 초안 1을 만들고 더 나은 초안 2를 만드는 과정이 확산과 닮았으며, 이런 모델링 방식이 더 매력적이라는 기대가 있다.
-
그래프 신경망과의 관계
- 참가자는 내적이 엣지를 계산하고 엣지 가중치로 값을 곱하는 것이 그래프 신경망과 같은지 물었고, 그 대응이 맞다고 확인되었다.
- 트랜스포머는 방향성 엣지로 연결된 집합을 기본 표현으로 처리하는 그래프 신경망 프로세서로 볼 수 있다.
- 이런 관점에서는 오늘날 거의 모든 것이 그래프 신경망이라고 부를 수 있을 만큼 트랜스포머와 그래프 메시지 전달의 관계가 가깝다.
-
√d 스케일링
- 무작위 가중치를 정규분포에서 초기화할 때 특징 차원이 커지면 쿼리와 키의 내적 분산도 커진다.
- 내적을 그대로 소프트맥스에 넣으면 분포가 한 위치에 몰리는 거의 원-핫 벡터가 된다.
- 내적을 √d로 나누는 스케일링은 분산을 제어해 소프트맥스가 부드럽고 확산된 분포를 유지할 수 있는 범위에 두는 장치다.
- 이 역할은 거의 초기화 문제를 다루는 것처럼 이해할 수 있다.
6. 도메인과 모달리티를 가리지 않는 복사-붙여넣기
6.1. 이미지·음성·강화 학습·분자
-
Vision Transformer
- 이미지를 작은 정사각형 패치(patch)로 자르고 패치 하나를 노드 하나로 취급해 트랜스포머 인코더에 넣는다.
- 가장 단순한 방식이라 패치의 2차원 구조를 모델이 다시 발견해야 하는데도 실제로 꽤 잘 작동한다.
- 예시에서는 약 9개의 패치 노드가 인코더 전체에서 서로 통신한다.
-
음성 인식과 Whisper
- 음성의 MEL 스펙트로그램을 작은 시간 조각으로 자르고 트랜스포머에 입력한다.
- OpenAI Whisper도 스펙트로그램을 잘라 텍스트를 다루듯 처리하는 트랜스포머의 복사-붙여넣기 사례이며 성능이 매우 좋다.
-
상태·행동·보상과 AlphaFold
- Decision Transformer는 강화 학습 환경에서 관찰한 상태(state), 행동(action), 보상(reward)을 언어처럼 토큰화하고 그 시퀀스를 모델링한다.
- 학습한 시퀀스 모델은 이후 계획(planning)에 사용할 수 있다.
- AlphaFold의 계산 핵심에도 트랜스포머가 있으며 분자 구조 같은 문제에도 같은 계산 틀이 들어간다.
6.2. Tesla 예시와 집합 표현
-
추가 센서 정보의 결합
- 이미지로 예측하는 컴퓨터 비전 네트워크에 레이더, 지도, 차량 종류, 오디오 같은 정보를 추가하려면 기존 CNN에서는 어느 층에 넣고 이어 붙일지(concatenate) 설계해야 한다.
- 트랜스포머에서는 각 추가 정보를 조각내 기존 입력과 함께 집합으로 넣고, 자기 어텐션이 서로 어떻게 통신할지 학습하게 할 수 있다.
- 모든 것을 잘라 섞어 넣는 단순한 방식이 실제로 작동하며, 별도 결합 지점을 정하는 부담을 줄인다.
-
유클리드 공간에서 집합으로
- 전통적인 신경망은 3차원 유클리드 공간(Euclidean space)에 계산을 배치하는 방식에 맞춰 구조를 설계해야 했다.
- 트랜스포머의 기본 표현은 집합이므로, 조건으로 쓰고 싶은 것을 잘라 집합에 추가하기만 하면 모든 요소가 자기 어텐션으로 상호작용한다.
- 이 유연성이 트랜스포머의 아름다운 점이며, 입력 모달리티가 늘어날수록 가치가 커진다.
7. 인컨텍스트 학습과 범용 컴퓨터 관점
7.1. GPT-3의 퓨샷 학습
-
프롬프트 안의 예제
- GPT-3 논문 「Language Models are Few-Shot Learners」는 트랜스포머의 특별함을 보여주는 좋은 사례다.
- 이름을 다시 붙인다면 언어 모델의 퓨샷 학습보다 트랜스포머의 인컨텍스트 학습(in-context learning) 또는 메타 학습(meta-learning)이라고 부르는 편이 낫다.
- 지문을 제공하고 그 지문에 대한 질문과 답변 예시를 프롬프트 안에 한 쌍씩 넣는다. 예시 하나, 또 다른 예시, 또 다른 예시를 늘려가며 새 질문에 답하게 한다.
- 문맥에 더 많은 예시를 넣을수록 정확도가 올라간다.
-
활성화 안에서 일어나는 내부 학습
- 일반적인 미세 조정(fine-tuning)은 예시와 정답을 주고 실제 가중치에 경사 하강법을 적용한다.
- 인컨텍스트 학습은 추론 중 가중치를 업데이트하지 않는데도 활성화(activation) 안에서 무언가를 학습하는 것처럼 보인다.
- 트랜스포머의 가중치가 프롬프트를 읽으며 경사 하강법과 닮은 정신적 학습(mental learning)을 수행한다고 해석할 수 있다.
- 외부 루프(outer loop)는 확률적 경사 하강법으로 가중치를 훈련하는 과정이고, 내부 루프(inner loop)는 트랜스포머가 시퀀스를 읽으며 문맥 안에서 학습하는 과정이다.
- 일부 연구는 트랜스포머가 RASP 또는 raw operator 같은 연산자를 구현하고, 그 위에서 릿지 회귀(ridge regression) 같은 알고리즘을 실행할 수 있다고 주장한다.
- 경사 기반 학습이 순방향 전달, 역방향 전달, 가중치 업데이트의 반복이라면, 활성화 안에서 상태를 갱신하는 트랜스포머의 계산도 그와 비슷한 과정으로 볼 여지가 있다.
7.2. 세 가지 장점과 「범용 컴퓨터」 비유
-
표현력
- 트랜스포머의 순전파는 매우 흥미로운 함수를 표현할 수 있고, 메타 학습 같은 기능도 구현할 가능성이 있다.
- 하나의 고정된 작업만 수행하는 특수 목적 신경망보다 실행 시점에 입력과 프롬프트로 행동을 바꿀 여지가 크다.
-
최적화 가능성
- 잔차 연결은 지도 신호에서 입력으로 향하는 기울기의 통로를 제공하고, 레이어 정규화는 활성화와 기울기의 스케일을 제어한다.
- 안정적인 경사 하강법 학습이 가능하기 때문에 표현력이 큰 구조를 실제로 훈련할 수 있다.
-
하드웨어 효율
- 트랜스포머 계산 그래프는 깊고 가는 대신 얕고 넓어 GPU 병렬성에 적합하다.
- Neural GPU 같은 연구도 하드웨어 제약에서 거꾸로 생각해 GPU에서 효율적인 신경망을 설계하려는 접근을 보여준다.
- 효율성은 단순히 비용을 줄이는 문제가 아니다. 같은 하드웨어에서 더 큰 모델을 학습할 수 있게 해 깊이와 데이터 규모를 키우고 성능을 높인다.
-
프롬프트로 실행되는 컴퓨터
- 일반 신경망은 특정 작업에 맞춘 특수 목적 컴퓨터지만, GPT는 자연어 프로그램을 실행하도록 런타임에 재구성되는 범용 컴퓨터다.
- 프로그램은 프롬프트로 주어지고, GPT는 문서를 완성하는 방식으로 그 프로그램을 실행한다.
- 충분히 큰 데이터셋과 강력한 트랜스포머를 결합하면 텍스트 위에서 작동하는 범용 컴퓨터가 된다.
- 하나의 고정된 시퀀스를 실행하는 대신 프롬프트에서 시퀀스를 설계할 수 있다는 점이 핵심이다.
8. RNN, 편향, 메모리 확장에 관한 Q&A
8.1. RNN보다 트랜스포머가 잘 최적화되는 이유
-
RNN의 표현력과 비용
- RNN은 원칙적으로 임의의 프로그램이나 함수를 구현할 수 있지만, 표현력이 있다는 사실만으로는 충분하지 않다.
- RNN의 계산 그래프는 시간축으로 길고 가늘며, 토큰을 첫째부터 둘째, 셋째 순서로 직렬 처리해야 한다.
- 긴 그래프를 따라 역전파하면 너무 많은 단계를 거쳐야 하므로 최적화가 어렵고, 직렬 계산 장치라 GPU 효율도 낮다.
-
트랜스포머의 짧은 경로와 병렬성
- 트랜스포머는 얕고 넓은 계산 그래프라 지도 신호에서 입력까지 거치는 홉(hop)이 적다.
- 잔차 경로를 따라 기울기가 쉽게 흐르고, 레이어 정규화가 값의 규모를 관리한다.
- 한 시퀀스의 모든 위치를 학습할 때 토큰들을 병렬 처리할 수 있으며, 현행 하드웨어에서 효율적이므로 더 큰 네트워크를 훈련할 수 있다.
8.2. 여러 모달리티와 위치 편향
-
모달리티 토큰
- 이미지는 패치로 잘라 수천 개의 토큰으로 만들고, 레이더도 적절히 조각내 토큰으로 변환한다.
- 모델이 토큰의 출처를 알 수 있도록 레이더 토큰에는 특수한 표현을, 차량 정보에는 학습 가능한 특수 임베딩 토큰을 부여한다.
- 결국 모든 입력은 하나의 집합이며, 위치 정보가 필요하면 각 요소에 위치 인코딩을 추가한다.
-
편향의 양과 데이터 규모
- 학습 가능한 위치 벡터를 각 위치에 붙이는 방법은 강한 구조를 하드코딩하지 않고 약한 도움만 제공한다.
- 데이터가 무한히 많다면 데이터 자체가 구조를 알려주므로 인덕티브 바이어스(inductive bias)를 점점 덜 넣는 편이 잘 작동한다.
- 데이터가 적다면 컨볼루션의 국소성처럼 더 강한 편향이 유리할 수 있다.
- 사인·코사인으로 위치를 직접 하드코딩하거나, 이미지 패치가 이웃 패치와만 통신하도록 어텐션 행렬을 마스킹할 수도 있다.
- 전체 어텐션은 비효율적이므로 국소 통신 레이어와 전역 통신 레이어를 번갈아 배치하는 방법도 가능하다.
- 위치 인코딩과 연결 마스크에 관한 변형 논문이 약 200편 이상 쌓여 있어, 이를 모두 따라가기는 어렵다. 개인 브라우저에 논문 탭을 200개 열어 둔 것과 비슷하다는 농담이 있었다.
8.3. 고정 문맥과 스크래치 패드
-
외부 메모리 아이디어
- 문맥 길이를 무작정 늘리는 대신 고정된 문맥과 별도의 스크래치 패드(scratch pad)를 함께 쓰는 방법이 제안되었다.
- 프롬프트 예시로 트랜스포머에게 스크래치 패드가 있다고 가르치고, start scratch pad 토큰을 출력한 뒤 기억할 내용을 쓰고 end scratch pad 토큰으로 닫게 한다.
- 디코딩 로직은 시작 토큰을 감지하면 그 사이의 내용을 외부 저장소에 보관하고, 이후 트랜스포머가 그 저장소에 어텐션하도록 만든다.
- 메타 학습된 트랜스포머는 이런 장치와 도구를 런타임에 사용하는 법을 학습할 수 있다. 사람의 뇌에 모든 것을 기억하지 않고 노트에 적어 필요할 때 읽고 쓰는 것과 같다.
-
실제 관찰에 대한 신중한 답변
- 청중이 이런 스크래치 패드가 실제로 긴 프롬프트 이상의 기능을 하는지 묻자, 광범위하게 실험하지는 않았지만 때때로 망각 사건(forgetting event)을 보았다고 답했다.
- 그 현상이 내부 메모리 확장인지 단순히 블록 크기가 이동한 것인지 확신하지 못했으며, ChatGPT 내부 구현을 잘 알지 못한다고 선을 그었다.
-
S4와 다음 작업
- 온라인 질문으로 S4 아키텍처에 대한 의견이 들어왔고, 답변은 짧은 “어느 정도는 그렇다”는 취지로 끝났다.
- 다음 작업으로는 minGPT를 다시 작성한 nanoGPT에 집중하며, 컴퓨터 비전에서 출발해 언어 영역과 컴퓨터 비전 기반 제품으로 조금씩 확장하고 있다.
- GPT를 직접 재현하는 작업을 진행 중이며, ChatGPT 같은 제품을 점진적으로 개선하는 방식이 매우 흥미롭다고 보았다.
- 널리 퍼진 ChatGPT의 영향력을 고려하면 Google++ 같은 제품을 만들 가능성도 흥미로운 방향으로 제시했다.
- 마지막에는 청중에게 박수를 제안하며 강의를 마쳤다.
주요 발언 모음
“트랜스포머는 범용적이고 효율적이며 최적화 가능한 컴퓨터라고 불렀어야 한다.”
“GPT는 런타임에 재구성되어 자연어 프로그램을 실행하는 범용 컴퓨터다.”
“프로그램은 프롬프트로 주어지고, GPT는 문서를 완성하면서 프로그램을 실행한다.”
“텍스트를 샘플링할 때 한 덩어리씩 생성하고 확정하기보다 초안 하나를 만들고 더 나은 초안 둘을 만드는 방식이 확산 과정처럼 느껴진다.”
“데이터가 충분하다면 구조를 더 적게 넣는 편이 잘 작동하고, 데이터가 적다면 편향을 더 넣어야 한다.”
핵심 데이터 & 수치
- 2011년: 손으로 설계한 특징 기술자와 SVM을 조합하던 컴퓨터 비전 파이프라인의 시기다.
- 2012년: Alex Krizhevsky와 동료들이 대규모 데이터와 대규모 신경망의 확장성을 보여준 시기다.
- 2014년: LSTM 인코더-디코더 시퀀스-투-시퀀스가 기계 번역의 가변 길이 문제를 다룬 시기다.
- 2017년: RNN을 제거하고 어텐션을 중심으로 한 트랜스포머 논문이 발표된 시기다.
- 약 1MB: Tiny Shakespeare 전체 텍스트를 이어 붙인 장난감 데이터셋의 크기다.
- 약 300줄: nanoGPT의 읽기 쉬운 GPT-2 재현 구현 규모다.
- 약 38시간: 8 GPU 노드에서 nanoGPT를 학습한 시간이다.
- 4×8: 배치 크기 4와 블록 크기 8을 설명하기 위해 사용한 예시다.
- 약 9개: 이미지 패치를 노드로 본 예시의 노드 수다.
- 약 200편 이상: 위치 인코딩과 연결 패턴을 변형한 연구 논문 규모에 대한 체감치다.
- 124 또는 248 토큰: 순진한 트랜스포머의 전형적인 유한 문맥 길이를 든 대략적 예시다.
결론 및 시사점
- 트랜스포머의 혁신은 어텐션 하나가 아니라 어텐션, 위치 인코딩, 잔차 연결, 레이어 정규화, MLP, 다중 헤드를 GPU 친화적인 하나의 패키지로 묶은 데 있다.
- 어텐션은 그래프 노드 간 Q·K·V 메시지 전달이고, MLP는 메시지를 받은 각 노드의 상태를 변환하는 계산 단계다.
- 디코더 전용 GPT, 인코더 전용 BERT, 인코더-디코더 T5는 마스크와 교차 어텐션의 배치만 달리하는 같은 계보의 구조다.
- 입력을 토큰이나 패치 집합으로 바꾸면 이미지, 음성, 상태·행동·보상, 분자 정보, 레이더와 지도까지 같은 프레임워크에 넣을 수 있다.
- 인컨텍스트 학습은 프롬프트를 읽는 동안 활성화 안에서 학습이 일어나는 것처럼 보이며, 외부 가중치 학습과 내부 문맥 학습의 이중 루프를 암시한다.
- 모델을 설계할 때 데이터가 적으면 구조적 편향을 넣고, 데이터가 충분하면 모델이 구조를 스스로 발견하도록 일반성을 유지하는 균형이 중요하다.
- 장기적으로 중요한 질문은 더 긴 문맥을 무한히 늘리는 방법뿐 아니라 스크래치 패드, 노트, 도구 같은 외부 메모리를 모델이 스스로 사용하게 하는 방법이다.
- 다음 세대의 생성 모델은 토큰을 한 번에 확정하는 자기회귀 방식과 초안을 반복 개선하는 확산 방식을 결합할 가능성이 있다.
- 트랜스포머의 범용성, 최적화 가능성, 하드웨어 효율성이 동시에 성립했기 때문에 대규모 데이터와 컴퓨트가 성능 향상으로 이어질 수 있었다.
- 프롬프트가 프로그램이고 문서 완성이 프로그램 실행이라면, GPT는 특정 예측기를 넘어 자연어로 재구성되는 범용 계산 환경에 가까워진다.
핵심 요약 (20줄)
트랜스포머는 표현력과 최적화 가능성과 GPU 효율성을 동시에 갖춘 범용 계산 장치다. 2012년 대규모 신경망과 데이터의 확장성이 AI 여러 분야의 공통 학습 레시피를 만들었다. 2017년 트랜스포머는 기계 번역에서 출발해 거의 모든 분야에 복사할 수 있는 구조로 수렴했다. 2003년 신경 언어 모델은 앞의 세 단어로 네 번째 단어를 예측하며 생성 모델의 기초를 놓았다. 2014년 LSTM 시퀀스-투-시퀀스는 가변 길이 번역을 처리했지만 단일 벡터 인코더 병목을 만들었다. 어텐션은 디코더가 원문에서 필요한 부분을 소프트 검색하도록 해 인코더 병목을 완화했다. 자기 어텐션은 노드가 자신의 Q·K·V를 만들고 교차 어텐션은 외부 인코더에서 K·V를 받는다. 트랜스포머 블록은 노드 간 통신을 담당하는 어텐션과 개별 계산을 담당하는 MLP를 교차한다. 쿼리와 키의 내적은 관련성을 만들고 소프트맥스와 값의 가중합이 노드 상태를 업데이트한다. 다중 헤드는 어텐션을 병렬 복제하고 레이어는 같은 처리를 직렬로 반복하는 구조다. GPT의 인과적 마스크는 미래 토큰을 음의 무한대로 보내 소프트맥스 가중치를 0으로 만든다. nanoGPT는 약 300줄로 GPT-2를 재현하며 Tiny Shakespeare로 문자 단위 생성을 시연한다. 디코더 전용 GPT와 인코더 전용 BERT와 인코더-디코더 T5는 마스크 구성이 다르다. 트랜스포머는 이미지 패치와 MEL 스펙트로그램과 강화 학습 시퀀스에도 같은 방식으로 적용된다. Tesla식 멀티모달 입력은 레이더와 지도와 차량 정보도 토큰 집합으로 섞어 처리할 수 있다. GPT-3의 인컨텍스트 학습은 프롬프트 예제가 늘어날수록 정확도가 향상되는 현상이다. 인컨텍스트 학습은 외부 경사 하강 루프와 내부 문맥 학습 루프를 함께 가진 것처럼 보인다. RNN은 길고 가는 직렬 그래프인 반면 트랜스포머는 얕고 넓은 병렬 그래프라 더 큰 모델로 확장하기 쉽다. 데이터가 적으면 컨볼루션 같은 편향이 유리하고 데이터가 많으면 편향을 줄이는 편이 유리하다. 고정 문맥에 스크래치 패드와 외부 도구를 연결하면 트랜스포머의 기억과 실행 능력을 확장할 수 있다.
