BioPlayground

🧬
목록으로

Nucleotide Transformer: 850종 게놈으로 배운 범종(汎種) DNA 표현

여러 종의 게놈을 한꺼번에 사전학습해 범용 DNA 임베딩을 얻는 Nucleotide Transformer의 구조와 zero-shot·fine-tuning 실습을 다룹니다.

중급
|
20
|
검증 완료 (2026-07-29)
Nucleotide Transformermulti-speciesgenomics embedding
진행률0/120 (0%)

한 종의 게놈만으로는 부족했다

F16의 DNABERT는 사람 게놈 하나에 집중해 사전학습했습니다. 그런데 생물학적 기능(프로모터, 인핸서, 스플라이스 부위)을 규정하는 서열 문법은 종을 가로질러 보존된 부분이 많습니다. 그렇다면 사람 게놈 하나가 아니라 수백 종의 게놈을 동시에 사전학습에 태우면, 모델이 더 일반화된 "DNA 문법"을 배우지 않을까요? 이 질문에서 출발한 것이 Nucleotide Transformer(2023, InstaDeep·NVIDIA·TUM 공동)입니다.

원리 — 스케일과 다양성으로 일반화 끌어올리기

다종 사전학습 코퍼스

Nucleotide Transformer 연구는 사람 참조 게놈, 3,202명의 사람 게놈, 그리고 다양한 계통의 850종 게놈이라는 서로 다른 코퍼스를 비교했습니다. 즉 모든 변형이 이 자료를 한꺼번에 학습한 것은 아니며, 데이터 다양성이 일반화에 주는 영향을 분리해 살핀 것이 핵심입니다.

P(기능 서열 문법다종 데이터)>P(기능 서열 문법단일종 데이터)P(\text{기능 서열 문법} \mid \text{다종 데이터}) > P(\text{기능 서열 문법} \mid \text{단일종 데이터})

같은 트랜스포머 아키텍처와 masked language modeling 목적함수를 쓰더라도, 학습 데이터의 **종 다양성(species diversity)**이 넓어질수록 모델이 종 특이적 잡음(noise)이 아니라 진짜 보존된 생물학적 신호를 더 잘 잡아낸다는 것이 이 접근의 핵심 가설입니다.

파라미터 규모에 따른 스케일링

Nucleotide Transformer는 5천만에서 수십억 파라미터에 이르는 여러 크기의 변형으로 공개되었습니다. F16에서 k-mer 토큰화의 어휘 크기가 4k4^k로 고정된 것과 달리, 이 계열은 모델 용량(파라미터 수)과 사전학습 데이터 규모를 함께 키우며 하위 과제 성능이 어떻게 변하는지를 체계적으로 관찰합니다.

성능(θ)f(파라미터 수, 사전학습 토큰 수, 종 다양성)\text{성능}(\theta) \approx f(\text{파라미터 수},\ \text{사전학습 토큰 수},\ \text{종 다양성})

이는 자연어 처리에서 관찰된 **스케일링 법칙(scaling law)**의 논리를 게놈 언어모델 도메인에 옮겨온 것입니다. 모델을 무조건 키운다고 성능이 항상 개선되는 것은 아니며, 데이터의 질과 다양성이 함께 뒷받침되어야 한다는 점이 실무적으로 중요합니다.

손 계산 예제: 임베딩 차원과 다운스트림 분류기

사전학습된 Nucleotide Transformer가 길이 1000bp 서열 하나를 넣으면 은닉 차원 dd짜리 임베딩 벡터를 뽑아낸다고 합시다. 이 임베딩 위에 이진 분류기(예: 프로모터 여부 판별) 하나를 붙이는 경우, 학습해야 할 파라미터는 선형층 기준

d×2+22dd \times 2 + 2 \approx 2d\text{개}

로 사전학습 모델 자체의 파라미터 수(수억~수십억)에 비하면 미미합니다. 이것이 F11에서도 확인했던 파운데이션 모델의 실무적 이점입니다 — 무거운 사전학습은 한 번만 하고, 실제 실험실에서는 가벼운 헤드(head)만 새로 학습하면 됩니다.

실습: 사전학습 임베딩으로 zero-shot 서열 유사도 확인하기

python
# Colab T4, 무료 티어. 큰 변형(수십억 파라미터)은 메모리 초과 가능성이 있으므로
# 작은 변형(5천만~1억 파라미터급)으로 먼저 실습합니다.
from transformers import AutoTokenizer, AutoModel
import torch
# 모델 경로는 예시입니다. 공식 저장소에서 현재 공개된 체크포인트 이름을 확인하세요.
# tokenizer = AutoTokenizer.from_pretrained("InstaDeepAI/nucleotide-transformer-v2-50m-multi-species")
# model = AutoModel.from_pretrained("InstaDeepAI/nucleotide-transformer-v2-50m-multi-species")
def get_embedding(seq: str, tokenizer, model) -> torch.Tensor:
"""서열 하나를 넣어 평균 풀링된 임베딩 벡터를 얻습니다."""
tokens = tokenizer(seq, return_tensors="pt")["input_ids"]
with torch.no_grad():
outputs = model(tokens)
# 마지막 은닉층을 서열 길이 축으로 평균 풀링
return outputs.last_hidden_state.mean(dim=1)
# 실제 실행 예시 (모델·토크나이저 로드 후)
# emb_a = get_embedding("ACGTGACCTGATCGATCGATCG", tokenizer, model)
# emb_b = get_embedding("ACGTGACCTGATCGATCGATGG", tokenizer, model) # 1염기 차이
# cosine_sim = torch.nn.functional.cosine_similarity(emb_a, emb_b)
# print(f"코사인 유사도: {cosine_sim.item():.4f}")

이 임베딩을 그대로 두고 사용하면 zero-shot 유사도 비교(단일 염기 변이 전후 임베딩 변화 등)가 가능하고, 소량의 레이블 데이터가 있으면 그 위에 가벼운 분류기를 얹어 미세조정할 수 있습니다.

CS 매핑

  • 전이학습과 스케일링 법칙: 파라미터 수·데이터 규모·과제 성능 사이의 관계를 체계적으로 관찰하는 것은 대규모 언어모델 연구에서 확립된 스케일링 법칙 방법론을 그대로 게놈학에 이식한 것입니다.
  • 표현 학습(Representation Learning): 원시 서열을 고정 길이 임베딩 벡터로 압축해 다운스트림 과제에 재사용하는 구조는, F21에서 다룰 단일세포 파운데이션 모델과도 동일한 설계 철학을 공유합니다.
  • 도메인 다양성을 통한 일반화: 여러 종의 데이터를 함께 학습해 일반화를 높이는 전략은 컴퓨터 비전에서 여러 데이터셋을 혼합해 사전학습하는 멀티도메인 학습과 구조적으로 동일합니다.

자주 만나는 결함

  • 큰 모델이 항상 낫다는 가정: 파라미터 수만 키운다고 다운스트림 성능이 비례해 좋아지는 것은 아닙니다. 과제에 따라 중간 크기 모델이 더 안정적인 경우도 흔하므로, 여러 크기 변형을 실제로 비교해보는 것이 안전합니다.
  • 범용 임베딩을 임상 근거로 오해: zero-shot 임베딩 유사도는 탐색적 신호일 뿐, 임상적 의미가 있는 변이 판별을 위해서는 F14의 AlphaMissense나 F20의 Evo 2 실습처럼 검증된 병원성 예측 파이프라인이 별도로 필요합니다.

더 깊게 파고 싶다면

본문은 BPD 연구진이 직접 재구성한 서술입니다. 원 논문과 공식 자료로 심화해봅시다.

  • Nucleotide Transformer 원 논문: Dalla-Torre et al. (2025), Nucleotide Transformer: building and evaluating robust foundation models for human genomics, Nature Methods 22, 287–297.
  • 스케일링 법칙 배경 논문: Kaplan et al. (2020), Scaling Laws for Neural Language Models, arXiv 사전 인쇄본.

다종 게놈 데이터로 일반화를 확보했다면, 다음 문제는 서열 자체의 길이입니다. 다음 편(F18)에서는 HyenaDNA와 Enformer로 10만 염기쌍 이상의 롱 컨텍스트를 다루는 법을 살펴봅니다.