En un encoder, para representar «banco» la posición puede usar «río», que va después. Por eso sirve para clasificar y extraer: cada posición sale contextualizada por la frase entera.
En un decoder la restricción es de entrenamiento, no de hardware. Se entrena a predecir el token siguiente; si pudiera atender al futuro, la tarea sería copiar la respuesta.
// De la máscara salen los objetivos: reconstruir tokens tapados (encoder) frente a predecir el siguiente (decoder).| Familia | Atención | Qué sale | Ejemplos que cita la guía |
|---|---|---|---|
| Encoder | Bidireccional | Un vector por token | BERT, RoBERTa |
| Decoder | Causal | Distribución sobre el vocabulario | GPT, Llama |
| Encoder-Decoder | Bidireccional en la entrada, causal en la salida | Secuencia nueva | T5, BART |
El Encoder-Decoder existe porque hay tareas donde la entrada se entiende entera antes de empezar a producir: traducir, resumir, corregir. El encoder construye la representación completa y el decoder genera consultándola.
| Lo que necesitas | Familia | Por qué |
|---|---|---|
| Etiqueta de un conjunto fijo | Encoder | La salida es una clasificación sobre una representación, no texto libre |
| Extraer entidades o spans | Encoder | Necesitas un vector por token, contextualizado por toda la frase |
| Embeddings para búsqueda semántica | Encoder | Mismo motivo, agregado a nivel de frase |
| Texto libre, conversación, código | Decoder | La tarea es continuar una secuencia |
| Convertir una entrada en otra secuencia | Encoder-Decoder | Lees todo, luego escribes todo |
El error caro que describe la guía es real: usar un decoder generativo para clasificar. No es que no pueda. Es que devuelve texto donde querías una etiqueta, y ahora tienes un problema de parsing y de salidas fuera del conjunto de clases que antes no existía.
Menos comentado y también real: usar un encoder cuando la salida no cabe en un conjunto cerrado. La cabeza de un encoder produce una distribución sobre las clases que le pusiste al entrenarlo. Si mañana aparece una categoría nueva, un decoder la maneja con una frase en el prompt y un encoder necesita reentrenar la cabeza.
Encoder: inferencia barata y salida controlada, a cambio de un conjunto
de clases congelado.
Decoder: se adapta a lo que no previste, a cambio de coste y de una
salida que hay que validar.
La tabla de la guía dice que los Decoder no valen para «clasificación precisa donde el error debe ser 0 %». Dos cosas ahí. Primera: ningún clasificador tiene 0 % de error, tampoco un encoder; un texto que promete eso está describiendo un deseo. Segunda, llamar «alucinación» al fallo de un clasificador mezcla dos modos de fallo distintos — un decoder usado para clasificar no inventa hechos, devuelve una cadena que no está en tu conjunto de clases.
La misma tabla desaconseja el Encoder-Decoder para «tareas simples de clasificación» por ser «matar moscas a cañonazos». Pero la familia T5 se diseñó precisamente para tratar toda tarea como texto-a-texto, clasificación incluida. ¿Es un argumento de arquitectura o de coste? Si es de coste, el criterio no es la familia: es el tamaño del modelo.
Y los nombres. GPT-3, Llama, BERT, RoBERTa, T5, BART salen de un PDF sin fecha. La taxonomía de tres familias envejece bien; la lista de ejemplos, no. Antes de citar un nombre concreto, comprueba qué hay hoy en el Hub para esa familia.
Coge las tres últimas tareas de IA que hayas visto plantear en tu entorno y asígnales familia, justificando en una frase: qué necesita ver cada token y qué forma tiene la salida.
Después coge la que hayas puesto como Encoder y pregúntate qué pasa si mañana hace falta una categoría nueva. Si la respuesta es «reentrenar», ya tienes el coste real de esa elección — que es justo el dato que la tabla de la guía no da.