2017 年,Google大腦團隊在其論文《Attention Is All You Need》中創造性的提出Transformer 這一架構,自此這一研究一路開掛,成為當今NLP 領域最受歡迎的模型之一,被廣泛應用於各種語言任務,並取得了許多SOTA 結果。
不僅如此,在NLP 領域一路領先的Transformer,迅速席捲電腦視覺(CV)、語音辨識等領域,在影像分類、目標偵測、語音辨識等任務上取得良好的效果。
#論文網址:https://arxiv.org/pdf/1706.03762 .pdf
從推出至今,Transformer 已成為眾多模型的核心模組,例如大家熟悉的BERT、T5 等都有Transformer 的身影。就連近段時間爆紅的 ChatGPT 也依賴 Transformer,而後者早已被Google申請了專利。
#圖表來源:https://patentimages.storage.googleapis.com /05/e8/f1/cd8eed389b7687/US10452978.pdf
此外OpenAI 發布的系列模型GPT(Generative Pre-trained Transformer),名字中帶有Transformer,可見Transformer是GPT 系列模型的核心。
與此同時,最近OpenAI 聯合創始人Ilya Stutskever 在談到Transformer 時表示,當Transformer 剛發布之初,實際上是論文放出來的第二天,他們就迫不及待的將先前的研究切換到Transformer ,後續有了GPT。可見 Transformer 的重要性不言而喻。
6 年時間,基於 Transformer 建構的模型不斷發展壯大。然而現在,有人發現了 Transformer 原始論文中的錯誤。
發現錯誤的是一位知名機器學習與AI 研究者、新創公司Lightning AI 的首席AI 教育家Sebastian Raschka。他指出,原始 Transformer 論文中的架構圖有誤,將層歸一化(LN)放置在了殘差塊之間,而這與程式碼不一致。
#Transformer 架構圖如下左,圖右為Post-LN Transformer 層(出自論文《On Layer Normalization in the Transformer Architecture》[1])。
不一致的程式碼部分如下,其中 82 行寫了執行順序「layer_postprocess_sequence="dan"」,表示後處理依序執行 dropout、residual_add 和 layer_norm。如果上圖左中的 add&norm 理解為:add 在 norm 上面,即先 norm 再 add,那確實代碼和圖不一致。
程式碼位址:
#https://github.com/tensorflow/tensor2tensor/commit/ f5c9b17e617ea9179b7d84d36b1e8162cb369f25#diff-76e2b94ef16871bdbf46bf04dfe7f1477bafb884748f08197c#8 ,論文《On Layer Normalization in the Transformer Architecture》認為Pre-LN 表現較好,能夠解決梯度問題。這是很多或大多數架構在實踐中所採用的,但它可能導致表示崩潰。
當層歸一化在註意力和全連接層之前被放置在殘差連接之中時,能夠實現更好的梯度。
因此,雖然關於Post-LN 或Pre-LN 的爭論仍在繼續,但另一篇論文結合了這兩點,即《ResiDual: Transformer with Dual Residual Connections》[2]。
對於 Sebastian 的這項發現,有人認為,我們經常會遇到與程式碼或結果不一致的論文。大多數是無心之過,但有時令人感到奇怪。考慮到 Transformer 論文的流行程度,這個不一致問題早就該被提及 1000 次。
Sebastian 回答稱,公平地講,「最最原始」的程式碼確實與架構圖一致,但 2017 年提交的程式碼版本進行了修改,同時沒有更新架構圖。所以,這實在令人困惑。
#正如一位網友所說,「讀程式碼最糟糕的是,你會經常發現這樣的小變化,而你不知道是有意還是無意。你甚至無法測試它,因為你沒有足夠的算力來訓練模型。」
##不知谷歌之後會更新程式碼還是架構圖,我們拭目以待!
以上是圖與程式碼不一致,Transformer論文被發現錯誤,網友:早該被指出1000次的詳細內容。更多資訊請關注PHP中文網其他相關文章!