Volver al archivo
#ai#llm#glossary#aigen

Red feed-forward por posición

El modelo ha recogido para un fragmento información del resto de la frase. Ahora hay que procesar esa descripción: combinar las características y calcular una representación nueva. Volver a leer otras posiciones no es la única operación necesaria.

Position-wise Feed-Forward Network (FFN) es la parte del bloque que transforma por separado la descripción de cada posición. Esa descripción es un vector, es decir, una lista de números. Todas las posiciones de un bloque pasan por la misma función aprendida, pero obtienen resultados distintos porque tienen entradas diferentes.

En un ejemplo pequeño, una lista de cuatro números se amplía a doce, se transforma y se reduce a cuatro. Entre la ampliación y la reducción actúa una regla no lineal: por ejemplo, conserva los números positivos y convierte los negativos en cero, de modo que [−2, 3] produce [0, 3]. Así, el conjunto hace más que una única operación de sumar números multiplicados por coeficientes constantes. Compartimos la regla de cálculo en lugar de crear un conjunto de pesos separado para cada palabra.

La FFN no mezcla por sí sola las posiciones, aunque su entrada ya puede contener contexto de Self-attention. «Position-wise» describe ese trabajo separado, no exige que todos los modelos posteriores tengan una estructura idéntica.

Mecanismo y detalles

En el Transformer original se utilizaban dos transformaciones afines con ReLU entre ellas:

FFN⁡(x)=max⁡(0,xW1+b1)W2+b2.\operatorname{FFN}(x)=\max(0,xW_1+b_1)W_2+b_2.

Aquí, xx es el vector de una posición, W1W_1 y W2W_2 son matrices de pesos, y b1b_1 y b2b_2 son vectores de sesgo. ReLU sustituye las coordenadas negativas por ceros. Los parámetros se compartían entre posiciones, pero no entre bloques sucesivos. Attention Is All You Need, §3.3.

La misma función, entradas diferentes

En un modelo pequeño e inventado, el vector puede pasar por las dimensiones 4 → 12 → 4. Para una secuencia de 20 tokens, ejecutamos la misma función 20 veces sobre entradas distintas. No creamos 20 conjuntos de pesos separados. Si dos vectores de entrada son idénticos, la misma FFN determinista devuelve resultados idénticos.

El ejemplo de Dive into Deep Learning, §11.7.2 muestra precisamente cómo se comparte la función y cambia la última dimensión del tensor.

La salida de la FFN en un bloque Transformer se combina con la entrada mediante una conexión residual. Por eso la dimensión final vuelve a la necesaria para la suma. «Position-wise» describe cómo se procesan las posiciones, no una obligación de utilizar ReLU en todas las variantes posteriores del modelo.