把Transformer當通用計算機用,還能執行in-context learning演算法,這項研究腦洞大開
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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

StableDiffusion3的论文终于来了!这个模型于两周前发布,采用了与Sora相同的DiT(DiffusionTransformer)架构,一经发布就引起了不小的轰动。与之前版本相比,StableDiffusion3生成的图质量有了显著提升,现在支持多主题提示,并且文字书写效果也得到了改善,不再出现乱码情况。StabilityAI指出,StableDiffusion3是一个系列模型,其参数量从800M到8B不等。这一参数范围意味着该模型可以在许多便携设备上直接运行,从而显著降低了使用AI

一先導與重點文章主要介紹自動駕駛技術中幾種常用的座標系統,以及他們之間如何完成關聯與轉換,最終建構出統一的環境模型。這裡重點理解自車到相機剛體轉換(外參),相機到影像轉換(內參),影像到像素有單位轉換。 3d向2d轉換會有對應的畸變,平移等。重點:自車座標系相機機體座標系需要被重寫的是:平面座標系像素座標系難點:要考慮影像畸變,去畸變和加畸變都是在像平面上去補償二簡介視覺系統一共有四個座標系:像素平面座標系(u,v)、影像座標系(x,y)、相機座標系()與世界座標系()。每種座標系之間均有聯繫,

軌跡預測在自動駕駛中承擔著重要的角色,自動駕駛軌跡預測是指透過分析車輛行駛過程中的各種數據,預測車輛未來的行駛軌跡。作為自動駕駛的核心模組,軌跡預測的品質對於下游的規劃控制至關重要。軌跡預測任務技術堆疊豐富,需熟悉自動駕駛動/靜態感知、高精地圖、車道線、神經網路架構(CNN&GNN&Transformer)技能等,入門難度很高!許多粉絲期望能夠盡快上手軌跡預測,少踩坑,今天就為大家盤點下軌跡預測常見的一些問題和入門學習方法!入門相關知識1.預習的論文有沒有切入順序? A:先看survey,p

這篇論文探討了在自動駕駛中,從不同視角(如透視圖和鳥瞰圖)準確檢測物體的問題,特別是如何有效地從透視圖(PV)到鳥瞰圖(BEV)空間轉換特徵,這一轉換是透過視覺轉換(VT)模組實施的。現有的方法大致分為兩種策略:2D到3D和3D到2D轉換。 2D到3D的方法透過預測深度機率來提升密集的2D特徵,但深度預測的固有不確定性,尤其是在遠處區域,可能會引入不準確性。而3D到2D的方法通常使用3D查詢來採樣2D特徵,並透過Transformer學習3D和2D特徵之間對應關係的注意力權重,這增加了計算和部署的

作者的一些個人思考在自動駕駛領域,隨著BEV-based子任務/端到端方案的發展,高品質的多視圖訓練資料和相應的模擬場景建立愈發重要。針對當下任務的痛點,「高品質」可以解耦成三個面向:不同維度上的長尾場景:如障礙物資料中近距離的車輛以及切車過程中精準的朝向角,以及車道線資料中不同曲率的彎道或較難收集的匝道/匯入/合流等場景。這些往往靠大量的資料收集和複雜的資料探勘策略,成本高昂。 3D真值-影像的高度一致:當下的BEV資料取得往往受到感測器安裝/標定,高精地圖以及重建演算法本身的誤差影響。這導致了我

突然發現了一篇19年的論文GSLAM:AGeneralSLAMFrameworkandBenchmark開源程式碼:https://github.com/zdzhaoyong/GSLAM直接上全文,感受這項工作的品質吧~1摘要SLAM技術最近取得了許多成功,並吸引了高科技公司的關注。然而,如何同一現有或新興演算法的介面,一級有效地進行關於速度、穩健性和可移植性的基準測試仍然是問題。本文,提出了一個名為GSLAM的新型SLAM平台,它不僅提供評估功能,還為研究人員提供了快速開發自己的SLAM系統的有用

請留意,這個方塊人正在緊鎖眉頭,思考著面前幾位「不速之客」的身份。原來她陷入了危險境地,意識到這一點後,她迅速展開腦力搜索,尋找解決問題的策略。最終,她決定先逃離現場,然後儘快尋求幫助,並立即採取行動。同時,對面的人也在進行著與她相同的思考……在《我的世界》中出現了這樣一個場景,所有的角色都由人工智慧控制。他們每個人都有著獨特的身份設定,例如之前提到的女孩就是一個年僅17歲但聰明又勇敢的快遞員。他們擁有記憶和思考能力,在這個以《我的世界》為背景的小鎮中像人類一樣生活。驅動他們的,是一款全新的、

23年9月國防科大、京東和北理工的論文「DeepModelFusion:ASurvey」。深度模型整合/合併是一種新興技術,它將多個深度學習模型的參數或預測合併為一個模型。它結合了不同模型的能力來彌補單一模型的偏差和錯誤,以獲得更好的性能。而大規模深度學習模型(例如LLM和基礎模型)上的深度模型整合面臨一些挑戰,包括高運算成本、高維度參數空間、不同異質模型之間的干擾等。本文將現有的深度模型融合方法分為四類:(1)“模式連接”,透過一條損失減少的路徑將權重空間中的解連接起來,以獲得更好的模型融合初
