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