現代大型語言模型架構內部
SwiGLU 前饋網路(SwiGLU feed-forward)
在注意力把資訊跨詞元混合之後,每個詞元會各自被一個小型兩層網路處理,這就是前饋區塊。SwiGLU 為這個區塊加上一道閘門。它不是一個線性層接一個激活函數,而是對輸入算出兩個投影:一個經 SiLU 函數變成平滑的開關閘門,另一個是原始訊號,模型再把兩者逐元素相乘。閘門讓每個隱藏單元自己決定要放多少訊號通過,給了這一層一個更銳利、可學習的濾鏡。
這個名字塞進了兩個概念:SiLU(又稱 Swish)作為平滑非線性,以及 GLU,也就是把訊號乘上閘門的閘控線性單元模式。由於閘控多用了一個投影,實作會把隱藏寬度縮到約三分之二,好讓參數量與一般前饋網路相當。經驗上,這種閘控多層感知器在相同大小下能訓練到比 ReLU 或 GELU 區塊更低的損失,這正是它成為近期多數開放大型語言模型預設選擇的原因。
\mathrm{SwiGLU}(x) = \big(\mathrm{SiLU}(xW_1)\odot xW_3\big)W_2
一個投影形成 SiLU 閘門,另一個是訊號;相乘後再投影回來。
又称
另见