Heim  >  Artikel  >  Technologie-Peripheriegeräte  >  Warum verwenden große Sprachmodelle SwiGLU als Aktivierungsfunktion?

Warum verwenden große Sprachmodelle SwiGLU als Aktivierungsfunktion?

王林
王林nach vorne
2024-04-08 21:31:11970Durchsuche

Wenn Sie sich mit der Architektur großer Sprachmodelle befasst haben, ist Ihnen möglicherweise der Begriff „SwiGLU“ in den neuesten Modellen und Forschungsarbeiten aufgefallen. Man kann sagen, dass SwiGLU die am häufigsten verwendete Aktivierungsfunktion in großen Sprachmodellen ist. Wir werden sie in diesem Artikel ausführlich vorstellen. SwiGLU ist eigentlich eine von Google im Jahr 2020 vorgeschlagene Aktivierungsfunktion, die die Eigenschaften von SWISH und GLU kombiniert. Der vollständige chinesische Name von SwiGLU lautet „bidirektionale Gated Linear Unit“. Es optimiert und kombiniert zwei Aktivierungsfunktionen, SWISH und GLU, um die nichtlineare Ausdrucksfähigkeit des Modells zu verbessern. SWISH ist eine sehr häufige Aktivierungsfunktion, die häufig in großen Sprachmodellen verwendet wird, während GLU bei Aufgaben zur Verarbeitung natürlicher Sprache eine gute Leistung erbringt. Der Vorteil von SwiGLU besteht darin, dass es gleichzeitig die Glättungseigenschaften von SWISH und die Gating-Eigenschaften von GLU erhalten kann, wodurch der nichtlineare Ausdruck des Modells besser wird

为什么大型语言模型都在使用 SwiGLU 作为激活函数?

Wir werden sie einzeln vorstellen:

Swish

Swish ist eine nichtlineare Aktivierungsfunktion, die wie folgt definiert ist:

Swish(x) = x*sigmoid(ßx)

为什么大型语言模型都在使用 SwiGLU 作为激活函数?

wobei ß ein lernbarer Parameter ist. Swish kann besser sein als die ReLU-Aktivierungsfunktion, da es weichere Übergänge ermöglicht, was zu einer besseren Optimierung führen kann.

Gated Linear Unit

GLU (Gated Linear Unit) ist definiert als das Komponentenprodukt zweier linearer Transformationen, von denen eine durch Sigmoid aktiviert wird.

GLU(x) = sigmoid(W1x+b)⊗(Vx+c)

为什么大型语言模型都在使用 SwiGLU 作为激活函数?

Das GLU-Modul kann Langzeitabhängigkeiten in Sequenzen effektiv erfassen und gleichzeitig einige der verschwindenden Gradientenprobleme vermeiden, die mit anderen Gating-Mechanismen wie LSTM und GRU verbunden sind.

SwiGLU

Wir haben bereits gesagt, dass SwiGLU eine Kombination aus beidem ist. Es ist eine GLU, aber anstatt Sigmoid als Aktivierungsfunktion zu verwenden, verwenden wir swish mit ß=1, sodass wir am Ende die folgende Formel erhalten:

SwiGLU(x) = Swish(W1x+b)⊗(Vx+c)

Wir verwenden die SwiGLU-Funktion, um ein Feedforward-Netzwerk aufzubauen

FFNSwiGLU(x) = (Swish1(xW)⊗xV)W2

Einfache Implementierung von Pytorch

Wenn die oben genannten mathematischen Prinzipien mühsam und langweilig erscheinen, erklären wir sie direkt anhand des folgenden Codes.

class SwiGLU(nn.Module): def __init__(self, w1, w2, w3) -> None:super().__init__()self.w1 = w1self.w2 = w2self.w3 = w3 def forward(self, x):x1 = F.linear(x, self.w1.weight)x2 = F.linear(x, self.w2.weight)hidden = F.silu(x1) * x2return F.linear(hidden, self.w3.weight)

Die in unserem Code verwendete F.silu-Funktion ist dieselbe wie swish, wenn ß=1 ist, daher verwenden wir sie direkt.

Sie können dem Code entnehmen, dass es in unserer Aktivierungsfunktion drei Gewichte gibt, die trainiert werden können, nämlich die Parameter aus der GLU-Formel.

SwiGLU-Effektvergleich

Beim Vergleich von SwiGLU mit anderen GLU-Varianten können wir sehen, dass SwiGLU in beiden Vortrainingsphasen eine bessere Leistung erbringt.

为什么大型语言模型都在使用 SwiGLU 作为激活函数?

Downstream-Aufgaben

为什么大型语言模型都在使用 SwiGLU 作为激活函数?

haben die beste Leistung, daher verwenden jetzt alle LLMs wie LLAMA, OLMO und PALM SwiGLU in ihrer Implementierung. Aber warum ist SwiGLU besser als die anderen?

Das Papier gab nur die Testergebnisse bekannt und erläuterte nicht die Gründe. Stattdessen hieß es:

Wir geben keine Erklärung dafür, warum diese Architekturen zu funktionieren scheinen, wie alles andere auch. zur göttlichen Güte.

Der Autor sagte, dass die Alchemie erfolgreich war.

Aber jetzt haben wir das Jahr 2024 und wir können es eindringlich erklären:

1 Swishs relativ geringe Reaktion auf negative Werte überwindet das Manko von ReLU, dass die Ausgabe auf einigen Neuronen immer Null ist

2. Die Gating-Eigenschaften von GLU bedeuten, dass sie basierend auf der Eingabesituation entscheiden kann, welche Informationen weitergeleitet und welche Informationen gefiltert werden sollen. Dieser Mechanismus ermöglicht es dem Netzwerk, nützliche Darstellungen effektiver zu lernen und trägt dazu bei, die Generalisierungsfähigkeit des Modells zu verbessern. In großen Sprachmodellen ist dies besonders nützlich für die Verarbeitung langer Textsequenzen mit Abhängigkeiten über große Entfernungen.

3. Die Parameter W1, W2, W3, b1, b2, b3 können durch Training erlernt werden, sodass das Modell diese Parameter dynamisch an verschiedene Aufgaben und Datensätze anpassen kann.

4. Die Berechnungseffizienz ist höher als bei einigen komplexeren Aktivierungsfunktionen (wie GELU), während die Leistung dennoch gut bleibt. Dies ist eine wichtige Überlegung für das Training und die Inferenz umfangreicher Sprachmodelle.

Wählen Sie SwiGLU als Aktivierungsfunktion des großen Sprachmodells, hauptsächlich weil es die Vorteile nichtlinearer Fähigkeiten, Gating-Eigenschaften, Gradientenstabilität und lernbarer Parameter kombiniert. SwiGLU wird aufgrund seiner hervorragenden Leistung bei der Bewältigung komplexer semantischer Beziehungen und langer Abhängigkeitsprobleme in Sprachmodellen sowie der Aufrechterhaltung der Trainingsstabilität und Recheneffizienz weit verbreitet.

Papieradresse

https://www.php.cn/link/86e33d550dc162366a02003089ab9894

Das obige ist der detaillierte Inhalt vonWarum verwenden große Sprachmodelle SwiGLU als Aktivierungsfunktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen