[LLM] Foundations of Large Language Models
https://arxiv.org/abs/2501.09223
Foundations of Large Language Models
This is a book about large language models. As indicated by the title, it primarily focuses on foundational concepts rather than comprehensive coverage of all cutting-edge technologies. The book is structured into four main chapters, each exploring a key a
arxiv.org
해당 서적을 읽으면서 LLM의 기초에 대해서 이해하고 모델 학습 방법을 알아본다. 이 색깔은 제가 생각한 부분을 GPT에게 물어보고 얻은 내용입니다.
1. 사전 훈련
BERT[Devlin et al., 2019] 및 GPT[Brown et al., 2020]와 같은 몇 가지 잘 알려진 예제를 포함하며, 모두 모델이 엄청난 양의 텍스트에서 마스크된 단어를 예측하도 록 학습함으로써 일반적인 언어 이해 및 생성이 달성될 수 있다는 유사한 아이디어를 가 지고 있습니다.
마스크 언어 모델링이라는 자체 지도 학습 작업을 통해 시퀀스 모델을 훈련하는 방법을 설명합니 다. 이어서 다양한 NLP 작업에 대해 사전 훈련된 시퀀스 모델을 적용하는 방법에 대한 논 의가 이어집니다. 이 장에서는 주로 NLP의 사전 훈련 패러다임에 초점을 맞출 것이므로 생성적 대규모 언어 모델에 대한 세부 사항은 다루지 않을 것입니다. 이러한 모델에 대한 자세한 논의는 후속 장에서 다룰 것입니다.
그림 1.1은 위에서 언급한 세 가지 사전 학습 접근 방식을 비교하여 보여줍니다. 자기 지도 사전 학습은 매우 성공적이어서 현재 최첨단 NLP 모델 대부분이 이 패러다임을 기반 으로 합니다. 따라서 이 장과 이 책 전체에서 우리는 자기 지도 사전 학습에 초점을 맞출 것입니다. 우리는 자기 지도를 통해 시퀀스 모델이 어떻게 사전 학습되는지, 그리고 사전 학습된 모델이 어떻게 적용되는지 보여줄 것입니다.

NLP 사전 학습에는 두 가지 주요 유형의 모델이 널리 사용됩니다.
1. 시퀀스 인코딩 모델. 단어 또는 토큰 시퀀스가 주어지면 시퀀스 인코딩 모델은 이 시퀀스를 실수 값 벡터 또는 벡터 시퀀스로 표현하고 시퀀스의 표현을 얻습니다. 이 표현은 일반적으로 문장 분류 시스템과 같은 다른 모델의 입력으로 사용됩니다.
시퀀스 인코딩 사전 학습의 경우 사전 학습된 모델을 조정하는 일반적인 방법은 미세 조정입니다. Encode(·)가 매개변수 θ를 갖는 인코더를 나타낸다고 합시다. 예를 들어 Encode(·)는 표준 Transformer 인코더가 될 수 있습니다. 이 모델을 어떤 식으로든 사전 학습하고 최적의 매개변수 ˆθ를 얻었다면, 이를 사용하여 모든 시퀀스를 모델링하고 이와 같이 해당 표현을 생성할 수 있습니다.
인코더는 독립형 NLP 시스템으로 작동하지 않기 때문에 종종 더 큰 시스템에 구성 요소로 통합됩니다. 예를 들어, 극성을 식별하는 텍스트 분류 문제를 생각해 보세요.
2. 시퀀스 생성 모델. NLP에서 시퀀스 생성은 일반적으로 주어진 컨텍스트에 따라 토큰 시퀀스를 생성하는 문제를 말합니다. 컨텍스트라는 용어는 애플리케이션마다 의미가 다릅니다. 예를 들어, 언어 모델링에서는 이전 토큰을 나타내고 기계 번역에서는 소스 언어 시퀀스를 나타냅니다.
다양한 시퀀스 생성 모델 중에서 주목할 만한 예는 매우 많은 양의 데이터로 학습된 대 규모 언어 모델입니다. 이러한 언어 모델은 이전 토큰이 주어졌을 때 다음 토큰을 예측하 도록 학습됩니다. 토큰 예측은 오랫동안 "언어 모델링"에만 국한되어 왔을 정도로 간단한 작업이지만, 이 작업을 여러 번 반복함으로써 언어에 대한 일반적인 지식을 학습할 수 있 다는 것이 밝혀졌습니다. 그 결과, 사전 학습된 대규모 언어 모델은 토큰 예측에서 놀라울 정도로 뛰어난 능력을 보여주며, 대규모 언어 모델에 프롬프트를 제공하여 수많은 NLP 문 제를 간단한 텍스트 생성 문제로 변환할 수 있게 되었습니다. 예를 들어, 위에서 언급한 텍 스트 분류 문제를 텍스트 생성 작업으로 구성할 수 있습니다.
1.1.2.2 사전 훈련된 모델 프롬프팅
(*참고 텍스트의 감성(polarity)는 {긍정, 부정, 중립} 중 하나의 레이블)
프롬프팅과 컨텍스트 내 학습은 최근 대규모 언어 모델의 부상에 중요한 역할을 합니 다. 이러한 문제에 대해서는 3장에서 더 자세히 논의할 것입니다. 그러나 프롬프팅이 대규 모 언어 모델을 조정하는 강력한 방법이기는 하지만, 모델이 지침을 정확하게 따르도록 하기 위해서는 여전히 약간의 튜닝 노력이 필요하다는 점을 주목할 가치가 있습니다. 또 한, 미세 조정 과정은 이러한 모델의 가치를 인간의 가치와 일치시키는 데 매우 중요합니 다. 미세 조정에 대한 더 자세한 논의는 4장에서 찾을 수 있습니다.
"Prompting of Pre-trained Models"는 미리 사전 학습된 언어 모델이 추가적인 파인튜닝 없이도 다양한 태스크를 수행할 수 있도록, 입력 텍스트(프롬프트)를 통해 모델에 작업 지시를 내리는 기법을 말해요. 주요 내용을 좀 더 구체적으로 정리하면 다음과 같습니다:
- 프롬프트 설계:
미리 학습된 모델에게 어떤 작업을 수행할지 설명하는 문장이나 지시문을 입력으로 제공합니다. 예를 들어, "Translate the following sentence into English:" 같은 프롬프트를 통해 모델이 번역 작업을 수행하도록 유도할 수 있습니다. - 텍스트 생성 문제로의 전환:
프롬프트를 활용하면 복잡한 NLP 문제(예: 분류, 번역, 요약 등)를 단순히 텍스트 생성 문제로 재구성할 수 있어요. 모델은 주어진 프롬프트에 이어지는 텍스트를 생성함으로써 작업의 답을 출력합니다. - 제로샷 및 few-shot 학습:
프롬프트 기법은 모델이 이전에 직접적으로 학습하지 않은 새로운 태스크도 수행할 수 있도록 해줍니다. 특히, 프롬프트에 몇 가지 예시(데모)를 포함시키면 few-shot 학습 효과를 기대할 수 있어요. - 고급 프롬프트 기법:
최근 연구에서는 단순한 프롬프트 외에도, 체인 오브 사고(chain-of-thought)와 같이 모델이 문제를 단계별로 해결하도록 유도하는 방법 등도 포함되어 있습니다.
1.2 자기 지도 사전 훈련 작업
1.2.1 디코더 전용 사전 훈련
Transformer 디코더에서 교차 주의 하위 레이어를 제거하여 언어 모델로 사용할수 있습니다.
Transformer 디코더는 원래 인코더-디코더 구조에서 사용되는데, 이 구조는 두 가지 주요 주의 메커니즘으로 구성됩니다: 자기 주의 (Self-Attention): 입력 시퀀스 내의 단어들이 서로 어떤 관계를 가지는지 파악하여, 각 단어가 이전 단어들(또는 전체 문맥)을 참조할 수 있게 합니다. 교차 주의 (Cross-Attention): 디코더가 인코더에서 생성한 표현(예: 입력 문장에 대한 정보)을 참조하도록 해, 입력과 출력 간의 연결 고리를 만들어줍니다. 교차 주의 하위 레이어를 제거하면, 디코더는 인코더의 출력 없이 오직 자기 주의 메커니즘만으로 동작하게 됩니다. 이는 모델이 단순히 이전에 생성한 토큰들만을 기반으로 다음 토큰을 예측하는, 즉 자율 생성(autoregressive) 언어 모델로 작동하게 만든다는 의미입니다. 예를 들어, GPT 계열의 모델은 이러한 방식으로 동작하여, 주어진 문맥에 이어지는 텍스트를 생성할 수 있습니다.
이러한 모델은 이전 토큰이 주어졌을 때 특정 위치에서 토큰의 분포를 예측 하고, 출력은 최대 확률을 가진 토큰입니다. 언어 모델링 문제에서와 같이 이 모델을 학습 하는 표준적인 방법은 토큰 시퀀스 모음에서 손실 함수를 최소화하는 것입니다. Decoder θ (·)를 매개변수 θ를 가진 디코더라고 합시다. 각 위치 i에서 디코더는 이전 토큰 {x0, ..., xi 를 기반으로 다음 토큰의 분포를 생성하며, 이는 Pr θ (·|x0, ..., xi) ( 또는 간단히 p θ i+1로 표시 됩니다). 동일한 위치에서 골드 표준 분포가 있다고 가정하고, 이를 pgold i+1 로 표시합니다. 언 어 모델링의 경우 pgold i+1 를 올바르게 예측된 단어의 원-핫 표현으로 생각할 수 있습니다. 그 런 다음 모델 예측과 실제 예측 간의 차이를 측정하기 위해 손실 함수 L(p θ i+1, pgold i+1 )를 정의 합니다. NLP에서는 일반적으로 로그 스케일 교차 엔트로피 손실이 사용됩니다.
1.2.2 인코더 전용 사전 훈련
인코더 Encoder θ (·)는 토큰 시퀀스 x = x0...xm를 읽고 벡 터 시퀀스 H = h0...hm 4를 생성하는 함수입니다. 이 모델을 훈련하는 것은 실제 값 함수의 출력이 얼마나 좋은지 측정할 수 있는 금본위 데이터가 없기 때문에 간단하지 않습니다. 인코더 사전 훈련에 대한 일반적인 접근 방식은 얻기 쉬운 감독 신호를 수신하기 위해 인 코더를 일부 출력 레이어와 결합하는 것입니다.
인코더는 입력 토큰 시퀀스를 벡터 시퀀스로 변환하는 함수인데, 이 벡터에 대해 직접 비교할 수 있는 '정답' 데이터가 없기 때문에 평가하기가 어렵습니다. 그래서 인코더만 단독으로 훈련하기보다는, 예를 들어 마스킹된 토큰 예측 같은 감독 신호를 제공할 수 있는 출력 레이어와 결합해서 모델의 출력을 평가하고 학습시키는 방식을 사용합니다.

그림 1.2: 트랜스포머 인코더 사전 학습(왼쪽) 후 사전 학습된 인코더 적용(오른쪽). 사전 학습 단계에서는 인 코더가 Softmax 레이어와 함께 자체 지도 학습을 통해 학습됩니다. 적용 단계에서는 Softmax 레이어가 제거되 고 사전 학습된 인코더가 예측 네트워크와 결합되어 특정 문제를 해결합니다. 일반적으로 이러한 작업에 더 잘 적응하기 위해 시스템은 레이블이 지정된 데이터를 사용하여 미세 조정됩니다.
이 모델과 표준 언어 모델의 차이점은 출력 pi가 인코더 사전 학습과 언어 모델링에서 다른 의미를 갖는다는 것입니다. 언어 모델링에서 pi은 다음 단어를 예측하는 확률 분포입 니다. 이는 자동 회귀 디코딩 프로세스를 따릅니다. 언어 모델은 i 위치까지의 단어만 관찰 하고 다음 단어를 예측합니다. 반면, 인코더 사전 학습에서는 전체 시퀀스를 한 번에 관찰 할 수 있으므로 이 시퀀스의 토큰을 예측하는 것은 의미가 없습니다.
1.2.2.1 Masked Language Modeling → 위에서 인코더의 사전 학습을 위한 방법 중에 하나로 말하는 부분
인코더 사전 학습의 가장 인기 있는 방법 중 하나는 마스크 언어 모델링이며, 이는 잘 알려 진 BERT 모델[Devlin et al., 2019]의 기초를 형성합니다. 마스크 언어 모델링의 아이디어는 입력 시퀀스에서 일부 토큰을 마스킹하여 예측 과제를 만들고 마스크된 토큰을 예측하도 록 모델을 학습시키는 것입니다. 이러한 의미에서 때로는 인과적 언어 모델링이라고 불리 는 기존의 언어 모델링 문제는 마스크 언어 모델링의 특수한 경우입니다. 각 위치에서 오 른쪽 컨텍스트의 토큰을 마스킹하고 왼쪽 컨텍스트를 사용하여 이 위치의 토큰을 예측합 니다. 그러나 인과적 언어 모델링에서는 단어 예측에서 왼쪽 컨텍스트만 사용하는 반면, 예측은 오른쪽 컨텍스트의 토큰에 따라 달라질 수 있습니다. 대조적으로, 마스크 언어 모 델링에서는 마스크되지 않은 모든 토큰이 단어 예측에 사용되어 왼쪽 및 오른쪽 컨텍스트 를 모두 기반으로 예측하는 양방향 모델이 됩니다.
x = The early bird catches the worm
\bar{x} = The [MASK] bird catches the [MASK]
이제 두 개의 시퀀스 x와 ¯x가 있습니다. 모델은 ¯x를 기반으로 x를 올바르게 예측할 수 있도록 최적화됩니다. 이는 자동 인코딩과 유사한 프로세스로 생각할 수 있으며, 학습 목 표는 재구성 확률 Pr(x|¯x)을 최대화하는 것입니다. x와 ¯x 사이에는 간단한 위치별 정렬이 있다는 점에 유의하십시오. ¯x의 마스크되지 않은 토큰은 같은 위치의 x 토큰과 동일하므 로 이 마스크되지 않은 토큰에 대한 예측을 고려할 필요가 없습니다. 이로 인해 마스크된 토큰에 대한 확률만 최대화하는 단순화된 학습 목표가 도출됩니다. 이 목표를 최대 우도 추정 방식으로 표현할 수 있습니다.
1.2.2.2 permuted language modeling
마스크 언어 모델링은 간단하고 널리 적용되지만, 새로운 문제를 야기합니다. 한 가지 단 점은 학습 중에만 사용되고 실제로는 사용되지 않는 특수 토큰인 [MASK]를 사용한다는 것입니다. 그래서 순열을 활용하여 토큰 예측 순서를 왼쪽에서 오른쪽으로 고정하지 않고 임의의 순서로 변경하여 모델이 더 넓은 문맥 정보를 활용할 수 있게 하는 방법이 도입되었습니다.
자세히 설명하면:
- 전통적 언어 모델과의 차이점:
일반적인 자동회귀 언어 모델은 입력 시퀀스의 토큰들을 순차적으로(예: x₀ → x₁ → … → xₙ) 예측합니다. 이 방식은 각 토큰의 예측이 오직 앞의 토큰들에만 의존하도록 제한합니다. - Permuted Language Modeling의 접근 방식:
이 기법에서는 실제 텍스트의 순서는 그대로 유지하면서, 토큰을 예측하는 순서만을 임의로 재배열합니다. 예를 들어, 5개의 토큰 x₀, x₁, x₂, x₃, x₄에 대해 x₀ → x₄ → x₂ → x₁ → x₃와 같은 순서로 예측하도록 정합니다.
이렇게 하면, 특정 토큰을 예측할 때 모델은 전통적 방식보다 더 다양한 문맥(즉, 왼쪽뿐만 아니라 오른쪽의 정보도 포함한)을 참조할 수 있게 됩니다. - 실제 구현:
Transformer의 self-attention 메커니즘은 입력 순서에 민감하지 않기 때문에, 예측 순서를 바꾸기 위해 특별한 마스킹 전략을 사용할 수 있습니다. 이를 통해 모델은 특정 토큰을 예측할 때, 재배열된 순서에 따라 필요한 토큰들만 선택적으로 참조할 수 있습니다. - 이점:
- 문맥 활용의 확장: 단순히 앞의 정보뿐만 아니라, 전체 문맥에서 유용한 정보를 끌어올 수 있습니다.
- 학습-추론 불일치 해소: Masked Language Modeling에서 발생하는 [MASK] 토큰 사용에 따른 학습과 추론 사이의 불일치 문제를 완화할 수 있습니다.
순서대로 표현한 확률 분포 : Pr(x0) · Pr(x1|e0) · Pr(x2|e0, e1) · Pr(x3|e0, e1, e2) · Pr(x4|e0, e1, e2, e3)
임의의 순서로 표현한 확률 분포 : Pr(x0) · Pr(x4|e0) · Pr(x2|e0, e4) · Pr(x1|e0, e4, e2) · Pr(x3|e0, e4, e2, e1)
이 새로운 예측 순서는 표준 언어 모델에서처럼 이전 토큰에만 국한되지 않고 더 넓은 컨텍스트를 기반으로 일부 토큰을 생성할 수 있도록 합니다. 예를 들어, x3를 생성할 때 모 델은 왼쪽 컨텍스트(예: e0, e1, e2)와 오른쪽 컨텍스트(예: e4)를 모두 고려합니다. 임베딩 e 0, e1, e2, e4은 x0, x1, x2, x4의 위치 정보를 통합하여 토큰의 원래 순서를 유지합니다. 결과 적으로 이 접근 방식은 마스크 언어 모델링과 다소 유사합니다. x3를 마스크하고 주변 토 큰 x0, x1, x2, x4을 사용하여 이 토큰을 예측합니다.
1.2.2.3 Pre-training Encoders as Classifiers
BERT의 원본 논문 [Devlin et al., 2019]에서는 다음 문장 예측(NSP)이라는 간단한 방법 이 제시됩니다. NSP의 가정은 훌륭한 텍스트 인코더는 두 문장 간의 관계를 포착해야 한 다는 것입니다. 이러한 관계를 모델링하기 위해 NSP에서는 연속된 두 문장 SentA과 SentB 를 인코딩한 출력을 사용하여 SentB이 SentA 다음에 오는 다음 문장인지 여부를 판단할 수 있습니다. 예를 들어, SentA = ’It is raining .’와 SentB = ’I need an umbrella .’이라고 가정합 니다. 인코더의 입력 시퀀스는 다음과 같을 수 있습니다.

그림 1.3 인과 언어 모델링, 마스크 언어 모델링 및 순열 언어 모델링의 자체 주의 마스킹 결과 비교. 회색 셀 은 위치 j의 토큰이 위치 i의 토큰에 주의를 기울이지 않음을 나타냅니다. 파란색 셀(i, j)은 위치 j의 토큰이 위 치 i의 토큰에 주의를 기울임을 나타냅니다. emask는 토큰 임베딩과 위치 임베딩의 조합인 [MASK] 기호의 임 베딩을 나타냅니다.
학습 샘플을 생성하기 위해 매번 두 문장이 필요하며, 하나는 SentA용이고 다른 하나는 SentB용입니다. 이를 수행하는 간단한 방법은 텍스트에서 연속된 두 문장의 자연스러운 순서를 이용하는 것입니다. 예를 들어, 실제 연속 문장을 사용하여 긍정적인 샘플을 얻고, 무작위로 샘플링된 문장을 사용하여 부정적인 샘플을 얻습니다. 결과적으로 이 모델을 학 습하는 것은 분류기를 학습하는 것과 같습니다. 일반적으로 NSP는 추가 학습 손실로 사용 됩니다.
1.2.3 인코더-디코더 사전 훈련