百億、千億級參數的基礎模型之后,我們正在步入以數據為中心的時代?
近年來,GPT-3、CLIP、DALL-E 、Imagen、Stabile Diffusion 等基礎模型的出現令人驚嘆。這些模型展現出的強大生成能力和情境學習能力,在幾年前都是難以想象的。本文將探討這些大規模技術的商業化。這些模型如今不只是行業巨頭主宰的領地,其價值越來越體現在對這一領域和關鍵問題的描述中,而其核心即數據。基礎模型迅速發展產生的影響尚無定論,所以很多內容是基于推測。
prompt: "taco cat"(不要太當真)
從機器學習的角度來看,任務的概念是絕對的基礎 —— 我們創建訓練數據來指定任務,并通過訓練泛化。因此,幾十年來,業界一直有兩類主要看法:
- 「無用輸入,無用輸出」,即向模型輸入的數據 / 特征信息決定模型成敗。
- 「太多參數會導致過度擬合」,近 20 余年來,通用、稀疏模型的開發大行其道。普遍觀念認為稀疏模型參數較少,有助于降低過擬合,因而可以更好地進行泛化。
這些觀點總體來說很有道理,但也存在一定的誤導性。
基礎模型正在改變我們對任務的理解,因為它可以基于廣泛的數據訓練且用于多種任務。即使有些用戶對自己的目標任務理解并不清晰,也可以便捷地應用這些模型而不必進行特定的訓練。這些模型可以用自然語言或一個接口來控制,領域專家借此推動模型的使用,同時希望馬上在新環境中體驗各種神奇功能。在這個探索過程中,用戶第一步并不是策劃特定的訓練數據集,而是玩味、構想,迅速迭代他們的想法。有了基礎模型,我們就想進一步了解其如何遷移到一系列任務上,包括好些我們尚未預想到的任務。
為了在下一波人工智能發展浪潮獲益,我們或許需要重新審視以往主流觀點的局限性(和智慧)。在這篇文章中,我們將由此開始,探討在基礎模型中能看到何種變化,最后將討論我們如何看待基礎模型與傳統方法相適應。
無用輸入,無用輸出——就這?
無任務基礎模型正在爆炸式發展,到目前為止,很多都是關于模型架構和工程的,但這些模型相融合的跡象也開始顯露。數據成為基礎以及用以區分的根本點,這方面有先例嗎?我們已經見識了在監督機器學習中,以模型為中心和以數據為中心兩種方法之間來回搖擺的狀態。
在 2010 年代后半段的一系列項目中,特征質量是關鍵。在舊模型中,特征是編碼領域知識的工具。這些特征不太穩定,處理的從業者需要掌握關于如何表征這些信息以獲得更穩定和可靠的預測的低層次細節。
深度學習之所以成功,是因為人們在這些方面的表現很差。深度學習革命正如火如荼,arXiv 上的新模型層出不窮,實為震撼。這些模型沿用之前的手動操作,如特征工程,并將其完全自動化。模型非常優秀,能通過深度學習將文本和圖像等原始數據成功特征化。這是生產力的極大提升。然而,這些模型并不完美,對這一領域的不斷認識依然重要。那么,如何將其融入模型呢?
我們可以看到,用戶以訓練數據為載體,高效輸入信息、解釋應用程序并與模型交互。這一切發生在「黑暗」中,沒有工具、理論也沒有摘要。我們認為,用戶應該能夠對自己的數據進行一些基本的編程抽象,因此 Snorkel 項目誕生了(然后是公司)。在知識層面,我們由此進入了以數據為中心的 AI 和弱監督時代。我們可以從中吸取兩個重要教訓:
- 一旦某項技術穩定下來,其價值指向就會回到數據上。在這種情況下,隨著 TensorFlow、PyTorch、MXNet、Theano 等技術的出現,深度學習技術開始商業化,但對特定問題的描述沒有給出廣泛的數據分布、任務規范等。因此,成功與否取決于如何將相關信息引入模型;
- 我們可以(也需要)處理噪聲。基礎的數學和工程原則上有助于噪聲處理。用戶很難在訓練數據中完美地表達他們的知識,不同數據源的質量可能也不盡相同。在研究弱監督的基本理論時,我們發現模型可以從含噪數據中學到很多(并非所有無用數據都不好)。也就是說,要避免輸入無用信息 —— 但也不必對數據太過吹毛求疵。
prompt: "noisy image". 有沒有從含噪圖像中看到什么有意思的東西?
簡單來說,數據將你的問題和分析編碼 —— 就算技術商品化,數據的價值依然存在。所以,不是說無用信息很好,而是不要把這個區別過于絕對化。數據有用或無用,在于是否以最有效的方式對其開發利用。
基礎模型基于大量數據進行訓練,廣泛應用于各種任務,給數據管理帶來全新挑戰。隨著模型 / 架構不斷商品化,我們需要了解如何高效管理海量數據以保證模型用途的普遍性。
太多參數會導致過擬合?
為什么我們會看到神奇的上下文特征?建模選擇(架構和算法)如何促成了這一點?大型語言模型的神奇特征來自神秘的模型配置嗎?
大約十年前,粗略的機器學習泛化理論認為,如果一個模型過于簡約(即無法擬合太多虛假特征),那么它就會泛化。人們對此可能有更精準的描述,這些都是諸如 VC dimension、Rademacher 復雜度等理論領域的主要成就。在這個過程中,我們發現似乎少量參數對于泛化也是必要的。但事實并非如此,過參數化是一個主要問題,不過現在我們有大模型作為反例:這些大模型(參數多于數據點)可以擬合各種繁雜到讓人頭大的函數,但它們仍然是泛化的(即使使用隨機標簽)。
關于過參數化的觀點對我們存在誤導性,最近有見解開辟了新方向。我們看到這些大模型中出現了一些神奇特征,但時下的流行觀念認為,只有某些經機器訓練的特定架構促成了這些特征,而這些特定架構很少有人能接觸到。我們和其他研究工作的一個方向是嘗試以簡單、經典的模型來執行這些神奇的特征。我們最近的狀態空間模型基于幾十年的信號處理成果(因此可擬合經典模型),展現出一定的上下文能力。
更令人驚喜的是,即便是經典的 BERT 雙向模型也具有上下文能力!相信還有很多人在撰寫相關論文,可以發給我們,我們會認真閱讀并加以引用。我們認為,上下文學習的神奇特征就在我們身邊,而且宇宙比我們所理解的更為神奇。或者更冷靜地看,也許人類只是在理解條件概率方面不盡如人意。
在大模型框架下,事情似乎都運行良好。基礎模型的神奇特征看起來穩定且可商業化,數據被視為其中造成差異化的點。
現在可能就是以數據為中心的基礎模型時代了?
我們是否在重復以數據為中心的監督學習轉變?換言之,模型和工程是否在商品化?
商品化模型和開源信息的興起。我們看到基礎模型正在商品化并投入應用 —— 嗯,感覺很「深度學習」。對我們而言,模型商品化的最大證據即其可用率。主要有兩種影響力量:人們有需求(穩定等),大公司可利用。開源興起并不是出于業余愛好者的興趣,而是大型公司和政府之外的其他公司斷定他們需要這種東西(參見 Python 的崛起)。
等待最新的的超級公司推出全新超大模型?
最大的差異來自哪里?數據!這些工具越來越容易獲取,但其實基礎模型不一定立即可用。那將如何處理如何部署?坐等新的超級公司推出全新超大模型?這可以說是一個辦法!但我們稱之為虛無主義!這個模型會否開源,很難說 —— 那么,那些無法發送到 API 的私有數據上的基礎模型應用程序又會如何?模型會不會有 100 萬億個參數 —— 多少用戶可以訪問和使用?模型的訓練內容是什么?模型主要基于公共數據進行訓練……
所以幾乎不能保證,它會知道你關心什么?你會如何維護基礎模型的神奇特征,讓其為你所用?有效管理基礎模型數據(數據至關重要!)和在測試時充分利用偉大的開源模型(在測試時調整輸入和上下文數據至關重要!)都很有必要:
數據管理和以數據為中心的標度律?預測:更智能的數據集收集方法能造就小而美的模型。那些讓我們大開眼界的標度律論文值得關注:比如最初研究標度律的 OpenAI 以及 DeepMind 的 Chinchilla。雖然我們有默認的參考架構(transforms),但 token 的數量一定程度上代表了數據的信息內容。經驗告訴我們,數據在主題和質量上千差萬別。我們預感,真正重要的應該是有重疊和階次的實際信息位 —— 像熵這樣的信息理論概念或能推動大小基礎模型進化。
測試時的信息輸入和計算。基礎模型不一定立即可用,但以新的方式進行測試時計算會大為不同。考慮到使用封閉源代碼模型 API 的成本且缺乏隱私性,我們近期推出了一個開放源代碼基礎模型,該模型的參數再小 30 倍,通過在測試時高效使用小模型,可以在規范基準層面擊敗 OpenAI 的封閉源代碼模型 —— 該方法被稱為 Ask Me Anything(AMA)Prompting。在測試時,用戶通過 prompt 或對其感興趣任務的自然語言描述來控制基礎模型,prompt 設計會對性能產生巨大影響。準確獲取 prompt 這件事復雜而艱巨,因此 AMA 建議使用一系列不同質量的含噪 prompt,通過統計理論來應對噪聲問題。AMA 的靈感來源很多:Maieutic Prompting、Reframing GPT-k、AI chain 等等!關鍵是我們可以用新的方式在測試時間進行計算 —— 不必只對模型進行一次 prompt!這不僅關乎訓練時的數據管理,還涉及在測試時調整輸入和上下文數據。
prompt: "really small AI model"
從 AMA 中我們看到,小模型已經具備了匹配多種任務的卓越推理能力,而大模型的關鍵價值似乎在于記憶事實數據。小模型在事實方面表現欠佳,那么我們該如何引入數據和信息來解決這個問題?奇怪的是,我們用 SGD 將事實存儲在神經網絡中,將其轉換為模糊的浮點值…… 與 DRAM 支持的鍵值存儲相比,抽象的效率似乎要低得多。但是,從 AMA 的結果來看,小模型和大模型之間的差異在時間變化或域專門化的事實方面要小得多…… 我們在蘋果構建自監督模型時,要能夠編輯我們返回的事實(出于商業原因),同時需要擬合運行服務的其他軟件工具。所以讓模型調用索引非常重要。時間會證明,以上是否構成使用這類模型的充分理由。
這將把我們引向何方?基礎模型與傳統方法并駕齊驅。假設以數據為中心的模型在探索和部署兩端均有進展,對于快速迭代和任務無關的工作流程 —— 探索階段,我們通過數據管理 / 測試時間策略使得現成的通用基礎模型更為有用高效。離開探索階段的用戶會帶著更清晰任務定義,使用以數據為中心的 AI 并管理訓練數據(你自己的數據很重要),以 Snorkel 的方式通過利用和組合多個 prompt 和 / 或基礎模型來訓練更小、更快的「專有」模型。這些模型可以在實際生產環境中部署,而且在特定任務和特定數據方面更加準確!或者還可以利用基礎模型來改進弱監督技術 —— 一些實驗室和 Snorkel 成員還為此獲了 UAI 獎。
歸根結底,數據關乎模型的最終投產。數據是唯一沒有商品化的東西。我們仍然認為,Snorkel 對數據的看法是未來的發展方向 —— 你需要編程抽象,一種通過表達、組合和反復糾正不同數據源和監督信號的方法,為最終任務訓練可部署模型的方法。