Pregunta que conecta F1.3~F1.4: la siguiente etapa tras las proteínas
Recuerden cómo en F11~F15 la serie ESM trató las secuencias de aminoácidos como un "lenguaje". Si el modelo lingüístico funcionó porque existe una regularidad estadística en el alfabeto de 20 aminoácidos, ¿se puede aplicar la misma lógica al ADN, compuesto por los cuatro alfabetos A, T, G y C? De F16 a F20, respondemos a esta pregunta en cinco entregas. El comienzo es DNABERT (2021).
A diferencia de las proteínas, el ADN tiene un vocabulario mucho más simple. Paradójicamente, esta simplicidad fue el problema. Las secuencias de aminoácidos tienen 20 tipos de alfabetos con propiedades químicas distintas, por lo que incluso al tomar un solo carácter como token, la cantidad de información es suficiente; sin embargo, los cuatro alfabetos del ADN apenas contienen información cuando se toman a nivel de un solo carácter. ¿Cómo resolvió DNABERT este problema?
Principio — Tokenización k-mer y preentrenamiento BERT
Por qué no se deben cortar una base por vez
Los modelos de la familia BERT originalmente tokenizan el lenguaje natural en unidades de subpalabra (subword). Al dividir "unhappiness" en "un", "happi", "ness", es necesario tomar unidades de significado más grandes que los caracteres para que el modelo tenga un espacio de representación donde aprender patrones. Si se tokeniza la secuencia de ADN base por base (A, T, G, C), el tamaño del vocabulario sería solo 4, lo que colapsa este espacio de representación.
DNABERT resuelve esto mediante tokenización k-mer. Corta la secuencia en fragmentos superpuestos (ventana deslizante) de longitud y trata cada fragmento como un único token.
Por ejemplo, si , el tamaño del vocabulario es de elementos. Esto es menor que el vocabulario de subpalabras de BERT para lenguaje natural (30.000~50.000), pero proporciona una capacidad de representación incomparablemente más rica que solo 4.
Ejemplo de cálculo manual: contar tokens de 6-mer
Si tokenizamos una sola secuencia de 20 pb en 6-mers, ¿cuántos tokens se generarán? Al ser una ventana deslizante superpuesta:
A medida que la secuencia se alarga, el número de tokens aumenta casi linealmente, pero el punto clave es que el vocabulario en sí permanece fijo en . El mismo 6-mer aparece repetidamente en varios lugares del genoma, y BERT aprende las estadísticas contextuales precisamente a partir de estos patrones repetitivos.
Preentrenamiento — reutilización directa del masked language modeling
El objetivo de preentrenamiento de DNABERT es la predicción de k-mers enmascarados, idéntico al de BERT original. Se ocultan aleatoriamente algunos tokens de k-mer en una secuencia de entrada y se entrena al modelo para que los restaure utilizando únicamente el contexto circundante.
Dado que se trata de aprendizaje autosupervisado (self-supervised learning) que no requiere etiquetas, es posible alimentar directamente grandes volúmenes de datos de secuencias al preentrenamiento incluso sin anotaciones, como ocurre con el genoma humano. Posteriormente, este modelo preentrenado se ajusta fino (fine-tuning) para tareas secundarias (downstream tasks) como la predicción de promotores, la predicción de sitios de empalme (splice site) y la predicción de sitios de unión de factores de transcripción.
DNABERT-2 — Superando las limitaciones de los k-mers
La tokenización por k-mer presenta ineficiencias fundamentales. Al utilizar una ventana superpuesta, el número de tokens crece casi proporcionalmente a la longitud de la secuencia , y su flexibilidad se ve limitada al estar restringido a un vocabulario fijo para un dado. La versión posterior DNABERT-2 (2023) aborda esta ineficiencia introduciendo una tokenización de secuencias no superpuestas basada en el método BPE (Byte Pair Encoding), comúnmente utilizado en el procesamiento del lenguaje natural. A diferencia de los k-mers de longitud fija, que aprenden patrones de bases que aparecen frecuentemente juntos a partir de los datos para formar el vocabulario, el objetivo es reducir la carga computacional derivada del número de tokens y de la longitud de entrada.
Práctica: Experimentar con la tokenización por k-mer utilizando DNABERT de HuggingFace
# Colab T4 con el plan gratuito es suficiente.# Para acceder al repositorio de HuggingFace, se pueden obtener pesos públicos sin iniciar sesión.
from transformers import AutoTokenizer
# Función de tokenización 6-mer para fines prácticos (reconstruye el preprocesamiento de modelos tipo DNABERT)def seq_to_kmer(seq: str, k: int = 6) -> str: """Convierte la secuencia en una cadena de k-mers separados por espacios.""" return " ".join(seq[i:i + k] for i in range(len(seq) - k + 1))
sample_seq = "ACGTGACCTGATCGATCGATCGTACGTAGCTAGCTA"kmer_str = seq_to_kmer(sample_seq, k=6)print(f"Número de tokens: {len(kmer_str.split())}") # longitud de la secuencia - k + 1print(kmer_str[:60])
# Para usar los pesos preentrenados reales, se debe cargar la configuración del tokenizer del repositorio oficial tal cual.# tokenizer = AutoTokenizer.from_pretrained("zhihan1996/DNA_bert_6") # ruta de ejemplo, verificar el repositorio oficial para la ruta más recienteEste código tiene como propósito verificar manualmente el concepto de tokenización. Para descargar un modelo preentrenado real y llevar a cabo tareas de ajuste fino en subtareas posteriores, como la predicción de promotores, es necesario consultar primero la tarjeta del modelo y la licencia actuales en el repositorio oficial.
Mapeo de CS
- Tokenización por subpalabras: Al igual que el BPE y WordPiece en el procesamiento del lenguaje natural comprimen el vocabulario, la tokenización k-mer expande un alfabeto de 4 letras a un vocabulario de tamaño , asegurando la expresividad mediante el mismo principio fundamental.
- Ventana deslizante: La extracción de k-mer es una iteración típica de ventana deslizante en el procesamiento de cadenas, y pertenece a la misma genealogía de técnicas que la extracción de semillas utilizada por MMseqs2 en F04.
- Transferencia de aprendizaje auto-supervisado: La estructura de preentrenar con grandes cantidades de datos sin etiquetar y luego ajustar finamente con pequeñas cantidades de datos etiquetados traslada directamente el paradigma de transferencia de aprendizaje que ESM-2 (F11) utilizó en proteínas al dominio del ADN.
Defectos comunes
- Fijación arbitraria del valor de k: A medida que aumenta, el vocabulario crece exponencialmente; si es pequeño, la información contextual se vuelve escasa. Al utilizar un modelo preentrenado, es crucial ajustar con precisión el valor de y el método de tokenización para los cuales fue entrenado el modelo.
- Pasarse por alto la ineficiencia de la tokenización k-mer: El enfoque de ventana deslizante superpuesta hace que el número de tokens aumente drásticamente en secuencias largas, incrementando el costo computacional. Este es uno de los motivos del surgimiento de los modelos de contexto largo, que se tratarán en F18.
Para profundizar más
El texto ha sido reconstruido directamente por el equipo de investigación de BPD. Profundice consultando el artículo original y los recursos oficiales.
- Artículo original de DNABERT: Ji et al. (2021), DNABERT: pre-trained Bidirectional Encoder Representations from Transformers model for DNA-language in genome, Bioinformatics 37(15).
- Artículo original de DNABERT-2: Zhou et al. (2024), DNABERT-2: Efficient Foundation Model and Benchmark for Multi-Species Genomes, ICLR 2024.
- Artículo original de BERT: Devlin et al. (2019), BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, NAACL-HLT.
Si DNABERT abrió la puerta a los modelos de lenguaje para ADN, el siguiente capítulo (F17) presenta Nucleotide Transformer, que expande esta idea mediante un preentrenamiento a gran escala en múltiples especies.