GLM 논문의 이름은 GLM: General Language Model Pretraining with Autoregressive Blank Infilling다. (링크)
저자는 Zhengxiao Du, Yujie Qian, Xiao Liu, Ming Ding, Jiezhong Qiu, Zhilin Yang, Jie Tang다.
GLM은 2021년에 처음 아카이브에 업로드 되었으며, 2022년에 마지막으로 수정된 논문으로 2026년 기준으로는 비교적 오래된 논문이다. 그래도 지금 리뷰하는 이유는 GLM 4.6과 4.7이 좋은 성능을 거두었기에 그 시초가 되는 모델은 어떠한지 살펴보기 위함이다.
Absract
BERT 같은 오토인코딩 모델, GPT 같은 오토리레시브 모델, T5 같은 인코더-디코더 등의 다양한 모델이 있다. 하지만 NLU (Natural Language Understanding), unconditional generation, conditional generation의 세 가지의 모든 분야에서 최고의 성능을 내는 pretratining 프레임워크는 없다. 본 논문에서는 General Language Model (GLM)을 제시하여 이 문제를 해결하고자 하며, GLM은 autoregressive blank filling에 기반한다. GLM blank filling pretraining 과정에 2d positional encodings을 도입하여 임의의 순서에 대한 spans를 예측 가능하게 하여, NLU 분야에서 BERT와 T5를 능가했다. 또한 빈칸의 숫자와 길이를 조절함으로써 NLU, conditional generation, unconditional generation의 서로 다른 작업에 대해서 pretrain이 가능하다. GLM은 동일한 모델의 크기, 데이터에 대해서 BERT, T5, GPT를 능가한다.
2. GLM Pretraining Framework


2.1. Pretraining Objective
2.1.1. Autoregressive Blank Infilling
GLM은 autoregressive blank filling objective 최적화를 통해서 학습된다. 주어진 입력 텍스트 $x = [x_1, ..., x_n]$과 다수의 텍스트 span 스팬 {$s_1, ..., s_m$}이 뽑히고, 각각의 스팬 $s_$는 [$s_{i, 1}, ... s_{i, l_i}$]의 연속적인 토큰의 시계열이며, $x$의 내부 항목이다. 각각의 스팬은 단일한 [MASK] 토큰으로 교체되며, corrupted text인 $x_\text{corrupt}$를 형성한다. 모델은 corrupted text에 있는 비어있는 토큰을 autoregressive하게 예측한다. 이때, 모델은 이전의 예측된 스팬들과 corrupted text를 모두 참조한다. 서로 다른 스팬들 사이의 상호의존성을 완전하게 포착하기 위해서, permutation language model처럼 스팬들의 순서를 섞었다.
$Z_m$은 길이 $m$의 가능한 모든 permutations으로, index sequence [1, 2, .., $m$]이다. 이를 통해서 재배열된 스팬 시퀀스는 $s_{z < i}$ = [$s_{z_1}, ..., s_{z_{i-1}}$]이다.
Pretraining objective function 사전학습 목적 함수는 다음과 같다.
$\underset{\theta}{max} \mathbb{E}_{z \sim Z_m}$ [ $\sum_{i=1}^{m} log p_\theta ( s_{zi} | x_\text{corrupt}, s_{z < i} )$ ]
항상, 토큰은 왼쪽에서 오른쪽 순서로 생성하므로 span $s_i$의 생성 확률은 다음처럼 factorized 된다.
$p_\theta ( s_{i} | x_\text{corrupt}, s_{z < i} )$
= $\Pi_{j=1}^{l_i} p_\theta ( s_{i,j} | x_\text{corrupt}, s_{z < i}, s_{i < j} )$
저자들은 입력 $x$를 2 파트로 나눴다. Part A에서는 corrupted text를 만들고, Part B에서는 masked span을 만든다.
이때, Part A 내부의 토큰들은 서로를 attend하여 정보 값을 확인할 수 있지만, Part B의 토큰은 확인할 수 없다. Part B의 경우, Part A의 모든 토큰들과, Part B에 있는 자신의 이전 토큰들을 attend할 수 있다. 각각의 스팬은 [START]와 [END]라는 스페셜 토큰들로 패딩한다.
이렇게 설정함으로써, Part A에서는 bidirectional encoder로, Part B에서는 unidirectional decoder로 학습하면서 동시에 하나의 모델에서 bidirectional encoder과 unidirectional decoder를 하나의 모델로 통합할 수 있게 된다. Span의 샘플링에 사용하는 길이는 모수 $\lambda = 3$인 Poission distribution에서 샘플링했다. 오리지널 토큰 중에서 최소 15%는 mask될 때 까지 샘플링을 수행했다. 실증적으로 NLU 태스크에서 15%의 비율이 가장 성능이 좋았음을 확인했다.
2.1.2. Multi-Task Pretraining
앞서 짧은 길이의 스팬을 마스킹하여 NLU 태스크에 적합하다고 했다. 하지만 하나의 모델이 NLU 뿐만 아니라, 텍스트 생성도 잘 할 수 있기를 바라기 때문에, 저자들은 multi-task pretraining setup을 연구했다. 보다 긴 텍스트를 생성하는 두 번째 목적함수를 도입하고, 기존의 blank fillin과 동시에 최적화한다. 다음의 2가지를 추가한다.
1. Document-level
원본 길이의 50-100%를 range로 갖는 uniform distribution에서 span length를 뽑고, 하나의 긴 스팬을 마스킹한다.
이는 긴 텍스트 생성이 목적이다.
2. Sentence-level
마스킹된 스팬들이 완전한 문장이 되도록 강제했다. 다수의 스팬들 (문장들)은 원본 토큰의 15%를 차지하도록 한다.
이는 문장이나 단락 완성 같은 seq2seq의 예측이 목적이다.
2.2. Model Architecture
GLM은 단일 트랜스포머 구조를 수정하여 사용한다.
(1) layer normalization과 residual connection의 순서를 재조정한다.
(2) 토큰 예측에 하나의 linear layer를 사용한다.
(3) ReLU를 GeLU로 대체한다.
2.2.1. 2D Positional Encoding
트랜스포머에서는 positional encoding을 통해서 절대적 그리고 상대적 위치 정보를 주입한다.
GLM에서는 2D positional encoding을 제안하는데, 2개의 positional id를 갖는다.
첫 번째는, corrupted text에서의 position이다. Masked spans에서 이는 [MASK] token의 위치다.
두 번째는, intra-span의 위치다. Part A의 토큰들은 0의 id 값을, Part B의 토큰들은 1의 id 값을 갖는다.
두 가지 positional embeddings 모두 learnable parameters다. 또한 input token embeddings에 추가된다.
GLM의 인코딩 방식은 모델이 마스킹된 span의 길이를 미리 알 수 없도록 보장하는데, 이는 기존 모델들과 중요한 차이점이다.
XLNet은 원래 위치를 그대로 인코딩하기 때문에, 모델이 빠진 토큰 수를 인식할 수 있다.
SpanBERT는 여러 개의 [MASK] 토큰으로 span을 대체하여 길이를 유지한다.
반면에, GLM의 작업은 다운스트림 태스크에 더 잘 맞는데, 이는 실제 생성 작업에서는 출력 텍스트의 길이를 미리 알 수 없는 경우가 대부분이기 때문이다.
2.3. Finetuning GLM
일반적으로 다운스트림 NLU 작업에서는, 사전학습된 모델이 생성한 시퀀스 또는 토큰 표현을 입력으로 받아 linear classifier를 붙여서 라벨을 예측한다. 하지만 이러한 방식은 생성 기반 사전학습 방식과의 inconsistency를 초래한다.
따라서 저자들은 PET(Schick and Schütze, 2020a)을 따라, NLU 분류 문제를 blank infilling 생성 문제로 재구성하였다.
구체적으로는, 라벨이 있는 데이터 ($x, y$)가 주어졌을 때, 입력 텍스트 $x$를 하나의 [MASK]를 포함하는 cloze 문장 $c(x)$로 변환한다.
이 패턴은 태스크의 의미를 자연어로 표현하도록 작성한다.

예를 들어 sentiment analysis 태스크는 다음과 같이 구성할 수 있다.
"{SENTENCE}. It's really [MASK]."
또한 라벨 집합 $\mathbb{Y}$에 속하는 후보 라벨들 $y \in \mathbb{Y}$을 cloze 문장의 정답으로 매핑하며, 이를 verbalizer $v(y)$라고 지칭한다.
예를 들어서, sentiment analysis에서는 다음처럼 매핑할 수 있다.
positive → good
negative → bad
텍스트 생성의 경우, Part A가 주어진 컨텍스트이며 맽 끝에 mask token를 덧붙인다.
이 모델은 Part B의 텍스트를 autoregressive하게 생성한다.
3. Experiments




확실히 예전 페이퍼라서 SuperGLUE와 BERT 같은 상대적으로 예전 모델들을 사용했다.
'NLP > LLM' 카테고리의 다른 글
| 왜 언어 모델이 환각을 일으키는가? (업데이트 예정) (1) | 2025.09.09 |
|---|---|
| 41가지 로컬 LLM 벤치마크를 실행 결과 (1) | 2025.09.02 |
| LLM의 컨텍스트 윈도우와 관련된 글 (1) | 2025.09.01 |
| Mamba (2023) 논문 리뷰 (2) | 2025.08.26 |
| 도메인 특화 LLM 리서치 (4) | 2025.08.12 |