BERT: enseñar a una máquina a leer en las dos direcciones a la vez
Paper: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2018)
En 2018, el procesamiento del lenguaje natural ya estaba cambiando. Modelos como ELMo y GPT habían demostrado que el preentrenamiento podía ser una estrategia muy poderosa: primero se entrenaba un modelo con grandes cantidades de texto no etiquetado y después se adaptaba a tareas concretas, como clasificar frases, responder preguntas o reconocer entidades.
Pero todavía había una limitación importante: muchos modelos seguían leyendo el lenguaje de forma incompleta.
GPT procesaba el texto de izquierda a derecha. Para cada palabra, solo podía utilizar lo que aparecía antes.
ELMo incorporaba información en ambas direcciones, pero mediante dos recorridos separados que después se combinaban.
Ninguno de los dos integraba profundamente el contexto izquierdo y derecho en todas las capas del modelo. BERT nació para atacar ese problema. Su nombre significa Bidirectional Encoder Representations from Transformers. La idea central era entrenar un encoder Transformer capaz de construir representaciones profundamente bidireccionales, condicionadas por el contexto de ambos lados en todas sus capas.
Dicho de forma sencilla: para entender una palabra, muchas veces no basta con mirar lo que viene antes. También importa lo que viene después. La palabra “banco” no significa lo mismo en una frase sobre dinero que en una frase sobre un parque. Su significado no está solo en la palabra, sino en el contexto que la rodea.
La aportación de BERT no fue inventar el Transformer. Esa arquitectura ya había sido presentada un año antes. Su aportación fue encontrar una forma eficaz de entrenar el encoder del Transformer para que aprendiera usando el contexto completo.
Ahí estuvo la ruptura:
BERT enseñó a una máquina a leer en las dos direcciones a la vez.
Y con esa idea convirtió el preentrenamiento bidireccional en una de las bases de la comprensión moderna del lenguaje.

Antes de BERT: ELMo, GPT y la bidireccionalidad incompleta
Antes de BERT ya existían modelos capaces de aprovechar texto no etiquetado para mejorar tareas de lenguaje. El cambio importante era el preentrenamiento: aprender primero una representación general del lenguaje y reutilizarla después en problemas concretos. Pero había dos caminos principales, y ambos tenían límites.
Por un lado estaba ELMo, que seguía un enfoque basado en características. Sus representaciones preentrenadas se incorporaban como información adicional dentro de arquitecturas específicas para cada tarea. Era potente, pero el sistema final seguía dependiendo bastante del diseño particular de cada solución. El paper de BERT describe este enfoque como feature-based.
Por otro lado estaba GPT, que popularizaba una estrategia más directa: tomar un modelo preentrenado, añadir una capa de salida pequeña y ajustar todos sus parámetros sobre la tarea final. Este enfoque de fine-tuning era más limpio y reutilizable, pero tenía una restricción importante: el modelo procesaba el texto de izquierda a derecha. Cada token solo podía atender a los tokens anteriores.
Ahí estaba la barrera. ELMo miraba en dos direcciones, pero mediante recorridos separados que después se combinaban. GPT era más fácil de adaptar, pero su atención era causal: solo miraba hacia atrás.
BERT plantea una tercera vía: mantener la ventaja práctica del fine-tuning, pero entrenar una representación realmente bidireccional desde el principio. No se trataba solo de leer una frase dos veces, una hacia delante y otra hacia atrás, se trataba de que cada capa del modelo pudiera construir significado usando simultáneamente el contexto izquierdo y el derecho.
Esa diferencia parece técnica, pero era fundamental. Para tareas como preguntas y respuestas, inferencia o reconocimiento de entidades, una palabra no siempre puede entenderse mirando solo lo anterior. A veces, la información decisiva aparece después.
BERT nace precisamente de esa idea: si el lenguaje depende del contexto completo, el modelo también debe aprender desde el contexto completo.
La intuición central: ocultar palabras para aprender contexto
El gran problema de entrenar un modelo bidireccional era casi paradójico. Si dejamos que el modelo vea toda la frase y le pedimos que prediga una palabra, la solución puede volverse trivial: la palabra que debe adivinar ya está dentro de la entrada. Por eso los modelos de lenguaje tradicionales solían entrenarse de izquierda a derecha o de derecha a izquierda.
BERT resolvió esa barrera con una idea sencilla: ocultar parte del texto. En lugar de pedirle al modelo que prediga siempre la siguiente palabra, BERT selecciona algunos tokens al azar, los enmascara y obliga al modelo a reconstruirlos usando el resto de la secuencia. Esta tarea se llama Masked Language Model o MLM. El paper explica que este objetivo permite fusionar el contexto izquierdo y derecho, haciendo posible entrenar un Transformer profundamente bidireccional.
La intuición es muy potente. Para recuperar una palabra oculta, el modelo no puede apoyarse solo en lo que viene antes. Tiene que mirar también lo que viene después. Debe usar la frase completa como pista.
Por ejemplo:
“El cliente fue al banco para pedir un préstamo.”
Si ocultamos “banco”, las palabras anteriores ayudan, pero las posteriores son decisivas. “Pedir un préstamo” orienta claramente el significado hacia una entidad financiera.
Ahí está la aportación de BERT:
aprendió a comprender porque durante el entrenamiento le faltaban piezas.
No se trataba de leer más texto, sino de aprender a reconstruirlo mejor. Al ocultar palabras, BERT convirtió el contexto completo en una herramienta de aprendizaje, y esa decisión cambió la forma de preentrenar modelos para comprensión del lenguaje.

La arquitectura: el encoder del Transformer como máquina de comprensión
BERT no inventó el Transformer. Lo que hizo fue tomar una parte concreta de esa arquitectura, el encoder, y convertirla en una máquina especializada en construir representaciones contextuales del lenguaje.
A diferencia de los modelos autoregresivos, pensados para generar texto prediciendo el siguiente token, BERT no está diseñado principalmente para continuar una frase. Su objetivo es comprender mejor la secuencia completa que recibe: una oración, un par de frases, una pregunta con su párrafo o un fragmento que debe clasificarse.
Por eso utiliza un Transformer encoder bidireccional. En cada capa, los tokens pueden atender al contexto de ambos lados, lo que permite que la representación final de una palabra incorpore información anterior y posterior. El paper lo resume como un modelo basado en representaciones profundamente bidireccionales entrenadas desde texto no etiquetado.
Los autores presentaron dos tamaños principales:
BERT-BASE, con 12 capas, 768 dimensiones ocultas, 12 cabezas de atención y unos 110 millones de parámetros.
BERT-LARGE, con 24 capas, 1024 dimensiones ocultas, 16 cabezas de atención y unos 340 millones de parámetros.
La diferencia no era solo de tamaño. BERT-BASE se diseñó con una escala comparable al GPT de la época, para que la comparación no dependiera únicamente de tener más parámetros, sino de la forma de entrenar y usar el contexto.
BERT no fue una arquitectura completamente nueva, sino una reutilización muy inteligente del Transformer. Tomó el encoder, lo entrenó con una tarea adecuada y lo convirtió en una base general para comprensión del lenguaje. No era una máquina para escribir hacia delante, era una máquina para mirar alrededor.

Las dos tareas de preentrenamiento: MLM y NSP
La clave de BERT no estaba solo en usar el encoder del Transformer, sino en cómo lo entrenaba. Para conseguir que el modelo aprendiera representaciones bidireccionales profundas, los autores propusieron dos tareas de preentrenamiento: Masked Language Model y Next Sentence Prediction.
La primera, Masked Language Model o MLM, es la más importante. BERT selecciona aleatoriamente un 15 % de los tokens de entrada y entrena al modelo para recuperar su identidad original usando el resto de la secuencia. Así, el modelo no depende solo de las palabras anteriores, sino también de las posteriores.
Pero había un detalle técnico delicado. Si durante el preentrenamiento se sustituyeran siempre las palabras ocultas por el token especial [MASK], el modelo se acostumbraría a ver una señal que después no aparece durante el fine-tuning. Para reducir ese desajuste, BERT usa una estrategia 80/10/10: de los tokens seleccionados, el 80 % se reemplaza por [MASK], el 10 % por una palabra aleatoria y el 10 % se deja sin modificar.
![Diagrama de IA en español: el modelo predice [MASK] en la frase El avión aterrizó en ... después de un largo viaje.](https://static.wixstatic.com/media/57a346_a228994c526341a59eaffe7f13241ad7~mv2.png/v1/fill/w_730,h_411,al_c,q_85,enc_avif,quality_auto/57a346_a228994c526341a59eaffe7f13241ad7~mv2.png)
La segunda tarea es Next Sentence Prediction o NSP. Aquí BERT recibe dos segmentos de texto y debe decidir si el segundo continúa realmente al primero o si procede de otra parte del corpus. En el entrenamiento, el 50 % de los ejemplos son IsNext y el otro 50 % son NotNext.
El objetivo era ayudar al modelo a entender relaciones entre pares de texto, algo importante para tareas como inferencia, preguntas y respuestas o comparación semántica. Con el tiempo, la importancia de NSP se volvió discutible. Trabajos posteriores, como RoBERTa, mostrarían que se podía eliminar esa tarea y mejorar resultados ajustando otros aspectos del entrenamiento. Pero la aportación central de BERT seguía intacta: el MLM bidireccional.
BERT no aprendía simplemente a continuar texto. Aprendía a reconstruir piezas ausentes usando el contexto completo.
Cómo representa BERT el texto: tokens, segmentos y posiciones
Para que BERT pueda trabajar con tareas diferentes, necesita una forma flexible de representar el texto de entrada. Esa representación combina tres tipos de información.
Primero están los token embeddings. BERT utiliza un vocabulario WordPiece de 30.000 unidades, lo que permite dividir palabras poco frecuentes en fragmentos más pequeños y reutilizables. Así puede manejar mejor palabras raras, formas derivadas o términos que no aparecen como unidades completas durante el entrenamiento.
Después aparecen los segment embeddings. BERT puede recibir una sola frase o dos fragmentos de texto juntos. Para distinguirlos, utiliza el token especial [SEP] como separador y añade una señal que indica si cada token pertenece al segmento A o al segmento B. Esto es importante en tareas como comparar dos frases o responder una pregunta a partir de un párrafo. También está el token [CLS], que se coloca al inicio de cada secuencia. Su representación final se usa como una especie de resumen agregado cuando la tarea requiere clasificar la entrada completa.
Por último, BERT añade position embeddings, porque el modelo necesita saber dónde está cada token dentro de la secuencia. La entrada final de cada posición se construye sumando tres piezas: el embedding del token, el embedding del segmento y el embedding de posición.
El resultado es una representación compacta pero muy versátil. Una frase, dos frases, una pregunta con su contexto o una secuencia para etiquetar entidades pueden entrar en BERT usando casi la misma lógica.
Esa fue una de sus fortalezas prácticas: no solo aprendía buenas representaciones, sino que ofrecía una interfaz común para muchas tareas de comprensión del lenguaje.
Fine-tuning: una base común para muchas tareas
Una de las grandes fortalezas de BERT fue que no servía solo para una tarea concreta. El proceso tenía dos fases. Primero, el modelo se preentrenaba con grandes cantidades de texto no etiquetado. Después, ese mismo modelo se adaptaba a tareas específicas mediante fine-tuning, añadiendo una pequeña capa de salida y reajustando todos sus parámetros con datos etiquetados.
La idea era muy poderosa: aprender una representación general del lenguaje una vez y reutilizarla después muchas veces. Esto simplificaba mucho el trabajo. Para clasificación, se podía usar la representación final del token [CLS]. Para preguntas y respuestas, BERT procesaba la pregunta y el párrafo juntos, y el modelo aprendía a marcar el inicio y el final de la respuesta. Para tareas token a token, como reconocimiento de entidades, se utilizaban las representaciones finales de cada token.
El paper destaca precisamente esa arquitectura unificada: la diferencia entre el modelo preentrenado y el modelo adaptado a cada tarea era mínima. No hacía falta diseñar una arquitectura completamente distinta para cada problema.
BERT convirtió el preentrenamiento en una base reutilizable. Una misma arquitectura podía especializarse para inferencia, clasificación, búsqueda de respuestas, similitud semántica o etiquetado de secuencias.
No era solo un modelo que entendía mejor el lenguaje. Era una forma más eficiente de construir sistemas de lenguaje.
Resultados: once tareas y una misma arquitectura
El paper demostró su valor evaluándolo en once tareas de procesamiento del lenguaje natural, desde clasificación e inferencia hasta preguntas y respuestas. Lo importante no fue solo que mejorara métricas, sino que lo hiciera manteniendo una arquitectura común y añadiendo pocos cambios específicos para cada tarea.
En GLUE, un conjunto de pruebas diseñado para medir comprensión general del lenguaje, BERT-LARGE alcanzó un resultado muy superior al de los sistemas anteriores recogidos en el paper. También mejoró con claridad en MultiNLI, una tarea de inferencia entre frases.
En SQuAD, la tarea consistía en responder preguntas localizando el fragmento correcto dentro de un texto. Ahí la bidireccionalidad tenía mucho sentido: para decidir dónde empieza y termina una respuesta, el modelo necesita información tanto de la izquierda como de la derecha del token. BERT obtuvo resultados de referencia en SQuAD v1.1 y también en SQuAD v2.0, donde además puede no existir una respuesta válida en el párrafo.
También destacó en SWAG, una prueba donde el modelo debe escoger la continuación más plausible de una situación. BERT-LARGE superó ampliamente a los sistemas comparados en el artículo, incluyendo GPT y ELMo en las referencias originales.
Pero la lectura más interesante no está solo en las cifras. La verdadera señal era otra: BERT mostraba que un modelo preentrenado con texto no etiquetado podía convertirse en una base común para muchas tareas distintas de comprensión del lenguaje.
No hacía falta rediseñar todo desde cero. Bastaba con partir de una representación potente, añadir una salida adecuada y ajustar el modelo al problema concreto. Esa receta, preentrenar una base general y especializarla después, se convirtió en una de las ideas dominantes del PLN moderno.
Ablaciones: comprobar qué hacía funcionar a BERT
Una de las partes más interesantes del paper de BERT es que no se limita a presentar buenos resultados, sino que ambién intenta responder a una pregunta clave:
¿qué parte del modelo está provocando realmente la mejora?
Para comprobarlo, los autores hicieron estudios de ablación: retiraron o modificaron componentes del sistema y midieron cómo cambiaba el rendimiento. Esto permite separar mejor el efecto de cada decisión.
El primer experimento importante fue eliminar Next Sentence Prediction. Al hacerlo, el rendimiento bajaba en varias tareas, especialmente en aquellas relacionadas con inferencia, preguntas y respuestas o comprensión entre pares de frases. Según la receta original de entrenamiento, NSP parecía aportar valor.
Pero la caída más clara llegó al sustituir el entrenamiento bidireccional mediante Masked Language Model por un modelo de izquierda a derecha. Ese modelo unidireccional empeoraba en todas las tareas analizadas, con una pérdida especialmente fuerte en SQuAD. La explicación es intuitiva: para localizar una respuesta dentro de un párrafo, no basta con mirar lo que hay antes de cada token; muchas veces también hace falta mirar lo que viene después.
Los autores probaron incluso a añadir una BiLSTM sobre el modelo unidireccional. Recuperaba parte del rendimiento en preguntas y respuestas, pero seguía por debajo del preentrenamiento bidireccional y perjudicaba otras tareas.
El segundo aprendizaje fue la escala. Al aumentar capas, dimensión oculta y cabezas de atención, el rendimiento mejoraba de forma consistente en las tareas evaluadas. Esto era importante porque mostraba que incluso tareas con pocos datos etiquetados podían beneficiarse de un modelo grande si había sido bien preentrenado.
La lectura es clara: BERT no funcionaba por una sola pieza mágica, funcionaba por la combinación de tres elementos: bidireccionalidad profunda, una tarea de preentrenamiento adecuada y suficiente escala.
Legado y límites: lo que BERT abrió y lo que no resolvió
BERT cambió la forma de construir sistemas de procesamiento del lenguaje. Su impacto no vino solo de mejorar benchmarks, sino de consolidar una receta que se volvió dominante: preentrenar un modelo general con grandes cantidades de texto y después adaptarlo a tareas concretas mediante fine-tuning.
Esa idea redujo la necesidad de diseñar arquitecturas muy específicas para cada problema. Clasificación, inferencia, preguntas y respuestas o reconocimiento de entidades podían partir de una misma base preentrenada. El paper lo plantea precisamente así: BERT podía ajustarse con una capa adicional para muchas tareas distintas, sin grandes modificaciones específicas de arquitectura.
También abrió una familia de modelos posteriores: RoBERTa revisó la receta de entrenamiento y cuestionó la necesidad de Next Sentence Prediction. ALBERT buscó reducir parámetros mediante técnicas de compartición y factorizar embeddings. DistilBERT exploró cómo comprimir BERT para hacerlo más ligero y rápido. Cada uno atacó una limitación diferente, pero todos partían de la misma idea central: representaciones contextuales profundas basadas en el encoder del Transformer.
Pero BERT también tenía límites claros. El token [MASK] introducía una diferencia entre el preentrenamiento y el uso real del modelo, porque ese símbolo no aparece normalmente durante el fine-tuning. Además, la longitud máxima habitual de 512 tokens limitaba el trabajo con documentos extensos, y el coste de preentrenar modelos grandes quedaba fuera del alcance de muchos equipos.
Había otra limitación importante: BERT no era un modelo generativo libre al estilo de los GPT posteriores. Su fortaleza estaba en comprender, clasificar, comparar y extraer información de un texto dado, no en continuar texto abierto durante largas secuencias, y, como cualquier modelo entrenado con grandes corpus, podía absorber sesgos, errores y regularidades problemáticas presentes en los datos. El paper original se centró sobre todo en arquitectura y rendimiento, no en una evaluación sistemática de sesgos.
Aun así, sus límites no reducen su importancia, al contrario: muestran hasta qué punto BERT se convirtió en una referencia. Fue lo bastante útil como para ser adoptado, replicado, discutido y mejorado.
Ese es uno de los mejores indicadores de un paper importante: no cierra una línea de investigación, sino que la vuelve inevitable.
Conclusión: comprender una palabra exige mirar alrededor
BERT no fue el punto final de los modelos de lenguaje, pero sí marcó un cambio importante en la forma de entender la comprensión automática del texto.
Su aportación principal fue resolver una limitación clara: cómo entrenar un modelo para que utilizara simultáneamente el contexto izquierdo y derecho sin caer en una predicción trivial. La respuesta fue el Masked Language Model: ocultar parte de la entrada y obligar al modelo a reconstruirla a partir del contexto restante.
Con esa idea, BERT convirtió el encoder del Transformer en una base general para tareas de comprensión. Ya no hacía falta diseñar una arquitectura completamente nueva para cada problema. El mismo modelo preentrenado podía adaptarse a clasificación, inferencia, reconocimiento de entidades o preguntas y respuestas mediante fine-tuning.
Su importancia no estuvo solo en las métricas, aunque los resultados fueron muy fuertes para su época. Estuvo en demostrar que una representación contextual profunda podía reutilizarse en muchas tareas distintas.
También dejó abiertas varias preguntas: el coste del preentrenamiento, la longitud limitada del contexto, el uso de [MASK], la discusión sobre NSP y los sesgos heredados de los datos. Pero esas limitaciones no reducen su valor histórico. Al contrario, explican por qué BERT se convirtió en una referencia que otros modelos intentaron mejorar.
La idea final es sencilla:
una palabra no significa lo mismo en todas partes.
Su significado depende de lo que tiene delante, de lo que tiene detrás y de la relación que establece con el resto de la frase.
Word2Vec convirtió las palabras en coordenadas, el Transformer convirtió las secuencias en redes de relaciones, y BERT dio el siguiente paso: enseñar a una máquina que comprender una palabra exige mirar alrededor.
🌐 Enlaces de interés
Paper: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding — Jacob Devlin, Ming-Wei Chang, Kenton Lee y Kristina Toutanova (2018/2019)
Paper original donde se presenta BERT, un modelo basado en el encoder del Transformer y entrenado con representaciones profundamente bidireccionales mediante Masked Language Model y Next Sentence Prediction. (https://arxiv.org/abs/1810.04805)
📚 Publicación en ACL Anthology — BERT
Versión académica publicada en NAACL 2019, útil para citar el paper desde una fuente editorial oficial.(https://aclanthology.org/N19-1423/)
💻 Repositorio oficial de BERT — Google Research
Repositorio original con código y modelos preentrenados publicados por Google Research. Es una referencia clave para entender cómo BERT pasó rápidamente del paper a una herramienta práctica.(https://github.com/google-research/bert)
🧪 RoBERTa: A Robustly Optimized BERT Pretraining Approach
Trabajo posterior que revisa la receta de entrenamiento de BERT y cuestiona la necesidad de Next Sentence Prediction, manteniendo la idea central del preentrenamiento contextual.(https://arxiv.org/abs/1907.11692)
🧬 ALBERT: A Lite BERT for Self-supervised Learning of Language Representations
Variante de BERT orientada a reducir parámetros mediante factorización de embeddings y compartición entre capas.(https://arxiv.org/abs/1909.11942)
⚡ DistilBERT: a distilled version of BERT
Modelo inspirado en BERT que aplica destilación de conocimiento para obtener una versión más ligera y rápida, manteniendo gran parte del rendimiento.(https://arxiv.org/abs/1910.01108)
🔁 XLNet: Generalized Autoregressive Pretraining for Language Understanding
Trabajo posterior que intenta resolver algunas limitaciones de BERT, especialmente el desajuste introducido por el token [MASK], mediante un objetivo autoregresivo por permutaciones.(https://arxiv.org/abs/1906.08237)
🎥 Google Cloud Tech — Transformer models and BERT model: Overview
Vídeo breve y bastante claro para entender la relación entre la arquitectura Transformer y BERT, además de sus usos en clasificación de texto, preguntas y respuestas e inferencia.(https://www.youtube.com/watch?v=t45S_MwAcOw)
🎥 Yannic Kilcher — BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
Explicación más técnica y orientada al paper. Buena referencia para lectores que quieran profundizar más allá de la visión general.(https://www.youtube.com/watch?v=xI0HHN5XKDo)
💙 En Lozkorp
PAPER 2013: Word2Vec: cómo las máquinas aprendieron a representar palabras
PAPER 2017: Attention Is All You Need: el paper que cambió la inteligencia artificial moderna
PAPER 2018: BERT: enseñar a una máquina a leer en las dos direcciones a la vez
Otros:





















Comentarios