Transformer 已成為各種機器學習任務的熱門選擇,並且取得了很好的效果,那它還能怎麼用?腦洞大開的研究者竟然想用它來設計可程式計算機!
這篇論文的作者來自普林斯頓大學和威斯康辛大學,標題為《Looped Transformers as Programmable Computers》,旨在探索如何用Transformer 來實作通用計算機。
具體來說,作者提出了一個將 transformer 網路用作通用電腦的框架,方法是使用特定權重對它們進行編程並將它們置於循環(loop)中。在這個框架中,輸入序列充當穿孔卡片,由指令和用於資料讀取 / 寫的記憶體組成。
作者證明了恆定數量的編碼器層可以模擬基本計算區塊。使用這些構建塊,他們模擬了一個小型指令集計算機。這使得他們能夠將迭代演算法映射到可以由循環的(looped)13 層 transformer 執行的程式。他們展示了這個 transformer 如何在其輸入的指導下模擬一個基本的計算器、一個基本的線性代數函式庫和使用反向傳播的 in-context learning 演算法。這項工作突出了注意力機制的多功能性,並證明即使是淺層 transformer 也可以執行成熟的通用程序。
論文概述
Transformer (TF) 已成為各種機器學習任務的熱門選擇,它在自然語言處理和電腦視覺等領域很多問題上取得了最先進的成果。 Transformer 成功的關鍵原因是能夠透過注意力機制捕捉 higher-order 關係和 long-range 依賴關係。這使得 TF 可以對上下文資訊進行建模,並使其在機器翻譯和語言建模等任務中更加有效,在這些任務中 Transformer 的表現一直優於其它方法。
GPT-3(175B 參數)和 PaLM(540B 參數)等具有數千億參數的語言模型在許多自然語言處理任務上都取得了最先進的效能。有趣的是,這些大型語言模型 (LLM) 中的一些還可以執行 in-context learning (ICL) ,根據簡短 prompt 和一些範例即時適應和執行特定任務。 LLM 的 ICL 能力是在沒有可以訓練的情況下就具備,並允許這些大型模型有效地執行新任務而無需更新權重。
令人驚訝的是,透過ICL,LLM 可以執行演算法任務和推理,並且[Nye et al. [2021], Wei et al. [2022c], Lewkowycz et al . [2022], Wei et al. [2022b], Zhou et al. [2022]] 等人的工作已經證明其可行性。 [Zhou et al. [2022] ] 等的工作證明,當給出多位加法演算法和一些加法範例的 prompt 時,LLM 可以成功地對未知用例進行加法運算。這些結果表明,LLM 可以根據演算法原理並在推理時對給定輸入執行 pre-instructed 的命令,就好像將自然語言解釋為程式碼一樣。
有證據表明,Transformer 可以模擬具有足夠深度的圖靈機或Attention 層之間的遞歸連結[Pérez et al. [2021], Pérez et al. [2019], Wei et al. [2022a]]。這證明了 Transformer 網路精確遵循輸入指定的演算法指令的潛力。然而,這些構造相對籠統,無法深入理解如何創建能夠執行特定演算法任務的 Transformer。
然而更專業的設計可以讓 TF 執行更高階的程式。如 [Weiss et al. [2021]] 設計了一種計算模型和一種程式語言,可將簡單的選擇和聚合命令對應到索引輸入 token。這種語言可用於創建多種有趣的演算法,例如 token 計數、排序、建立直方圖和識別 Dyck-k 語言。然後可以將用受限存取序列處理語言 (RASP) 編寫的程式對應到 Transformer 網路中,Transformer 網路的大小通常會隨著程式的大小而變化。
另一項研究展示了選擇Transformer 模型權重的方法,以用作動態學習線性回歸模型的最佳化演算法,在給定訓練資料作為輸入時在推理時執行隱式訓練。這些方法通常需要與學習演算法的迭代次數成比例的層數,並且僅限於一個損失函數和模型集合。
對 Transformer 模型進行編程以模擬圖靈機的抽象計算的能力、RASP 等語言的專用命令以及 ICL 的特定演算法,突出了 Transformer 網路作為多功能可編程電腦的潛力。
本文作者的研究旨在研究探索這一充滿希望的前景,揭示 Attention 機制如何能夠模擬受指令集架構啟發的通用電腦。
將Transformer 作為可編程計算機
在本文中,作者展示了Transformer 網路可以透過使用特定權重對它們進行硬編碼並將它們置於一個循環中來模擬複雜的演算法和程式。作者透過對 Attention 進行逆向工程來模擬基本計算區塊來做到這一點,例如對輸入序列的編輯操作、非線性函數、函數呼叫、程式計數器和條件分支。作者的論文證明了使用單一循環或遞歸將 Transformer 的輸出序列連接回其輸入的重要性,從而避免對深度模型的需求。
#論文網址:https://arxiv.org/pdf/2301.13196.pdf
#作者透過設計一個Transformer 來實現這一點,該Transformer 可以執行以單一指令的通用版本編寫的程序,稱為SUBLEQ (A,B,C),即如果小於或等於零,則相減併分支。 SUBLEQ 是一種單一指令語言,定義了單一指令集電腦(one-instruction set computer,簡寫為 OISC)。 SUBLEQ 由 3 個記憶體位址運算元組成,執行時以記憶體位址 B 的值減去記憶體位址 A 的值,結果存入 B。如果 B 的結果小於等於 0,則跳到位址 C,否則繼續下一條指令。但這條指令能夠定義通用計算機。
作者建構了實作類似SUBLEQ 程式的明確Transformer,作者稱為FLEQ 的更靈活的單一指令,其形式為
其中f_m 可以從一組函數(矩陣乘法/ 非線性函數/ 多項式等)中選擇,可以將其硬編碼到網路中。可以執行 FLEQ 程式的循環 Transformer 的深度不依賴程式的深度或程式碼的行數,而是取決於實作單一 FLEQ 指令所需的深度,這是不變的。這是透過在輸入序列上循環運行 Transformer 來實現的,類似於 CPU 的運作方式。
作者使用這個框架,展示了在推理時模擬各種函數的能力,包括一個基本的計算器、一個基本的線性代數庫(矩陣轉置、乘法、求逆、冪迭代)和在隱式完全連接網路上實現反向傳播的ICL。輸入序列或 prompt 可當成穿孔卡片,包括 Transformer 需要執行的指令,同時為儲存和處理程序中使用的變數提供空間。用於執行這些程序的 Transformer 網路的深度都小於或等於 13,並且提供了所有這些模型的權重矩陣。下面的定理總結了作者的主要發現:
定理1:存在一個少於13 層的循環Transformer,它可以模擬通用計算機(文章第5 節)、基本計算器(文章第7 節)、數值線性代數方法,如近似矩陣逆和冪迭代(文章第8 節),以及基於神經網路的ICL 演算法(如SGD)(文章第9 節)。
#圖1:循環Transformer 架構示意圖,其中輸入序列儲存指令,從中讀取/ 寫入資料的記憶體以及儲存中間結果的暫存器。輸入由網路處理,輸出用作新輸入,允許網路迭代更新隱式狀態並執行複雜計算。
作者的研究強調了 Attention 機制的靈活性和單循環的重要性,這使得設計可以模擬複雜迭代演算法和執行通用程式的模型成為可能。並進一步證明了 Transformer 模型高效執行複雜數學和演算法任務的能力。可以想像,現代 Transformer (如 GPT-3),在執行各種任務時使用類似的內部子程式。在某種程度上,當給出上下文範例和說明時,可以啟發這些模型特定技巧或演算法的能力,類似於函數呼叫。然而,應該謹慎對待這個假設,因為作者設計結構的方式與現實世界語言模型的訓練方式沒有任何相似之處。
作者希望他們的研究能鼓勵進一步研究 Attention 機制的潛力,以及語言模型執行演算法指令的能力。作者提出的設計可以幫助確定執行特定演算法任務所需的最小 Transformer 網路規模。此外,作者還希望其發現有助於啟發開發方法,從而透過利用更小的、逆向工程的 Transformer 網路來完成特定的演算法任務,從而增強訓練語言模型的能力。
建構通用計算的 Transformer 模組
要使用 Transformer 網路建構通用計算框架,需要專門的計算區塊。將這些區塊組裝來創建所需的最終功能。以下重點介紹 Transformer 層可以執行的各種操作。這些操作將為創建更複雜的例程和演算法提供基礎。這些操作的目的是彼此可互通,利用 Attention 執行各種任務的能力,例如產生近似置換矩陣和透過 sigmoid 函數逼近一般函數。
#圖2: 用作實作小型指令集電腦建構塊的三個Transformer 區塊的示意圖。這些區塊處理輸入序列中的編輯操作(例如從一個區塊移動或複製到另一個區塊),追蹤程式計數器,並在滿足指定條件時執行程式計數器跳轉。
位置編碼、程式計數器與資料指標
##Transformer 通常需要執行迭代演算法或執行一系列命令。為實現這一點,作者使用一個循環存取命令的程式計數器。計數器包含儲存下一個命令的位置的編碼。此外,命令可能具有指向命令需要讀取和寫入的資料位置的資料指標。程式計數器和資料指標都使用與前一段中討論的相同的位置編碼。
作者的位置編碼方案也可用於指向特定資料位置以進行讀取或寫入,這將在下一節論述。這是透過使用相同的二進位向量作為程式計數器和資料指標的位置編碼來實現的。此外,這種指向特定資料位置的技術使 Transformer 能夠在執行演算法或建置以實現的命令序列期間有效地讀取 / 寫入資料。
讀取/ 寫入:將資料、指令複製到暫存器或從暫存器取出
圖3: 讀取操作的示意圖。箭頭顯示從指派給暫存器命令的輸入部分複製的命令區塊。一條指令是一組指標。位置編碼和計數器用於追蹤什麼內容被複製到哪裡。
下面的引理說明,程式計數器指向的命令或目前命令中指定位置的資料可以複製到暫存器以供進一步計算。程式計數器的位置通常位於暫存器內容的正下方,但可以任意變更。在整個計算過程中將其保持在特定位置有助於保持結構的良好組織。
下一個引理解釋了儲存在暫存器中的向量 v 可以複製到記憶體中的指定位置,如暫存器本身所指定的。這允許將資料從暫存器傳輸到記憶體中的特定位置以供進一步使用或儲存。
圖 4: 寫入操作的示意圖。箭頭顯示資料區塊正在從暫存器複製到分配給記憶體的輸入部分中的指定位置。位置編碼用於追蹤目標位置並確保資料寫入正確的記憶體位置。
#條件分支
#在這一部分,作者實作一個條件分支指令,該指令評估條件並在條件為真時將程式計數器設定到指定位置,或在條件為假時將程式計數器遞增1。
指令的形式如下:如果 mem [a]≤0,則前往 i,其中 mem [a] 是輸入序列的記憶體部分中某個位置的值。這個指令有兩個部分:判斷不等式和修改程式計數器。
模擬通用單一指令集電腦
SUBLEQ Transformer
Mavaddat 和Parhami 早在1988年已經證明存在一條指令,任何電腦程式都可以轉換為由這條指令的實例化所組成的程式。這種指令的變體是 SUBLEQ,能存取不同的暫存器或記憶體位置。
SUBLEQ 的運作方式很簡單。它存取記憶體中的兩個暫存器,取得它們內容的差異並將其儲存回其中一個暫存器,然後如果結果為負,則它跳到不同的預定義程式碼行,或繼續執行目前行的下一條指令。為執行 SUBLEQ 程式而建構的計算機稱為單指令集計算機,並且是通用計算機,即,如果可以訪問無限內存,它就是圖靈完備的。
下面描述了一個循環 Transformer 的構造,它可以執行用特定指令集寫的程式。 Transformer 追蹤程式碼行、記憶體位置和程式計數器,將輸入的記憶體部分用作記憶體暫存器,將指令部分用作程式碼行 / 指令。暫存器用於記錄每條指令涉及的加法和指針,讀取、寫入、條件分支操作等。
#圖 5: 實作 OISC 指令區塊的圖形表示。前兩個區塊將資料 / 指令傳送到暫存器,第二個和第三個執行減法並儲存結果,而最後一個執行完成指令的 if goto 指令。
FLEQ:更靈活的Attention 為基礎的電腦
##在這一節,作者對FLEQ進行介紹,它是對SUBLEQ 的推廣,它定義了一種更靈活的精簡指令集電腦。這一隱含的附加指令集基於 SUBLEQ 的更高級版本,允許在同一 Transformer 網路中實現多種功能。作者使用術語 FLEQ 來指稱指令、語言和它定義的基於 Attention 的電腦。
FLEQ 的設計允許透過產生比簡單減法更通用的函數來實現複雜的演算法,如矩陣乘法、平方根計算、激活函數等。
基於 Attention 的電腦執行週期。在循環 Transformer 的每次迭代中,根據程式計數器從輸入中的指令集中提取一條指令。然後指令被複製到暫存器。根據要實現的功能,使用不同的功能塊位置在局部記錄該功能的結果。一旦計算出結果,它就會被複製回指令提供的指定記憶體位置。
執行週期類似於上一節中的單指令集計算機(OISC),主要區別在於,對於每個指令,可以從預先選擇的函數列表中進行選擇,這些函數以任意數組的形式輸入,如矩陣、向量和標量。
輸入序列的格式。如圖 6 所示,循環 Transformer 的輸入 X,它可以執行一系列 FLEQ 指令構成的程式(X 由暫存器、記憶體、指令等三部分構成)。
基於 Transformer 的功能塊的格式。每個功能塊都位於輸入 X 的左下方部分,如圖 6 所示。
#####圖6:執行FLEQ 指令的輸入X 的結構########################### ######更多技術細節和範例請參閱原始論文。 ######
以上是把Transformer當通用計算機用,還能執行in-context learning演算法,這項研究腦洞大開的詳細內容。更多資訊請關注PHP中文網其他相關文章!

用Microsoft Power BI圖來利用數據可視化的功能 在當今數據驅動的世界中,有效地將復雜信息傳達給非技術觀眾至關重要。 數據可視化橋接此差距,轉換原始數據i

專家系統:深入研究AI的決策能力 想像一下,從醫療診斷到財務計劃,都可以訪問任何事情的專家建議。 這就是人工智能專家系統的力量。 這些系統模仿Pro

首先,很明顯,這種情況正在迅速發生。各種公司都在談論AI目前撰寫的代碼的比例,並且這些代碼的比例正在迅速地增加。已經有很多工作流離失所

從數字營銷到社交媒體的所有創意領域,電影業都站在技術十字路口。隨著人工智能開始重塑視覺講故事的各個方面並改變娛樂的景觀

ISRO的免費AI/ML在線課程:通向地理空間技術創新的門戶 印度太空研究組織(ISRO)通過其印度遙感研究所(IIR)為學生和專業人士提供了絕佳的機會

本地搜索算法:綜合指南 規劃大規模活動需要有效的工作量分佈。 當傳統方法失敗時,本地搜索算法提供了強大的解決方案。 本文探討了爬山和模擬

該版本包括三種不同的型號,GPT-4.1,GPT-4.1 MINI和GPT-4.1 NANO,標誌著向大語言模型景觀內的特定任務優化邁進。這些模型並未立即替換諸如

Chip Giant Nvidia週一表示,它將開始製造AI超級計算機(可以處理大量數據並運行複雜算法的機器),完全是在美國首次在美國境內。這一消息是在特朗普總統SI之後發布的


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器