[논문] GPT-1 핵심 정리
이 문서는 GPT-1 논문의 architecture와 학습 과정을 수학적/정의와 직관적인 해설을 결합하여 정리한 노트이다.
1. 언어 모델의 핵심 기초 개념
1) Context Window
-
정의: 모델이 한 번에 처리할 수 있는 단어(token)의 최대 개수, 즉 sequence의 길이 를 의미한다. 트랜스포머의 Self-Attention 연산 복잡도는 이다.
-
직관적 해설:
-
장점: Context Window(값)가 커질수록 모델은 더 먼 과거의 단어들까지 기억할 수 있다. 힌트가 많아지니 문맥을 정교하게 파악하고 다음 단어를 예측하는 정확도가 상승한다.
-
단점: 트랜스포머는 단어들끼리의 관계(Attention)를 모두 짝지어 계산해야 한다. 따라서 문맥 창이 10배 길어지면 연산량은 제곱인 100배로 폭증한다. 즉, 의 증가는 하드웨어 메모리와 학습 비용의 한계와 직결되는 현실적인 장벽이다.
-
2) Maximize Likelihood (최대 우도 추정)
-
정의: 주어진 문맥 뒤에 등장할 실제 정답 단어가 나올 조건부 확률(Likelihood)을 극대화(Maximize)하도록 모델의 내부 parameter 를 최적화하는 수학적 목적 함수다.
-
직관적 해설: 쉽게 말해 언어 모델이 학습하는 가장 근본적인 '목표'다. 모델이 수많은 텍스트 데이터를 읽으면서 자기가 예측한 단어가 실제 텍스트에 적힌 단어와 일치하도록 끊임없이 내부 회로(parameter)를 조절하는 과정이다.
2. GPT의 뼈대: 트랜스포머 디코더 (Transformer Decoder)
원래 구글이 발표한 트랜스포머는 기계 번역을 위해 인코더(입력 파악)와 디코더(출력 생성)로 구성되었다. 하지만 GPT는 여기서 인코더를 과감히 버리고 디코더만을 12층으로 쌓아 올린 구조를 채택했다.
- 왜 디코더만 썼을까? GPT의 본질은 다음 단어 예측(Auto-regressive) 이기 때문이다. 디코더 내부에는 Masked Self-Attention 이라는 핵심 기능이 있다. 이는 모델이 현재 단어를 처리할 때 미래에 나올 단어들을 보지 못하게 Masking(가림 처리)하여 '커닝'을 막는다. 오직 과거부터 현재까지의 문맥만 보고 다음을 유추해야 하는 GPT의 철학과 완벽하게 맞아떨어지는 구조다.
3. GPT-1의 2단계 학습 파이프라인
1단계: Unsupervised Pre-training (비지도 사전 학습)
labeling되지 않은 대규모 텍스트 데이터를 통해 언어의 전반적인 패턴을 스스로 깨우치는 단계다.
- 정의 (Objective Function): labeling되지 않은 대규모 Corpus(말뭉치) 가 주어졌을 때, 다음의 Log-Likelihood를 최대화하도록 학습된다.
모델()에게 이전 단어들()을 보여주었을 때, 그 다음에 올 진짜 정답 단어()를 맞출 확률 을 계산하고, 이를 모든 텍스트 데이터에 대해 다 더한 값
-
:
- 목적 함수(Objective Function)를 의미합니다.
여기서 는 학습 데이터로 사용되는 라벨링되지 않은 거대한 텍스트 Corpus(말뭉치)입니다.
즉, "데이터 를 모델이 얼마나 잘 이해(예측)하고 있는가"를 점수로 나타낸 것입니다.
- 목적 함수(Objective Function)를 의미합니다.
-
:
- 문장(데이터) 속에 있는 모든 단어(토큰)들의 순서 ii에 대해 아래의 확률 값을 전부 더하라는 뜻입니다.
-
:
- 로그 함수입니다. 확률값은 0과 1 사이의 소수인데, 여러 단어의 확률을 계속 곱하면 숫자가 0에 수렴해버리는 문제(언더플로우)가 생깁니다. 로그를 씌우면 곱셈이 덧셈(∑∑)으로 바뀌어 컴퓨터가 계산하기 매우 좋아집니다.
-
:
- 확률(Probability)입니다.(=parameter 를 가진 Transformer Decoder에 의해 계산된 조건부 확률)
-
:
- 모델이 맞춰야 할 '현재(다음) 단어'
-
:
- 이전에 등장한 단어들입니다. 는 모델이 한 번에 볼 수 있는 문맥의 길이(Context Window Size)를 뜻합니다. 즉, **'이전까지의 문맥'**입니다.
-
(세타):
- 우리가 학습시키고자 하는 **인공지능 모델의 파라미터(가중치)**입니다.
-
직관적 해설:
-
방식: 인터넷에 널려 있는 거대한 텍스트(뉴스, 책, 위키 등)를 순서대로 읽으며 빈칸(다음 단어)을 맞추게 한다.
( * 실제로 GPT-1 모델이 학습한 메인 말뭉치는 7,000여 권의 미출판 도서 데이터인 'BooksCorpus' 입니다. 책 데이터 특성상 긴 문맥(Long-range dependency)을 학습하는 데 큰 도움이 되었다함) -
비지도 학습인 이유: 사람이 일일이 정답표(labeling)를 달아줄 필요가 없다. "대한민국의 수도는 [서울]이다"라는 문장 자체가 문제이자 정답이기 때문이다.
-
결과: 이 거대하고 단순한 '다음 단어 맞추기 게임'을 통해, 모델은 스스로 문법, 세상의 상식, 문맥의 논리를 통째로 학습하게 된다.
-
2단계: Supervised Fine-tuning (지도 미세 조정)
사전 학습이 완료된 후, 우리가 진짜 풀고 싶은 특정 문제(감정 분석, 객관식 등)에 맞춰 모델을 튜닝하는 단계다. 정답이 있는 데이터를 사용하므로 지도 학습이 된다.
- 정의 (Objective Function): labeling된 dataset 의 입력 sequence 과 라벨 가 주어질 때의 예측 확률과 목적 함수는 다음과 같다.
label(정답) 예측 확률
-
:
- 입력된 문장(데이터)입니다. 개의 단어(토큰)로 이루어져 있습니다. (예: "이 영화 너무 재밌다")
-
:
- 우리가 예측해야 할 정답 라벨입니다. (예: 긍정(Positive) 또는 부정(Negative))
-
:
- 사전 학습된 트랜스포머(Transformer) 모델의 제일 마지막 레이어()에서, 맨 마지막 단어()를 처리하고 나온 **최종 출력값(Hidden state)**입니다. 모델이 문장 전체를 처음부터 끝까지 읽고 요약해 낸 **'문장의 핵심 의미'**라고 보시면 됩니다.
-
:
- 특정 임무(분류)를 수행하기 위해 새로 추가한 선형 계층(Linear Layer)의 가중치입니다. 모델의 요약본 을 받아서 정답 라벨의 개수만큼 점수를 변환해 줍니다.
-
:
- 소프트맥스 함수입니다. 를 통해 나온 단순한 점수들을 총합이 1(100%)이 되는 확률값으로 예쁘게 바꿔줍니다. (예: 긍정일 확률 0.9, 부정일 확률 0.1)
미세 조정(Fine-Tuning) 목적 함수
-
- 두 번째 학습 단계(미세 조정)의 목적 함수입니다. 는 사람이 직접 정답()을 달아놓은 라벨링 데이터셋(예: 리뷰-별점 데이터)을 의미합니다.
- :
- 데이터셋 CC에 있는 모든 (입력 문장 xx, 정답 yy) 쌍에 대해서 아래의 확률을 전부 더하라는 뜻입니다.
- :
- 모델이 진짜 정답 를 맞출 확률에 로그를 씌운 값입니다.
(은 Transformer 마지막 블록의 최종 활성화 벡터, 는 출력층의 가중치 행렬이다.)
- Auxiliary Objective (보조 목적 함수)의 활용: GPT-1은 지도 학습 단계에서도 학습의 안정성과 수렴 속도를 높이기 위해, 1단계의 언어 모델링(다음 단어 예측) 목적 함수를 보조적으로 함께 사용한다.
- :
- 미세 조정(Fine-Tuning) 단계에서 모델이 최종적으로 최대화해야 하는 종합 목표 점수입니다.
- :
- 이전에 설명해 드린 '정답(라벨) 맞추기' 점수입니다. (지도 학습)
- :
- 맨 처음에 설명해 드린 '다음 단어 맞추기' 점수입니다. (사전 학습 때 썼던 방식) 단, 여기서는 거대한 인터넷 데이터()가 아니라, 현재 훈련 중인 라벨링 데이터셋()의 텍스트를 가지고 다음 단어를 맞춥니다.
- (lamda):
- 가중치(Weight)를 조절하는 숫자입니다. "정답 맞추기()가 메인 임무이긴 한데, 다음 단어 맞추기()를 얼만큼의 비율로 섞어서 학습시킬까?"를 결정하는 조절 다이얼입니다. (보통 0.5 같은 값을 줍니다.)
왜 굳이 끝난 을 다시 가져와서 더했을까?
일반화 성능 향상 (과적합 방지):
정답(라벨) 맞추기에만 몰두하면, 모델이 텍스트의 진짜 의미는 잊어버리고 얄팍한 꼼수(특정 단어가 나오면 무조건 '긍정'으로 찍기 등)만 배울 수 있습니다(과적합). 다음 단어를 계속 예측하게 만들면, 문맥을 깊이 이해하는 능력을 유지하게 됩니다.
학습 속도 상승 (빠른 수렴):
언어의 구조를 계속 인지하면서 학습하기 때문에, 모델이 정답을 찾아가는 속도가 훨씬 빨라집니다.
사전 학습된 지식 유지:
인터넷 전체를 읽으며 고생해서 쌓아놓은 똑똑한 뇌(가중치)가, 특정 임무 하나만 배우다가 망가지는 현상(Catastrophic Forgetting)을 막아줍니다.
4. Task-aware input transformations (작업 인식 입력 변환)
이 기법의 핵심은 잘 만들어진 12층짜리 디코더 구조를 뜯어고치지 않는다는 것이다. architecture 변경 없이, 텍스트 입력의 형태만 특수 token을 활용해 조작함으로써 다양한 태스크를 수행한다.
1) 특수 token의 역할
-
<S> (Start)token: sequence 맨 앞에 붙어 새로운 작업의 시작을 알리는 닻(Anchor) 역할.- Positional Encoding과의 차이: 포지셔널 인코딩이 단어의 '물리적 위치'를 알려준다면,
<S> (Start)token은 이전 문맥과 단절된 새로운 독립적 문제임을 알리는 '구조적 초기화 신호'다. 이 token이 없다면 첫 단어가 의미적 역할과 구조적 역할을 동시에 수행해야 해 어텐션 연산에 과부하가 온다.
- Positional Encoding과의 차이: 포지셔널 인코딩이 단어의 '물리적 위치'를 알려준다면,
-
$ (Delim)token: 제시문과 보기 등 서로 다른 성격의 글을 분리해주는 구분자 역할. -
<E> (Extract)token: sequence 맨 마지막에 붙는 token. 디코더가 이 token에 도달했을 때는 앞선 모든 문맥 정보가 계산된 상태다. 즉, 문장 전체의 의미를 꾹꾹 눌러 담은 하나의 요약 벡터(Vector)를 뽑아내는 방아쇠 역할을 한다.
2) 객관식 문제 (Multiple Choice) 처리 메커니즘
수능 국어 객관식(제시문 1개, 보기 4개)을 푼다고 가정할 때의 처리 과정이다.
-
배치(Batch) 구성: 보기 4개를 하나의 긴 글로 묶지 않는다. 보기 개수만큼 다음과 같이 독립된 sequence로 구성한다.
-
<S> (Start)+ 제시문 +$ (Delim)+ 보기1 +<E> (Extract) -
<S> (Start)+ 제시문 +$ (Delim)+ 보기2 +<E> (Extract)(이하 동일)
-
-
병렬 연산: 위 4개의 독립된 sequence를 배치로 묶어 모델에 한 번에 통과시킨다.
-
점수 도출: 각각의 끝에 있는
<E> (Extract)token이 출력한 4개의 벡터를 동일한 선형 분류기(Linear Classifier)에 통과시켜 각 보기당 1개씩, 총 4개의 임의의 점수(Logit)를 얻어낸 뒤, 이 점수들을 모아 Softmax 함수를 통과시켜 정답 확률을 도출한다.
5. 수학적 처리와 오차 계산 (학습의 완성)
모델이 뱉어낸 임의의 점수를 실제 정답과 비교하여 parameter를 업데이트(학습)하기 위한 필수 수학적 과정이다.
1) Softmax (소프트맥스 함수)
- 정의: 선형 분류기를 거쳐 나온 각 클래스의 임의의 점수 를 확률 값으로 변환한다.
-
직관적 해설: 선형 분류기에서 나온 4개의 점수(예: 10, 5, 1, -2)는 크기가 제각각이다. 이를 단순 비교하지 않고 Softmax를 쓰는 이유는 두 가지다.
-
확률 분포 변환: 점수들을 다 합쳐서 정확히 1(100%)이 되도록(각 값은 )록 비율을 맞춘다 (예: 70%, 20%, 8%, 2%). 지수 함수()를 쓰기 때문에 큰 값은 더 확실하게, 작은 값은 더 작게 만들어 모델이 확신을 갖도록 유도한다.
-
미분 가능성: 딥러닝 역전파 학습을 위해선 그래프가 미분 가능해야 하는데, Softmax는 이 수학적 조건을 완벽하게 충족한다.
-
2) One-hot Encoding (원-핫 인코딩)
- 정의: 정답이 번 클래스일 때의 목표 확률 분포 는 다음과 같다.
- 직관적 해설: 컴퓨터가 자기가 예측한 확률(70%, 20%, 8%, 2%)과 진짜 정답을 비교하려면, 정답도 '확률 모양'이어야 한다. 정답이 2번이라면, 2번 자리에만 100%(1.0)를 주고 나머지는 0%(0.0)를 주어
[0.0, 1.0, 0.0, 0.0]형태로 만들어주는 작업이다.
3) Cross-Entropy Loss (크로스 엔트로피 오차)
- 정의: 모델의 예측 확률 분포 와 실제 정답 분포 사이의 차이(Loss)를 측정한다.
정답이 One-hot Encoding된 경우, 실제 정답 클래스 에 대해서만 확률을 계산하게 된다. 모델이 정답 클래스에 할당한 확률 가 1에 가까울수록 오차(Loss)는 0에 수렴하고, 확률이 낮을수록 오차는 무한대로 발산한다.
- 직관적 해설:
MSE(평균 제곱 오차)는 집값 예측 같은 연속된 숫자(회귀)에 쓴다. 반면, 객관식이나 분류 문제에서는 두 확률 분포(예측값 vs 정답) 간의 거리를 재는 Cross-Entropy가 훨씬 적합하다.
모델은 예측값(예:
[0.1, 0.7, 0.05, 0.15])과 정답([0, 1, 0, 0]) 사이의 오차값을 계산한 뒤, 이 오차를 줄이는 방향으로 내부 parameter를 수정하며 점차 정답률을 높인다.
