Decoder (Transformador)

From Systems analysis Wiki
Jump to navigation Jump to search

Decodificador (del inglés Decoder) — en el aprendizaje automático y el aprendizaje profundo, es un componente de una red neuronal cuya tarea principal es transformar una representación codificada (por ejemplo, un vector de contexto o una secuencia de estados ocultos recibidos de un codificador) en una secuencia de datos de salida (por ejemplo, texto o una imagen). El decodificador genera los datos de salida paso a paso, generalmente de manera autorregresiva.

En un sentido más amplio, en la teoría de la información, un decodificador es cualquier dispositivo o algoritmo que convierte datos codificados de nuevo a su formato original o comprensible.

Concepto y propósito

Si el codificador es responsable de la comprensión y compresión de los datos de entrada, el decodificador es responsable de la generación y expansión de los datos de salida. Toma una representación compacta y rica en información y la transforma secuencialmente en el formato deseado, ya sea una oración en otro idioma, una descripción textual de una imagen o una secuencia de notas musicales.

La característica clave de la mayoría de los decodificadores es su naturaleza autorregresiva: para generar el siguiente elemento de la secuencia (por ejemplo, una palabra o un píxel), utilizan tanto la representación codificada como todos los elementos generados previamente.

El decodificador en diferentes arquitecturas

Decodificador en un autoencoder

En la arquitectura de un autoencoder, el decodificador realiza la tarea opuesta al codificador:

  1. El codificador comprime los datos de entrada en una representación oculta.
  2. El decodificador toma esta representación oculta e intenta restaurar (reconstruir) los datos originales a partir de ella.

El entrenamiento de una red de este tipo permite utilizar el decodificador por separado para generar nuevos datos, alimentando su entrada con vectores del espacio latente.

Decodificador en redes neuronales recurrentes (RNN/LSTM)

En los modelos clásicos de secuencia a secuencia (seq2seq), basados en RNN o LSTM, el decodificador es una red recurrente que genera la secuencia de salida token por token.

  • Principio de funcionamiento: El decodificador se inicializa con el estado oculto final (vector de contexto) del codificador. En cada paso, recibe como entrada el token generado previamente y su propio estado oculto anterior, y luego genera el siguiente token y actualiza su estado. Este proceso continúa hasta que se genera un token especial de fin de secuencia (`<EOS>`).

Decodificador en la arquitectura Transformer

El decodificador basado en la arquitectura Transformer también funciona de manera autorregresiva, pero su estructura interna es diferente. Consiste en una pila (N) de capas idénticas, cada una de las cuales tiene tres subcapas principales:

  1. Atención propia de múltiples cabezales enmascarada (Masked Multi-Head Self-Attention): Este mecanismo funciona de la misma manera que en el codificador, pero con una diferencia importante: el enmascaramiento. La máscara impide que cada posición "preste atención" a las posiciones posteriores en la secuencia. Esto garantiza que la predicción para la posición i dependa únicamente de las salidas ya conocidas en las posiciones <i, preservando la propiedad autorregresiva.
  2. Atención cruzada de múltiples cabezales (Multi-Head Cross-Attention): Este es el mecanismo clave que conecta el decodificador con el codificador. Aquí, las consultas (Query) provienen de la capa anterior del decodificador, mientras que las claves (Key) y los valores (Value) provienen de las representaciones de salida del codificador. Esto permite que el decodificador, en cada paso de la generación, se enfoque en las partes más relevantes de la secuencia de entrada.
  3. Red neuronal de avance (Feed-Forward Network): Análoga a la que se utiliza en el codificador.

Tipos de modelos basados en decodificador

Modelos codificador-decodificador

Esta es la arquitectura clásica donde el codificador y el decodificador trabajan en conjunto.

  • Principio de funcionamiento: El codificador crea una representación de los datos de entrada, y el decodificador genera los datos de salida utilizando esa representación.
  • Ejemplos: El Transformer original, T5, BART.

Modelos de solo decodificador (Decoder-Only)

Estos modelos, que se han vuelto dominantes en la IA generativa, utilizan exclusivamente la pila de decodificadores del Transformer.

  • Principio de funcionamiento: En estos modelos, no hay atención cruzada hacia un codificador, ya que no existe. El modelo opera puramente en modo autorregresivo, prediciendo el siguiente token basándose en todos los tokens anteriores de la misma secuencia. El prompt de entrada y el texto ya generado se procesan juntos.
  • Aplicación: Son ideales para tareas que requieren continuar un texto dado (generación de texto, sistemas de diálogo, chatbots).
  • Ejemplos: La serie GPT, LLaMA, Claude.

Relación con el codificador

La interacción entre el codificador y el decodificador es un principio fundamental para las tareas de transformación.

  • El codificador comprime la información de la secuencia de entrada en un conjunto de vectores.
  • El decodificador utiliza este conjunto de vectores para generar secuencialmente una nueva secuencia.

La atención cruzada permite que el decodificador "consulte" al codificador en cada paso para entender en qué parte del texto original debe centrarse en ese momento. Por ejemplo, al traducir una oración, el decodificador, mientras genera una palabra en alemán, puede "mirar" la palabra correspondiente en inglés de la entrada.

Véase también

Bibliografía

  • Vaswani, A. et al. (2017). Attention Is All You Need. NIPS.