目錄
SwiGLU的效果比較
首頁 科技週邊 人工智慧 為什麼大型語言模型都在使用 SwiGLU 作為激活函數?

為什麼大型語言模型都在使用 SwiGLU 作為激活函數?

Apr 08, 2024 pm 09:31 PM
大型語言模型 swiglu

如果你一直在關注大型語言模型的架構,你可能會在最新的模型和研究論文中看到「SwiGLU」這個詞。 SwiGLU可以說是在大語言模型中最常使用的激活函數,我們這篇文章就來對它進行詳細的介紹。 SwiGLU其實是2020年Google提出的激活函數,它結合了SWISH和GLU兩者的特徵。 SwiGLU的中文全名為“雙向門控線性單元”,它將SWISH和GLU兩種激活函數進行了優化和結合,以提高模型的非線性表達能力。 SWISH是一種非常普遍的激活函數,它在大語言模型中廣泛應用,而GLU則在自然語言處理任務中表現出色。 SwiGLU的優點在於它能夠同時獲得SWISH的平滑特性和GLU的門控特性,從而在模型的非線性表達上更加

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

##我們一個一個來介紹:

Swish

#Swish是非線性激活函數,定義如下:

Swish(x) = x*sigmoid(ßx)
登入後複製

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

其中,ß 為可學習參數。 Swish 可以比ReLU活化函數更好,因為它給予了更平滑的轉換,這可以帶來更好的最佳化。

Gated Linear Unit

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

GLU(x) = sigmoid(W1x+b)⊗(Vx+c)
登入後複製

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

GLU模組可以有效地捕捉序列中的遠端依賴關係,同時避免了LSTM和GRU等其他閘控機制相關的一些梯度消失問題。

SwiGLU

我們已經說過SwiGLU是兩者的結合。它是一個GLU,但不是將sigmoid作為激活函數,而是使用ß=1的swish,因此我們最終得到以下公式:

SwiGLU(x) = Swish(W1x+b)⊗(Vx+c)
登入後複製

我們用SwiGLU函數建構一個前饋網路

FFNSwiGLU(x) = (Swish1(xW)⊗xV)W2
登入後複製

Pytorch的簡單實作

##如果上面的數學原理看著比較麻煩枯燥難懂,我們下面直接使用程式碼解釋。

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)
登入後複製
#

我們程式碼使用的F.silu函數與ß=1時的swish相同的,所以就直接拿來使用了。

程式碼可以看到,我們的激活函數中也有3個權重是可以訓練的,這就是來自於GLU公式裡的參數。

SwiGLU的效果比較

SwiGLU與其他GLU變異體比較,我們可以看到SwiGLU在兩種預訓練期間都表現得更好。

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

下游任務

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

#效果表現得最好,所以現在的llm,如LLAMA, OLMO和PALM都在其實作上採用SwiGLU。但是為什麼SwiGLU比其他的好呢?

論文中只給了測試結果而且並沒有說明原因,而是說:

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

#作者說煉丹成功了。

但現在已經是2024年了我們可以強行的解釋一波:

1、Swish對於負值的回應相對較小克服了ReLU 某些神經元上輸出始終為零的缺點

2、GLU 的閘控特性,這意味著它可以根據輸入的情況決定哪些資訊應該通過、哪些訊息應該被過濾。這種機制可以使網路更有效地學習到有用的表示,有助於提高模型的泛化能力。在大語言模型中,這對於處理長序列、長距離依賴的文字特別有用。

3、SwiGLU 中的參數W1,W2,W3,b1,b2,b3W1,W2,W3,b1,b2,b3 可以透過訓練學習,使得模型可以根據不同任務和資料集動態調整這些參數,增強了模型的靈活性和適應性。

4、運算效率相比某些較複雜的激活函數(如 GELU)更高,同時仍能保持較好的效能。這對於大規模語言模型的訓練和推理是很重要的考量。

選擇 SwiGLU  作為大語言模型的活化函數,主要是因為它綜合了非線性能力、閘控特性、梯度穩定性和可學習參數等方面的優點。在處理語言模型中複雜的語意關係、長依賴問題、以及維持訓練穩定性和計算效率方面,SwiGLU 表現出色,因此被廣泛採用。

論文地址

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

## #######

以上是為什麼大型語言模型都在使用 SwiGLU 作為激活函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

為什麼大型語言模型都在使用 SwiGLU 作為激活函數? 為什麼大型語言模型都在使用 SwiGLU 作為激活函數? Apr 08, 2024 pm 09:31 PM

如果你一直在關注大型語言模型的架構,你可能會在最新的模型和研究論文中看到「SwiGLU」這個詞。 SwiGLU可以說是在大語言模型中最常使用的激活函數,我們這篇文章就來對它進行詳細的介紹。 SwiGLU其實是2020年Google提出的激活函數,它結合了SWISH和GLU兩者的特徵。 SwiGLU的中文全名為“雙向門控線性單元”,它將SWISH和GLU兩種激活函數進行了優化和結合,以提高模型的非線性表達能力。 SWISH是一種非常普遍的激活函數,它在大語言模型中得到廣泛應用,而GLU則在自然語言處理任務中表現出

微調真的能讓LLM學到新東西嗎:引入新知識可能讓模型產生更多的幻覺 微調真的能讓LLM學到新東西嗎:引入新知識可能讓模型產生更多的幻覺 Jun 11, 2024 pm 03:57 PM

大型語言模型(LLM)是在龐大的文字資料庫上訓練的,在那裡它們獲得了大量的實際知識。這些知識嵌入到它們的參數中,然後可以在需要時使用。這些模型的知識在訓練結束時被「具體化」。在預訓練結束時,模型實際上停止學習。對模型進行對齊或進行指令調優,讓模型學習如何充分利用這些知識,以及如何更自然地回應使用者的問題。但是有時模型知識是不夠的,儘管模型可以透過RAG存取外部內容,但透過微調使用模型適應新的領域被認為是有益的。這種微調是使用人工標註者或其他llm創建的輸入進行的,模型會遇到額外的實際知識並將其整合

可視化FAISS向量空間並調整RAG參數提高結果精度 可視化FAISS向量空間並調整RAG參數提高結果精度 Mar 01, 2024 pm 09:16 PM

隨著開源大型語言模型的效能不斷提高,編寫和分析程式碼、推薦、文字摘要和問答(QA)對的效能都有了很大的提高。但當涉及QA時,LLM通常會在未訓練資料的相關的問題上有所欠缺,許多內部文件都保存在公司內部,以確保合規性、商業機密或隱私。當查詢這些文件時,會使得LLM產生幻覺,產生不相關、捏造或不一致的內容。一種處理這項挑戰的可行技術是檢索增強生成(RAG)。它涉及透過引用訓練資料來源以外的權威知識庫來增強回應的過程,以提升生成的品質和準確性。 RAG系統包括一個檢索系統,用於從語料庫中檢索相關文檔片段

使用SPIN技術進行自我博弈微調訓練的LLM的最佳化 使用SPIN技術進行自我博弈微調訓練的LLM的最佳化 Jan 25, 2024 pm 12:21 PM

2024年是大型語言模型(LLM)快速發展的一年。在LLM的訓練中,對齊方法是一個重要的技術手段,其中包括監督微調(SFT)和依賴人類偏好的人類回饋強化學習(RLHF)。這些方法在LLM的發展中起到了至關重要的作用,但是對齊方法需要大量的人工註釋資料。面對這項挑戰,微調成為一個充滿活力的研究領域,研究人員積極致力於開發能夠有效利用人類資料的方法。因此,對齊方法的發展將推動LLM技術的進一步突破。加州大學最近進行了一項研究,介紹了一種名為SPIN(SelfPlayfInetuNing)的新技術。 S

利用知識圖譜增強RAG模型的能力和減輕大模型虛假印象 利用知識圖譜增強RAG模型的能力和減輕大模型虛假印象 Jan 14, 2024 pm 06:30 PM

在使用大型語言模型(LLM)時,幻覺是一個常見問題。儘管LLM可以產生流暢連貫的文本,但其產生的資訊往往不準確或不一致。為了防止LLM產生幻覺,可以利用外部的知識來源,例如資料庫或知識圖譜,來提供事實資訊。這樣一來,LLM可以依賴這些可靠的資料來源,從而產生更準確和可靠的文字內容。向量資料庫和知識圖譜向量資料庫向量資料庫是一組表示實體或概念的高維度向量。它們可以用於度量不同實體或概念之間的相似性或相關性,透過它們的向量表示進行計算。一個向量資料庫可以根據向量距離告訴你,「巴黎」和「法國」比「巴黎」和

RoSA: 一種高效能微調大模型參數的新方法 RoSA: 一種高效能微調大模型參數的新方法 Jan 18, 2024 pm 05:27 PM

隨著語言模型擴展到前所未有的規模,對下游任務進行全面微調變得十分昂貴。為了解決這個問題,研究人員開始注意並採用PEFT方法。 PEFT方法的主要想法是將微調的範圍限制在一小部分參數上,以降低計算成本,同時仍能實現自然語言理解任務的最先進性能。透過這種方式,研究人員能夠在保持高效能的同時,節省運算資源,為自然語言處理領域帶來新的研究熱點。 RoSA是一種新的PEFT技術,透過在一組基準測試的實驗中,發現在使用相同參數預算的情況下,RoSA表現出優於先前的低秩自適應(LoRA)和純稀疏微調方法。本文將深

大模型中常用的注意力機制GQA詳解以及Pytorch程式碼實現 大模型中常用的注意力機制GQA詳解以及Pytorch程式碼實現 Apr 03, 2024 pm 05:40 PM

群組查詢注意力(GroupedQueryAttention)是大型語言模型中的多查詢注意力方法,它的目標是在保持MQA速度的同時實現MHA的品質。 GroupedQueryAttention將查詢分組,每個群組內的查詢共享相同的注意力權重,這有助於降低計算複雜度和提高推理速度。在這篇文章中,我們將解釋GQA的想法以及如何將其轉化為程式碼。 GQA是在論文GQA:TrainingGeneralizedMulti-QueryTransformerModelsfromMulti-HeadCheckpoint

LLMLingua: 整合LlamaIndex,壓縮提示並提供高效率的大語言模型推理服務 LLMLingua: 整合LlamaIndex,壓縮提示並提供高效率的大語言模型推理服務 Nov 27, 2023 pm 05:13 PM

大型語言模型(LLM)的出現刺激了多個領域的創新。然而,在思維鏈(CoT)提示和情境學習(ICL)等策略的驅動下,提示的複雜性不斷增加,這給計算帶來了挑戰。這些冗長的提示需要大量的資源來進行推理,因此需要高效率的解決方案。本文將介紹LLMLingua與專有的LlamaIndex的整合執行高效推理LLMLingua是微軟的研究人員發佈在EMNLP2023的一篇論文,LongLLMLingua是一種透過快速壓縮增強llm在長上下文場景中感知關鍵訊息的能力的方法。 LLMLingua與llamindex的

See all articles