柚子快報邀請碼778899分享:SwiGLU論文閱讀
柚子快報邀請碼778899分享:SwiGLU論文閱讀
1. 論文
1.1 背景知識
SwiGLU是2019年提出的新的激活函數(shù),它結(jié)合了SWISH和GLU兩者的特點。
1.1.1 SWISH: A SELF-GATED ACTIVATION FUNCTION
SWISH激活函數(shù)的定義如下,其中σ(x)是sigmoid函數(shù)
f(x) = x · σ(x) σ(x) = (1 + exp(?x))^(-1)
SWISH激活函數(shù)是光滑且非單調(diào),在x大于0時f(x)無上限,在x小于0時f(x)有下限,圖如下:
其他激活函數(shù)對比如下:
SWISH激活函數(shù)的一次求導結(jié)果為:
f'(x) = σ(x) + x · σ(x)(1 ? σ(x))
= σ(x) + x · σ(x) ? x · σ(x)
= x · σ(x) + σ(x)(1 ? x · σ(x))
= f(x) + σ(x)(1 ? f(x))
1.1.2 GLU: Gated Linear Unit
GLU是Microsoft在2016年提出的,相比LSTM序列計算上有前后依賴不能很好并行,GLU是在conv基礎上加上了gate的結(jié)構(gòu),可以實現(xiàn)stack堆疊,效果上比LSTM更好。
GLU的基礎結(jié)構(gòu)如下:
GLU的定義如下:
在PyTorch中也有內(nèi)置的GLU函數(shù)torch.nn.GLU(dim=-1),對應GLU(a,b)=a?σ(b), 其中a表示傳入矩陣的前一半,b表示傳入矩陣的后一半, dim=-1表示從最后一維進行切分。跟論文中不同的是線性變換要用的話需要自己實現(xiàn)。
示例如下:
import torch.nn as nn
m = nn.GLU()
input = torch.randn(4, 2)
output = m(input) # shape:[4, 1]
等價于如下:
input_split = torch.split(input, 1, dim=-1)
sigmoid = nn.Sigmoid()
output = input_split[0] * sigmoid(input_split[1])
1.2 SwiGLU
SwiGLU主要是為了提升transformer中的FFN(feed-forward network)層的實現(xiàn)。FFN層的原始定義如下,其中使用了ReLU的激活:
FFN(x, W1, W2, b1, b2) = max(0, xW1 + b1)W2 + b2
FFN的一些變種會使用不同的激活來替換ReLU:
使用不帶GLU的激活變種FFN如下,例如在T5中使用了不帶bias的ReLU,也有使用GELU和Swish代替ReLU的FFN實現(xiàn)。
FFN_ReLU(x, W1, W2) = max(xW1, 0)W2
FFN_GELU(x, W1, W2) = GELU(xW1)W2
FFN_Swish(x, W1, W2) = Swish1(xW1)W2
使用帶GLU的激活變種FFN如下:
GLU(x, W, V, b, c) = σ(xW + b) ? (xV + c)
Bilinear(x, W, V, b, c) = (xW + b) ? (xV + c)
ReGLU(x, W, V, b, c) = max(0, xW + b) ? (xV + c)
GEGLU(x, W, V, b, c) = GELU(xW + b) ? (xV + c)
SwiGLU(x, W, V, b, c, β) = Swishβ(xW + b) ? (xV + c)
FFN_GLU(x, W, V, W2) = (σ(xW) ? xV )W2
FFN_Bilinear(x, W, V, W2) = (xW ? xV )W2
FFN_ReGLU(x, W, V, W2) = (max(0, xW) ? xV )W2
FFN_GEGLU(x, W, V, W2) = (GELU(xW) ? xV )W2
FFN_SwiGLU(x, W, V, W2) = (Swish1(xW) ? xV )W2
2. 參考
GLU Variants Improve TransformerSwiGLU Activation FunctionSWISH: A SELF-GATED ACTIVATION FUNCTIONLanguage model with gated convolutional networktorch.nn.gluAttention Is All You Need
柚子快報邀請碼778899分享:SwiGLU論文閱讀
參考文章
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。