Zurück zum Archiv
#ai#llm#glossary#aigen

Positionsweises Feed-Forward-Netz

Das Modell hat für ein Fragment Informationen aus dem restlichen Satz gesammelt. Jetzt muss diese gesammelte Beschreibung verarbeitet werden: Merkmale verbinden und eine neue Repräsentation berechnen. Andere Positionen erneut zu lesen ist nicht die einzige erforderliche Operation.

Position-wise Feed-Forward Network (FFN) ist der Teil eines Blocks, der die Beschreibung jeder Position getrennt umwandelt. Die Beschreibung ist ein Vektor, also eine Zahlenliste. Alle Positionen eines Blocks durchlaufen dieselbe gelernte Funktion, erhalten aber unterschiedliche Ergebnisse, weil ihre Eingaben unterschiedlich sind.

In einem kleinen Beispiel wird eine Liste von vier Zahlen auf zwölf erweitert, umgewandelt und auf vier reduziert. Zwischen Erweiterung und Verengung wirkt eine nichtlineare Regel: Sie behält etwa positive Zahlen und setzt negative auf null, sodass [−2, 3] zu [0, 3] wird. Dadurch leistet das Ganze mehr als eine einzige Summierung von Zahlen, die mit konstanten Koeffizienten multipliziert werden. Wir teilen die Berechnungsregel, statt für jedes Wort einen eigenen Gewichtssatz zu erstellen.

Die FFN selbst mischt keine Positionen, obwohl ihre Eingabe bereits Kontext aus Self-attention enthalten kann. „Position-wise“ beschreibt diese getrennte Arbeit und verlangt keinen identischen Aufbau aller späteren Modelle.

Mechanismus und Details

Im ursprünglichen Transformer wurden zwei affine Transformationen mit ReLU dazwischen verwendet:

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

Hier ist xx der Vektor einer Position, W1W_1 und W2W_2 sind Gewichtsmatrizen, b1b_1 und b2b_2 Bias-Vektoren. ReLU ersetzt negative Koordinaten durch null. Die Parameter wurden zwischen Positionen geteilt, aber nicht zwischen aufeinanderfolgenden Blöcken. Attention Is All You Need, §3.3.

Gleiche Funktion, unterschiedliche Eingaben

In einem kleinen, erfundenen Modell kann ein Vektor die Dimensionen 4 → 12 → 4 durchlaufen. Für eine Sequenz von 20 Tokens führen wir dieselbe Funktion 20-mal mit unterschiedlichen Eingaben aus. Wir erstellen keine 20 separaten Gewichtssätze. Sind zwei Eingabevektoren identisch, liefert dieselbe deterministische FFN identische Ergebnisse.

Ein Beispiel in Dive into Deep Learning, §11.7.2 zeigt genau diese gemeinsame Funktionsnutzung und die Änderung der letzten Tensordimension.

Die FFN-Ausgabe eines Transformer-Blocks wird über eine Residualverbindung mit der Eingabe verbunden. Deshalb kehrt die Enddimension zu der für die Addition erforderlichen Dimension zurück. „Position-wise“ beschreibt die Positionsverarbeitung, keine Pflicht zur Verwendung von ReLU in jeder späteren Modellvariante.