2017 年 Transformer 橫空出世,由Google在論文《Attention is all you need》中引入。這篇論文拋棄了以往深度學習任務裡面所使用的 CNN 和 RNN。這項開創性的研究顛覆了以往序列建模和 RNN 劃等號的思路,如今被廣泛用於 NLP。大熱的 GPT、BERT 等都是基於 Transformer 建構的。
Transformer 自推出以來,研究者已經提出了許多變體。但大家對 Transformer 的描述似乎都是以口頭形式、圖形解釋等方式介紹架構。關於 Transformer 的偽代碼描述可參考的資料很少。
正如下面這段話所表達的:一位AI 領域非常出名的研究者,曾向一位著名的複雜性理論家發送了一篇自認為寫得非常好的論文。而理論家的回答是:我在論文中找不到任何定理,我不知道這篇論文是關於什麼的。
對於從業者來說,論文可能足夠詳細,但理論家所需的精確度通常更高。由於某些原因,DL 社群似乎不願意為他們的神經網路模型提供偽代碼。
目前看來,DL 社群有以下問題:
DL 出版缺乏科學的準確性和細節。深度學習在過去 5 到 10 年間取得了巨大的成功,每年發表的論文數以千計。許多研究者只是非正式地描述了他們如何改變先前的模型,大約 100 多頁的論文只包含幾行非正式地模型描述。充其量是一些高階圖表,沒有偽代碼,沒有方程式,沒有提到對模型的精確解釋。甚至沒有人為著名的 Transformer 及其編碼器 / 解碼器變體提供偽代碼。
原始碼與偽代碼。開源原始碼非常有用,但與數千行的真實原始碼相比,精心設計的偽代碼通常不到一頁,基本上仍然是完整的。這似乎是一項沒有人願意做的苦工。
解釋訓練過程同樣重要,但有時論文中甚至沒有提到模型的輸入和輸出以及潛在的副作用是什麼。論文中的實驗部分通常不會解釋輸入演算法的內容以及如何輸入。如果方法部分有一些解釋,通常與實驗部分中描述的內容脫節,可能是由於不同的作者編寫了不同的部分造成的。
有人會問:真的需要偽代碼嗎? 偽代碼有什麼用?
來自DeepMind 的研究者認為提供偽代碼有很多用途,與閱讀文章或滾動1000 行實際代碼相比,偽代碼將所有重要的內容濃縮在一頁紙上,更容易開發新的變體。為此,他們最近發表的一篇論文《 Formal Algorithms for Transformers 》,文章以完整的、數學精確的方式來描述 Transformer 架構。
本文涵蓋了什麼是 Transformer、Transformer 如何訓練、Transformer 被用來做什麼、Transformer 關鍵架構元件以及比較出名的模型預覽。
#論文網址:https://arxiv.org/pdf/2207.09238.pdf
不過,閱讀本文,讀者需熟悉基礎ML 術語和簡單的神經網路體系架構(如MLPs)。對於讀者而言,在理解了文中的內容後,將會紮實的掌握 Transformer,並可能使用偽代碼實現自己的 Transformer 變體。
這篇論文的主體部分是第 3-8 章,分別介紹了 Transformer 及其典型任務、tokenization、Transformer 的架構組成、Transformer 的訓練和推理、實際應用。
論文中基本完整的偽代碼大約有 50 行,而實際的真實原始碼則有數千行。論文中表述演算法的偽代碼適用於需要緊湊、完整和精確公式的理論研究者、從頭實現 Transformer 的實驗研究人員,同時對使用形式 Transformer 演算法擴充論文或教科書也大有裨益。
論文中偽代碼範例
#對於熟悉基本的ML 術語和簡單的神經網路架構(例如MLP)的初學者來說,這篇論文將幫助你掌握紮實的Transformer 基礎,並用偽代碼模板實現自己的Transformer 模型。
作者介紹
這篇論文的第一作者是今年 3 月正式入職 DeepMind 的研究員 Mary Phuong。她博士畢業於奧地利科學技術研究所,主要從事機器學習的理論研究。
#論文的另一位作者是DeepMind 的資深研究員Marcus Hutter,也是澳大利亞國立大學(ANU) 電腦科學研究院(RSCS) 的名譽教授。
#Marcus Hutter 多年來一直從事人工智慧數學理論的研究。這個研究領域是基於若干數學和計算科學概念,涉及強化學習、機率論、演算法資訊理論、最佳化、搜尋和計算理論等。他的著作《通用人工智慧:基於演算法機率的順序決策》於 2005 年出版,這是一本技術性和數學性都很強的書。
2002 年,Marcus Hutter 與 Jürgen Schmidhuber 和 Shane Legg 一起提出了基於理想化智能體和獎勵強化學習的人工智慧數學理論 AIXI。 2009 年,Marcus Hutter 又提出了特徵強化學習理論。
以上是從頭開始構建,DeepMind新論文用偽代碼詳解Transformer的詳細內容。更多資訊請關注PHP中文網其他相關文章!