Arquitectura Transformer y cómo funciona BERT

Resumen

La arquitectura Transformer cambió las reglas del juego en NLP al permitir que un modelo procese frases completas en paralelo, en lugar de leerlas palabra por palabra. Si trabajas con modelos como GPT, BERT, RoBERTa o ALBERT, entender Transformer es el primer paso para usarlos con criterio y elegir el adecuado según tu hardware y tu tarea.

Qué es Transformer y por qué revolucionó el NLP

Transformer nació en el paper Attention is all you need, publicado por Google, y vino a romper el paradigma de las redes neuronales recurrentes. En vez de analizar texto secuencialmente, lo procesa de forma paralela y captura relaciones de largo alcance dentro de toda la frase [0:18].

Esto se traduce en tres ventajas que vale la pena tener claras:

  • Procesamiento de secuencias en paralelo, lo que acelera el entrenamiento.
  • Captura de relaciones de largo alcance entre palabras lejanas.
  • Memoria del contexto completo de la frase, no token aislado.

¿Qué es Transformer en inteligencia artificial? Es una arquitectura de red neuronal que procesa texto en paralelo usando un mecanismo llamado self-attention, lo que le permite entender el contexto completo de una frase en lugar de leerla palabra por palabra.

Cómo se relacionan BERT, RoBERTa, ALBERT y DistilBERT con Transformer

Todos estos modelos comparten la T de Transformer, pero cambian en cómo fueron entrenados y en cuántas capas tienen. BERT es un encoder bidireccional que utiliza Transformer y, en su versión popular para español, cuenta con 12 capas [1:35].

Las variantes responden a necesidades distintas:

  • RoBERTa y ALBERT: cambian datos de entrenamiento y configuración interna.
  • DistilBERT: usa 6 capas en lugar de 12, lo que lo hace más ligero y liviano [1:55].
  • BERT base en español: 12 capas, ideal cuando tienes GPU disponible.

Elegir el modelo correcto depende de tu hardware, la cantidad de GPU y la tarea que quieras resolver.

Cómo explorar la arquitectura BERT con la librería Transformers

Para inspeccionar estos modelos se usa la librería Transformers de Hugging Face, que permite cargar y manipular modelos preentrenados. En Google Colab ya viene instalada; en local conviene correr pip install transformers y trabajar con GPU porque el costo computacional es alto [2:35].

Cómo ver la configuración del modelo BERT

Una vez instalada, puedes revisar la configuración del modelo preentrenado en español y consultar su número de capas ocultas:

python from transformers import BertConfig, BertModel

config = BertConfig.from_pretrained("dccuchile/bert-base-spanish-wwm-uncased") print(config.num_hidden_layers) # 12

Esas 12 capas ocultas son las capas intermedias entre el input y el output de la red neuronal. Cada una procesa una parte del texto y, a más capas, mayor complejidad y mejor accuracy potencial [3:30].

Qué componentes aparecen al visualizar el modelo

Al instanciar BertModel.from_pretrained(...) puedes ver la arquitectura completa. Aparecen los embeddings iniciales, las capas de atención, capas densas intermedias, una capa de dropout que evita el sobreajuste y, al final, una capa de activación lineal que entrega el output [4:15].

¿Para qué sirve el dropout en BERT? Apaga aleatoriamente conexiones durante el entrenamiento para evitar el sobreentrenamiento y mejorar la generalización del modelo en datos nuevos.

Cómo funciona el self-attention dentro de Transformer

El mecanismo de self-attention es el corazón de Transformer. Para cada token de la secuencia se calculan tres vectores: query (Q), key (K) y value (V), tal como aparecen en el paper original [6:10].

El proceso sigue estos pasos:

  1. Calcular Q, K y V para cada token mediante producto entre matrices.
  2. Calcular un puntaje de atención para cada par de tokens.
  3. Aplicar softmax a los puntajes para obtener los pesos.
  4. Generar la representación final de cada token con contexto de todos los demás.

Lo interesante es que ningún token queda aislado: cada uno se entiende en relación con el resto de la frase, y eso es lo que permite identificar cuáles tienen mayor peso semántico.

Cómo se tokeniza un texto en BERT

Cada modelo tiene su propio tokenizador. BERT convierte una frase como "El producto de Samsung Galaxy S21 llegó el 2 de marzo y superó mis expectativas" a una representación numérica con su formato específico. Al extraer los hidden states, se obtienen 13 capas: las 12 ocultas más la capa inicial de embeddings [5:40].

python from transformers import BertTokenizer, BertModel import torch

tokenizer = BertTokenizer.from_pretrained("bert-base-multilingual-cased") model = BertModel.from_pretrained("bert-base-multilingual-cased", output_hidden_states=True)

texto = "El producto de Samsung Galaxy S21 llegó el 2 de marzo y superó mis expectativas" inputs = tokenizer(texto, return_tensors="pt") outputs = model(**inputs) print(len(outputs.hidden_states)) # 13

Un detalle técnico que conviene recordar: la librería Transformers usa PyTorch por debajo, así que necesitas tenerlo instalado junto con torch.

Con estos fundamentos claros, ya tienes la base para pasar a la implementación práctica: clasificación de texto, detección de entidades y más casos donde Transformer brilla. ¿Qué tarea de NLP te gustaría resolver primero con BERT? Cuéntalo en los comentarios.