「壓縮即智能」得到實驗驗證,無需預訓練和大量數據就能解決ARC-AGI問題
「壓縮即智能」。這并不是一個新想法,著名 AI 研究科學家、OpenAI 與 SSI 聯合創始人 Ilya Sutskever 就曾表達過類似的觀點。甚至早在 1998 年,計算機科學家 Jose Hernandez-Orallo 就已經在論文《A Formal Definition of Intelligence Based on an Intensional Variant of Algorithmic Complexity》中有過相關的理論論述。
近日,卡內基梅隆大學 Albert Gu 領導的一個團隊進一步證明了這一想法。據介紹,他們的研究目的是通過實驗來解答一個簡單又基本的問題:無損信息壓縮本身能否產生智能行為?
- 博客地址:https://iliao2345.github.io/blog_posts/arc_agi_without_pretraining/arc_agi_without_pretraining.html
- 項目地址:https://github.com/iliao2345/CompressARC
該團隊寫到:「在這項工作中,通過開發一種純粹基于壓縮的方法,我們的證據證明:推理期間的無損壓縮足以產生智能行為。」
該方法在 ARC-AGI 上表現優良,而 ARC-AGI 是一個類似智商測試的謎題數據集,被測模型需要根據有限的演示推斷出程序 / 規則。
基于此,該團隊將這個方法命名為 CompressARC,其符合以下三個限制:
- 無需預訓練;模型在推理期間隨機初始化和訓練。
- 無需數據集;模型僅在目標 ARC-AGI 謎題上進行訓練并輸出一個答案。
- 無需搜索 —— 只需梯度下降。
盡管存在這些限制,但 CompressARC 還是在訓練集上實現了 34.75% 的準確度,在評估集上實現了 20% 的準確度。
處理時間方面,在 RTX 4070 上,處理每個謎題的時間大約為 20 分鐘。
該團隊表示:「據我們所知,這是首個訓練數據僅限于目標謎題的用于解決 ARC-AGI 的神經方法。」
他們特別指出:CompressARC 的智能并非源自預訓練、龐大的數據集、詳盡的搜索或大規模計算,而是源自壓縮。「對于依賴大量預訓練和數據的傳統,我們發起了挑戰,并展現了一種未來,即經過定制設計的壓縮目標和高效的推理時間計算共同發力,從而可以從最少的輸入中提取出深度智能。」
ARC-AGI 簡介
ARC-AGI 提出于 2019 年,這個 AI 基準的目標是測試系統從少量示例中歸納總結出抽象規則的能力。
該數據集中包含一些類似 IQ 測試的謎題:先展示一些演示底層規則的圖像,然后給出需要補全或應用該規則的測試圖像。下面展示了三個示例:
每個謎題都有一個隱藏規則,可將每個輸入網格映射到每個輸出網格。被測試者將獲得一些輸入映射到輸出的示例,并且有兩次機會(Pass@2)猜測給定輸入網格的輸出網格。
如果任何一個猜測是正確的,那么被測試者將獲得該謎題的 1 分,否則將獲得 0 分。被測試者可以更改輸出網格的大小并選擇每個像素的顏色。
一般來說,人類通常能合理地找到答案,而機器目前還較難解決這個問題。普通人可以解決 76.2% 的訓練集,而人類專家可以解決 98.5%。
有 400 個訓練謎題會比其他謎題更容易,其目的是幫助被測試者學習以下模式:
- Objectness(事物性):事物會持續存在,不會無緣無故地出現或消失。物體能否交互取決于具體情況。
- 目標導向性:事物可以是動態的或靜止的。有些物體是「智能體」—— 它們有意圖并會追求目標。
- 數字和計數:可以使用加法、減法和比較等基本數學運算,根據物體的形狀、外觀或運動對它們進行計數或分類。
- 基本幾何和拓撲:物體可以是矩形、三角形和圓形等形狀,可以執行鏡像、旋轉、平移、變形、組合、重復等操作。可以檢測到距離差異。
ARC Prize 團隊曾多次發起解決 ARC-AGI 的競賽,并提供金錢獎勵。最近的一次競賽涉及高達 100 萬美元的潛在獎金,主要獎金留給了能夠在受限環境中使用 12 小時計算,在 100 個謎題的私有測試集上實現 85% 成功率的方法。
此前,OpenAI 曾宣布 o3 模型在 ARC-AGI 基準可達到 87.5% 的水平,被廣泛認為是重大的歷史性突破
新提出的解決方案
Albert Gu 領導的團隊提出,無損信息壓縮可以作為解決 ARC-AGI 謎題的有效框架。謎題的一個更高效(低比特)壓縮就對應于一個更準確的解。
為了解答 ARC-AGI 謎題,該團隊設計了一個系統,可以將不完整的謎題轉換成完整的(填入答案),方法是尋找一個緊湊的表示,而當對這個表示進行解壓縮時,就會重現有任意解的謎題。這個方法的關鍵難題是在沒有答案作為輸入的前提下獲得這種緊湊的表示。
CompressARC 使用了一個神經網絡作為解碼器。然而,編碼算法卻不是一個神經網絡——相反,編碼是由梯度下降算法實現的,該算法在解碼器上執行推理時間訓練,同時保持正確的解碼輸出。
換句話說,運行該編碼器就意味著優化解碼器的參數和輸入分布,從而獲得經過最大壓縮的謎題表示。
由此得到的優化版參數(例如,權重和輸入分布設置)本身將作為經過壓縮的比特表示,其編碼了謎題與其答案。
如果用標準機器學習術語來描述:(沒有壓縮領域的術語,并進行了一些簡化)
- 從推理時間開始,給出一個要解決的 ARC-AGI 謎題。(比如下圖)
- 構建一個神經網絡 f(參見架構),該網絡是針對該謎題的具體情況(例如,示例數量、觀察到的顏色)設計的。該網絡采用了隨機正態輸入 z~N (μ,Σ),并在所有網格(包括答案網格(3 個輸入輸出示例,總共 6 個網格))輸出每像素顏色的 logit 預測。重要的是,f_θ 等價于與常見的增強手段 —— 例如重新排序輸入輸出對(包括答案對)、顏色排列和空間旋轉 / 反射。
- 初始化網絡權重 θ 并為 z 分布設置參數 μ 和 Σ。
- 聯合優化 θ、μ 和 Σ,以最小化已知網格(其中 5 個)的交叉熵總和,同時忽略答案網格。使用一個 KL 散度懲罰使 N (μ,Σ) 接近 N (0,1),就像在 VAE 中一樣。
- 由于 z 中的隨機性,生成的答案網格是隨機的,因此需要在整個訓練過程中保存答案網格,并選擇最常出現的網格作為最終預測。
為什么這種方法是在執行壓縮?這里看起來并不那么顯而易見。不過該團隊在文章中通過壓縮 ARC-AGI 推導了它,其中涉及信息論、算法信息論、編碼理論和機器學習領域的知識,感興趣的讀者可訪問原文了解。
現在,先試試解決上述謎題。下圖展示了 CompressARC 的解題過程:
訓練完成后,通過解構學習到的 z 分布(詳見原文),可以發現它編碼了顏色方向對應表和行/列分隔符位置!
架構
為了將隱含的 z 解碼為 ARC-AGI 謎題,該團隊設計了自己的神經網絡架構。該架構最重要的特征是它的等變特性 —— 這是一些對稱規則,規定了每當輸入 z 發生變換時,輸出 ARC-AGI 謎題也必須以相同的方式變換。例子包括:
- 重新排序輸入/輸出對
- 改變顏色
- 翻轉、旋轉和網格反射
等變的方式實在太多了,靠人力窮舉實難辦到,所以該團隊決定打造一個完全對稱的基礎架構,并通過添加不對稱層來逐一打破不必要的對稱性,使其具有特定的非等變能力。
什么意思呢?假設 z 和 ARC-AGI 謎題都采用形狀為 [n_examples, n_colors, height, width, 2 for input/output] 的張量形式(這實際上不是數據的格式,但它最能表達這個思路。)然后,網絡開始與示例中的索引(顏色、高度和寬度維度)的排列等變。另外,在權重共享方面必須格外小心,以強制網絡也與交換寬度和高度維度等變。然后,可以添加一個涉及寬度和高度維度的滾動層,讓網絡可區分短距離空間交互,但不區分長距離空間交互。
穿過各層的實際數據(z、隱藏激活和謎題)采用了所謂的「多張量(multitensor)」格式,其中包含各種形狀的張量。所有等變都可被描述成它們對這個多張量的改變。
多張量
目前來說,大多數機器學習框架操作的都是具有恒定秩的單一類型的張量。比如 LLM 操作的是秩為 3 的張量,其形狀為 [n_batch, n_tokens, n_channels],而 CNN 操作的則是秩為 4 的張量,其形狀為 [n_batch, n_channels, height, width]。
而新的多張量則是由多個不同秩構成的張量組成的集合,其維度是一個形狀為 [n_examples, n_colors, n_directions, height, width, n_channels] 的秩為 6 的張量的子集。其中 channel 維度總是會被保留,因此每個多張量最多有 32 個張量。
為了判定張量形狀是否「合法」該團隊還設定了一些規則(詳見原文「其它架構細節」部分)。這樣一來,多張量中張量的數量就減少到了 18 個。
那么,多張量是如何存儲數據的呢?ARC-AGI 謎題可以表示成 [examples, colors, height, width, channel] 張量,其中 channel 維度可用于選擇是輸入還是輸出網格、width/height 維度指定像素位置、color 維度是一個 one hot 向量(指示了該像素的顏色)。[examples,width,channel] 和 [examples,height,channel] 張量可以用于存儲表示每個輸入/輸出網格的每個示例的網格形狀的掩碼。所有這些張量都被包含在單個多張量中,該多張量由該網絡計算,就在最終的線性頭層之前。
當操作多張量時,該團隊默認假設所有非 channel 維度都被視為 batch 維度。除非另有說明,否則將在各個維度索引上執行同樣的操作。這能確保所有對稱性完好,直到使用旨在破壞特定對稱性的某個層。
關于 channel 維度的最后一點說明:通常在談論張量的形狀時,我們甚至不會提及 channel 維度,因為它已被默認包含在內。
完整的架構由以下層組成,對它們的詳細描述見原文附錄:
- 一開始是 z 分布的參數
- 解碼層
- 4 組:多張量通信層(向上)、Softmax 層、方向 Cummax 層、方向移位層、方向通信層、非線性層、多張量通信層(向下)、歸一化層
- 線性頭
結果
那么,CompressARC 的實驗表現如何呢?
首先來看訓練集正確率(Pass@2):34.75%。
驗證集正確率則為 20%。
CompressARC 不能解決哪些問題?
該團隊也詳細分析了 CompressARC 能夠和無法解決的問題。
例如,訓練集中的謎題 28e73c20 需要從邊緣向中間擴展圖案:
考慮到其網絡中的層,CompressARC 通常能夠擴展短距離的圖案,但不能擴展長距離的圖案。因此,它盡力正確地將圖案延伸一小段距離,之后就開始猜測中間是什么:
CompressARC 能夠執行的功能包括:
- 為各個程序分配單獨的顏色
- 填充
- 裁剪
- 用線連接點,包括 45 度對角線
- 相同顏色檢測
- 識別像素鄰接情況
- 為各個示例分配單獨的顏色
- 識別形狀的各個部分
- 短距離平移
CompressARC 無法執行的功能包括:
- 將兩種顏色相互分配給對方
- 多次重復一系列操作
- 計數 / 數字
- 平移、旋轉、反射、縮放、圖像復制
- 檢測拓撲屬性,例如連接性
- 規劃、模擬智能體的行為
- 圖案的長距離擴展
案例展示:為方框上色
這里通過一個案例來展示 CompressARC 的執行情況,更多案例請見附錄。
問題是這樣的:
在訓練過程中,重建誤差下降得非常快。它的平均水平保持在較低水平,但隔一段時間就會急劇上升,導致來自 z 的 KL 在這些時刻上升。
那么,CompressARC 如何學會了解答這個問題呢?為了找到答案,我們先看看 z 中存儲的表示。
由于 z 是一個多張量,它包含的每個張量都會對 z 的總 KL 產生貢獻。通過查看每個張量的貢獻,可以確定 z 中的哪些張量編碼了用于表示謎題的信息。下圖展示了存儲在 z 的每個張量中的信息量,即解碼層使用的 KL 貢獻。
除了四個張量外,所有張量在訓練期間都降至零信息內容。在該實驗的一些重復實驗中,該團隊發現這四個必要張量中的一個降至了零信息內容,并且 CompressARC 通常不會在那之后給出正確答案。
這里展示了一次幸運的運行,其中 (color,direction,channel) 張量幾乎要沒了但在 200 步時被拉起來了,這時模型中的樣本開始在正確的方框中顯示正確的顏色。
為了了解 z 中存儲了哪些信息,可以查看與 z 的各個張量相對應的解碼層的平均輸出。每個張量包含一個維度為 n_channels 的向量,用于該張量的各種索引。對這些向量進行主成分分析(PCA)可以揭示一些激活分量,能讓我們知道該張量編碼了多少信息。
該團隊還在原文中分享了更多細節,并給出了進一步的提升空間,感興趣的讀者請訪問原文。
對于這項「壓縮即智能」的實驗研究成果,你有什么看法呢?