F12 다음 질문 — 이해하는 모델과 만들어내는 모델은 다르다
F11의 ESM-2는 표현 학습에 강하고 F12의 ESM3는 여러 트랙을 조건부 생성합니다. 여기서는 자주 한 묶음으로 소개되지만 실제 역할이 다른 ProtT5와 ProGen2를 비교합니다. ProtT5는 span-corruption 사전학습 모델로 임베딩 추출에 널리 쓰이고, ProGen2는 다음 잔기를 순차적으로 샘플링하는 자기회귀 생성 모델입니다. 둘을 모두 “de novo 생성 전용 모델”이라고 부르면 공개 체크포인트의 용도를 왜곡합니다.
원리 — 생성의 두 방식: 인코더-디코더 vs 자기회귀
ProtT5: T5 아키텍처를 단백질에 이식
ProtT5(Rostlab, ProtTrans 프로젝트)는 자연어 처리의 T5(Text-to-Text Transfer Transformer) 아키텍처를 단백질 서열에 적용한 모델입니다. T5의 핵심은 인코더-디코더 구조로, 다양한 손상(corruption) 방식으로 원본 서열의 일부를 가리고 그 가려진 부분을 복원하도록 학습됩니다.
F06·F11의 BERT류 MLM이 가린 토큰을 맞힌다면 T5류는 가린 span을 decoder로 복원합니다. 다만 널리 배포된 Rostlab/prot_t5_xl_uniref50 활용의 중심은 encoder representation입니다. 공개 encoder-only 로딩 예제를 곧바로 완전한 서열 생성 API로 오해해서는 안 됩니다.
ProGen2: 자기회귀로 한 글자씩 예측
ProGen2(Salesforce Research)는 GPT 계열과 같은 자기회귀(autoregressive) 방식을 씁니다. 지금까지 생성한 서열을 조건으로, 다음에 올 아미노산 하나를 예측하는 것을 반복합니다.
이 방식의 장점은 자연스러운 좌→우 생성이 가능하다는 점입니다. 시작 부분(N-말단)만 주어져도 그 뒤를 이어서 전체 서열을 완성할 수 있습니다. ProGen2는 여기에 단백질 패밀리·기능 정보를 조건(condition)으로 함께 넣어, "이런 종류의 효소 계열에 속하는 새로운 서열을 만들어달라"는 식의 조건부 생성도 지원합니다.
는 패밀리·기능 태그 같은 조건 정보입니다.
손 계산 예제: Perplexity로 생성 품질 가늠하기
생성모델이 얼마나 "자연스러운" 서열을 만드는지 가늠하는 지표로 perplexity를 씁니다.
한 모델이 20개 아미노산에 대해 완전히 무지해서 매번 균등하게 의 확률만 준다면,
즉 아무 정보 없는 균등분포의 perplexity는 정확히 아미노산 종류 수(20)와 같습니다. 잘 학습된 모델이 실제 자연 단백질 서열에 대해 평균적으로 각 위치에 0.3 정도의 확률을 준다면,
20에서 3.33으로 perplexity가 크게 낮아졌다는 것은, 모델이 "다음에 뭐가 올지"를 무작위 추측보다 훨씬 좁혀서 맞힌다는 뜻입니다. 생성된 서열의 perplexity가 자연 단백질 서열 집단의 perplexity 분포와 비슷한 범위에 들어오는지를, 생성 품질을 가늠하는 1차 필터로 흔히 씁니다.
실습: ProGen2로 조건부 서열 생성, Perplexity 계산
# Colab T4에서 실행!pip install -q transformers torch
import torchimport torch.nn.functional as Ffrom transformers import AutoTokenizer, AutoModelForCausalLM
# 제3자 HuggingFace 포팅 예시입니다. 공식 ProGen2 저장소의 tokenizer와# checkpoint 변환 절차, 이 포팅의 revision을 검토한 뒤 사용합니다.checkpoint = "hugohrban/progen2-small"tokenizer = AutoTokenizer.from_pretrained(checkpoint, trust_remote_code=True)model = AutoModelForCausalLM.from_pretrained(checkpoint, trust_remote_code=True).cuda().eval()
# N-말단 몇 잔기만 주고 이어서 생성prompt = "MKTAYIAKQ"inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
with torch.no_grad(): generated = model.generate( **inputs, max_new_tokens=100, do_sample=True, temperature=0.8, top_p=0.9 )generated_seq = tokenizer.decode(generated[0], skip_special_tokens=True)print(f"생성된 서열: {generated_seq}")
# 생성된 서열의 perplexity 계산def compute_perplexity(sequence): ids = tokenizer(sequence, return_tensors="pt").input_ids.cuda() with torch.no_grad(): logits = model(ids).logits[0, :-1] targets = ids[0, 1:] log_probs = F.log_softmax(logits, dim=-1) token_log_probs = log_probs.gather(1, targets.unsqueeze(1)).squeeze(1) return torch.exp(-token_log_probs.mean()).item()
ppl = compute_perplexity(generated_seq)print(f"Perplexity: {ppl:.2f}")temperature와 top_p는 생성 다양성을 조절합니다. “무작위 기준선=20”은 vocabulary가 아미노산 20개뿐이고 균등할 때만 성립합니다. 실제 tokenizer에는 제어·특수 토큰이 있으므로 tokenizer·길이·조건이 다른 perplexity를 그대로 비교하면 안 됩니다.
CS 매핑
- 인코더-디코더 vs 자기회귀(Seq2Seq vs Autoregressive): 자연어 처리에서 번역 태스크에 흔히 쓰이는 인코더-디코더 구조(T5, BART 계열)와, 순수 생성에 특화된 자기회귀 구조(GPT 계열)의 대비가 그대로 단백질 도메인에 이식된 사례입니다.
- 조건부 언어모델(Conditional Language Model): 패밀리·기능 태그를 조건으로 넣어 생성을 유도하는 것은, 텍스트 생성모델에 스타일·주제 태그를 조건으로 넣는 controllable generation 기법과 같은 틀입니다.
- Perplexity: 언어모델 평가의 표준 지표를 그대로 차용해, "이 생성된 서열이 학습 데이터 분포에서 얼마나 그럴듯한가"를 정량화합니다.
자주 만나는 결함
- 낮은 perplexity를 곧 기능적 유효성으로 오해: perplexity가 낮다는 것은 "학습 데이터와 통계적으로 유사하다"는 뜻이지, 생성된 서열이 실제로 접히거나 의도한 기능을 갖는다는 보장이 아닙니다. F15에서 다룰 self-consistency 검증이 별도로 필요합니다.
- temperature를 극단으로 설정: 0에 가까운 temperature는 항상 같은(가장 확률 높은) 서열만 반복 생성해 다양성을 잃고, 지나치게 높은 temperature는 문법적으로도 이상한(비현실적인 아미노산 패턴의) 서열을 만들 위험이 있습니다.
- 인코더-디코더 모델을 순수 생성용으로만 오해: ProtT5는 인코더 부분만 떼어 임베딩 추출에도 널리 쓰입니다. "생성 전용"이라는 프레임에 갇히면 활용 폭을 좁히게 됩니다.
더 깊게 파고 싶다면
본문은 BPD 연구진이 직접 재구성한 서술입니다. 원 논문과 공식 자료로 심화해봅시다.
- ProtTrans(ProtT5) 원 논문: Elnaggar et al. (2021), ProtTrans: Toward Understanding the Language of Life Through Self-Supervised Learning, IEEE TPAMI.
- ProGen2 원 논문: Nijkamp et al. (2023), ProGen2: Exploring the Boundaries of Protein Language Models, Cell Systems.
- T5 원 논문(배경): Raffel et al. (2020), Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, JMLR.
다음 편 F14에서는 다시 변이 효과 예측으로 돌아가, ESM 계열과 AlphaMissense·ProteinMPNN을 함께 놓고 비교합니다.