推動(dòng)大模型自我進(jìn)化,北理工推出「流星雨計(jì)劃」
在人類個(gè)體能力提升過(guò)程中,當(dāng)其具備了基本的技能之后,會(huì)自主地與環(huán)境和自身頻繁交互,并從中獲取經(jīng)驗(yàn)予以改進(jìn)。大模型自我進(jìn)化研究之所以重要,正是源于該思想,并且更傾向于探究大模型自身能力的深度挖掘和擴(kuò)展?;谶@一趨勢(shì),北京理工大學(xué) DIRECT LAB 正式啟動(dòng)了「大模型自我進(jìn)化」的流星雨研究計(jì)劃。這篇文章以代碼大模型和垂域大模型進(jìn)化為例,逐步介紹流星雨計(jì)劃。
SRA-MCTS:推動(dòng)代碼大模型自我進(jìn)化
- 論文標(biāo)題:SRA-MCTS: Self-driven Reasoning Augmentation with Monte Carlo Tree Search for Code Generation
- 論文地址:https://arxiv.org/pdf/2411.11053
- 代碼開(kāi)源:https://github.com/DIRECT-BIT/SRA-MCTS
- 8B 模型的數(shù)據(jù)開(kāi)源:https://huggingface.co/datasets/BinXD/SRA-MCTS-Llama-3.1-8B
代碼大模型應(yīng)用范圍廣、影響大,如何提升其表現(xiàn),一直備受業(yè)內(nèi)外關(guān)注。在一項(xiàng)最新的研究中,來(lái)自北京理工大學(xué)的研究者提出了一種全新的思路 ——SRA-MCTS,旨在通過(guò)自我進(jìn)化的方式,解決代碼模型在處理復(fù)雜問(wèn)題時(shí)缺少中間推理過(guò)程。
核心觀點(diǎn):自我進(jìn)化的力量
跟隨上述自我進(jìn)化的思想,在 SRA-MCTS(Self-guided MCTS-based data generation for Reasoning Augmentation)方法中,作者無(wú)需借助額外的任何監(jiān)督信號(hào)、完全通過(guò)模型自身來(lái)進(jìn)行推理路徑生成,并進(jìn)一步迭代大模型的能力。通過(guò)這個(gè)過(guò)程,模型能夠自主地生成高質(zhì)量的推理路徑,并將這些路徑轉(zhuǎn)化為可執(zhí)行代碼,進(jìn)而提升在復(fù)雜任務(wù)上的成功率。
整個(gè)過(guò)程不僅增強(qiáng)了模型的推理能力,還通過(guò)自我反饋和反思提升了解決復(fù)雜任務(wù)的成功率。實(shí)驗(yàn)表明,即使在小規(guī)模模型中,SRA-MCTS 也能顯著提升任務(wù)處理能力,特別是在多樣性和解決復(fù)雜問(wèn)題的能力上。
突出貢獻(xiàn)與顯著成就:
- 無(wú)需外部監(jiān)督:與傳統(tǒng)方法不同,SRA-MCTS 完全依賴模型自身的推理能力進(jìn)行數(shù)據(jù)生成和訓(xùn)練,避免了對(duì)人工標(biāo)注數(shù)據(jù)或額外監(jiān)督信號(hào)的依賴。
- 自我進(jìn)化與持續(xù)提升:通過(guò)反復(fù)生成推理路徑并進(jìn)行自我訓(xùn)練,模型形成了一個(gè)正向反饋循環(huán),實(shí)現(xiàn)了性能的持續(xù)提升,尤其在較小模型中也展現(xiàn)出強(qiáng)大的潛力。
- 提升復(fù)雜任務(wù)解決能力:文中的方法在多種規(guī)模的模型上均展現(xiàn)出了顯著的性能提升,特別是在解決需要分析的任務(wù)時(shí),SRA-MCTS 顯著提高了成功率。
- 驗(yàn)證了小模型自我合成的潛力:實(shí)驗(yàn)分別在小模型(2B, 8B, 14B)上自我數(shù)據(jù)合成并進(jìn)行訓(xùn)練,對(duì)比了 70B 模型的數(shù)據(jù)蒸餾結(jié)果。結(jié)果表明,小模型自我合成的數(shù)據(jù)訓(xùn)練結(jié)果可以超越大模型數(shù)據(jù)蒸餾的能力。
工作思想與實(shí)現(xiàn)方式
該方法核心在于將推理過(guò)程和數(shù)據(jù)生成緊密結(jié)合,通過(guò) SRA-MCTS 引導(dǎo)模型自主生成推理路徑。這不僅穩(wěn)定了分析的準(zhǔn)確性下限,還為模型提供了一個(gè)無(wú)需外部監(jiān)督的自我改進(jìn)機(jī)制。實(shí)驗(yàn)結(jié)果表明,即使在傳統(tǒng)的思維鏈(CoT)方法表現(xiàn)退化時(shí),SRA-MCTS 依然能夠穩(wěn)定并有效地提升模型的性能,尤其在「pass@10」等多樣性指標(biāo)上表現(xiàn)出色。
1. 數(shù)據(jù)合成 - SRA-MCTS:
- 選擇階段:使用 UCB1 公式,從推理樹(shù)中選擇最優(yōu)節(jié)點(diǎn),作為推理的起點(diǎn)。
- 擴(kuò)展階段:基于選擇的節(jié)點(diǎn),生成新的推理步驟,形成新的推理計(jì)劃。
- 評(píng)估與反思階段:評(píng)估每個(gè)生成的推理步驟的質(zhì)量,并通過(guò)反思機(jī)制修正推理過(guò)程,確保其正確性與連貫性。
- 反向傳播階段:通過(guò)反饋機(jī)制調(diào)整生成過(guò)程,強(qiáng)化推理路徑的質(zhì)量。
下面的示例展示了中間推理步驟,以及基于推理所生成的代碼過(guò)程:
問(wèn)題:請(qǐng)幫我寫(xiě)一段拓?fù)渑判虻拇a。
思考過(guò)程:拓?fù)渑判蚴轻槍?duì)有向無(wú)環(huán)圖(DAG)的一種排序算法,它將圖中的節(jié)點(diǎn)按照某種順序排列,使得對(duì)于每一條有向邊 (u, v),節(jié)點(diǎn) u 在節(jié)點(diǎn) v 之前出現(xiàn)。常見(jiàn)的拓?fù)渑判蛩惴ㄓ袃煞N:Kahn 算法和深度優(yōu)先搜索(DFS)算法。這里作者選擇使用 Kahn 算法來(lái)實(shí)現(xiàn),因?yàn)樗庇^且容易理解。
Kahn 算法的基本思想是:
找出所有入度為 0 的節(jié)點(diǎn),將它們加入隊(duì)列。從隊(duì)列中取出一個(gè)節(jié)點(diǎn),將其加入拓?fù)渑判蚪Y(jié)果中。對(duì)于該節(jié)點(diǎn)的所有鄰接節(jié)點(diǎn),減少其入度。如果某個(gè)鄰接節(jié)點(diǎn)的入度變?yōu)?0,則將其加入隊(duì)列。重復(fù)步驟 2 和 3,直到隊(duì)列為空。如果最終拓?fù)渑判虻慕Y(jié)果中包含所有節(jié)點(diǎn),則說(shuō)明圖是 DAG;否則,圖中存在環(huán)。
? 找出所有入度為 0 的節(jié)點(diǎn),將它們加入隊(duì)列。
? 從隊(duì)列中取出一個(gè)節(jié)點(diǎn),將其加入拓?fù)渑判蚪Y(jié)果中。
? 對(duì)于該節(jié)點(diǎn)的所有鄰接節(jié)點(diǎn),減少其入度。如果某個(gè)鄰接節(jié)點(diǎn)的入度變?yōu)?0,則將其加入隊(duì)列。
? 重復(fù)步驟 2 和 3,直到隊(duì)列為空。
? 如果最終拓?fù)渑判虻慕Y(jié)果中包含所有節(jié)點(diǎn),則說(shuō)明圖是 DAG;否則,圖中存在環(huán)。
from collections import deque, defaultdict
def topological_sort(graph):
# Step 1: 計(jì)算每個(gè)節(jié)點(diǎn)的入度
in_degree = {node: 0 for node in graph}
for node in graph:
for neighbor in graph[node]:
in_degree[neighbor] += 1
# Step 2: 將所有入度為 0 的節(jié)點(diǎn)加入隊(duì)列
queue = deque([node for node in in_degree if in_degree[node] == 0])
# Step 3: 初始化結(jié)果列表
topo_order = []
# Step 4: 處理隊(duì)列中的節(jié)點(diǎn)
while queue:
node = queue.popleft()
topo_order.append(node)
# 更新鄰接節(jié)點(diǎn)的入度
for neighbor in graph[node]:
in_degree[neighbor] -= 1
if in_degree[neighbor] == 0:
queue.append(neighbor)
# Step 5: 檢查是否存在環(huán)
if len(topo_order) == len(graph):
return topo_order
else:
raise ValueError("Graph contains a cycle, topological sorting is not possible.")
- 推理轉(zhuǎn)化為代碼:在數(shù)據(jù)合成的階段生成的自然語(yǔ)言推理步驟,經(jīng)過(guò)大模型轉(zhuǎn)化為具體的代碼,實(shí)現(xiàn)從推理到執(zhí)行的轉(zhuǎn)化。
- 訓(xùn)練階段:最終,生成的推理路徑和代碼會(huì)被結(jié)合起來(lái),形成一個(gè)高質(zhì)量的訓(xùn)練數(shù)據(jù)集,用于進(jìn)一步微調(diào)大語(yǔ)言模型。
上面的工作是代碼模型的自主推理能力。作者表示,他們期待探究更通用化的自我進(jìn)化框架和方法,使其在各種場(chǎng)景中都可以被廣泛使用。
流星雨計(jì)劃
- 論文:https://arxiv.org/abs/2411.11933
- Github 鏈接:https://github.com/DIRECT-BIT/METEOR
該計(jì)劃提出一個(gè)由弱到強(qiáng)的進(jìn)化框架來(lái)引導(dǎo)大模型自我進(jìn)化的整體流程,方法如下圖所示:
該流程提供了一整套從無(wú)領(lǐng)域能力進(jìn)化成領(lǐng)域?qū)<夷P偷淖晕疫M(jìn)化訓(xùn)練方案,包含三個(gè)關(guān)鍵階段:
- 第一階段:導(dǎo)師監(jiān)督學(xué)習(xí),旨在賦予模型基本的領(lǐng)域知識(shí),讓模型能夠完成領(lǐng)域任務(wù);
- 第二階段:自我評(píng)估能力習(xí)得,通過(guò)借助通用大模型的指導(dǎo),進(jìn)一步迭代訓(xùn)練學(xué)習(xí),賦予模型自我評(píng)判的能力;
- 第三階段:自我提升訓(xùn)練,通過(guò)自我批判完成自我進(jìn)化。
第一階段:導(dǎo)師監(jiān)督學(xué)習(xí)
知識(shí)蒸餾是一種有效的獲取領(lǐng)域知識(shí)的手段。然而作者發(fā)現(xiàn),強(qiáng)模型與弱模型之間存在認(rèn)知偏差,導(dǎo)致從強(qiáng)模型中蒸餾下來(lái)的領(lǐng)域數(shù)據(jù)無(wú)法高效作用于弱模型。
作者提出了 weak-to-strong 的領(lǐng)域數(shù)據(jù)蒸餾方法,讓強(qiáng)模型根據(jù)弱模型的指導(dǎo)蒸餾領(lǐng)域數(shù)據(jù)。具體的,當(dāng)有一個(gè)領(lǐng)域問(wèn)題時(shí),他們首先將該問(wèn)題輸入弱模型,但不讓其直接生成答案,而是生成一段 guideline。這段 guideline 指示弱模型認(rèn)為應(yīng)該遵循哪些步驟來(lái)回答領(lǐng)域問(wèn)題。接下來(lái),他們將生成的 guideline 與領(lǐng)域問(wèn)題一起輸入強(qiáng)模型。強(qiáng)模型根據(jù) guideline 的指導(dǎo)步驟生成領(lǐng)域問(wèn)題的答案,或在 guideline 的基礎(chǔ)上進(jìn)行修正并生成答案。
第二階段:自我評(píng)估能力習(xí)得
經(jīng)過(guò)蒸餾后的領(lǐng)域數(shù)據(jù)訓(xùn)練的模型能夠完成一定的領(lǐng)域任務(wù),但經(jīng)過(guò)分析,該模型還可能產(chǎn)生大量錯(cuò)誤信息或幻覺(jué)信息,并且無(wú)法進(jìn)行自我糾正。因此,作者提出要在這一階段通過(guò)更強(qiáng)模型的反饋來(lái)糾正模型內(nèi)部的錯(cuò)誤知識(shí),進(jìn)一步提升模型領(lǐng)域性能。
他們參考 StaR [1] 迭代式訓(xùn)練的方法,讓模型首先對(duì)領(lǐng)域問(wèn)題進(jìn)行作答,并由 GPT-4 給予答案反饋。如果模型的答案是錯(cuò)誤的,GPT-4 會(huì)將修改建議連同前一輪的答案重新返回給模型,讓模型重新作答,直至模型產(chǎn)生正確的答案。整個(gè)過(guò)程的數(shù)據(jù)會(huì)被保存下來(lái)迭代式地訓(xùn)練模型,使得模型的領(lǐng)域能力不斷提升。
第三階段:自我提升訓(xùn)練
作者希望模型在最終的領(lǐng)域能力進(jìn)化過(guò)程中能夠擺脫對(duì)強(qiáng)模型的依賴,實(shí)現(xiàn)完全的領(lǐng)域能力自我進(jìn)化。因此,在模型具有完成自我批判的能力后,他們嘗試讓模型進(jìn)行自我進(jìn)化。
受到在推理過(guò)程中增加 FLOPs 可以有效提升模型在下游任務(wù)中的性能的啟發(fā),他們認(rèn)為不同的推理策略會(huì)產(chǎn)生不同的效果。他們希望模型生成的結(jié)果盡可能接近高 FLOPs 推理策略的結(jié)果,遠(yuǎn)離低 FLOPs 策略的結(jié)果。他們使用 beam search 作為高 FLOPs 策略,greedy search 作為低 FLOPs 策略,通過(guò)對(duì)比學(xué)習(xí)構(gòu)建模型的自我訓(xùn)練方法,實(shí)現(xiàn)模型的自我進(jìn)化。
性能分析
作者對(duì)比了應(yīng)用 Meteor 進(jìn)化方法后 LLM 前后各維度的性能變化。在準(zhǔn)確性、完整性、相關(guān)性、連貫性和可靠性方面,LLaMA3-8B-Instruct 和 Qwen2-7B-Instruct 取得了性能的提升(評(píng)估方法:通過(guò) GPT-4 篩選進(jìn)化前和進(jìn)化后答案的 win rate)。
未來(lái)工作
該工作初步探索和嘗試了模型進(jìn)化的整體框架和每個(gè)階段的對(duì)應(yīng)方法,并有了一些初步的結(jié)論。未來(lái),作者將在該想法的基礎(chǔ)上,在每個(gè)階段中創(chuàng)新更適用的模型自我進(jìn)化方法,實(shí)現(xiàn)模型在各個(gè)階段都能獲得預(yù)期的性能提升,并在更多不同的場(chǎng)景中探索 Meteor 的適用性,推廣流星雨計(jì)劃。
作者表示,DIRECT LAB 期待與更多對(duì)大模型進(jìn)化感興趣的學(xué)者和業(yè)界同仁攜手合作,共同推進(jìn)這一重要領(lǐng)域的探索與突破。實(shí)驗(yàn)室相關(guān)研究的代碼和數(shù)據(jù)已公開(kāi),歡迎大家訪問(wèn):https://github.com/DIRECT-BIT