開源版「Devin」AI程式設計師炸場:自己分析股票、做報表、建模型
https://www.qbitai.com/2024/03/128153.html
來自GitHub三萬Star項目
MetaGPT團隊投稿
GitHub三萬Star專案MetaGPT上新,號稱是「開源Devin」—
推出 資料解釋器(Data Interpreter ),能夠應對資料即時變更、任務之間複雜的依賴
關係、流程最佳化需求以及執行結果回饋的邏輯一致性等挑戰。
話不多說,直接看示範。
可從英偉達股價數據分析收盤價格趨勢:
https://tinyurl.com/2bdr95nv
分析數據預測葡萄酒品質:
https://tinyurl.com/45r9hntr
自動摳圖刪除圖片背景:
https://tinyurl.com/36a8efpr
還能針對糖尿病、心臟病等疾病,透過數據分析預測病情進展:
https://tinyurl.com/5274srey
https://tinyurl.com/ytdzfnac
針對水泵感測器讀數,進行相關性分析、因果推論、異常偵測等全面分析,預測機器的運
作狀態:
https://tinyurl.com/45fxmch8
Data Interpreter 由MetaGPT團隊聯合北工大學、復旦大學、華東師範大學、河海大學、
加拿大蒙特婁大學、KAUST、聖母大學、廈門大學、香港中文大學(深圳)、香港大學、
耶魯大學、中國科學院深圳先進技術研究院、中國人民大學共同推出。
除了數據分析,Data Interpreter還能很好地迭代式觀察數據,具備建立機器學習模型、
進行數學推理的能力,還能自動回覆電子郵件、仿寫網站。
在各種資料科學和現實世界任務上,與開源基準相比,Data Interpreter在多種任務上取
得SOTA效能。
在機器學習任務中綜合得分從0.86提升至0.95,在MATH資料集上提高了26%,在開放式任
務中任務完成率提升112%。
Data Interpreter一發布,引起不少網友關注,X(原推特)轉讚收藏量2.5k+。
網友再次感慨最近科技圈實在太熱鬧,belike:
這個數據解釋器長啥樣?
由大模型(LLM)驱动的智能体已经证明了它们在处理复杂任务方面的显著潜力。通过赋
予LLM代码执行能力来提升其问题解决能力正逐渐成为一种趋势,如Code-Interpreter、
OpenInterpreter、TaskWeaver。
然而,在數據科學領域,現有LLM-based智能體的效能仍有待提升。
Data Interpreter提供了一種全新的解決方案,旨在透過增強智能體的任務規劃,工具整
合以及推理能力,直面資料科學問題的挑戰。
Data Interpreter提出了三個關鍵技術:
1) 基於分層圖結構的動態計劃 ,基於分層的圖結構進行任務和程式碼規劃,有效管理
任務間的複雜依賴,靈活應對資料科學任務的即時資料變化;
2) 工具整合與演化 ,透過在程式碼產生過程中自動整合程式碼片段作為工具,動態嵌
入了資料科學領域所需的領域知識;
3) 基於驗證與經驗驅動的推理 ,自動在回饋中增強邏輯一致性檢測,透過基於置信度
的驗證提升執行程式碼的邏輯合理性,並藉助經驗庫增強推理能力。
以下我們逐一展開來看。
基於分層圖結構的動態計劃
這種方法借鑒了自動化機器學習中的層次規劃技術,透過層次結構將複雜的資料科學問題
分解為易於管理的小任務,並進一步將這些任務轉化為具體的程式碼執行動作,從而實現
細緻的規劃與執行。
分層結構:(a) 一個有組織的任務和動作圖,展示了高階機器學習專案的工作流程,包括
實現專案目標所需的任務依賴和動作序列。 (b) 任務的有向無環圖(DAG),以機器操作
狀態預測問題為例。 任務圖展示了拆解的計劃任務,而動作圖(也稱為執行圖)則根據
計劃的任務圖執行各個節點。 每個節點的執行程式碼由LLM轉換。
這種動態規劃方法賦予了Data Interpreter在任務變化時的適應性,而有向無環圖(
Directed acyclic graph)結構則在監控和處理資料科學問題中的任務依賴關係方面展現
出了高效性。
透過這種方式,Data Interpreter能夠有效地管理和優化資料科學任務的執行流程,提高
了問題解決的準確性。
https://tinyurl.com/2zw8p4tr
資料解釋器的動態計劃管理:(a) 透過人工編輯進行計劃細化。 左側圖像顯示了在圖上
經過人工編輯的任務,右側圖像則展示了細化後的計劃,包括更新後的任務3.1'、3.2'以
及新增的任務3.3。 (b) 將失敗任務的計畫進行細化。 任務執行後,如果任務3.3失敗,
細化後的計畫將整合現有的成功任務,用更新後的任務3.3'取代原任務3.3,並引入新任
務4.1、4.2、4.3和5。
工具整合與進化
在資料科學任務中,任務的多樣性與專業性要求是基於LLM框架具備廣泛的工具呼叫能力
。 現有的工具呼叫方式往往侷限於API的形式,無法滿足任務多樣性所帶來的動態需求。
Data Interpreter 提出了 工具整合與產生 的方法。 透過工具推薦與組織,能夠根據任
務描述,進行任務分類,從而有效選擇合適的工具集。
在執行階段,Data Interpreter根據工具參數描述、工具方法描述文件的結構化訊息,動
態嵌入和調整工具參數,以適應任務的特定需求。
此外,Data Interpreter還能夠透過自我進化,從執行經驗中抽像出工具的核心功能,形
成通用的程式碼片段,整合到工具函數庫之中。 這些工具函數可以在未來的任務中重複
使用,從而減少了偵錯頻率,提高了執行效率。
下圖是資料解釋器中的工具使用流程,工具建議最初根據任務分類來選擇工具,然後根據
任務需求組合多個工具使用:
https://tinyurl.com/36s8nj2m
基於驗證與經驗驅動的推理
解決數據科學問題需要嚴謹的數據與邏輯驗證過程,現有的研究在解決這一類問題的過程
中,往往依賴於代碼執行後的錯誤檢測或異常捕獲,這一方式往往會誤解代碼執行正確即
任務完成,無法發現邏輯錯誤,難以提升任務實現的有效性。
Data Interpreter 通过结合基于置信度的自动验证(Automated Confidece-based
Verification)策略,显著提升了其在数据科学问题解决中的推理能力。
ACV策略要求Data Interpreter在執行程式碼後產生驗證程式碼並執行驗證,根據執行驗
證結果校驗任務和實作程式碼的一致性,類似於白盒測試流程。
在需要更嚴謹數值回饋的場景中,如使用LLM進行數學推理,Data Interpreter可以增加
多次獨立驗證,並透過多次結果的置信度排序來進一步提升效果。
另一方面,Data Interpreter利用经验池存储和反思任务执行过程中的经验,能够从过去
的成功和失败中学习代码知识,从而在面对新任务时做出更准确的决策。这种结合实时验
证和经验学习的方法,显著增强了解释器的推理能力,提升了任务的解决质量。
下圖以MATH內的一個任務說明基於置信度自動驗證流程,虛線框內是自動驗證的過程,虛
線框下方根據驗證對多個候選答案進行排序:
https://tinyurl.com/33ztvwfp
多工取得新SOTA
在實驗部分,Data Interpreter在多個數據科學和現實世界任務上進行了評估。
基準測試
MATH benchmark涵蓋了從初等代數到微積分等廣泛的數學領域。 這個基準測驗不僅測試
了模型對數學知識的掌握程度,也檢視了它們在解決複雜數學問題時的推理能力。
為評估Data Interpreter在這一領域的效能,研究團隊選擇了MATH基準測試中難度最高的
Level-5問題,這些問題涉及計數和機率(C.Prob)、數論(N.Theory)、初等代數(
Prealg )和微積分(Precalc)等四個類別。
如圖所示,以Accuracy作為這個任務的評估指標,Data Interpreter在4個類別上都取得
了最好的成績。 特別是在N.Theory 中,具有Automated Confidence-based
Verification(ACV)策略的Data Interpreter達到了0.81的準確率。
https://tinyurl.com/y3f6fb58
為了測試Data Interpreter的精準和效率,研究團隊也設計了ML-Benchmark,這是一個集
合了Kaggle網站上多種經典機器學習任務的測試集。
這些任務不僅涵蓋了葡萄酒識別(WR)、Wisconsin乳癌(BCW)、Titanic生存預測等經
典問題,還包括了房價預測(House Prices)、Santander客戶交易預測(SCTP)、識別
與年齡相關的狀況( ICR)以及Santander價值預測挑戰賽(SVPC)等更具挑戰性的項目
。
https://tinyurl.com/mu566ape
透過任務完成率(CR)、歸一化表現得分(NPS)和綜合得分(CS)這三個關鍵指標,
Data Interpreter在七項任務上的平均得分高達0.95,遠超AutoGen的0.86,提升了10.3
%。
特別是在ICR和SVPC這兩個資料集上,Data Interpreter的表現特別出色,分別比AutoGen
提高了24.7%和21.2%。
值得一提的是,Data Interpreter是唯一一個在Titanic、House Prices、SCTP和ICR任務
上得分都超過0.9的框架,這意味著它在機器學習任務中不僅能夠完成核心步驟,還能在
執行過程中持續優化任務效果。
另外,為測試Data Interpreter在開放式任務中的表現。 研究人員也整理了一個包含20
個任務的開放式任務基準。
這些任務涵蓋了從光學字元辨識(OCR)到迷你遊戲生成(MGG)等多個領域,包括網路搜
尋和爬蟲(WSC)、電子郵件自動回覆(ER)、網頁模仿(WPI)、圖像背景移除( IBR)
、文字轉影像(T2I)、影像到HTML程式碼產生(I2C)等多樣化的挑戰。
然後將Data Interpreter與AutoGen和OpenInterpreter這兩個基準模型進行了比較。 每
個框架對每個任務進行了三次實驗,以平均完成率作為評估標準。
結果顯示,Data Interpreter在開放式任務上的平均完成率為0.97,與AutoGen相比大幅
提高了112%。 對於去除影像背景(IBR)任務,所有三個框架都獲得了1.0的完整分數。
在OCR相關任務中,Data Interpreter的平均完成率為0.85,比AutoGen和
OpenInterpreter分別高出26.8%和70.0%。
在需要多個步驟並利用多模態工具/能力的任務中,例如網頁模仿(WPI)、映像到HTML程
式碼生成(I2C)和文字轉圖像(T2I),Data Interpreter是唯一能夠執行所有步驟的框
架。
而在電子郵件自動回覆(ER)任務中,AutoGen和OpenInterpreter因為無法登入並取得郵
箱狀態,導致完成率較低,而Data Interpreter可以在執行過程中動態調整任務,從而在
完成率上達到0.98。
消融實驗
為了進一步探討相關方法的有效性,研究人員也進行了消融實驗。
為評估各模組效能,研究人員在ML-Benchmark上,使用了三種配置進行測試:
1)初始設定:基礎ReAct框架,包含簡單的任務理解提示詞以及支援程式碼執行流程;
2)增加了基於分層圖結構的動態計劃,包括分層規劃和每個步驟的動態管理,以便於即
時調整;
3)在2)的基礎上增加了工具整合能力。
如表3所示,基於分層圖結構的動態計劃顯著提高了0.48分。它通過準備數據集並實時跟
蹤數據變化有助於獲得更優性能,特別是完成率方面效果顯著。此外,工具的使用帶來了
額外9.84%的改進,綜合得分達到了0.94分
https://tinyurl.com/2p9ekyd
Data Interpreter還在包括GPT-4-Turbo、GPT-3.5-Turbo以及不同尺寸的LLMs上進行了實
驗。
在機器學習的任務中,更大尺寸的LLM,例如Qwen-72B-Chat和Mixtral-8x7B展現出與
GPT-3.5-Turbo相當的表現,而較小的模型則性能下降較多。
如下圖所示,結合Yi-34B-Chat、Qwen-14B-Chat和Llama2-13B-Chat,甚至
DeepSeek-7B-Chat,Data Interpreter可以有效處理資料載入及資料分析等步驟。
https://tinyurl.com/y5autmvu
△在ML-BenchMark上使用不同尺寸LLM的評估。 左圖:完成率,右圖:綜合得分
然而,這些模型在執行需要較高編碼能力的任務時面臨仍受到自身能力限制,通常導致流
程無法完成。 在開放式任務中,Mixtral-8x7B在3項任務上的完成率較高,但在網路搜尋
和爬蟲(WSC)任務中表現不佳,難以準確地將完整結果輸出到CSV檔案。 與機器學習任
務ML-Benchmark類似,規模較小的模型仍因編碼能力受限而遇到執行失敗問題。
研究人員也針對經驗池的大小進行了消融實驗。 依儲存任務層級的經驗數量,分別設定
經驗池大小為0,80和200,比較Data Interpreter在不同任務上所需的程式碼debug次數
和執行成本的變化,結果如下所示:
https://tinyurl.com/523ey4z2
隨著經驗池從1增加至200,平均的debug次數從1.48降低到了0.32,執行成本從0.80美元
降低到了0.24美元,顯示經驗的累計對於從自然語言描述任務到程式碼產生能夠有明顯的
幫助。
論文連結:https://arxiv.org/abs/2402.18679
項目連結:
[1]https://docs.deepwisdom.ai/main/en/DataInterpreter/
[2]https://github.com/geekan/MetaGPT/tree/main/examples/di
[3]https://docs.deepwisdom.ai/main/en/guide/use_cases/agent/interpreter/intro.html
--