[한영자막] 안드레 카파시의 스탠포드 1시간 강의
URL: https://www.youtube.com/watch?v=y2p8Va_zu00
날짜: 2026-09-03
채널: Tech Bridge
VIDEO_ID: y2p8Va_zu00
처리일: 2026-09-03
📌 핵심 질문 / 이 영상이 다루는 핵심 논점
==왜 트랜스포머(Transformer)는 2017년의 기계 번역 아키텍처에서 모든 분야에 복사해 쓸 수 있는 범용 학습·컴퓨팅 구조로 발전했는가?==
- 어텐션(attention)은 노드 사이의 데이터 의존적 메시지 전달(message passing)이고, MLP는 각 노드의 독립적 계산이다.
- 잔차 연결(residual connection)과 레이어 정규화(layer normalization)는 최적화를 돕고, 넓고 얕은 계산 그래프는 GPU 병렬성을 극대화한다.
- 토큰화·위치 인코딩·연결 마스크만 바꾸면 이미지, 음성, 강화 학습, 단백질 구조, 차량 센서도 같은 틀에 넣을 수 있다.
서로 다른 AI 분야가 각자 특수한 특징 기술자(feature descriptor)와 용어를 쓰던 시대는 대규모 데이터와 신경망의 확장으로 무너졌다. 트랜스포머는 어텐션으로 정보가 필요한 노드를 연결하고, 프롬프트를 통해 실행할 프로그램을 입력받으며, 충분한 데이터로 학습하면 텍스트 위에서 작동하는 범용 컴퓨터처럼 행동한다. 핵심 강점은 표현력(expressivity), 최적화 가능성(optimisability), 하드웨어 효율(efficiency)을 동시에 달성한 데 있다.
1. 트랜스포머가 등장하기 전의 AI와 아키텍처 수렴
1.1. 2011년 컴퓨터 비전의 고통스러운 파이프라인
-
특징을 사람이 조립하던 이미지 분류
- 이미지를 분류하려면 먼저 관련 논문을 찾아야 했고, 논문에는 온갖 특징 기술자를 설명하는 내용이 세 페이지씩 들어 있었다.
- 학회 포스터 세션에서는 연구자마다 자신이 제안한 선호 특징 기술자를 소개했으며, 어떤 것을 파이프라인에 넣을지 따로 메모해야 했다.
- 희소 히스토그램(sparse histograms), SSIM 계열 기술, 색상 히스토그램(color histograms), 텍스톤(textons), 타이니 이미지(tiny images), 기하 특화 히스토그램(geometry-specific histograms)처럼 서로 다른 요소를 모두 추출한 뒤 그 위에 SVM을 얹는 방식이었다.
-
코드와 성능의 이중 악몽
- 특징마다 복잡한 코드가 따로 있었고, 여러 장소에서 코드를 모아 실행해야 하므로 구현 파이프라인이 총체적인 악몽이 됐다.
- 결과도 안정적이지 않았다. 이상한 예측이 가끔 나와도 당시에는 어깨를 으쓱하며 “그런 일은 가끔 생긴다”고 넘겼지만, 오늘날이라면 버그를 찾을 상황이었다.
- 같은 문제를 해결하는 표준 학습 구조가 없었기 때문에 데이터·특징·분류기를 매번 새로 조립해야 했다.
1.2. 분야별 용어 장벽과 2012년의 전환
-
AI라는 말조차 꺼리던 시기
- 2012년 무렵 AI 분야에 합류했을 때는 AI가 일종의 금기어처럼 들렸고, 진지한 연구자는 “머신러닝(machine learning)”이라고 말했다.
- “딥러닝(deep learning)”이라는 표현도 지금처럼 보편적이지 않았으며, 2023년쯤 이 분야에 들어오는 사람은 역사적으로 매우 좋은 시기에 진입하는 셈이다.
-
서로 읽히지 않던 학문 언어
- 컴퓨터 비전, 자연어 처리(NLP), 음성, 번역, 강화 학습(RL)은 각각 완전히 별개의 어휘와 문제 분해 방식을 사용했다.
- NLP 논문에는 품사 태깅(part-of-speech tagging), 형태론적 분석(morphological analysis), 구문 분석(syntactic parsing), 공참조 해결(co-reference resolution), NP·VB·JJ 같은 태그가 등장해 다른 분야 연구자가 읽기 어려웠다.
- 논문 사이의 개념적 연결이 약해 여러 AI 영역을 가로질러 배우는 진입 장벽이 높았다.
-
AlexNet이 바꾼 규모의 논리
- 2012년 Alex Krizhevsky, Ilya Sutskever, Geoffrey Hinton의 연구는 큰 데이터셋에서 큰 신경망을 확장하면 강력한 성능을 얻을 수 있음을 보여줬다.
- 관심의 중심이 정교한 개별 알고리즘에서 데이터(data)와 계산(compute)의 규모로 이동했다.
- 같은 레시피가 컴퓨터 비전·NLP·음성·기계 번역·강화 학습으로 복사되면서 분야마다 신경망이라는 공통 모델링 도구를 사용하기 시작했다.
1.3. 2017년 이후 하나의 구조로 수렴한 이유
-
논문을 읽는 감각의 통일
- 2014년 시퀀스-투-시퀀스(sequence-to-sequence) 논문부터 신경망, 매개변수, 옵티마이저(optimizer)가 공통으로 보이기 시작했다.
- 다른 분야의 논문도 익숙한 구성요소로 읽혀 여러 영역을 넘나드는 학습 장벽이 크게 낮아졌다.
-
복사·붙여넣기 가능한 트랜스포머
- 2017년 트랜스포머가 등장한 뒤에는 툴킷뿐 아니라 아키텍처 자체가 하나로 수렴했다.
- 기계 번역을 위해 제안된 구조를 이미지·음성·행동·분자 데이터에 그대로 적용하고, 달라지는 부분은 데이터의 세부 표현과 덩어리화(chunking), 입력 방식 정도가 됐다.
- “모든 것을 그대로 복사한다”는 표현은 과장이지만, 1차 근사(first-order statement)로는 꽤 정확하다. 오늘날 논문이 비슷해 보이는 이유도 모두 트랜스포머를 사용하기 때문이다.
-
뇌와의 구조적 유사성에 대한 추측
- 지난 10년의 아키텍처 수렴은 뇌가 하는 일에 가까운 무언가로 수렴하고 있다는 단서일 수 있다.
- 대뇌 피질(cortex)은 전체 시트에 걸쳐 매우 균일하고 동질적인 구조를 가지며, 청각 피질과 시각 피질도 세부 하이퍼파라미터가 다를 뿐 기본 구조는 유사하다.
- 트랜스포머도 핵심 구조는 균일하게 유지하고 데이터, 위치 인코딩, 폭·깊이 같은 하이퍼파라미터만 바꾸므로, 범용적이고 강력한 학습 알고리즘으로 수렴하는 모습이 흥미롭다.
2. 트랜스포머의 역사적 계보: 언어 모델에서 어텐션까지
2.1. 2003년 신경 언어 모델
-
다음 단어 예측의 신경망화
- 2003년 Bengio와 동료들의 신경 확률 언어 모델(neural probabilistic language model)은 언어 모델링에 신경망을 적용한 최초의 대중적 사례 중 하나였다.
- 목표는 시퀀스의 다음 단어를 예측해 텍스트 생성 모델을 만드는 것이었다.
- 아주 단순한 다층 퍼셉트론(MLP)이 앞의 세 단어를 입력받아 네 번째 단어의 확률 분포를 출력했다.
-
고정된 짧은 문맥의 한계
- 세 단어를 보고 네 번째 단어를 맞히는 방식은 다음 단어 확률을 학습하는 출발점이었지만, 문장 전체를 다른 언어로 옮기는 문제에는 부족했다.
- 길이가 제한된 입력을 다루던 언어 모델이 가변 길이 시퀀스 변환으로 확장되면서 인코더와 디코더라는 분리가 필요해졌다.
2.2. 2014년 시퀀스-투-시퀀스와 인코더 병목
-
영어 문장을 프랑스어 문장으로 바꾸기
- Sutskever, Vinyals, Le의 2014년 시퀀스-투-시퀀스 논문은 세 단어에서 네 번째 단어를 예측하는 대신 영어 문장 전체를 프랑스어 문장으로 변환했다.
- 영어와 프랑스어의 단어 수가 각각 임의로 달라질 수 있으므로, 가변 길이 입력과 출력을 처리할 구조가 필요했다.
-
인코더 LSTM과 디코더 LSTM
- 인코더 LSTM(Long Short-Term Memory)은 단어를 하나씩 읽으며 지금까지 본 내용을 하나의 문맥으로 압축했다.
- 이 문맥 벡터(context vector)를 디코더 RNN/LSTM에 조건(conditioning)으로 전달하고, 디코더가 다음 프랑스어 단어를 하나씩 생성했다.
- 디코더는 “chunk, chunk, chunk”처럼 순차적으로 단어를 생성하는 구조였다.
-
인코더 병목(encoder bottleneck)
- 영어 문장 전체의 정보가 인코더에서 디코더로 가는 하나의 고정 길이 벡터에 압축됐다.
- 긴 문장에 들어 있는 많은 정보를 단일 벡터가 모두 보존하기 어렵다는 것이 즉시 드러났다.
- 이 문제를 해소하려면 디코더가 전체 문맥 벡터 하나에 의존하지 않고 원문 중 현재 단어와 관련된 부분을 다시 찾아볼 수 있어야 했다.
2.3. Bahdanau 어텐션의 탄생
-
소프트 검색(soft search)
- Bahdanau, Cho, Bengio의 “Neural Machine Translation by Jointly Learning to Align and Translate”는 고정 길이 벡터가 기본 인코더-디코더 구조의 병목이라고 지적했다.
- 디코더가 목표 단어를 예측할 때 원문에서 관련된 부분을 자동으로 소프트 검색하도록 구조를 확장했다.
- 명시적인 구간 분할이나 단단한 커서(hard cursor)를 만들지 않고, 모든 원문 위치에 확률적인 가중치를 부여했다.
-
어텐션 수식의 직관
- 디코더의 현재 상태와 인코더가 만든 각 단어의 은닉 상태(hidden state) 사이의 호환성(compatibility)을 계산한다.
- 호환성 점수에 소프트맥스(softmax)를 적용해 합이 1인 가중치를 만든다.
- 인코더 은닉 상태들의 가중합(weighted sum)을 현재 디코더의 문맥 벡터로 사용한다.
-
커서에서 어텐션이라는 이름까지
- 카파시는 첫 저자인 Dzmitry Bahdanau에게 어텐션의 기원을 물었고, Bahdanau는 매우 긴 이메일로 설계 과정을 설명했다.
- 처음에는 시퀀스를 가로지르는 커서를 구상했지만 잘 작동하지 않았고, 디코더 RNN이 원문 시퀀스에서 커서를 어디에 둘지 학습하게 하자는 생각으로 전환했다.
- 중학교에서 영어를 배울 때 번역하며 원문과 번역문 사이로 시선을 앞뒤로 옮기던 경험이 아이디어의 영감이 됐다.
- 비원어민 영어 학습 경험이 오히려 기계 번역에서 원문과 목표문을 번갈아 바라보는 직관을 제공했다.
- Bahdanau는 소프트 검색을 소프트맥스와 은닉 상태의 가중 평균으로 표현했고, 첫 시도부터 작동했다.
- 초기 이름인 “RNN search”는 다소 어색했으며, 최종 논문 검토 과정에서 Yoshua Bengio가 “attention”이라는 더 좋은 이름을 제안했다. 그래서 “Attention Is All You Need”는 더 나쁜 이름의 논문이 될 가능성을 피했다.
3. 2017년 “Attention Is All You Need”와 트랜스포머 블록
3.1. RNN을 지우고 어텐션을 남기다
-
작은 구성요소를 핵심 구조로 승격
- Bahdanau의 구조에서 어텐션은 양방향 RNN과 디코더 RNN 사이에 들어간 한 부분이었다.
- 2017년 논문은 “잘 작동하는 핵심이 어텐션이라면 RNN을 모두 지우고 어텐션만 남길 수 있지 않은가”라고 밀어붙였다.
- 이 선택은 한 요소만 조금 개선하는 점진적 논문과 달리 여러 구성요소를 독특한 방식으로 한꺼번에 묶어 좋은 국소 최적점(local minimum)에 도달한 사례였다.
-
트랜스포머가 조립한 부품
- 어텐션은 입력을 집합(set)처럼 처리하므로 순서 정보를 별도의 위치 인코딩(positional encoding)으로 넣어야 한다.
- ResNet에서 잔차 네트워크(residual network) 구조를 가져와 각 블록이 입력을 보존하는 잔차 경로를 갖게 했다.
- 어텐션 사이에 다층 퍼셉트론(MLP), 즉 피드포워드(feed-forward) 계산을 배치했다.
- 다른 연구에서 제안된 레이어 정규화(layer norm)를 사용했다.
- 여러 어텐션 헤드(head)를 병렬로 적용하는 멀티헤드 어텐션(multi-headed attention)을 도입했다.
- 피드포워드 내부 차원을 모델 차원의 약 4배로 확장하는 하이퍼파라미터가 표준처럼 남았다.
-
견고하게 남은 설계
- 트랜스포머의 작은 세부사항을 바꾸려는 논문은 많았지만, 원래의 기본 조합이 워낙 좋아 대부분의 변화가 표준으로 정착하지 못했다.
- 주요하게 남은 변화는 레이어 정규화를 블록 뒤에 두는 원래의 post-norm에서 블록 앞에 두는 pre-norm으로 재배치한 정도였다.
- GPT를 포함해 이후의 많은 모델은 사실상 2017년 구조를 계승했고, 수년 동안 모두가 바꾸려 했는데도 기본 골격이 놀랍도록 유지됐다.
- 위치 표현은 학습 가능한 위치 벡터, 회전 위치 인코딩(rotary positional encoding), 상대 위치 인코딩(relative positional encoding) 등으로 발전했지만 핵심 블록은 남았다.
3.2. 어텐션을 통신 단계로 보기
-
통신과 계산의 분리
- 멀티헤드 어텐션은 노드끼리 정보를 주고받는 통신 단계(communication phase)다.
- MLP/피드포워드는 각 노드가 자기 표현을 독립적으로 변환하는 계산 단계(computation phase)다.
- 이 관점에서는 트랜스포머가 언어 문장 전용 장치가 아니라, 방향 그래프 위의 벡터들이 통신하고 각자 계산하는 범용 프로세서로 보인다.
-
키·쿼리·값의 역할
- 각 노드는 비공개 데이터 벡터(private data vector)를 가진다.
- 이 벡터에 선형 변환을 적용해 쿼리(query), 키(key), 값(value)을 만든다.
- 쿼리는 “나는 무엇을 찾고 있는가”이고, 키는 “나는 무엇을 가지고 있는가”이며, 값은 “나는 무엇을 전달할 것인가”다.
-
한 노드의 메시지 수신 과정
- 현재 노드의 쿼리와 자신을 가리키는 입력 노드들의 키를 내적(dot product)해 관심도 또는 친화도(affinity) 점수를 계산한다.
- 점수를 소프트맥스로 정규화해 확률 분포처럼 만든다.
- 각 입력 노드의 값에 그 가중치를 곱해 더하고, 그 결과를 현재 노드의 업데이트로 사용한다.
- 실제 코드는 이 과정을 모든 노드·헤드·배치에 대해 벡터화(vectorisation)하고, 레이어 정규화·드롭아웃(dropout)과 잔차 경로를 사이사이에 배치한다.
-
헤드와 레이어의 차이
- 멀티헤드 어텐션은 같은 메시지 전달 알고리즘을 서로 다른 Q·K·V 가중치로 여러 번 복사해 병렬 실행한다.
- 각 헤드는 서로 다른 종류의 정보를 찾는 독립적인 통신 채널로 볼 수 있다.
- 레이어는 같은 아이디어를 직렬로 복사하는 것이며, 레이어마다 가중치가 다르다.
- 따라서 “헤드는 병렬 복사, 레이어는 직렬 복사”라는 간단한 기억법이 가능하다.
3.3. 인코더·디코더의 그래프 연결
-
인코더의 완전 연결
- 인코더에 들어온 모든 토큰은 서로를 볼 수 있다.
- 각 층에서 모든 토큰이 서로 여러 번 통신하므로, 위쪽 인코더 노드는 입력 전체의 의미를 풍부하게 담는다.
-
디코더의 삼각형 연결
- 언어 모델 디코더는 미래 토큰을 볼 수 없다. 미래 토큰을 보면 정답을 미리 읽는 셈이기 때문이다.
- 각 디코더 토큰은 자기 자신과 이전 토큰에만 연결되므로 연결 그래프가 아래쪽 삼각형 모양이 된다.
- 인코더-디코더 모델에서는 디코더가 모든 인코더 상태와 자기보다 앞선 디코더 상태를 볼 수 있다.
-
크로스 어텐션(cross attention)
- 디코더의 쿼리는 현재 디코더 노드에서 만든다.
- 키와 값은 모든 입력을 처리한 인코더 최상단 노드에서 가져온다.
- 따라서 인코더가 여러 층에서 서로 정보를 교환한 뒤, 그 결과가 디코더 노드로 일방향 전달된다.
4. nanoGPT로 보는 디코더 전용 트랜스포머의 실제 구현
4.1. 300줄짜리 GPT-2 재현
-
작고 읽을 수 있는 구현
- nanoGPT는 트랜스포머를 최소한의 코드로 구현한 프로젝트이며, 약 300줄이라 전체를 직접 읽을 수 있다.
- PyTorch로 OpenWebText 위에서 GPT-2를 재현하며, 기억에 따르면 8개 GPU가 있는 한 노드에서 약 38시간 학습했다.
- 복잡한 제품 코드가 아니라 핵심 알고리즘을 확인하는 교육용 구현으로서, 앞서 설명한 그래프 직관과 실제 텐서 연산을 연결한다.
-
디코더 전용의 목표
- GPT는 영어 원문 같은 외부 입력을 번역하는 모델이 아니라, 지금까지의 토큰 뒤에 올 다음 단어 또는 다음 문자를 모델링한다.
- 따라서 인코더나 별도 조건 입력이 없고, 서로 이어질 가능성이 높은 토큰 시퀀스를 생성하는 것이 전부다.
4.2. Tiny Shakespeare와 정수 시퀀스
-
작은 데이터셋으로 무한 생성하기
- Tiny Shakespeare는 셰익스피어의 텍스트 전체를 이어 붙인 약 1MB 파일이다.
- 이 파일로 언어 모델을 학습하면 모델이 셰익스피어풍 텍스트를 끝없이 만들어낼 수 있다.
-
텍스트를 정수로 바꾸기
- 트랜스포머에 문자열을 직접 넣을 수 없으므로, 가장 단순한 경우 각 문자를 정수 하나로 매핑한다.
- 모든 문자를 긴 1차원 정수 시퀀스로 이어 붙인 뒤 모델 입력으로 사용한다.
- 여러 독립 문서가 있다면 문서 사이에 특수한 end-of-text 토큰을 넣어 경계를 표시한다.
- 경계 토큰은 별도의 메모리 삭제 명령이 아니라, 역전파를 통해 모델이 “이 토큰 뒤에서는 앞 문서의 맥락을 지워야 한다”고 배우게 하는 신호다.
4.3. 블록 크기·배치·다음 토큰 목표
-
블록 크기(block size)
- 1차원 시퀀스에서 작은 조각을 잘라 배치로 만든다.
- 블록 크기가 8이면 트랜스포머가 한 번에 볼 수 있는 최대 문맥이 8개이고, 앞의 최대 8개 문자를 사용해 아홉 번째 문자를 예측한다.
- 블록 크기는 학습 때의 시간축 길이를 고정하므로, 생성 시에도 그보다 긴 과거를 한 번에 볼 수 없다.
-
배치 크기와 병렬성
- 배치 크기는 서로 독립적인 시퀀스를 몇 개 동시에 처리할지 정한다.
- GPU의 병렬 처리 자원을 최대한 쓰기 위해 가능한 한 크게 잡는다.
- 예시의 입력은 4×8 배치로, 네 개의 독립적인 행이 각각 여덟 개의 시간 위치를 가진다.
-
한 배치에 숨어 있는 여러 학습 사례
- 입력이 정수 47 하나라면 목표는 다음 정수 58이다.
- 입력이 4758이면 목표는 1이고, 입력이 47581이면 목표는 51이다.
- 같은 행의 시간축 각 위치에서 입력과 한 칸 뒤의 목표가 동시에 생기므로, 4×8 하나가 수많은 다음 토큰 예측 문제를 포함한다.
- 행 방향 배치뿐 아니라 시간축도 병렬로 계산되며, 실질적인 사례 수는 배치 크기 b와 시간 길이 t의 곱에 가깝다.
- 다만 시간축을 오른쪽으로 갈수록 사용할 수 있는 문맥이 선형적으로 늘어난다는 차이가 있다.
4.4. 순방향 전달과 손실
-
토큰 임베딩과 위치 임베딩
- 정수 인덱스를
nn.Embedding조회 테이블에 넣어 각 토큰의 벡터를 꺼낸다. - 어텐션은 본래 집합을 처리하므로 토큰의 정체성만으로는 순서를 알 수 없다.
- 1부터 블록 크기까지의 위치 임베딩을 토큰 임베딩에 더해 “무엇(what)”과 “어디(where)”를 하나의 표현으로 결합한다.
- 이 결과에 선택적 드롭아웃을 적용하고 트랜스포머 블록들의 연쇄에 입력한다.
- 정수 인덱스를
-
출력과 손실 함수
- 모든 블록을 통과한 표현에 최종 레이어 정규화를 적용한다.
lm_head라는 선형층(linear projection)이 각 위치의 표현을 어휘 전체에 대한 로짓(logit)으로 바꾼다.- 로짓에 기반해 다음 문자 또는 다음 정수의 확률 분포를 얻는다.
- 데이터 로더가 만든 목표는 입력을 시간축으로 한 칸 밀어 놓은 값이며, 예측과 목표 사이에 교차 엔트로피(cross-entropy), 즉 음의 로그 우도(negative log-likelihood)를 적용한다.
4.5. 블록 내부의 통신·계산과 인과 마스크
-
8개 노드의 인과 그래프
- 블록 크기가 8이면 그래프 노드도 8개다.
- 첫 번째 노드는 자기 자신만 볼 수 있고, 두 번째 노드는 첫 번째와 자기 자신을 볼 수 있다.
- 세 번째 노드는 첫 번째·두 번째·자기 자신을 볼 수 있으며, 이 패턴이 여덟 번째 노드까지 이어진다.
- 네 개의 배치 행은 각각 별도의 8노드 그래프로 처리되고, 배치 사이에는 정보가 교차하지 않는다.
-
MLP 계산 단계
- 입력을 잔차 경로에 보존한 뒤 레이어 정규화와 셀프 어텐션을 적용해 8개 노드가 허용된 방향으로 통신하게 한다.
- 정보 교환이 끝나면 각 노드를 독립적으로 처리하는 2층 신경망을 적용한다.
- 중간에는 GELU 비선형성(GELU nonlinearity)이 들어가며, 직관적으로 ReLU와 비슷한 역할을 한다.
- 디코더 전용 GPT에는 인코더가 없으므로 크로스 어텐션은 빠지고, 멀티헤드 셀프 어텐션이 통신, MLP가 계산을 담당한다.
-
인과 마스크의 구현
- 다섯 번째 위치의 예측은 앞의 토큰만 봐야 한다. 오른쪽 시간 위치에는 이미 정답 토큰이 들어 있으므로 그 정보를 읽으면 학습이 새어 나온다.
- Q·K·V를 현재
x에서 만들고, 모든 배치·시간 위치·헤드에 대해 쿼리와 키의 행렬곱을 병렬 계산한다. - 배치·헤드·시간·특징 축이 뒤섞인 5차원 텐서가 만들어져 코드가 복잡해 보이지만, 핵심은 단순한 내적이다.
- 통신하면 안 되는 위치를
masked_fill로 음의 무한대에 가깝게 만들고, 이어지는 소프트맥스가 그 위치의 가중치를 0으로 만들게 한다. - 만들어진 어텐션 행렬과 V를 곱하면 친화도에 따른 값의 가중합이 나오고,
transpose·contiguous·view로 형태를 정리한 뒤 드롭아웃과 선형 투영을 거쳐 잔차 경로에 더한다.
4.6. 생성과 문맥 길이
-
한 토큰씩 다시 입력하기
- 줄바꿈 같은 시작 토큰을 넣으면 한 개 노드가 자기 자신만 참고해 첫 문자 분포를 낸다.
- 샘플링한 문자를 다시 정수로 인코딩해 시퀀스에 붙이고, 새 토큰은 이전 토큰들과 통신하며 다음 분포를 만든다.
- 이 과정을 반복해 셰익스피어 문장을 생성한다.
-
고정 문맥의 절단
- 생성 시 입력 길이가 블록 크기 8을 넘으면 가장 오래된 토큰을 잘라내고 최근 8개만 유지한다.
- 일반적인 모델의 문맥 창(context window)은 당시 예시로 1,024 또는 2,048 토큰 규모이며, 문자 단위가 아니라 토큰·SentencePiece·WordPiece 단위다.
- 문맥 길이를 늘리면 어텐션의 계산량과 메모리 사용량이 커져 문제가 급격히 복잡해진다.
4.7. 같은 코드에서 인코더·T5·BERT 만들기
-
인코더는 마스크를 지우면 된다
- 인코더에서는 미래를 숨길 이유가 없으므로 인과 마스크 한 줄을 삭제한다.
- 그러면 모든 노드가 서로 통신하는 완전 연결 어텐션이 된다.
-
인코더-디코더는 크로스 어텐션을 추가한다
- 디코더 블록의 셀프 어텐션과 MLP 사이에 크로스 어텐션 블록을 하나 더 넣는다.
- 쿼리는 현재 디코더
X에서, 키와 값은 인코더 최상단 특징에서 만든다. - 이처럼 작은 수정만으로 인코더 전용, 디코더 전용, 인코더-디코더 모델을 모두 구현할 수 있다.
-
대표적인 세 변형
- GPT는 디코더 전용이며 자기회귀적으로 다음 토큰을 생성한다.
- BERT는 인코더 전용이며 전체 문장이 서로 통신하도록 한 뒤 감정 분류 같은 과제를 푼다.
- BERT는 다음 토큰을 순차적으로 예측하는 자기회귀 목표 대신 마스킹과 디노이징(denoising) 계열 목표로 훈련된다.
- T5는 인코더-디코더 구조로 기계 번역 같은 시퀀스 변환을 수행한다.
5. 질의응답으로 보완한 어텐션의 의미
5.1. 셀프 어텐션과 멀티헤드 어텐션
-
멀티헤드는 병렬 복사다
- 멀티헤드 어텐션은 단일 어텐션 알고리즘을 여러 번 독립적으로 적용하는 것일 뿐이다.
- 각 헤드는 Q·K·V에 서로 다른 가중치를 사용해 서로 다른 종류의 정보를 찾고, 결과를 같은 노드 표현으로 모은다.
- 셀프 어텐션은 각 노드 자체에서 키·쿼리·값을 모두 만든다.
-
크로스 어텐션은 정보의 출처만 다르다
- 크로스 어텐션에서도 쿼리는 현재 디코더 노드에서 만든다.
- 키와 값만 인코더처럼 외부 노드 집합에서 가져온다.
- 수학적 연산은 셀프 어텐션과 동일하고, 달라지는 것은 키·값이 어디에서 왔는가뿐이다.
-
노드와 토큰의 관계
- 그래프의 노드는 토큰에 대응하며, 처음에는 해당 단어의 임베딩 벡터로 시작한다.
- 카파시는 이 그래프 비유를 강의 당일 아침 또는 전날 떠올렸다고 말하며, 청중의 질문 앞에서 직관을 더 다듬어야 한다고 농담했다.
5.2. 고정 그래프인가, 동적 그래프인가
-
연결성은 대체로 고정된다
- 데이터가 바뀔 때마다 그래프의 연결 자체가 동적으로 바뀐다고 보기보다, 같은 연결에서 매 통신 단계마다 다른 가중치를 쓰는 고정 그래프로 보는 편이 낫다.
- 블록 크기 8이면 노드 8개를 왼쪽에서 오른쪽으로 놓고 허용된 방향으로 연결한다.
- 인코더는 완전 연결, 디코더는 삼각형 연결, 인코더-디코더는 두 노드 풀 사이의 연결이라는 패턴이 유지된다.
-
그래프 신경망과의 관계
- 어텐션은 방향 그래프의 엣지를 내적 점수로 계산하고, 그 엣지 가중치로 값 벡터를 모으는 메시지 전달이다.
- 이런 관점에서는 트랜스포머가 집합을 엣지로 연결해 처리하는 그래프 신경망(graph neural network) 프로세서라고 부를 수도 있다.
- “그래프 신경망”이라는 이름이 너무 넓어져 오늘날에는 모든 것이 그래프로 보일 수 있다는 점도 언급됐다.
5.3. 스케일링 인자와 ResNet과의 유사성
-
점곱 어텐션의 제곱근 스케일링
- Q·K 내적의 차원이 커지면 무작위 가중치에서 값의 분산도 커진다.
- 그대로 소프트맥스를 적용하면 분포가 한두 위치에 몰려 거의 원-핫 벡터가 된다.
- 키 차원의 제곱근으로 나누는 스케일링은 분산을 안정적인 범위로 되돌려 소프트맥스가 충분히 퍼진 분포를 만들게 한다.
- 이를 가중치 초기화와 비슷한 안정화 장치로 볼 수 있다.
-
ResNet에 어텐션을 더한 구조
- ResNet은 잔차 경로와 MLP에 해당하는 변환을 갖지만 셀프 어텐션은 없다.
- MLP는 공간상 1×1 컨볼루션(1×1 convolution)처럼 각 위치에 동일한 가중치와 비선형성을 적용하는 연산으로 볼 수 있다.
- 트랜스포머는 이 기존의 독립적 변환 블록에 노드 간 셀프 어텐션이라는 통신 블록을 추가한 패키지와 가깝다.
-
논문 저자도 예상하지 못한 영향
- “Attention Is All You Need”는 당시에는 평범해 보이는 기계 번역 논문이었고, 저자들조차 이후의 파급력을 예상하지 못했다.
- 오늘날 읽으면 모든 것을 바꾼 논문이지만, 본문은 “기계 번역을 하고, 멋진 아키텍처를 만들고, 좋은 결과를 얻었다”는 식으로 보여 미래를 전혀 예고하지 않는다.
- 카파시는 지금의 관점이라면 논문 제목을 더 일반적인 이름으로 바꿨을 것이라고 농담했다.
6. 다른 데이터와 분야에 트랜스포머를 복사하기
6.1. 이미지·음성·강화 학습·단백질
-
비전 트랜스포머(Vision Transformer)
- 이미지를 작은 정사각형 패치(patch)로 자른다.
- 각 패치를 하나의 노드처럼 임베딩해 트랜스포머 인코더에 넣고, 모든 패치가 전체 네트워크에서 서로 통신하게 한다.
- 예시 그림에는 9개 정도의 패치 노드가 있었으며, 위치 인코딩을 넣지 않으면 각 패치가 이미지 어디에서 왔는지 처음부터 알 수 없다.
- 이미지의 2차원 구조를 다시 학습해야 하는 다소 우스꽝스러운 방식이지만, 단순히 패치를 잘라 넣는 기준선(baseline)이 실제로 꽤 잘 작동한다.
-
음성 인식과 Whisper
- 음성의 Mel 스펙트로그램(Mel spectrogram)을 작은 시간 조각으로 잘라 토큰처럼 만든다.
- OpenAI Whisper도 스펙트로그램을 트랜스포머에 넣고 텍스트를 다루는 것처럼 학습하는 복사·붙여넣기 사례다.
-
Decision Transformer
- 강화 학습 환경에서 경험한 상태(state), 행동(action), 보상(reward)을 토큰 시퀀스로 취급한다.
- 이를 언어처럼 모델링하고, 학습된 시퀀스 분포를 이용해 이후 행동을 계획한다.
-
AlphaFold와 분자 데이터
- 분자·단백질 구조를 다루는 AlphaFold의 계산적 핵심에도 트랜스포머가 들어간다.
- 입력을 적절한 토큰·노드 표현으로 바꾸면 텍스트가 아닌 과학 데이터도 같은 통신·계산 구조로 처리할 수 있다.
6.2. Tesla 사례와 멀티모달 입력
-
ConvNet에 정보를 추가하기 어려운 이유
- 이미지에서 예측을 내는 ConvNet에 레이더, 지도, 차량 종류, 오디오 같은 정보를 추가하려면 어느 지점에서 합칠지 정해야 한다.
- 채널을 이어 붙일지, 중간 특징에 더할지, 입력·중간·출력 어느 단계에 삽입할지 선택이 까다롭다.
-
토큰 집합으로 모든 입력 통합하기
- 트랜스포머에서는 새 정보도 잘게 잘라 기존 토큰 집합에 추가하면 된다.
- 셀프 어텐션이 이미지 패치, 레이더 조각, 지도 정보, 차량 메타데이터 사이의 통신 방식을 스스로 학습한다.
- 레이더의 원래(native) 표현을 정확히 모르더라도, 잘라서 넣고 출처를 알려주는 표현만 만들면 된다.
- 레이더 토큰에는 레이더에서 왔음을 알려주는 특수 임베딩을, 차량 정보에는 별도의 학습 가능한 특수 임베딩 토큰을 붙인다.
-
유클리드 공간의 부담에서 벗어나기
- 컨볼루션은 3차원 유클리드 공간의 인접성과 격자 구조에 계산을 맞춰야 한다.
- 어텐션에서는 입력이 기본적으로 집합이므로, 무엇을 conditioning set에 넣을지만 정하면 나머지 상호작용을 모델이 배운다.
- 이런 유연성이 트랜스포머를 서로 전혀 다른 모달리티를 결합하는 도구로 만든다.
7. 왜 트랜스포머가 그렇게 강력한가
7.1. GPT-3와 인컨텍스트 학습
-
Few-shot을 넘어 인컨텍스트 학습으로
- GPT-3 논문 “Language Models are Few-Shot Learners”는 문맥 안에 예시를 넣고 작업을 수행하는 방식을 보여줬다.
- 카파시는 제목을 “트랜스포머는 인컨텍스트 학습(in-context learning) 또는 메타학습(meta-learning)을 할 수 있다”로 지었어도 좋았을 것이라고 말했다.
-
프롬프트 속 예시의 효과
- 프롬프트에 지문을 넣고 그 지문에 대한 질문과 답을 한 쌍 제시한다.
- 다른 질문·답 예시를 하나 더, 다시 하나 더 넣은 뒤 새로운 질문의 답을 요구한다.
- 문맥에 예시를 더 많이 제공할수록 정확도가 올라가는 현상은 단순한 다음 토큰 예측 이상의 능력을 시사한다.
-
내부 학습 루프와 외부 학습 루프
- 일반적인 파인튜닝은 예시와 정답을 주고 경사 하강법(gradient descent)으로 가중치를 실제 업데이트한다.
- 인컨텍스트 학습에서는 추론 중 가중치를 바꾸지 않는데도, 프롬프트를 읽는 동안 활성값(activation) 안에서 무언가를 학습한 것처럼 정확도가 변한다.
- 외부 루프(outer loop)는 데이터셋 전체에서 SGD로 모델 가중치를 훈련하는 과정이다.
- 내부 루프(inner loop)는 학습된 트랜스포머가 현재 시퀀스를 읽으며 문맥에 맞는 규칙을 임시로 습득하는 과정이다.
-
활성값 안의 경사 기반 알고리즘 가능성
- 최근 연구들은 트랜스포머가 활성값에 경사 기반 학습과 닮은 연산을 구현할 수 있다고 분석한다.
- 한 연구는 트랜스포머가 어떤 연산자(operator)를 구현한다고 보고, 그 위에 릿지 회귀(ridge regression)를 구현할 수 있음을 보였다.
- 경사 기반 학습은 순전파, 역전파, 가중치 업데이트의 반복인데, 잔차 연결은 이전 상태에 업데이트를 더하는 구조이므로 이 과정과 닮았다.
- 초기 가중치에서 순전파·역전파·업데이트를 반복하는 것을 활성값의 잔차 흐름으로 흉내 낼 수 있다는 직관은 아직 손으로 그린 수준의 설명이지만, 불가능한 발상은 아니다.
7.2. 표현력·최적화·효율의 동시 달성
-
표현력(expressivity)
- 어텐션과 MLP의 조합은 매우 다양한 함수를 순전파에서 구현할 수 있다.
- 프롬프트를 읽으며 규칙을 바꾸는 메타학습 같은 동작도 표현할 수 있다.
-
최적화 가능성(optimisability)
- 잔차 연결은 입력과 출력 사이에 짧은 경로를 제공해 기울기가 흐르기 쉽게 한다.
- 레이어 정규화는 활성값과 기울기의 스케일을 통제한다.
- RNN처럼 긴 순차 경로를 따라 역전파하지 않아도 되어 학습이 안정적이다.
-
하드웨어 효율(efficiency)
- 트랜스포머의 계산 그래프는 넓고 얕아 GPU가 잘 처리하는 병렬 행렬 연산으로 바뀐다.
- RNN은 길고 가는(serial) 계산 그래프라 토큰을 첫 번째부터 순서대로 처리해야 한다.
- 트랜스포머는 학습 시 모든 위치를 병렬 처리하고, 잔차 경로를 따라 지도 신호에서 입력까지 이동하는 홉(hop) 수도 적다.
- 딥러닝에서는 현재 하드웨어에서 효율적인지가 모델 크기를 결정하므로, GPU 효율은 단순한 실행 속도 이상의 의미를 가진다.
7.3. 범용 컴퓨터와 프로그램으로서의 GPT
-
특수 목적 신경망에서 범용 텍스트 컴퓨터로
- 전통적 신경망은 특정 과제를 위한 특수 목적 컴퓨터에 가깝다.
- 큰 데이터셋과 강력한 트랜스포머를 사용하면 텍스트 위에서 작동하는 범용 컴퓨터가 된다.
- 고정된 한 시퀀스를 실행하는 대신 프롬프트 안에서 실행할 시퀀스 또는 프로그램을 설계할 수 있다.
-
GPT의 런타임 재구성
- GPT는 런타임에 자연어 프로그램을 실행하도록 재구성할 수 있는 범용 컴퓨터다.
- 프로그램은 프롬프트로 주어지고, GPT는 문서를 완성하는 방식으로 그 프로그램을 실행한다.
- 이런 관점에서 GPT는 강력하면서도 경사 하강법으로 최적화할 수 있는 컴퓨터라는 비유가 성립한다.
8. 한계, 대안, 다음 세대의 메모리
8.1. 자기회귀 생성에 대한 불만과 확산 모델
-
토큰을 즉시 확정하는 문제
- 자기회귀(autoregressive) 모델은 토큰을 하나 샘플링한 뒤 바로 확정하고 다음 토큰으로 넘어간다.
- 한 번 잘못 고른 토큰을 나중에 고치기 어렵다는 점에서 이 방식은 다소 부자연스럽다.
-
확산과의 하이브리드
- 확산(diffusion) 모델처럼 초안을 만든 뒤 더 나은 초안으로 반복 개선하는 방식이 더 매력적일 수 있다.
- 자기회귀 프레임워크 안에서도 나중에 시퀀스를 편집하거나, 자기회귀와 확산을 섞는 하이브리드가 가능하다.
- 토큰을 “chunk, chunk, chunk” 확정하는 대신 초안 1, 초안 2를 만드는 과정은 사람이 글을 다듬는 방식과 닮았다.
8.2. RNN이 이론적으로 강력해도 밀린 이유
-
표현력과 실용성의 분리
- RNN은 원칙적으로 임의의 프로그램이나 함수를 구현할 수 있어 표현력만 보면 강력하다.
- 그러나 직렬 컴퓨팅 장치라 효율이 낮고, 긴 계산 경로를 따라야 해 최적화가 어렵다.
-
계산 그래프의 모양
- RNN을 뉴런과 연결을 시간축으로 펼치면 매우 길고 얇은 그래프가 된다.
- 역전파가 너무 많은 단계를 통과하면 학습이 불리하다는 직관이 작동한다.
- 트랜스포머는 얕고 넓은 그래프라 감독 신호가 입력까지 적은 홉으로 도달하고, 잔차 경로로 기울기가 쉽게 흐른다.
-
딥러닝 스케일링과의 결합
- 표현력이 비슷한 모델이라도 현재 GPU에서 더 효율적인 모델이 더 큰 크기로 학습될 수 있다.
- 모델을 키울 수 있는 효율이 최종 성능을 좌우하므로, 트랜스포머의 병렬성이 널리 언급되는 것보다 더 중요한 장점일 수 있다.
8.3. 위치 인코딩과 귀납적 편향
-
위치 벡터의 역할
- 위치 인코딩은 토큰이 어느 위치에 있는지 알려주는 벡터를 그 위치의 콘텐츠에 더하는 방식이다.
- 사인·코사인으로 좌표를 하드코딩할 수도 있지만, 각 위치에 붙어 있는 학습 가능한 벡터를 사용해 경사 하강법으로 배우게 할 수도 있다.
- 어텐션은 본래 집합을 처리하므로 위치 정보는 핵심 연산 바깥에서 주입된다.
-
데이터 규모에 따른 편향의 가치
- 데이터가 무한히 많다면 데이터 자체에 구조를 맡기고 귀납적 편향(inductive bias)을 덜 넣는 편이 잘 작동한다.
- 데이터가 적다면 컨볼루션처럼 공간적 인접성이나 필터라는 편향을 넣는 편이 유리할 수 있다.
- 따라서 트랜스포머가 매우 일반적이라는 사실과, 작은 데이터셋에서는 더 구조화된 모델이 좋을 수 있다는 사실은 모순이 아니다.
-
연결 마스크로 구조를 다시 넣기
- 이미지 패치가 모두와 통신하게 하지 않고 이웃 패치하고만 통신하도록 어텐션 행렬을 마스크할 수 있다.
- 전역 어텐션은 비효율적이므로, 일부 레이어는 작은 지역 패치 안에서만 통신하고 다른 레이어는 전체 패치와 통신하게 섞을 수 있다.
- 귀납적 편향은 코어 트랜스포머를 뜯어고치지 않고 연결성·위치 인코딩·마스크에 분리해 넣을 수 있다.
8.4. 고정 문맥을 넘어서는 스크래치 패드
-
컨텍스트 창과 CPU 비유
- 트랜스포머를 큰 명령어를 처리하는 CPU처럼 보고, CPU가 변수를 저장하고 메모리를 쓰듯 트랜스포머에 외부 메모리를 줄 수 있다.
- 문맥 길이를 계속 늘리는 대신 고정된 컨텍스트 창과 별도의 스크래치 패드(scratch pad)를 조합하는 방향이 더 매력적일 수 있다.
-
프롬프트로 메모리 사용법 학습시키기
- 프롬프트 예시를 통해 “너에게 스크래치 패드가 있다”고 알려준다.
- 모델이
start scratch pad를 출력하면 기억할 내용을 쓰고,end scratch pad를 출력하면 본문 작업으로 돌아간다. - 디코딩 시스템이 시작·종료 표식을 감지해 중간 내용을 외부 저장소에 저장하고, 이후 어텐션이 그 저장소를 읽거나 쓸 수 있게 한다.
- 이 메커니즘은 모델이 메타학습돼 있기 때문에 프롬프트만으로 새로운 장치·도구를 사용하는 방법까지 동적으로 배울 수 있다는 가정에 기반한다.
-
사람의 메모장 비유와 검증의 한계
- 사람은 모든 정보를 머릿속에 보존하지 않고 메모장에 적은 뒤 필요할 때 읽는다.
- 트랜스포머의 컨텍스트 창은 머릿속에 바로 유지하는 기억이고, 스크래치 패드는 외부 노트북이다.
- 질의응답에서 실제 채팅 시스템이 단순히 긴 프롬프트를 계속 확장한 것인지, 진짜 외부 메모리인지에 대해서는 확신할 수 없다는 답이 나왔다.
- 한 참석자는 망각 이벤트(forgetting event)를 보았고 단지 블록 크기가 이동한 것처럼 느꼈다고 했지만, 카파시는 채팅 시스템 내부를 알지 못하므로 판단을 유보했다.
9. 마지막 질의응답과 다음 작업
9.1. 위치·멀티모달 질문에 대한 실무적 답
-
모달리티 표식
- 이미지 패치가 먼저 약 1,000개 토큰이 될 수 있고, 레이더·차량 정보는 별도의 토큰 집합으로 이어 붙일 수 있다.
- 각 모달리티에 특수 임베딩을 부여하면 모델이 토큰의 출처를 학습할 수 있다.
- 모든 입력은 하나의 집합처럼 다뤄지지만, 필요하면 위치 인코딩으로 각 집합의 좌표 또는 순서를 추가한다.
-
하드코딩과 학습 가능 표현의 절충
- 사인·코사인 좌표를 고정해 넣는 방법은 구조를 직접 주는 방식이다.
- 위치마다 학습 가능한 벡터를 더하면 데이터에서 필요한 구조를 스스로 발견하게 할 수 있다.
- 데이터가 충분한지에 따라 두 선택의 효용이 달라진다.
9.2. 온라인 질문과 개인 계획
-
S4 아키텍처 질문
- 온라인에서 S4로 들리는 아키텍처에 대한 질문이 나왔고, 자막에는 질문과 답이 매우 짧고 불명확하게 남아 있다.
- 즉답은 “어느 정도 그렇다”는 취지로 들리며, 해당 주제를 길게 논의하지 않고 다음 질문으로 넘어갔다.
-
nanoGPT와 다음 연구
- 현재 작업은 nanoGPT로, 기존 minGPT를 다시 작성해 GPT 계열 모델을 재현하는 것이다.
- 컴퓨터 비전에서 출발해 컴퓨터 비전 기반 제품을 만들던 관심을 언어 영역으로 조금씩 확장하고 있다.
- ChatGPT처럼 제품 방식으로 점진적으로 개선되는 시스템이 매우 흥미롭다고 평가했다.
- 사람들이 이런 제품을 널리 사용하게 된 것은 점진적 개선형 범용 인터페이스에 대한 수요가 크기 때문이며, 장기적으로는 “Google++” 같은 것을 만들어보는 일도 흥미로운 방향으로 제시됐다.
주요 발언 모음
“트랜스포머의 어텐션은 통신 단계이고, MLP는 계산 단계다.”
“쿼리는 내가 찾는 것이고, 키는 내가 가진 것이며, 값은 내가 전달할 것이다.”
“헤드는 병렬로 복사하고, 레이어는 직렬로 복사한다.”
“RNN은 표현력이 있지만 직렬 계산 장치라 최적화할 수 없고 효율적이지 않다.”
“트랜스포머는 표현력이 높고, 최적화할 수 있으며, GPU에서 매우 효율적이다.”
“GPT는 런타임에 재구성되어 자연어 프로그램을 실행하는 범용 컴퓨터다.”
“토큰을 샘플링하고 바로 확정하는 자기회귀 방식보다 초안 1과 더 나은 초안 2를 만드는 확산 방식이 더 매력적으로 느껴진다.”
핵심 데이터 & 수치
- 약 2011년: 컴퓨터 비전에서 수작업 특징 기술자와 SVM을 조합하던 파이프라인이 대표적이었다.
- 약 2012년: AlexNet 계열 연구가 대규모 데이터와 대규모 신경망의 확장성을 보여줬다.
- 2023년 무렵: AI에 진입하는 사람은 공통 신경망 도구와 대규모 생태계가 이미 마련된 시기에 들어온다.
- 2003년: 세 단어로 네 번째 단어를 예측하는 신경 언어 모델이 등장했다.
- 2014년: LSTM 인코더-디코더 시퀀스-투-시퀀스와 Bahdanau 어텐션 논문이 인코더 병목을 완화했다.
- 2017년: RNN을 제거하고 어텐션·잔차·MLP·레이어 노름·멀티헤드를 결합한 트랜스포머가 제안됐다.
- 약 4배: 트랜스포머 피드포워드 내부 차원 확장 비율로 널리 남은 기본 하이퍼파라미터다.
- 약 300줄: nanoGPT의 읽을 수 있는 최소 구현 규모다.
- 약 38시간: 8-GPU 노드에서 OpenWebText 기반 GPT-2 재현을 학습한 시간으로 소개됐다.
- 약 1MB: Tiny Shakespeare 데이터셋의 크기다.
- 4×8: 예시 배치의 배치 축과 시간축 크기다.
- 8토큰: 예시 트랜스포머의 최대 블록 크기이며, 아홉 번째 토큰을 예측할 때 앞의 여덟 토큰까지 본다.
- 1,024 또는 2,048토큰: 당시 전형적인 모델 문맥 길이의 예시로 제시된 규모다.
- 약 1,000개: 이미지 패치를 토큰화할 때 생길 수 있는 멀티모달 입력의 예시 토큰 수다.
- 약 9개: 작은 이미지 패치 그리드 예시에 등장한 노드 수다.
- 약 200편 이상: 위치·연결·효율을 개선하려는 트랜스포머 관련 논문 수를 가리킨다.
- 약 200개: 관련 논문을 따라가느라 카파시의 Safari 브라우저에 열려 있던 탭 수를 빗댄 숫자다.
결론 및 시사점
- 2011년의 AI는 분야별 특징 기술자와 전용 코드에 의존했지만, 2012년 이후 데이터·계산·신경망 규모가 공통 언어가 됐다.
- 트랜스포머의 역사적 핵심은 인코더 병목을 해결한 어텐션을 RNN에서 분리해 독립적인 메시지 전달 프로세서로 만든 데 있다.
- 어텐션은 데이터 의존적 통신이고 MLP는 노드별 계산이므로, 이 둘의 분리는 텍스트가 아닌 모든 입력을 토큰 집합으로 바꾸는 길을 열었다.
- 트랜스포머의 성공은 표현력 하나로 설명되지 않는다. 잔차·정규화로 최적화가 쉽고, 넓고 얕은 그래프로 GPU 병렬성을 활용한다는 세 조건이 동시에 맞았다.
- GPT를 범용 텍스트 컴퓨터로 보는 관점은 프롬프트를 단순한 질문이 아니라 런타임에 주어지는 프로그램으로 해석하게 한다.
- 인컨텍스트 학습은 추론 때 가중치를 바꾸지 않고도 활성값 안에서 임시 규칙을 습득하는 내부 학습 루프로 볼 수 있다.
- 충분한 데이터에서는 구조를 모델이 배우도록 귀납적 편향을 줄이는 것이 유리하지만, 데이터가 적거나 계산이 비싸면 위치·지역 연결·컨볼루션 편향을 다시 넣는 편이 합리적이다.
- 다음 발전은 무한히 긴 컨텍스트를 유지하는 방향뿐 아니라, 스크래치 패드·외부 저장소·도구를 모델이 스스로 사용하는 방향에서도 나올 수 있다.
- 자기회귀 생성의 즉시 확정 문제는 확산형 초안 수정이나 두 방식의 하이브리드가 해결할 대상이다.
- 트랜스포머를 이해하는 가장 실용적인 순서는 역사적 동기, 그래프 메시지 전달, nanoGPT 코드, 스케일링과 메모리 한계를 차례로 연결하는 것이다.
핵심 요약 (20줄)
- 2011년 컴퓨터 비전은 여러 수작업 특징 기술자를 모아 SVM에 연결하는 복잡하고 불안정한 파이프라인에 의존했다.
- 2012년 AlexNet은 큰 데이터와 큰 신경망을 확장하면 알고리즘 설계보다 강력한 성능을 얻을 수 있음을 보여줬다.
- 신경망이라는 공통 도구가 비전·NLP·음성·번역·강화 학습으로 퍼지면서 분야 사이의 진입 장벽이 낮아졌다.
- 2017년 트랜스포머는 기계 번역에서 출발했지만 데이터 표현과 토큰화만 바꿔 거의 모든 영역에 복사할 수 있었다.
- 2003년 신경 언어 모델은 세 단어로 네 번째 단어를 예측하는 단순한 다층 퍼셉트론에서 시작했다.
- 2014년 시퀀스-투-시퀀스 모델은 LSTM 인코더가 문장 전체를 한 벡터에 압축하는 인코더 병목을 만들었다.
- Bahdanau 어텐션은 디코더가 원문의 관련 위치를 소프트맥스 가중치로 검색하도록 해 고정 벡터 병목을 완화했다.
- “Attention Is All You Need”는 RNN을 제거하고 어텐션·잔차 연결·MLP·레이어 정규화·멀티헤드를 하나의 패키지로 묶었다.
- 어텐션은 쿼리와 키의 내적으로 친화도를 구한 뒤 값의 가중합을 전달하는 데이터 의존적 메시지 전달이다.
- 멀티헤드는 서로 다른 Q·K·V 가중치를 병렬로 복사하고 레이어는 같은 구조를 다른 가중치로 직렬 복사한다.
- 인코더는 모든 토큰을 연결하고 디코더는 미래를 가리는 삼각형 마스크를 사용하며 크로스 어텐션은 인코더 출력을 읽는다.
- nanoGPT는 약 300줄의 PyTorch 코드로 GPT-2를 재현해 토큰 임베딩·위치 임베딩·블록·LM 헤드의 흐름을 보여준다.
- Tiny Shakespeare는 약 1MB의 셰익스피어 텍스트를 정수 시퀀스로 바꿔 작은 모델에서도 무한 텍스트 생성을 가능하게 한다.
- 블록 크기 8인 4×8 배치는 시간축의 각 위치에 다음 토큰 목표를 동시에 만들어 실질적인 학습 사례를 크게 늘린다.
- 이미지 패치·Mel 스펙트로그램·상태·행동·보상·단백질 구조도 토큰 집합으로 바꾸면 같은 트랜스포머에 넣을 수 있다.
- 트랜스포머는 표현력, 잔차와 정규화에 의한 최적화 가능성, GPU에 맞는 병렬 효율을 동시에 달성했다.
- GPT는 프롬프트를 자연어 프로그램으로 받아 런타임에 재구성되는 범용 텍스트 컴퓨터로 볼 수 있다.
- 인컨텍스트 학습은 추론 중 가중치를 직접 갱신하지 않고 활성값 안에서 임시 규칙을 습득하는 내부 학습 루프다.
- 데이터가 충분하면 귀납적 편향을 줄이고, 데이터가 적거나 어텐션이 비싸면 위치·지역 연결·컨볼루션 편향을 다시 넣는 편이 유리하다.
- 고정 컨텍스트의 한계는 확산형 초안 수정이나 스크래치 패드·외부 메모리를 사용하는 메타학습형 시스템으로 확장될 수 있다.
