Volver a la lista

ProtT5·ProGen2: Cómo distinguir el aprendizaje de representaciones de la generación de secuencias de proteínas

Se distingue entre el uso de la corrupción de intervalos y las incrustaciones en ProtT5 y la generación de secuencias autoregresivas en ProGen2, y se aborda la interpretación correcta de la perplejidad.

Intermedio
|
20min
|
Verificado (2026-07-29)
ProtT5ProGen2protein generationperplexity
Progreso0/120 (0%)

F12 Siguiente pregunta: los modelos que comprenden y los que generan son diferentes

ESM-2 de F11 es fuerte en aprendizaje de representaciones, mientras que ESM3 de F12 realiza generación condicional en múltiples pistas. Aunque a menudo se presentan juntos, aquí comparamos ProtT5 y ProGen2, que tienen roles distintos. ProtT5 es un modelo de preentrenamiento por corrupción de tramos (span-corruption) utilizado ampliamente para la extracción de incrustaciones (embeddings), mientras que ProGen2 es un modelo generativo autoregresivo que muestrea residuos secuencialmente. Llamar a ambos "modelos exclusivos para generación de novo" distorsiona el propósito de los puntos de control públicos.

Principio — Dos formas de generación: codificador-decodificador vs. autoregresivo

ProtT5: Trasplante de la arquitectura T5 a proteínas

ProtT5 (Rostlab, proyecto ProtTrans) es un modelo que aplica la arquitectura T5 (Text-to-Text Transfer Transformer) del procesamiento del lenguaje natural a secuencias de proteínas. El núcleo de T5 es su estructura codificador-decodificador, donde se entrena para ocultar partes de la secuencia original mediante diversas formas de corrupción y luego restaurar esas partes ocultas.

Codificador:xcorruptedz(vector contextual)\text{Codificador}: x_{\text{corrupted}} \rightarrow z \quad (\text{vector contextual}) Decodificador:zx^corrupted region(restauracioˊn de la parte dan˜ada)\text{Decodificador}: z \rightarrow \hat{x}_{\text{corrupted region}} \quad (\text{restauración de la parte dañada})

Si los modelos MLM tipo BERT de F06 y F11 adivinan tokens ocultos, los modelos tipo T5 restauran el tramo oculto mediante el decodificador. Sin embargo, el uso central ampliamente distribuido de Rostlab/prot_t5_xl_uniref50 se centra en las representaciones del codificador. No debe malinterpretarse directamente un ejemplo de carga solo con codificador como una API completa para la generación de secuencias.

ProGen2: Predicción carácter por carácter mediante autoregresión

ProGen2 (Salesforce Research) utiliza el enfoque autoregresivo, similar a la familia GPT. Repite el proceso de predecir un solo aminoácido que sigue, condicionado por la secuencia generada hasta ahora.

P(x1,x2,,xL)=i=1LP(xix1,,xi1)P(x_1, x_2, \ldots, x_L) = \prod_{i=1}^{L} P(x_i \mid x_1, \ldots, x_{i-1})

La ventaja de este enfoque es que permite una generación natural de izquierda a derecha. Incluso si solo se proporciona el extremo inicial (extremo N), puede completar la secuencia completa continuando desde allí. ProGen2 incorpora además información de familia y función de proteínas como condición, lo que también admite la generación condicional del tipo "crea una nueva secuencia que pertenezca a esta clase de enzimas".

P(x1,,xLc)=i=1LP(xix<i,c)P(x_1, \ldots, x_L \mid c) = \prod_{i=1}^{L} P(x_i \mid x_{<i}, c)

cc es la información condicional, como las etiquetas de familia y función.

Ejemplo de cálculo manual: Evaluar la calidad de generación con perplexity

Se utiliza la perplexity como indicador para evaluar qué tan "natural" es la secuencia generada por un modelo generativo.

PPL=exp(1Li=1LlogP(xix<i))\text{PPL} = \exp\left(-\frac{1}{L}\sum_{i=1}^{L}\log P(x_i \mid x_{<i})\right)

Si un modelo es completamente ignorante sobre los 20 aminoácidos y asigna uniformemente una probabilidad de 1/201/20 en cada paso,

PPLrandom=exp(log120)=exp(log20)=20\text{PPL}_{\text{random}} = \exp\left(-\log\frac{1}{20}\right) = \exp(\log 20) = 20

Es decir, la perplexity de una distribución uniforme sin información es exactamente igual al número de tipos de aminoácidos (20). Si un modelo bien entrenado asigna en promedio una probabilidad de aproximadamente 0.3 en cada posición para secuencias naturales de proteínas reales,

PPL=exp(log0.3)=exp(1.204)3.33\text{PPL} = \exp\left(-\log 0.3\right) = \exp(1.204) \approx 3.33

El hecho de que la perplexity disminuya significativamente de 20 a 3.33 significa que el modelo predice con mayor precisión "qué vendrá después" en comparación con una suposición aleatoria. Comúnmente se utiliza como un filtro primario para evaluar la calidad de generación verificar si la perplexity de las secuencias generadas cae dentro del rango similar a la distribución de perplexity de conjuntos de secuencias de proteínas naturales.

Práctica: Generación condicional de secuencias con ProGen2 y cálculo de Perplexity

python
# Ejecutar en Colab T4
!pip install -q transformers torch
import torch
import torch.nn.functional as F
from transformers import AutoTokenizer, AutoModelForCausalLM
# Ejemplo de adaptación de terceros para HuggingFace. Revise el tokenizer del repositorio oficial de ProGen2 y
# el procedimiento de conversión de checkpoint, así como la revisión de esta adaptación, antes de usarlo.
checkpoint = "hugohrban/progen2-small"
tokenizer = AutoTokenizer.from_pretrained(checkpoint, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(checkpoint, trust_remote_code=True).cuda().eval()
# Proporcionar solo algunos residuos del extremo N-terminal para continuar la generació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"Secuencia generada: {generated_seq}")
# Calcular la perplejidad de la secuencia generada
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 y top_p regulan la diversidad generativa. El "línea base aleatoria = 20" solo es válida cuando el vocabulario consta únicamente de 20 aminoácidos con distribución uniforme. Dado que los tokenizers reales incluyen tokens de control y especiales, no se deben comparar directamente las perplexidades obtenidas con diferentes tokenizers, longitudes o condiciones.

Mapeo de CS

  • Codificador-decodificador vs autoregresivo (Seq2Seq vs Autoregressive): Este es un caso de traslación directa al dominio de las proteínas del contraste entre la estructura codificador-decodificador (series T5, BART), comúnmente utilizada en tareas de traducción del procesamiento de lenguaje natural, y la estructura autoregresiva especializada en la generación pura (serie GPT).
  • Modelo de lenguaje condicional: Utilizar etiquetas de familia y función como condiciones para inducir la generación sigue el mismo marco que las técnicas de generación controlable en modelos de generación de texto, donde se introducen etiquetas de estilo o tema como condiciones.
  • Perplejidad: Se adopta directamente la métrica estándar de evaluación de modelos de lenguaje para cuantificar "qué tan plausible es esta secuencia generada dentro de la distribución de los datos de entrenamiento".

Defectos frecuentes

  • Confundir baja perplejidad con validez funcional: Una perplejidad baja significa que la secuencia es estadísticamente similar a los datos de entrenamiento, pero no garantiza que la secuencia generada se doble correctamente o tenga la función deseada. Es necesario realizar una validación adicional de autoconsistencia, como se aborda en F15.
  • Configurar la temperatura en extremos: Una temperatura cercana a 0 genera siempre la misma secuencia (la de mayor probabilidad), perdiendo diversidad; mientras que una temperatura excesivamente alta corre el riesgo de producir secuencias con patrones de aminoácidos antinaturales o sintácticamente incorrectos.
  • Malinterpretar los modelos codificador-decodificador como exclusivos para generación: ProtT5 se utiliza ampliamente también para la extracción de incrustaciones (embeddings) tomando solo la parte del codificador. Quedarse atrapado en el marco de "exclusivo para generación" limita su alcance de aplicación.

Para profundizar más

El texto ha sido reescrito directamente por el equipo de investigación de BPD. Profundice consultando el artículo original y los materiales oficiales.

  • Artículo original de ProtTrans (ProtT5): Elnaggar et al. (2021), ProtTrans: Toward Understanding the Language of Life Through Self-Supervised Learning, IEEE TPAMI.
  • Artículo original de ProGen2: Nijkamp et al. (2023), ProGen2: Exploring the Boundaries of Protein Language Models, Cell Systems.
  • Artículo original de T5 (contexto): Raffel et al. (2020), Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, JMLR.

En el siguiente capítulo F14, regresamos a la predicción del efecto de las variantes y comparamos las series ESM con AlphaMissense y ProteinMPNN.

💬 Preguntas y comentarios

0 comentarios

Puedes publicar sin iniciar sesión. Los comentarios de invitados no pueden editarse ni eliminarse después.

0/2000

Cargando...