前言
相信每個 NLPer 心中都有對 Reasoning 的一片期冀。
當初筆者進入 NLP 的大門,就是相信:由于語言強大的表達能力以及語言模型強大的建模能力,Reasoning 一定就在不久的將來!可惜實際情況卻是......
直到我看到了 Yoshua Bengio 最近反復強調的 System 2 的概念,又重新燃起了心中的希望!
System 2 主要針對深度學習系統的 Reasoning 能力以及系統泛化(Systematic Generalization)等等。其中一個很重要的點是:sparse factor graph in space of high-level semantic variables. 結合 QA 的例子以及我淺薄的理解,這里做一些簡單的解釋:
factor graph : 從 Q 到 A 的機理,往往不是 Q -> A 這么簡單,實際人類在建模 QA 的時候,會在這條路徑上增添很多很多的輔助狀態以及相應的運作機理,例如 Causal Inference 中常說的 SCM (Structural Causal Model)
sparse : from attention to conscious processing. 人類不會同時關注所有的狀態(變量),而只會關注其中一些比較重要的或者相關的狀態。通過這種主動的稀疏選擇,在面對 distribution change 的時候,能夠迅速更換另外的狀態和運作機理進行適應(adaptation).
high-level semantic variables : 這些狀態的表達,一般是一個高階的語義變量。
在今天這篇推文里,我們主要討論如何用語言模型(LM)實現這件事情。
那現在就以 Google Research 等的新文章 “Language Model Cascades” 開始,聊一聊 A Path Towards Universal Reasoning Systems.
總的來說,這篇文章是個 Proposal 性質的文章,核心論點是:利用概率編程語言,重復地提示(prompt)或調整單個或多個互相關聯的語言模型,以進行復雜的多步推理。
這樣,基于一個端到端的學習目標,就能夠使用一個通用過程進行系列模型的 inference, 參數調整或者 prompt 選擇。
還是用 QA 的例子,一般的 QA 是這樣的:
我們有兩種方式去做這件事情(假設數據集為 ):
few-shot prompting (aka. in-context learning) : ,即將小樣本集作為輸入的上下文拼接在輸入的前面,而不去調整模型參數,常用于 GPT-3 等模型;
fine-tune : tuned on ,即使用訓練集調整模型參數。
然后,我們定義語言模型級聯(LM Cascades): 以從語言模型采樣出的字符串為隨機變量取值的一系列相互關聯的概率程序。
string-valued : 例如 P(A='老鼠'|Q='貓喜歡吃什么')
相互關聯的概率程序:可以簡單地理解為圖形式的模型鏈條,詳見下文。
成功的例子
Scratchpads & Chain of Thought
這類模型的 Cascades 如上圖所示,總的來說是一種 Question-Thought-Answer 的結構:
理想情況下的概率建模為:
但在實際場景下, 通常我們只有一個 small set 由完整的 三元組組成, 以及一個 large set 由 對組成。因為缺乏完全的監督數據,我們只能通過先驗預測分布 去建模:
Scratchpad[1] 和 Chain-of-Thought[2] 兩種模型所做的事情,本質上是建模這個先驗預測分布(prior predictive distribution):
scratchpad : 通過精調 (finetuning) 去做。
chain of thought : 將 作為 prompt, 即通過 few-shot prompting 去做。
多說一句:在全部的 上面進行求和顯然不現實,通常采用的方式是:使用 beam search 估計 ,然后在此之上進行求和。
Semi-Supervised Learning
仍然是 Question-Thought-Answer 的結構,但在半監督學習的設定下,我們是為 中的 Q-A 對新增一些未知隱變量 去解決。這樣就變成了一個比較典型的變分推斷問題。
這類方法比較典型的工作是:Self-Taught Reasoner (STaR) [3],該模型使用 EM 算法進行優化:
-步: 首先在 上精調模型,然后對于 , 通過在 上的拒絕采樣估計未知量 . 直到找到能夠導致正確回答 的 . (如果找不到, 就從 采樣) (這種方式也稱為 :“rationale generation with rationalization”).
-步: 基于所估計的 上的 , 再次精調模型更新參數。
Selection-Inference
這類方法[4]將推理過程分為兩個部分:
選擇:給定問題 , 從事件集合 中選擇相關子集;
推斷:給定事件子集,推測新的事件集合。
Verifiers
這類方法[5]新增了一些驗證器 ,來判斷 Thought 或者 Answer 是否合理有效(valid):
where
Tool-use
上面這些方法僅僅是 Language Model 的控制流,沒有外部的反饋(external feedback).
在 Cascades 的框架下,我們可以非常方便的引入外部工具,以進行額外的知識補充,比如:
calculator : Training verifiers to solve math word problems (https://arxiv.org/abs/2110.14168).
web : WebGPT: Browser-assisted question-answering with human feedback (https://openai.com/blog/webgpt/).
simulation : The frontier of simulation-based inference (https://www.pnas.org/doi/10.1073/pnas.1912789117)
Twenty Questions
再舉一個交互式問答的例子,如上圖,是 Big-Bench [6] 中的一個任務:兩個 agent, 分別叫做 Alice (A) 和 Bob (B). 在給定的游戲規則下,兩個 agent 進行語言交流,A 描述一個概念,B 去猜,然后 A 回答是或不是,直到 B 猜出來。
這樣一個過程也能很容易地歸結到 Cascades 的框架中去。
未來
回到最初的問題,Sparse Factor Graph 以及 High-Level Semantic Variables. 我們可以先拋棄掉 Causal Mechanism 等復雜的問題,先只去考慮這種簡單的 Cascading Mechanism.
筆者一直覺得,只用一個模型 One-For-All 肯定是行不通的:雖然我們有 Gato [7] 等所謂的 Generalist Agent,我們也很難 claim 這些模型有 Human-level 的 Out-of-Distribution 的泛化能力,或者 Systematic Generalization. 這也符合 No-Free-Lunch Theorem 一直以來告訴我們的事情。這是第一點。
第二點是,對于 Universal Reasoning 而言,本質的問題并不是如何 encode 盡可能多的知識到單個模型當中,而是:How to re-use pieces of knowledge.
那么基于這兩點,就涉及到一個模塊化的問題:我們能不能定義一些模塊化的知識以及這些模塊之間的交互方式,來實現更加本質的 Reasoning (參考:Is a Modular Architecture Enough? [8])
LM Cascades 就是這個思想的一個很好的嘗試:不同的語言模型對應著不同功能的知識模塊,然后通過人為定義的交互 Graph 來執行特定的任務。這么做的好處至少是:
端到端的模塊化:以一種端到端的方式,做到了不同語言模型,根據其所執行的不同功能,進行專門的精調優化(finetuning)或者提示優化(prompting)。
sparse factor graph : 以一種人為定義的方式,指定了任務內在的知識結構,比如將 Q->A 分解為 Q->T->A 等。這也是近期各種 Chain-of-Thoughts 相關工作令人興奮的點,例如 AI Chains [9] 等。這種知識結構是稀疏的,因為我們人為定義了某個 LM 是基于哪個特定的 LM,而不是全部 LM.
high-level semantic variables : 語言的表達能力是極大的,因此,以 language 作為 variable value 的一個圖結構,具有非常強大的對于實際問題的建模能力。當然,language 只是一個選擇,high-layer hidden states 也是一個(可能更好的)選擇。
當然,不只有語言模型可以級聯,多模態模型也能夠級聯:比如同樣來自 Google 的 Socratic Models [10], 就級聯了三個模態(語言-視覺-音頻)的語言模型,達到了很好的零樣本多模態推理能力。
因此,筆者相信 LM Cascades 體現出了 Reasoning System 的未來:(1)模塊化、(2)稀疏化、(3)結構化。
這樣一個系統,以語言為媒介,最好可以通過一種端到端的方式去進行優化。從這個角度看,這個 Proposal 還有很多需要探索的點,例如:
既然“端到端+手工Cascading“可以同時做到這三點,那么有沒有什么辦法,把 Cascading 也納入到端到端的過程中呢(即以一種自動或者可微的方式進行),以找到一種稀疏的條件結構?
有沒有什么更好的模塊化機制?
推理速度...
等等。
-
建模
+關注
關注
1文章
307瀏覽量
60776 -
編程語言
+關注
關注
10文章
1945瀏覽量
34750 -
語言模型
+關注
關注
0文章
525瀏覽量
10277
原文標題:谷歌:級聯語言模型是通用推理系統的未來
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論