GPT란 무엇인가? 토큰, Transformer, 학습 및 미세 조정(Fine-Tuning)에 관한 실용 가이드
요약
GPT의 핵심 개념인 토큰, Transformer 아키텍처, 사전 학습 및 미세 조정 과정을 설명하는 실용 가이드입니다. 단순한 챗봇을 넘어 신경망 언어 모델로서의 작동 원리를 다룹니다.
핵심 포인트
- GPT는 Generative Pre-trained Transformer의 약자임
- Transformer 아키텍처의 어텐션 메커니즘이 핵심 역할 수행
- 텍스트는 토크나이저를 통해 토큰 단위로 변환되어 처리됨
- 사전 학습된 범용 모델을 특정 작업에 적응시키는 과정이 중요함
인공지능 (AI) 시스템은 이제 기사를 작성하고, 과학적 개념을 설명하며, 소프트웨어 코드를 생성하고, 문서를 요약하며, 놀라울 정도로 자연스러운 대화에 참여할 수 있습니다. 이러한 발전의 중심에는 세 글자로 흔히 연상되는 언어 모델 클래스인 GPT가 있습니다.
광범위한 사용에도 불구하고, GPT는 종종 너무 단순하게 설명되곤 합니다. GPT는 단순히 챗봇이나 검색 엔진, 또는 준비된 답변을 담고 있는 데이터베이스가 아닙니다. GPT는 토큰 (tokens) 시퀀스를 처리하고 다음에 무엇이 올지를 예측하도록 학습된 신경망 언어 모델 (neural language model)입니다.
따라서 GPT를 이해하려면 채팅 인터페이스 너머를 살펴봐야 합니다. 우리는 토큰화 (tokenization), Transformer 아키텍처, 사전 학습 (pre-training), 파라미터 (parameters), 사후 학습 (post-training), 그리고 모델이 언어를 생성하는 통계적 과정을 조사해야 합니다.
GPT는 무엇의 약자인가?
GPT는 Generative Pre-trained Transformer의 약자입니다. 각 단어는 시스템의 근본적인 부분을 설명합니다.
Generative (생성적)는 모델이 텍스트, 코드, 구조화된 데이터 또는 기타 토큰 기반 출력과 같은 새로운 시퀀스를 생성할 수 있음을 의미합니다.
Pre-trained (사전 학습된)는 모델이 특정 작업이나 대화 동작에 적응하기 전에 대규모 데이터 컬렉션으로부터 일반적인 패턴을 먼저 학습함을 의미합니다.
Transformer (트랜스포머)는 GPT의 기반이 되는 신경망 아키텍처를 가리킵니다.
Transformer 아키텍처는 Vaswani와 동료들이 2017년 논문인 "Attention Is All You Need"에서 소개했습니다. 순환 신경망 (recurrent neural networks)에 크게 의존했던 이전의 시퀀스 모델들과 달리, Transformer는 어텐션 메커니즘 (attention mechanisms)을 사용하여 시퀀스 내 요소 간의 관계를 더 효율적이고 병렬적으로 처리했습니다.
원래의 GPT 연구는 Transformer 기반 언어 모델에 생성적 사전 학습 (generative pre-training)을 적용했습니다. 핵심 아이디어는 먼저 레이블이 없는 텍스트 (unlabelled text)로 범용 모델을 학습시킨 다음, 이를 다운스트림 언어 작업 (downstream language tasks)에 적응시키는 것이었습니다. 이러한 대규모 사전 학습과 작업별 적응의 결합은 현대 자연어 처리 (natural language processing)의 토대 중 하나가 되었습니다.
GPT는 텍스트를 직접 읽지 않습니다
GPT가 텍스트를 처리하기 전에, 텍스트는 토큰 (tokens)이라고 불리는 더 작은 단위로 변환되어야 합니다.
토큰은 반드시 완전한 단어일 필요는 없습니다. 토크나이저 (tokenizer)에 따라 토큰은 다음과 같은 것들을 나타낼 수 있습니다:
- 완전한 단어
- 단어의 일부
- 문장 부호
- 숫자
- 공백 패턴
- 바이트 (byte) 또는 문자 시퀀스
예를 들어, 토크나이저는 흔히 쓰이는 단어는 하나의 토큰으로 나타내는 반면, 흔치 않은 기술 용어는 여러 개의 서브워드 (subword) 토큰으로 나눌 수 있습니다. 정확한 분할 방식은 토크나이저의 어휘 사전 (vocabulary)과 학습 방법에 따라 달라집니다.
서브워드 토큰화 (Subword tokenization) 방식이 중요해진 이유는, 고정된 단어 수준의 어휘 사전으로는 가능한 모든 단어, 철자 변형, 기술 용어 또는 새로 만들어진 표현을 효율적으로 나타낼 수 없기 때문입니다. 흔히 BPE로 약칭되는 바이트 쌍 인코딩 (Byte Pair Encoding)은 희귀 단어를 더 작은 서브워드 단위의 시퀀스로 나타내기 위해 신경망 언어 처리 (neural language processing)에 맞춰 조정되었습니다.
단순화된 GPT 처리 파이프라인 (pipeline)은 다음과 같습니다:
사용자 텍스트
↓
토크나이저 (Tokenizer)
↓
토큰 ID (Token IDs)
↓
토큰 임베딩 (Token embeddings)
↓
트랜스포머 레이어 (Transformer layers)
↓
어휘 사전 상의 확률 분포 (Probability distribution over the vocabulary)
↓
선택된 다음 토큰 (Selected next token)
↓
생성된 텍스트
토큰화 이후, 각 토큰은 수치 식별자 (numerical identifier)에 매핑됩니다. 그런 다음 모델은 이 식별자들을 임베딩 (embeddings)이라고 알려진 벡터 (vectors)로 변환합니다. 이 벡터들은 트랜스포머 (Transformer)가 처리하는 수학적 표현을 제공합니다.
토큰화는 사소한 전처리 세부 사항이 아닙니다. 이는 문맥 길이 (context length), 다국어 성능, 수치 표현, 생성 속도, 그리고 도메인 특화 용어를 처리하는 모델의 능력에 영향을 미칩니다.
핵심 목표: 다음 토큰 예측하기
GPT 모델의 핵심에는 겉보기에는 매우 단순해 보이는 학습 목표가 있습니다: 바로 이전에 나온 토큰들을 바탕으로 다음 토큰을 예측하는 것입니다.
토큰 시퀀스가 다음과 같이 주어졌을 때
[
x_1, x_2, x_3, \ldots, x_t,
]
모델은 다음 토큰의 확률을 추정합니다:
[
P(x_t \mid x_1, x_2, \ldots, x_{t-1}).
]
학습 과정 동안, 모델은 자신의 예측값과 학습 데이터에 있는 실제 다음 토큰 (next token)을 반복적으로 비교합니다. 예측값과 정답 사이의 차이는 일반적으로 교차 엔트로피 손실 (cross-entropy loss)이라 불리는 손실 함수 (loss function)를 통해 측정됩니다. 그 후, 해당 오차를 줄이기 위해 모델의 파라미터 (parameters)가 조정됩니다.
단순화된 언어 모델 학습 목적 함수 (training objective)는 다음과 같이 표현될 수 있습니다:
[
\mathcal{L} = -\sum_{t=1}^{T}\log P(x_t \mid x_{<t}).
]
이 과정은 극도로 방대한 양의 토큰 시퀀스 (token sequences)에 대해 반복됩니다. 다음 토큰 예측 (next-token prediction)을 통해, 모델은 학습 데이터에 존재하는 문법 구조, 의미론적 관계 (semantic relationships), 글쓰기 패턴, 사실적 연관성, 프로그래밍 구문 (programming syntax), 그리고 반복되는 추론 형태를 점진적으로 학습합니다. 오리지널 GPT 연구는 다층 트랜스포머 디코더 (multi-layer Transformer decoder)를 사용하여 이러한 자기회귀 (autoregressive) 언어 모델링 목적 함수를 공식화했습니다.
모델이 답변을 생성할 때도 동일한 기본 메커니즘을 사용합니다. 모델은 자신의 어휘 사전 (vocabulary)에 대한 확률 분포를 계산하고, 디코딩 전략 (decoding strategy)에 따라 토큰을 선택하며, 해당 토큰을 시퀀스에 추가한 뒤 이 과정을 반복합니다.
입력: "The capital of France is"
예측 1: " Paris"
새로운 시퀀스: "The capital of France is Paris"
예측 2: "."
새로운 시퀀스: "The capital of France is Paris."
예측 3: 응답 종료 (End of response)
모델은 보통 한 번의 단계에서 문단 전체를 생성하지 않습니다. 모델은 응답을 한 번에 하나의 토큰씩 순차적으로 생성합니다.
셀프 어텐션 (Self-Attention)의 작동 원리
트랜스포머 (Transformer)의 결정적인 구성 요소는 셀프 어텐션 (self-attention)입니다.
셀프 어텐션은 각 토큰 표현 (token representation)이 시퀀스 내의 다른 관련 토큰으로부터 정보를 통합할 수 있게 해줍니다. 다음 문장을 예로 들어보겠습니다:
"The programmer fixed the server because it had stopped responding."
"it"이라는 단어를 해석하기 위해, 모델은 이 단어와 "server" 같은 이전 단어들 사이의 관계를 표현해야 합니다. 어텐션 메커니즘 (attention mechanisms)은 모델이 이러한 문맥적 관계 (contextual relationships)를 계산할 수 있도록 돕습니다.
어텐션 레이어 (attention layer) 내에서, 토큰 표현 (token representations)은 세 가지 종류의 벡터로 투영 (projected)됩니다:
Query (쿼리)
Key (키)
Value (값)
표준적인 스케일드 닷 프로덕트 어텐션 (scaled dot-product attention) 연산은 다음과 같이 표현됩니다:
\text{softmax}
\left(
\frac{QK^\top}{\sqrt{d_k}}
\right)V.
쿼리 (query)와 키 (key) 벡터는 서로 다른 위치들이 서로에게 얼마나 강하게 어텐션 (attend)해야 하는지를 결정합니다. 값 (value) 벡터는 결과적인 문맥적 표현 (contextual representation)을 생성하기 위해 결합되는 정보를 포함합니다.
Transformer는 일반적으로 멀티 헤드 어텐션 (multi-head attention)을 사용하며, 이는 여러 어텐션 연산이 병렬로 수행됨을 의미합니다. 개별 헤드가 반드시 인간이 정의한 명확한 언어 규칙에 대응하는 것은 아니지만, 서로 다른 어텐션 헤드들은 서로 다른 종류의 관계를 표현하도록 학습될 수 있습니다.
GPT 모델은 인과적 어텐션 마스크 (causal attention mask)를 사용합니다. 이는 일반적인 자기회귀 (autoregressive) 학습 중에 토큰이 미래의 토큰에 접근하는 것을 방지합니다. 토큰 ($x_t$)을 예측할 때, 모델은 ($x_t$) 이전의 토큰들을 사용할 수는 있지만, 정답을 미리 내다볼 수는 없습니다.
GPT 레이어는 또한 피드 포워드 신경망 (feed-forward neural networks), 잔차 연결 (residual connections), 그리고 정규화 (normalization) 연산을 포함합니다. 이러한 레이어들을 많이 쌓음으로써, 모델은 입력 시퀀스에 대해 점점 더 문맥적인 표현을 구축합니다.
사전 학습 (Pre-Training)은 모델에게 무엇을 가르치는가?
사전 학습 동안, GPT 모델은 토큰화된 데이터의 대규모 코퍼스 (corpus)에 노출되며 다음 토큰 예측 (next-token prediction)을 위해 최적화됩니다.
데이터에는 산문, 기술 문서, 대화, 교육 자료, 소스 코드 등 다양한 형태의 언어가 포함될 수 있습니다. 정확한 데이터셋, 필터링 절차, 그리고 혼합 비율은 모델마다 다릅니다.
사전 학습은 일반적으로 모델에게 명시적인 사실 데이터베이스나 수동으로 설계된 문법을 제공하지 않습니다. 대신, 모델은 최적화 (optimization)를 통해 분산된 통계적 표현 (distributed statistical representations)을 학습합니다.
예를 들어, 모델에게 동사가 주어와 일치해야 한다는 공식적인 규칙이 반드시 주어지는 것은 아닙니다. 모델은 문법적 일치 (grammatical agreement)가 발생하는 수많은 사례를 접하며, 문법적으로 일관된 연속 문장이 나올 확률이 더 높아지도록 매개변수 (parameters)를 조정합니다.
이러한 학습 과정은 충분히 유능한 모델이 별도의 학습 목표 (training objectives)로 정의되지 않은 작업들도 수행할 수 있게 합니다. GPT-3는 거대한 자기회귀 (autoregressive) 언어 모델이 각 작업에 대한 추가적인 경사 하강법 기반의 미세 조정 (gradient-based fine-tuning) 없이도, 지시 사항 (instructions)이나 프롬프트 (prompt)에 직접 배치된 소수의 예시를 통해 많은 작업을 수행할 수 있음을 보여주었습니다. 이러한 동작은 제로샷 (zero-shot), 원샷 (one-shot), 퓨샷 (few-shot) 학습으로 알려지게 되었습니다.
더 정확하게는, 이를 인컨텍스트 학습 (in-context learning)이라고 부르는 경우가 많습니다. 모델은 현재 문맥 (context)의 패턴에 따라 출력을 조정하지만, 대화 중에 모델의 기저 매개변수 (underlying parameters)가 통상적으로 업데이트되지는 않습니다.
모델 매개변수 (Model Parameters)란 무엇인가?
매개변수 (Parameters)는 학습 과정에서 습득되는 수치 값입니다. 여기에는 어텐션 투영 (attention projections), 피드포워드 네트워크 (feed-forward networks), 임베딩 (embeddings) 및 모델의 기타 구성 요소에서 사용되는 가중치 (weights)가 포함됩니다.
매개변수는 정보가 네트워크를 통과할 때 어떻게 변환될지를 결정합니다. 매개변수는 다음과 같이 단순한 항목으로 검사할 수 있는 개별적인 사실이 아닙니다:
매개변수 8,217,491 = "파리는 프랑스의 수도이다"
지식은 수많은 매개변수와 내부 표현 (internal representations)에 분산되어 있습니다.
매개변수 수를 늘리면 모델의 용량 (capacity)을 키울 수 있지만, 매개변수 수만으로 품질이 결정되지는 않습니다. 성능은 다음과 같은 요소들에도 의존합니다:
- 학습 데이터 (Training-data)의 양과 질
- 토크나이저 (Tokenizer) 설계
- 모델 아키텍처 (Model architecture)
- 최적화 절차 (Optimization procedure)
- 학습 컴퓨팅 자원 (Training compute)
- 문맥 길이 (Context length)
- 사후 학습 데이터 (Post-training data)
- 평가 방법론 (Evaluation methodology)
신경 스케일링 법칙 (Neural scaling laws)에 관한 연구는 광범위한 실험 범위에 걸쳐 언어 모델 손실 (Language-model loss), 모델 크기 (Model size), 데이터셋 크기 (Dataset size), 그리고 학습 연산량 (Training compute) 사이의 예측 가능한 관계를 발견했습니다. 하지만 이러한 발견이 단순히 파라미터 수 (Parameter count)를 늘리는 것만으로 자동으로 더 유용하거나 신뢰할 수 있는 어시스턴트가 생성된다는 것을 의미하지는 않습니다.
InstructGPT 실험은 유용한 사례를 제공합니다. 연구진의 프롬프트 분포 (Prompt distribution) 상에서, 인간 평가자들은 훨씬 더 큰 1,750억 개의 파라미터를 가진 GPT-3 베이스 모델 (Base model)보다 13억 개의 파라미터를 가진 지시어 튜닝된 (Instruction-tuned) 모델의 출력을 더 선호했습니다. 이는 파라미터 수뿐만 아니라 사후 학습 (Post-training)과 정렬 (Alignment)의 중요성을 입증했습니다.
베이스 GPT 모델은 자동으로 챗봇이 되지 않습니다
다음 토큰 예측 (Next-token prediction)만으로 학습된 모델은 일반적으로 베이스 모델 (Base model)이라고 불립니다.
베이스 모델은 텍스트를 완성하고, 스타일을 모방하며, 일부 질문에 답하고, 프롬프팅 (Prompting)을 통해 작업을 수행할 수 있습니다. 하지만 이들의 근본적인 목표는 통계적으로 그럴듯한 방식으로 시퀀스 (Sequences)를 이어가는 것입니다. 이들은 유용한 대화형 어시스턴트로 동작하도록 자동으로 최적화되어 있지 않습니다.
베이스 모델을 지시 수행 어시스턴트로 전환하려면 대개 추가적인 사후 학습 (Post-training)이 필요합니다.
단순화된 사후 학습 파이프라인 (Post-training pipeline)에는 다음과 같은 과정이 포함될 수 있습니다:
지도 미세 조정 (Supervised Fine-Tuning)
인간이 작성하거나 선별한 예시를 사용하여 모델에게 지시어에 어떻게 응답해야 하는지 가르칩니다.
학습 예시는 다음과 같이 구성될 수 있습니다:
지시어 (Instruction):
12살 아이에게 광합성을 설명해 주세요.
원하는 응답 (Desired response):
식물은 햇빛을 사용하여 물과 이산화탄소를...
모델은 유사한 지시어가 주어졌을 때 원하는 응답이 나올 확률을 더 높이도록 학습됩니다.
선호도 학습 (Preference Training)
가능한 여러 모델 응답을 비교하고 순위를 매깁니다. 이러한 선호도는 어떤 출력이 더 유용하고, 정확하며, 명확하거나 안전한지에 대한 정보를 제공합니다.
인간 피드백 기반 강화학습 (Reinforcement Learning from Human Feedback)
전형적인 RLHF 파이프라인에서는 선호도 비교 (preference comparisons)를 사용하여 보상 모델 (reward model)을 학습시킵니다. 그 후, 더 높은 예측 보상을 받는 응답을 생성하도록 언어 모델 (language model)을 최적화합니다.
InstructGPT 연구는 지도 학습 기반 시연 (supervised demonstrations)을 순위가 매겨진 모델 출력 (ranked model outputs) 및 인간 피드백 기반 강화학습 (Reinforcement Learning from Human Feedback)과 결합했습니다. 연구 결과에 따르면, 사후 학습 (post-training)을 통해 지시 이행 (instruction following) 능력과 인간 선호도 평가를 실질적으로 향상할 수 있음이 나타났습니다.
GPT와 ChatGPT는 동일한 것이 아닙니다
GPT는 기반이 되는 생성형 Transformer 모델 제품군과 그와 관련된 아키텍처 (architectural) 및 학습 방식 (training approach)을 의미합니다.
ChatGPT는 대화를 통해 사용자와 상호작용하도록 설계된 대화형 시스템 (conversational system)입니다. ChatGPT의 동작은 언어 모델 (language model)뿐만 아니라 사후 학습 (post-training), 대화 형식 (conversation formatting), 시스템 지침 (system instructions), 안전 메커니즘 (safety mechanisms), 그리고 일부 구현에서는 외부 도구 (external tools)에도 의존합니다.
OpenAI는 ChatGPT를 InstructGPT의 대화 지향적 형제 모델로 출시하였으며, 이는 대화 형식으로 응답하고 후속 질문을 처리하도록 학습되었습니다.
그 차이점은 다음과 같이 요약할 수 있습니다:
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기