OpenAI-o1思考替代法火了!焦劍濤高徒一作提出思考偏好優化

OpenAI-o1替代品來了,大模型能根據任務複雜度進行不同時間的思考。

不限於推理性的邏輯或數學任務,一般問答也能思考的那種。

最近暢銷書《Python機器學習》作者Sebastian Raschka推薦了一項新研究,被網友們齊刷刷碼住了。

論文一作爲華人學者Tianhao Wu,導師之一是2011年清華特獎得主焦劍濤。

團隊提出了一種稱作思考偏好優化(Thought Preference Optimization)的方法,能讓模型像OpenAI-o1一樣,通過內部“思考”輸出更好答案,最終只顯示結果,不展示思考過程。

TPO將思維鏈式提示/推理融入訓練中:

在回答之前,用思維鏈式方法進行思考;使用一個LLM評判來評估響應(不包括由LLM生成的想法);根據被拒絕和優選的響應形成偏好對進行DPO(包括這些響應中的想法)。

基於Llama 3 8B Instruct的結果表明,TPO效果相當好。

有意思的是,如果添加了思維提示,但Llama 3 8B Instruct基礎模型沒有在偏好對上經歷DPO微調,那麼這個基礎模型的性能會比沒有思維提示時差得多。

在指令數據(直接響應基線)上對模型進行微調(無需思考提示)就能顯著提升基模型的性能。

進一步加入TPO,在AlpacaEval、Arena-Hard基準測試中,性能比基線再提升約4%。

網友紛紛表示這項研究很有意思,簡單而又實用。

所以,TPO到底長啥樣?

TPO的基本思路就是讓模型在給出最終回答前先生成“思考”過程,且思考過程對用戶不可見,僅作爲模型內部計算過程,然後通過迭代優化來提升思考的質量,無需額外的人工標註數據。

具體來說,它的實現過程始於一個經過指令微調的基礎語言模型,首先通過提示詞引導模型生成包含思考過程和最終回答兩個部分的輸出。

這個提示詞可以是通用型的,簡單要求模型寫下思考過程;也可以是具體型的,明確要求模型先寫出草稿回答並進行評估。

對於每個用戶指令,模型會生成多個不同版本的輸出,每個都包含思考和回答部分。

且思考過程採用自然語言形式,便於解釋和利用預訓練知識。

然後系統會將這些輸出中的回答部分(不含思考過程)提供給一個評判模型來打分。

評判模型可以是像ArmoRM這樣直接對單個回答評分的模型,也可以是像Self-Taught Evaluator這樣通過比較兩個回答來選出更好者的模型。

基於評判結果,系統會選出得分最高和最低的回答,連同它們對應的思考過程一起構成偏好對。

這些偏好對隨後被用於直接偏好優化(DPO)訓練,通過這種方式,模型能夠逐步學習到哪些思考方式能帶來更好的回答。

整個過程是迭代進行的,每輪訓練後得到的新模型會被用於下一輪的思考和回答生成。

爲了防止回答變得過於冗長,TPO還引入了長度控制機制,通過在評分中加入長度懲罰項來平衡回答的質量和簡潔性。

值得注意的是,在實際使用時,模型生成的思考過程會被隱藏,只向用戶展示最終的回答部分。

更多細節,感興趣的童鞋可自行查看原論文。

通過這種訓練方法,即使是像Llama-3-8B-Instruct這樣相對較小的模型也能在AlpacaEval等基準測試中取得接近甚至超過一些更大模型的性能。

在AlpacaEval基準測試中,TPO模型獲得52.5%的勝率,比基線提升4.1%;在Arena-Hard測試上,TPO模型獲得37.3%的勝率,比基線提升4.3%。

研究發現,雖然在訓練初期,帶思考的模型表現不如直接回答的基線模型,但經過多輪迭代訓練後,TPO模型的表現明顯超過基線。

更細緻的分析顯示,思考不僅對推理和數學等傳統認爲需要思考的任務有幫助,在營銷、健康、一般知識等非推理任務上也表現出優勢,模型會隨着訓練逐漸學會更高效的思考(思考長度縮短)。

這項研究由來自Meta FAIR、加州大學伯克利分校、紐約大學的研究人員共同提出。

論文一作爲華人學者Tianhao Wu。

Tianhao Wu目前是加州大學伯克利分校博士生,導師是焦劍濤(Jiantao Jiao)和Kannan Ramchandran。

本科主修數學,合作導師是北大教授、清華交叉信息學院兼職教授王立威(Liwei Wang)。

他的研究重點是通過強化學習改善大語言模型的指令遵循和推理能力,目標是構建可以解決需要多步驟推理的複雜任務的大規模模型。

此外他還在開發由Agent組成的AI社會,這些Agent可以以模塊化的方式連接起來,形成更強大的集體智能。

論文鏈接:https://arxiv.org/abs/2410.10630

參考鏈接:[1]https://x.com/rasbt/status/1850177459930497118[2]https://thwu1.github.io/tianhaowu/