Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Desafío: Estructuración de Bloques de Codificador y Decodificador | Construcción de Componentes de Transformers
Transformers para Procesamiento de Lenguaje Natural
Sección 2. Capítulo 5
single

single

bookDesafío: Estructuración de Bloques de Codificador y Decodificador

Desliza para mostrar el menú

Comprender la estructura de los bloques codificadores y bloques decodificadores es fundamental para dominar cómo los Transformers procesan y generan texto. Cada bloque codificador en un Transformer está diseñado para transformar secuencias de entrada en representaciones ricas en contexto, mientras que cada bloque decodificador genera secuencias de salida atendiendo tanto a las salidas previas como a las representaciones del codificador. En tareas de texto de secuencia a secuencia, como traducción o resumen, el codificador toma el texto de entrada y lo codifica en una serie de estados ocultos. El decodificador utiliza estos estados ocultos, junto con su propia autoatención, para generar la secuencia objetivo paso a paso. Esta interacción entre los bloques codificador y decodificador permite que el modelo capture dependencias complejas en el texto, haciendo que los Transformers sean altamente efectivos para una amplia gama de tareas de procesamiento de lenguaje natural.

La siguiente tabla resume la secuencia de operaciones en un bloque codificador de Transformer y destaca su importancia para los datos de texto:

StepOperationPurpose for Text Data
1Multi-head self-attentionCaptures relationships between all tokens in the input.
2Add & NormalizeStabilizes training and preserves information.
3Feed-forward networkApplies non-linear transformations to each token.
4Add & NormalizeFurther stabilizes and enables deep stacking.

Each operation ensures that the encoder builds increasingly abstract and context-aware representations of the input text, which are essential for downstream sequence-to-sequence tasks.

Tarea

Desliza para comenzar a programar

Tu tarea es completar las partes faltantes de la clase TransformerEncoderBlock inicializando correctamente sus componentes clave y asegurando su uso en el cálculo hacia adelante.

La clase TransformerEncoderBlock modela un solo bloque codificador en una arquitectura Transformer. Debes inicializar adecuadamente dos componentes principales en el constructor de la clase (método __init__):

  • La capa de auto-atención usando MultiHeadAttention(hidden_dim). Esta capa permite que cada token en la entrada atienda a todos los demás tokens, capturando relaciones contextuales;
  • La red feed-forward usando FeedForward(hidden_dim). Esta capa aplica transformaciones no lineales a cada representación de token de manera individual, procesando aún más la salida de la capa de auto-atención;
  • En el método forward, debes aplicar estas dos capas de forma secuencial:
    • primero, pasa la entrada x por la capa de auto-atención;
    • luego, pasa la salida de la capa de auto-atención por la red feed-forward;
    • devuelve la salida final.

Asegúrate de instanciar tanto MultiHeadAttention como FeedForward con el parámetro hidden_dim proporcionado a la clase. Estos componentes representan la estructura central de un bloque codificador y deben aplicarse en el orden correcto para que el bloque funcione adecuadamente.

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 5
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

some-alt