2018년부터 사용해온 BERT의 학습 방식이 사실 최신 디퓨전 모델과 같은 원리였다는 사실이 밝혀졌습니다. 이는 단순한 학술적 발견을 넘어, 기존 BERT 모델을 GPT처럼 텍스트를 생성하는 모델로 전환할 수 있다는 실용적 가능성을 보여줍니다.
핵심 포인트:
- BERT의 마스크 언어 모델링(MLM)은 고정된 비율의 디퓨전 과정: 7년간 사용해온 BERT의 학습 방식이 사실 노이즈 제거 방식의 디퓨전과 동일한 원리. 마스킹 비율을 가변적으로 조정하면 완전한 생성 모델로 전환 가능
- 30분 학습만으로 GPT-2 수준의 텍스트 생성 구현: 기존 RoBERTa 모델을 약간의 파인튜닝으로 텍스트 생성 모델로 전환. 단어를 하나씩 예측하는 GPT 방식과 달리 전체 문장을 점진적으로 복원하는 방식으로 작동
- 텍스트 생성의 새로운 가능성: GPT의 자기회귀 방식 외에 디퓨전 기반 생성이라는 대안적 접근법 제시. 구글 DeepMind의 Gemini Diffusion 등 새로운 흐름의 시작

트랜스포머의 두 갈래 길
2017년 등장한 트랜스포머는 곧 두 가지 방향으로 나뉘었습니다. 2018년 BERT와 GPT가 각각 인코더와 디코더 방식으로 분화하면서, AI 모델은 서로 다른 길을 걷기 시작했습니다.
BERT로 대표되는 인코더 모델은 빈칸 채우기를 학습했습니다. 문장에서 일부 단어를 감추고, 앞뒤 문맥을 모두 활용해 감춰진 단어를 맞추는 방식이죠. 양방향으로 문맥을 이해할 수 있어 문서 분류나 검색 같은 작업에 탁월했습니다.
반면 GPT로 대표되는 디코더 모델은 다음 단어 예측을 학습했습니다. 앞에 나온 단어들만 보고 다음에 올 단어를 맞추는 방식입니다. 한 방향으로만 진행되지만, 이 방식이 텍스트 생성에는 훨씬 자연스러웠습니다.
초기에는 BERT가 더 주목받았습니다. 분류나 검색 같은 실용적 작업에서 즉각적인 성과를 보였기 때문이죠. GPT는 처음에는 생성 능력이 제한적이었지만, 점차 발전하면서 상황이 역전됩니다. “다음 단어 예측”이라는 단순한 학습 방식이 요약, 번역, 대화 등 훨씬 넓은 영역에 적용될 수 있었습니다. 그렇게 GPT는 생성 작업의 표준이 되었습니다.
디퓨전 모델이 텍스트를 만나다
2025년 2월 발표된 논문 “Large Language Diffusion Models”은 디퓨전 방식으로 학습한 LLaDA 모델이 자기회귀 방식의 LLM과 비슷한 성능을 낼 수 있음을 보여줬습니다. 구글 DeepMind도 Gemini Diffusion으로 텍스트 생성의 새로운 접근법을 제시하고 있습니다. GPT처럼 단어를 하나씩 추가하는 대신, 전체 문장을 한번에 생성하되 점진적으로 다듬어가는 방식입니다.
디퓨전 모델은 원래 이미지 생성에서 인기를 끌었습니다. 깨끗한 이미지에 점진적으로 노이즈를 추가했다가, 다시 노이즈를 제거하면서 이미지를 복원하는 방식을 학습하죠. 텍스트에 적용하면 어떻게 될까요?
텍스트 디퓨전은 이미지의 노이즈 대신 마스크를 사용합니다. 원리는 간단합니다. 처음에는 완전한 문장이 있습니다. 여기에 점점 더 많은 단어를 <MASK>
토큰으로 바꿔나가면서 문장을 망가뜨립니다. 마지막에는 모든 단어가 <MASK>
로 채워진 상태가 되죠.
학습된 모델은 이 과정을 거꾸로 수행합니다. 마스크로 가득 찬 문장에서 시작해 단계적으로 마스크를 실제 단어로 바꿔나갑니다. 처음에는 대부분이 마스크인 어려운 상태에서 시작해, 점차 마스크 비율을 줄여가며 완전한 문장을 만들어냅니다.

여기서 흥미로운 통찰이 나옵니다. BERT가 하던 마스크 언어 모델링(MLM)을 떠올려보세요. 문장의 일부를 마스킹하고 그것을 맞추는 학습이었죠. 이건 사실 디퓨전 모델의 특별한 경우입니다. 다만 BERT는 항상 같은 비율(약 15%)로만 마스킹했을 뿐입니다.
만약 마스킹 비율을 고정하지 않고 0%부터 100%까지 다양하게 적용한다면? 그게 바로 완전한 디퓨전 모델이 됩니다. BERT는 이미 디퓨전 모델의 한 형태였던 것입니다.
RoBERTa로 실험하기
이론이 맞는지 확인하는 가장 좋은 방법은 직접 만들어보는 것입니다. 개발자 Nathan Barry는 2019년 공개된 RoBERTa 모델을 가져와 텍스트 생성 모델로 바꾸는 실험을 진행했습니다. RoBERTa는 BERT의 개선 버전으로, 더 많은 데이터와 최적화된 학습 방법을 사용한 모델입니다. 참고로 2022년 발표된 DiffusionBERT 논문도 비슷한 아이디어를 더 체계적으로 검증한 바 있습니다.
핵심 아이디어는 간단합니다. 학습할 때 마스킹 비율을 매번 다르게 적용하는 것입니다. 어떤 배치는 10%만 마스킹하고, 어떤 배치는 90%를 마스킹합니다. 이렇게 다양한 난이도의 복원 작업을 학습하면서, 모델은 점진적으로 텍스트를 생성하는 방법을 익히게 됩니다.
구현의 핵심은 커스텀 데이터 처리 함수입니다:
def diffusion_collator(examples):
# 배치 데이터 준비
batch = tokenizer.pad(examples, return_tensors="pt")
# 이번 배치의 마스킹 비율을 무작위로 선택 (10%~100%)
mask_prob = random.choice([1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1])
# 처음 16개 토큰은 프롬프트로 유지 (절대 마스킹하지 않음)
maskable_positions = batch.input_ids[:, PREFIX_LEN:]
# 선택된 확률로 마스킹 적용
mask = torch.rand(maskable_positions.shape) < mask_prob
batch.input_ids[:, PREFIX_LEN:][mask] = tokenizer.mask_token_id
return batch
텍스트를 생성할 때는 역순으로 진행됩니다. 처음에는 프롬프트를 제외하고 모든 위치가 <MASK>
로 채워진 상태에서 시작합니다. 그리고 10단계에 걸쳐 점진적으로 마스크를 실제 단어로 바꿔나갑니다:
Step 0: [프롬프트] <mask> <mask> <mask> <mask> ... (100% 마스크)
Step 1: [프롬프트] will <mask> over <mask> control ... (90% 마스크)
Step 2: [프롬프트] will begin <mask> greater control... (80% 마스크)
...
Step 10: [프롬프트] will begin to assert greater... (완성)
H200 GPU로 WikiText 데이터셋을 30분간 학습시킨 결과는 놀라웠습니다. 프롬프트 “Following their victory in the French and Indian War, Britain began to assert greater…”에서 시작한 생성 결과를 보면, 역사적 맥락을 유지하면서 일관성 있는 문장들이 이어집니다.

GPT-2와 비교해보니 흥미로운 결과가 나왔습니다. GPT-2가 약간 더 일관성 있고 빠르긴 했지만(9초 vs 13초), 디퓨전 방식도 충분히 읽을 만한 텍스트를 생성했습니다. 단순한 개념 증명 수준의 구현치고는 상당히 인상적인 결과였습니다.
생성 AI의 또 다른 길
이 실험은 중요한 시사점을 던집니다. GPT의 자기회귀 방식만이 텍스트 생성의 유일한 답은 아니라는 것입니다. 디퓨전 방식은 전체 문장을 동시에 고려하면서 생성할 수 있다는 독특한 장점이 있습니다.
더 흥미로운 건 이미 우리가 가진 수많은 BERT 계열 모델들을 새로운 방식으로 활용할 가능성입니다. 아키텍처를 바꾸지 않고도, 학습 방식만 조금 수정하면 생성 모델로 전환할 수 있습니다.
물론 현재 단계에서 GPT를 완전히 대체할 수준은 아닙니다. 하지만 AR-Diffusion이나 Skip-Step Diffusion 같은 최적화 기법들이 계속 나오고 있고, 구글의 Gemini Diffusion 같은 대형 프로젝트들도 진행 중입니다. 텍스트 생성의 판도가 다시 한번 바뀔 수도 있습니다.
참고자료:
답글 남기기