自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為什么大型語(yǔ)言模型都在使用 SwiGLU 作為激活函數(shù)?

人工智能
如果你一直在關(guān)注大型語(yǔ)言模型的架構(gòu),你可能會(huì)在最新的模型和研究論文中看到“SwiGLU”這個(gè)詞。SwiGLU可以說(shuō)是在大語(yǔ)言模型中最常用到的激活函數(shù),我們本篇文章就來(lái)對(duì)他進(jìn)行詳細(xì)的介紹。

如果你一直在關(guān)注大型語(yǔ)言模型的架構(gòu),你可能會(huì)在最新的模型和研究論文中看到“SwiGLU”這個(gè)詞。SwiGLU可以說(shuō)是在大語(yǔ)言模型中最常用到的激活函數(shù),我們本篇文章就來(lái)對(duì)他進(jìn)行詳細(xì)的介紹。SwiGLU其實(shí)是2020年谷歌提出的激活函數(shù),它結(jié)合了SWISH和GLU兩者的特點(diǎn)。

我們一個(gè)一個(gè)來(lái)介紹:

Swish

Swish是一個(gè)非線性激活函數(shù),定義如下:

Swish(x) = x*sigmoid(?x)

其中,? 為可學(xué)習(xí)參數(shù)。Swish可以比ReLU激活函數(shù)更好,因?yàn)樗?附近提供了更平滑的轉(zhuǎn)換,這可以帶來(lái)更好的優(yōu)化。

Gated Linear Unit

GLU(Gated Linear Unit)定義為兩個(gè)線性變換的分量積,其中一個(gè)線性變換由sigmoid激活。

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

GLU可以有效地捕獲序列中的遠(yuǎn)程依賴關(guān)系,同時(shí)避免與lstm和gru等其他門控機(jī)制相關(guān)的一些梯度消失問(wèn)題。

SwiGLU

上面我們已經(jīng)說(shuō)到SwiGLU是兩者的結(jié)合。它是一個(gè)GLU,但不是將sigmoid作為激活函數(shù),而是使用?=1的swish,因此我們最終得到以下公式:

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

我們用SwiGLU函數(shù)構(gòu)造一個(gè)前饋網(wǎng)絡(luò)

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

Pytorch的簡(jiǎn)單實(shí)現(xiàn)

如果上面的數(shù)學(xué)原理看著比較麻煩枯燥難懂,我們下面直接使用代碼解釋。

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

我們代碼使用的F.silu函數(shù)與?=1時(shí)的swish相同的,所以就直接拿來(lái)使用了。

代碼可以看到,我們的激活函數(shù)中也有3個(gè)權(quán)重是可以訓(xùn)練的,這就是來(lái)自于GLU公式里的參數(shù)。

SwiGLU的效果對(duì)比

SwiGLU與其他GLU變體進(jìn)行比較,我們可以看到SwiGLU在兩種預(yù)訓(xùn)練期間都表現(xiàn)得更好。

下游任務(wù)

效果表現(xiàn)得最好,所以現(xiàn)在的llm,如LLAMA, OLMO和PALM都在其實(shí)現(xiàn)中采用SwiGLU。但是為什么SwiGLU比其他的好呢?

論文中只給了測(cè)試結(jié)果而且并沒(méi)有說(shuō)明原因,而是說(shuō):

We offer no explanation as to why these architectures seem to work; we  attribute their success, as all else, to divine benevolence.

作者說(shuō)煉丹成功了。

但是現(xiàn)在已經(jīng)是2024年了我們可以強(qiáng)行的解釋一波:

1、Swish對(duì)于負(fù)值的響應(yīng)相對(duì)較小克服了 ReLU 某些神經(jīng)元上輸出始終為零的缺點(diǎn)

2、GLU 的門控特性,這意味著它可以根據(jù)輸入的情況決定哪些信息應(yīng)該通過(guò)、哪些信息應(yīng)該被過(guò)濾。這種機(jī)制可以使網(wǎng)絡(luò)更有效地學(xué)習(xí)到有用的表示,有助于提高模型的泛化能力。在大語(yǔ)言模型中,這對(duì)于處理長(zhǎng)序列、長(zhǎng)距離依賴的文本特別有用。

3、SwiGLU 中的參數(shù) W1,W2,W3,b1,b2,b3W1,W2,W3,b1,b2,b3 可以通過(guò)訓(xùn)練學(xué)習(xí),使得模型可以根據(jù)不同任務(wù)和數(shù)據(jù)集動(dòng)態(tài)調(diào)整這些參數(shù),增強(qiáng)了模型的靈活性和適應(yīng)性。

4、計(jì)算效率相比某些較復(fù)雜的激活函數(shù)(如 GELU)更高,同時(shí)仍能保持較好的性能。這對(duì)于大規(guī)模語(yǔ)言模型的訓(xùn)練和推理是很重要的考量因素。

選擇 SwiGLU  作為大語(yǔ)言模型的激活函數(shù),主要是因?yàn)樗C合了非線性能力、門控特性、梯度穩(wěn)定性和可學(xué)習(xí)參數(shù)等方面的優(yōu)勢(shì)。在處理語(yǔ)言模型中復(fù)雜的語(yǔ)義關(guān)系、長(zhǎng)依賴問(wèn)題、以及保持訓(xùn)練穩(wěn)定性和計(jì)算效率方面,SwiGLU 表現(xiàn)出色,因此被廣泛采用。

論文地址

https://arxiv.org/abs/2002.05202

責(zé)任編輯:華軒 來(lái)源: DeepHub IMBA
相關(guān)推薦

2023-03-26 00:24:15

2024-04-16 16:14:01

人工智能LLMRAG

2021-06-06 22:22:32

c語(yǔ)言編程語(yǔ)言

2025-03-27 03:50:00

DeepSeekLLMLLaMA

2023-06-19 16:05:22

大型語(yǔ)言模型人工智能

2025-02-14 00:00:25

C#后端RPS

2023-06-09 08:00:00

QLoRa語(yǔ)言模型微調(diào)

2013-03-12 10:05:08

Node.jsGitHub開(kāi)源

2018-08-15 08:07:06

2021-11-11 15:25:28

@AsyncJava線程池

2024-01-02 10:38:22

Go語(yǔ)言數(shù)組

2015-04-08 10:46:11

2018-03-23 11:09:36

游戲AWS

2015-06-11 09:59:36

數(shù)據(jù)中心UPS

2024-05-30 12:17:25

2024-12-12 09:11:58

2023-11-29 11:30:17

PDF語(yǔ)言模型

2023-04-27 19:02:30

語(yǔ)言模型管理企業(yè)數(shù)據(jù)

2025-03-13 12:09:27

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)