我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。
- PaLM 共享了輸入和輸出嵌入矩陣,節省了大量記憶體,通常在一個 Transformer 模型中,嵌入層用來表示輸入和輸出的 Token,這意味著我們會有一個大小為 [x, d] 的輸入嵌入矩陣,x 代表輸入,d 代表向量的維度,同時也會有一個大小為 [x, d] 的輸出嵌入矩陣,總大小為 2 倍的 [x, d],通過共享嵌入矩陣,能節省記憶體
- 在神經網路中,Biases 是額外的參數,添加到每一層的輸出中,幫助模型學習輸入和輸出資料之間更複雜的關係,然而,這通常會導致過擬合和不穩定性,在 PaLM 的情況下,結果證明了這項決策的有效性
- Rotary Positional Embedding (RoPE) 結合了絕對與相對的嵌入,並將一個學習到的旋轉矩陣應用於操作中,一個簡單的概念例子是「Dog is a noun」,「Dog」在這個句子中的絕對位置是 1,「Dog」的相對位置仍然是 1,如果我們從動詞「is」開始分析序列,它的相對位置就是 -1,RoPE 通過旋轉操作矩陣編碼絕對位置資訊,並在自注意力子層中考慮到相對位置依賴性
- Switched Gated Linear Unit (SwiGLU) 有兩個輸入,x 和 y,輸出為 x * sigmoid(y),其中 sigmoid 是 sigmoid 函數,sigmoid(y) = 1 / (1 + exp(-y)),這有效地讓網路學會「開啟或關閉」(或調節)特定神經元的激活,在 PaLM 的情況下,經驗評估顯示這個過程改善了模型的質量,然而,這可能不適用於其他架構。Google AI 研究團隊還優化了許多其他訓練過程和架構的方面,更多詳情可參閱《PaLM: Scaling Language Modeling with Pathways》,作者:Chowdhery 等人 (2022):https://arxiv.org/pdf/2204.02311.pdf。