從Agent到AGI還有多遠?
一、一個探討 Agent 極限的實驗
首先來看一個簡單的題目,屏幕上展示了一串字符,任務是從中抽取一個語法正確的英文句子。請大家花十秒鐘時間嘗試一下。
為了簡化這一任務,我們對這些詞進行著色處理,幫助大家更快識別出正確的句子。
當把這個問題交給模型時,即使是像 GPT4 這樣的高級模型,也可能出現一些細微但關鍵的錯誤,比如遺漏字母或單詞拆分不準確。
我們的團隊致力于構建一個能夠精確解決問題的智能體。以下是八月時的一個截圖,展示了我們的系統如何逐步學習并最終解決了這個難題。
為了評估系統能力,我們參考了一個由 HuggingFace 和 Meta 設計的評估基準(benchmark),它包括三個不同難度級別的測試。人類在這個基準上的表現近乎完美,得分高達 90 分,而即便是最先進的系統如 GPT-4 或搜索引擎,再加上 Plugin 后,仍然難以達到相同水平。然而,我們的系統能夠在測試集上取得最佳成績。事實上,在提交結果后六小時內就引起了關注,Llama 團隊的 Thomas 通過推特聯系我,希望能夠了解我的方法和技術細節。
下圖中是幾個來自 GAIA Benchmark 的案例,從簡單到復雜逐步遞進,展示了智能體處理不同類型查詢的能力。第一個例子相當基礎,幾乎不需要深入解析。而第二個則需要更高的定位和解析能力,因為涉及到的信息檢索和理解更為復雜,在處理具體信息的過程中,需要查閱特定資料。隨著任務的深入,非專業人士可能會遇到理解障礙,甚至需要具備編程能力來讀取和解析一些復雜文件,并執行計算以得出結果。最終步驟往往變得更加復雜。
這些問題具有以下特點,首先,雖然看似簡單,但完成它們可能需要相當長的時間——大約 5 到 20 分鐘,最多可達 50 個步驟,這些任務雖然各自簡單,但組合起來形成一個冗長且復雜的流程。更復雜的例子包含大量的學術內容,例如某個問題可能需要經過 12 步的搜索和分析才能從 PDF 文檔中找到答案。這類問題對我個人而言也頗具挑戰性,因為它們涉及許多專業術語和背景知識。
我們進行這項研究的原因并非直接與產品相關,而是出于個人興趣。當前使用的各種 AI 產品或工具,無論是 GPT 還是國內其他 AI 產品,在實際部署當中,我們希望確保系統能夠在指定時間內向用戶提供反饋,并盡量降低機房運營成本。然而,探索 AI 能力邊界的需求與此目標存在一定矛盾。因此,我們決定在不受任何產品或成本限制的情況下,評估現有系統的極限性能。這一過程中,我們不考慮成本因素,專注于觀察其效果。
另一個目的是尋找更高效的日常工具。盡管現有的工具如 ChatGPT 和 Perplexity 已經非常實用,但仍存在改進空間。例如,Perplexity 能夠進行簡單的多步搜索。盡管付費版可以提供額外的支持,但仍然不足以滿足所有需求。從個人工作角度來看,調研不同領域的工作是一項耗時的任務,每次大約需要 1 到 2 周時間,因此希望有一個更加高效和多功能的工具來加速這一過程。
回顧智能體(agent)的定義,根據經典本科教材,智能體是指具有主觀能動性的實體,能夠采取行動。這種主觀能動性(agency)是語言模型基礎智能體的核心特征。記憶和規劃能力可以通過工具調用來增強智能體的功能,使得許多原本復雜的任務變得可行。此框架的應用使得我們可以更快地為客戶提供定制化服務,降低成本,同時應對各種可能出現的問題。
在 GAIA Benchmark 排行榜上,微軟、HuggingFace 等機構的研究成果名列前茅。我們在嘗試復現這些結果時,發現了多種智能體解決方案。通過 Google 搜索相關文獻,可以看出智能體領域的研究方案眾多。這表明智能體的設計和實現具有很大的靈活性,但也意味著選擇最優方案并非易事。現有的大多數方案都是把 SOP(standard operating procedure) 轉成 workflow,但缺乏理論指導來確定哪個方向能持續帶來更好的結果。例如構建小型 Agent 醫院或 Agent 企業的過程中,哪些方案是真正有效的?這些問題在學術討論中較少涉及,更多被視為工程上的復雜框架。
架構設計本質上是一種搜索過程,那么如何進行有效的搜索呢?我們需要一些啟發方法。
回顧歷史,1956 年和 1957 年是關鍵兩年,這兩年萌芽了人工智能(AI)和認知科學兩個領域。認知科學和 AI 可以認為是同一事物的不同方面:AI 通過重建方式理解人類智能,而認知科學嘗試從分析人類來研究智能的本質。因此,我們考慮使用認知理論作為指導,以避免盲目嘗試,并檢驗這些理論是否有助于建模人類智能。
Dual Process Theory 這一理論將人類智能抽象成兩套系統:快速、自動化且無意識的過程(如簡單算術),以及需要緩慢、有意注意和有意識思考的過程(如解釋思考過程)。后者的特點是可以向第三方報告思考過程,適用于解決更復雜的任務。
另一理論是 Global Workspace Theory。該理論認為大腦內部存在不同的模塊,這些模塊通過某些總線或公共區域進行通訊。人類的意識范圍有限,我們同時能關注的信息量非常有限。最初這只是一個純理論概念,后來 Dehaene 提出的 Global Neural Workspace Theory 理論進一步提供了解剖學支持,使得這一理論更加清晰易懂。它本質上提出了一個遞歸的數據結構,而在不同 Decoder 模型中都有類似的上下文限制。
例如,早期的模型如 GPT-2 具有 4096 個 token 的上下文窗口,而更新的模型則擴展到數百萬個 token。盡管如此,實際應用中,模型通常強調其長上下文窗口的能力。然而,用戶在實際使用時可能并不會完全利用到這么大的窗口。模型的效果會隨著使用時間的增長而逐漸下降,并非完全無損。這種衰減背后的因素眾多,例如,在處理文檔分組(document grouping)時,數據切割會影響質量;在進行 SFT 時,缺乏高質量、長文本的數據也會導致效果隨 token 長度增加而逐漸下降。
基于這些理論,我們設計了一套系統。其核心流程為:提出問題后,模型選擇適當的工具(系統主要包含瀏覽器和 Python 執行器兩個組件)通過這些工具選擇和提取信息,并將這些信息壓縮后放入全局工作空間(global workspace);隨后,系統判斷是否需要更多信息以完成多步推理或搜索過程;當系統認為已獲取足夠信息來回答問題時,進入一個多代理辯論過程,最終得出結論并返回結果。
在這個過程中,全局工作空間(Global Workspace)扮演著關鍵角色。因為有大量文獻檢索結果和事實性信息,所以需要一套機制來管理這些信息。
具體來說,Sibyl 的每個模塊內部都采用了類似 CoT(Chain-of-Thought)的方法。并且由于較多的推理流程,會產生大量的中間 token。我們如何管理這個流程中產生的大量 token?
舉個例子,當抓取一個 PDF 文件時,模型每次僅查看一個窗口內的內容,窗口大小約為 5000 個 token。在獲取 5000 個 token 后,模型根據問題進行思考,并進行事實性抽取(類似抽取式摘要)。抽取出的事實包括來源網頁及具體位置信息。經過一系列思考步驟,最終生成大約 300 個左右的筆記。解決一個問題時,整套系統消耗的 token 數量最多不超過 10k,遠低于大多數現有模型所需的 token 數,這使得模型效果有顯著提升。
起初,我們采用 RAG 方案,但發現這種方法難以解決復雜問題,因為 RAG 會拋棄上下文中的順序信息,代價就是速度較慢且成本較高。
關鍵問題包括:
- GPT-4 會犯低級錯誤,例如重復搜索同一關鍵詞,即便之前已經找到相關信息。
- 缺乏系統性的學習機制,整個系統是一個靜態函數,無法根據使用情況進行自我改進。
- 推理過程不可靠,當推理過程過長時,失敗率顯著增加,影響問題解決的成功率。OpenAI 的 o1 出來后稍有改善。
這些問題促使我們進一步深入 Agent 和 LLM 的底層細節,探究問題的根源。
二、Agent 和 LLM 的一些底層細節
LLM 實現 Agent 的原理其實相當簡單,下圖是一個 Chat Template 的示例。LLM 底層本質上就是在類似的文本結構上進行 token 預測,并實現了如角色定制、工具調用等功能。
下圖是經典的Transformer架構,包括Encoding、Decoding兩部分。Encoding 之后,進行 cross attention,在 forward 過程中,每層都執行加操作。特別指出加操作的原因在于它不僅有助于梯度傳遞,還對訓練穩定性、模型可解釋性等方面有著積極作用。
例如,在多層神經網絡中,每一層都會從殘差流中讀取信息,執行特定操作后,再將這些信息添加到輸出中。Attention 機制負責在不同 token 之間復制信息,而 MLP 則專注于信息的篩選與更新。這種逐步完善 token 預測的過程,直到最終結果的生成,體現了深度學習模型在處理復雜任務時的內在邏輯。
關于知識定位的問題,去年我們的一位實習生的工作展示了如何通過模型追蹤特定知識的位置。例如,確定“法國的首都是什么”這類事實性知識在模型中的存儲位置。這項工作強調了模型解釋性的重要性,即理解模型是如何以及在哪里存儲和應用知識的。
Attention 機制的作用是將相關信息(如關于法國的信息)帶入到需要處理的位置。隨后,MLP 的任務是識別“法國的首都”這類信息,并將其填入相應位置,從而生成一個選項。這一過程展示了模型如何逐步完善預測,直到最終輸出結果。
大型語言模型不僅具備大量預訓練知識,還在 Inference 階段具有一定的學習能力。在推理過程中,模型能夠通過特殊的注意力頭(induction head)實現上下文學習(in-context learning)。具體來說,當模型嘗試用 A 來預測 B 時,注意力頭會向前搜索類似 A 的 token,并將這些 token 之后的信息復制過來,以輔助當前預測。僅靠這種注意力機制,模型就能實現大多數上下文學習任務,且通常只需少量層次(兩層)即可完成。
因此,模型的知識和學習能力共同構成了其兩大核心功能。我們可以通過解釋模型的殘差流(residual stream)來理解其內部工作原理,這有助于揭示模型在不同層次上的信息處理方式。
我非常喜歡的一項研究展示了模型在處理句子時的內部運作。如下圖,該研究輸入給模型一個句子,觀察其預測每個詞的概率伴隨層的變化。例如,在預測逗號后的詞時,模型的不同層次逐漸完善預測,直至達到較高的準確性。研究顯示,某些層次的結果已經足夠準確,這意味著并非所有層次都是必要的,從而為優化推理過程提供了可能性。
由于模型采用殘差結構,推理過程中可以裁剪掉一些最后的層而不太影響性能,這有助于降低成本。然而,現在的模型結構也有一些挑戰:模型的層數固定,使得每次推理所需的算力和能源消耗成為常量,無法根據問題難度動態調整。這意味著對于復雜度不斷變化的問題,模型的效率可能受限。
傳統上,模型回答問題的方式較為直接,即輸入一個問題并立即給出答案,而無需深入思考。這種方式可能導致模型依賴記憶而非推理。為了解決這一問題,我們希望將推理過程盡可能地在語言空間中展開,形成更復雜的推理鏈(chain-of-thought)。這不僅能提高模型的推理能力,還能增強其靈活性和適應性,使其更好地應對各種復雜問題。
簡單計算任務如 1+1 是否需要兩步推理?如果詢問模型“1+1 等于多少”,它可能會給出冗長的解釋。然而,對于簡單的算術運算,我們通常不需要如此復雜的推理過程。成人只有在思考 23×32 這類問題的時候才會需要推理過程,但是三歲的孩子在計算 2+3 時也需要借助手指。因此,推理并非一個靜態的過程,而是涉及能量消耗和記憶空間的動態活動。
第二個問題是關于推理的定義。我們可以將推理總結為基于規則或知識進行計算的過程,這種計算可以理解為演繹。既然涉及到計算,就不可避免地會遇到停機問題,這部分內容將在后續討論中展開。
前面提到了很多底層細節,這些細節往往難以記憶。因此,很多研究嘗試將論文中的概念具象化,使其更易于理解。
隨機鸚鵡(stochastic parrots):即僅通過統計模式生成文本,而不是基于真正的理解或推理。
通用模式機器(general pattern machine):能夠通過上下文學習(in-context learning)從輸入中提取模式并進行預測。
模擬器(simulator):可以高保真地模擬訓練數據分布及其背后的機制。但因為是有損的,所以存在一些問題。
KV Database(70%)+In Context Learning(10%)+?(20%):這是我個人的理解。因為其大多數行為類似 KV Database,所以不可避免地存在 reversal curse。推薦閱讀一篇關于可解釋性的文章,其核心觀點指出,模型在訓練過程中可能無法正確關聯 A 和 B 的關系,但如果將它們放入上下文中,模型就能更好地理解這些關系。
在實踐過程中我們經常發現 prompt 不按預期工作。可以從兩個角度來解釋這一現象。
首先,從模擬器視角,一個衍生理論是 The Waluigi Effect。例如,在讀偵探小說時,讀者最初認為某個角色是好人,但在故事進展中發現其實際上是壞人。這反映了模型在處理新信息時可能出現認知轉變。在訓練過程中,模型的上下文定義可能是不完備的,就像一本小說中的人物關系需要逐步揭示一樣,當新的 token 出現時,模型的理解會發生變化。
另外,從 KV DB + In Context Learning 視角,數據庫中沒有相關知識,需要通過插值的方式來處理,而插值不準,可以通過 CoT 或 RAG 的方式來解決。還可能是 prompt 的邏輯過于復雜,模型無法理解,可以通過 few-shot 的方式來解決。
三、從 Agent 到 AGI 還有多遠
文章開頭提到的 benchmark 顯示,最優秀的 Agent 方案僅能達到三四十分,距離人類的 90 分還有 60 分的差距。這 60 分的差距到底在哪里呢?
首先第一個問題是,模型和人類誰更聰明。
AlphaGo 的出現讓人們看到了機器的能力,但它其實除了下棋其它事情并不擅長。因此我們需要明確對“聰明”的定義。
OpenAI 在其 2023 年 2 月發布的《Planning for AGI and beyond》一文中將 AGI 定義為“在大多數具有經濟價值的工作中表現超越人類的高度自主系統”。2024 年 7 月,OpenAI 內部還發布了一個五級分類系統,用于評估其 AI 系統向 AGI 發展的進程:
- 聊天機器人(Chatbots):具備對話能力的人工智能。
- 推理者(Reasoners):能夠解決人類水平問題的人工智能。
- 代理(Agents):可以代表用戶采取行動的人工智能。
- 創新者(Innovators):能夠協助發明的人工智能。
- 組織者(Organizations):能夠完成整個組織工作的人工智能。
回顧 IQ 的相關定義,最早的理論可以追溯到一百年前,一篇論文中通過大量兒童智力測試結果繪制出了分數的正態分布圖,中位數設定為 100,用以衡量個體的認知能力高低。然而,隨著時代變遷,這一標準也在改變。例如在 1987 年的研究中發現,從 1952 年到 1982 年間,人類的平均智商顯著提升。
隨著時間推移,心理學家開始將認知能力拆分為更細致的體系,如流體智力(fluid intelligence)和晶體智力(crystallized intelligence)。流體智力涉及解決新問題、識別模式、抽象推理及適應新環境的能力;而晶體智力則包括累積的知識和經驗、專業技能等。流體智力通常隨年齡增長而逐漸下降,而晶體智力則會隨著不斷積累而上升。
在實際應用中,當前的大型語言模型更傾向于晶體智力方面的工作,即基于已有的大量知識進行回答。雖然歐文等模型聲稱具有強大的推理能力,但在面對全新的、未見過的問題時,其表現往往不如人意,更多依賴于記憶中的已有信息而非即時推理。
為了進一步細化認知能力的分類,心理學引入了 CHC 理論(Cattell–Horn–Carroll theory),該理論發展至今已成為一個非常復雜的系統。它分為三層結構:最底層是具體子能力,如數量推理、語言能力、記憶能力等;中間層是對這些能力的歸類;最頂層則是對整個系統的概括性描述——g factor。g factor 并非一個實際存在的概念,而是用來表達對下面所有評測結果的一種綜合理解。
打個比方,例如劉翔作為一位優秀的短跑運動員,如果讓他去打籃球,他學習的速度肯定比一般人快,因為他具備良好的體能。這種體能在人的身體素質中是一個通用的因子,類似的,g factor 就是人在智能領域的一個通用因子。
回顧深藍計算機的例子,人們曾以為只要解決了像國際象棋這樣的特定任務,就等于解決了人類智能的問題,這里其實犯了一個錯誤。實際上,深藍使用的是有限的能力,例如一些記憶能力——對常見棋盤開局的記憶,以及快速推理能力,在一個狹窄領域內做得非常迅速準確。但實際上,它缺乏許多其它方面的能力,因此盡管它可以解決很多問題,但并未準備好應對那些尚未被當前系統涵蓋的問題。
現在大模型可能已經有所改進,但與人類智慧仍相差甚遠。下圖指引著 AGI 的發展方向,這些未觸及的挑戰正是目前研究的焦點。這個圖也可以作為 AI 行業從業者的職業規劃參考指南。
ARC-AGI 是一個專門設計用來測試 AI 系統在解決極其困難的數學和邏輯問題方面能力的基準測試,它由 Fran?ois Chollet 于 2019 年提出。測試任務如下圖所示,由前三組圖推理出第四幅圖對應的圖片應該是怎樣的。這個問題對于人類來說并不難,只是一個簡單的填色問題。但對于 AI 而言,它考察了幾件事情。
首先,這是一個抽象的推理任務,它拋棄了所有的先驗知識,不需要任何書本上的知識,也不需要會寫字或說話。理論上,小孩子也能在一定程度上解決這類問題,但對于機器來說,處理記憶部分特別困難。這里考核了人類核心知識的掌握程度,包括物體表征,即能夠識別物體;還有數量表征,即對數量的理解。
這個問題之所以受到廣泛關注,是因為其他基準測試,很快即達到飽和,超過了人類的標準。而這一基準自 2019 年提出之后,其增長曲線一直很緩慢,人類的成績大約在 85 分左右,他們設定了 85 分為獎項標準。而現有系統僅能夠達到 50 多分的水平,提升非常有限。
所以,大語言模型還只是人類智力光譜中的一小片光芒。它很小,很亮,但距離實現全面的人工智能仍有很長的路要走。
二十世紀四十年代,馮?諾伊曼在研究自復制機的時候提出了元胞自動機的概念。元胞自動機是一個根據特定規則演化的離散系統。其中一種規則是 rule 30,如下圖所示,假設有一系列格子,一行一行地看,如果三個相鄰格子是黑色,則下一個變成白色。狀態由二進制表示,這樣一套規則定義了自動機的行為。由于它是基于規則的,自動機能夠在給定條件下執行特定的操作,這與人類利用經驗和邏輯來決策的過程形成了對比。
這一過程實際上類似于推理,一步步迭代。問題在于:當有足夠多的行后,下面會出現一些難以預測的模式。
其背后的理論是計算不可約性。Stephen Wolfram 有一本書非常值得推薦,名為《A New Kind of Science》。書中提出了計算不可約性的理論,即某些系統的動態行為無法通過任何捷徑或簡化方法來預測,必須通過一步一步的演算才能得到最終答案。即使是最簡單的規則,如這里只是 8 個 bit 的規則,也能產生極其復雜的行為。人類或自然界中的規則會更為復雜,因此有很多現象是不可知的,這意味著 AI 很難預測或模擬其他系統。
嘗試用計算機軟件系統模擬人類智能是否可行?或者在多大程度上可行?這種真實性的實現受到計算不可約性的影響,導致我們難以很好地模擬復雜的系統。
Wolfram 做了一個有趣的實驗,涉及八個元胞自動機規則,每個規則都很簡單。下圖是真實迭代結果。如果我們訓練一個神經網絡,像 GPT 一樣進行 token 預測,能達到怎樣的預測結果?
隨著訓練量的增加,我們發現它的表現確實有所改善。首先,在樣本數量很少的情況下,它可以成功地將白色部分預測為白色,盡管對黑色部分的預測效果不佳。但在訓練過程中,對于一些復雜的事件,它也能夠做出預測。這說明通過增加更多的訓練量,我們的確能夠擬合出一些系統行為,但這消耗了 800k 的參數,而實際上實現該功能可能 20 行代碼即可完成。二者之間的差異反映了計算阻力的問題。當我們試圖模擬人類智能時,究竟需要多少計算能力是一個非常大的問題。
因此,當我們討論推理時,簡單地創建一個大型模型可能還不夠,因為我們不清楚模擬人類智能所需的具體分區和計算能力。另一個更深層次的問題是我們嘗試創造人工智能實際上是一門科學,我們試圖歸納出人類智能的一些規律以模擬它。然而,這與科學研究相似,在初期階段容易實現,例如讓模型學會生成看似合理的人類語言。但實際上,它并不聰明,因為它的知識有限。神經網絡可以擬合某些東西,但對于一些很多問題是難以解決的。
當人類面對星空時,是如何總結出日心說這樣一套理論的?這實際上涉及計算中可約部分的尋找。具體而言,如何從一個圖映射到另一個圖是一個問題。人類能夠實現這種映射,但 AI 能否做到這一點呢?即便我們對此習以為常,實際上這對機器來說仍然是一個挑戰。
四、Q&A
Q1:如果一個 agent 足夠強大,例如通過調用外部工具或多個模型的組合,它在解決 RAG 問題時,兩種技術方案會是什么樣的?另外,agent 在未來將會發展到什么程度?
A1:這個問題實際上是關于生產系統中如何設計高效、低成本且效果好的系統。而我所做的研究中約束條件是幾乎沒有限制,因此我可以采用非常復雜的方法。工作流程是這樣的:模型看到的是瀏覽器,而瀏覽器只能看到網頁的一小部分內容;接著,它決定是否滾動頁面、回退或是使用 Ctrl+F 進行搜索,甚至直接打開搜索引擎,這是一個很長的基于 agent 的搜索流程。其優點是效果較好,但成本很高。因此,我們需要權衡效率與成本之間的關系——是追求快速發展速度還是產品面向的是需要快速響應的系統,還是可以接受較低速度但效果尚可的系統.
Q2:在您展示的計算不可約性圖表后面有一張圖,其中白色部分如果大部分用于學習,似乎能很快學出來。原因是不是因為它更接近于數據分布的主要模式?如果讓大部分學習這部分內容,應該更容易學到,假設預測下一部分全是白色,那么大概率是正確的,所以預測白色更容易,是這樣嗎?
A2:可以這么理解,因為正如您所提到的,大多數情況下,它確實很快就能適應這些簡單的情況,這里并沒有使用大模型,實驗只用了 800k 參數,不需要大模型也能完成任務,因為這塊損失最小最容易擬合,所以它留下了這個特點。
Q3:最近很多基礎模型團隊都在討論他們使用大量生成的數據或模擬數據進行訓練,這些數據并非真實數據。這種情況類似于給定一個大的參數量,但數據卻不是實際收集的。這引發了對于訓練數據真實性與模型性能之間關系的思考。
A3:對于小模型(比如 3B 或 7B 參數量),因為它們面向的是輕量化、快速響應的需求,本身對深度知識的要求沒那么高。此時,如果想讓模型更貼近某個具體領域或場景,用合成數據能帶來更好的針對性。畢竟從網上抓下來的數據質量有限,而且跟具體業務不一定匹配。但合成數據需要保證質量,至少要和目標場景的內容相符,否則也會帶來噪音。
在做 SFT(監督微調)時,如果缺少高質量的人類標注數據,一些團隊會根據規則或專家經驗來“人造”數據。這比直接讓大模型自動生成要更可控,可以把行業知識或業務邏輯融進來,快速填充數據集。不過,它依然需要一定的驗證和篩選,避免把錯誤信息大量灌進模型里。
大模型使用合成數據也有機會帶來收益,尤其在沒什么標注數據的場景,比如類似解謎或問答類任務。但大模型的容量更大,對臟數據更敏感,一旦有明顯的錯誤樣本,負面影響會更嚴重,所以需要更嚴格的質量把控。