Transformer 架構已經在現代機器學習領域中得到了廣泛的應用。重點是要集中註意力是 transformer 的一大核心元件,其中包含了一個 softmax,作用是產生 token 的一個機率分佈。 softmax 有較高的成本,因為其會執行指數計算和對序列長度求和,這會使得平行化難以執行。
Google DeepMind 想到了一個新思路:用某種不一定會輸出機率分佈的新方法來取代 softmax 運算。 他們也觀察到:在用於視覺 Transformer 時,使用 ReLU 除以序列長度的重點是要集中註意力可以接近或匹敵傳統的 softmax 重點是要集中註意力。
論文連結:https://arxiv.org/abs/2309.08586
此結果為並行化帶來了新方案,因為ReLU重點是要集中註意力可以在序列長度維度上並行化,而且所需的gather運算比傳統的重點是要集中註意力少
重點是要集中註意力
#重點是要集中註意力的作用是透過一個兩步驟流程對d 維的查詢、鍵和值{q_i, k_i, v_i} 進行轉換
在第一步,透過下式得到重點是要集中註意力權重 :
其中ϕ 通常是softmax。
下一步,使用這個重點是要集中註意力權重來計算輸出 這篇論文探討了使用逐點式計算的方案來取代 ϕ。
ReLU 重點是要集中註意力
DeepMind 觀察到,對於1 式中的ϕ = softmax, 是一個較好的替代方案。他們將使用 的重點是要專心稱為 ReLU 重點是要集中註意力。
已擴展的逐點式重點是要集中註意力
研究者也透過實驗探索了更廣泛的 選擇,其中α ∈ [0, 1] 且h ∈ {relu,relu² , gelu,softplus, identity,relu6,sigmoid}。
需要進行重新編寫的內容是:序列長度的擴展
他們也發現,如果使用一個涉及序列長度L 的項目進行擴展,可提高準確度。先前試圖移除 softmax 的研究工作並沒有使用這種擴充方案
#在目前使用softmax 重點是要集中註意力設計的Transformer 中,有 ,這意味著 儘管這不太可能是一個必要條件,但 能確保初始化時 的複雜度是 ,保留此條件可能會減少替換softmax 時對更改其它超參數的需求。
在初始化的時候,q 和 k 的元素為 O (1),因此 也將為 O (1)。 ReLU 這樣的活化函數維持在 O (1),因此需要因數才能使 的複雜度為 。
主要結果
圖1 說明在ImageNet-21k 訓練方面,ReLU 重點是要集中註意力與softmax 重點是要集中註意力的擴展趨勢相當。 X 軸展示了實驗所需的內核計算總時間(小時)。 ReLU 重點是要集中註意力的一大優勢是能在序列長度維度上實現並行化,其所需的 gather 操作比 softmax 重點是要集中註意力更少。
需要重新編寫的內容是:序列長度的擴展的效果
#圖2 比較了需要重新寫的內容是:序列長度的擴充方法與其它多種取代softmax 的逐點式方案的結果。具體來說,就是用 relu、relu²、gelu、softplus、identity 等方法取代 softmax。 X 軸是 α。 Y 軸則是 S/32、S/16 和 S/8 視覺 Transformer 模型的準確度。最佳結果通常是在 α 接近 1 時得到。由於沒有明確的最佳非線性,所以他們在主要實驗中使用了 ReLU,因為它速度更快。
#qk-layernorm 的效果可以重新表達如下:
主要實驗中使用了qk-layernorm,在這其中查詢和鍵會在計算重點是要集中註意力權重前被傳遞通過LayerNorm。 DeepMind 表示,預設使用 qk-layernorm 的原因是在擴展模型大小時有必要防止不穩定情況發生。圖 3 展示了移除 qk-layernorm 的影響。這結果顯示 qk-layernorm 對這些模型的影響不大,但當模型規模變大時,情況可能會有所不同。
#重新描述:閘的增添效果
#先前有移除 softmax 的研究採用了增加一個門控單元的做法,但這種方法無法隨序列長度而擴展。具體來說,在閘控重點是要集中註意力單元中,會有一個額外的投影產生輸出,該輸出是在輸出投影之前透過逐元素的乘法組合得到的。圖 4 探討了閘的存在是否可消除對需要進行重新編寫的內容是:序列長度的擴展的需求。整體而言,DeepMind 觀察到,不管有沒有門,透過需要重新編寫的內容是:序列長度的擴展都可以獲得最佳準確度。也要注意,對於使用 ReLU 的 S/8 模型,這種閘控機制會將實驗所需的核心時間增加約 9.3%。
以上是視覺Transformer中ReLU取代softmax,DeepMind新招讓成本速降的詳細內容。更多資訊請關注PHP中文網其他相關文章!