# 李宏毅_生成式導論 2024_第5講:訓練不了人工智慧?你可以訓練你自(下)-讓語言彼此合作,把一個人活成一個團隊 ###### tags: `Hung-yi Lee` `NTU` `生成式導論 2024` [課程撥放清單](https://www.youtube.com/watch?v=AVIKFXLCPY8&list=PLJV_el3uVTsPz6CTopeRp2L2t4aL_KgiI) ## 第5講:訓練不了人工智慧?你可以訓練你自(下)-讓語言彼此合作,把一個人活成一個團隊 [課程連結](https://www.youtube.com/watch?v=inebiWdQW-4&list=PLJV_el3uVTsPz6CTopeRp2L2t4aL_KgiI&index=6) ### 模型合作:讓合適的模型做合適的事情 ![image](https://hackmd.io/_uploads/HkwGCvdW0.png) [參考論文_FrugalGPT: How to Use Large Language Models While Reducing Cost and Improving Performance](https://arxiv.org/abs/2305.05176) [參考影片_【生成式AI 2023】FrugalGPT: 來看看窮人怎麼用省錢的方式來使用 ChatGPT (上)](https://www.youtube.com/watch?v=vxxPtDCb9Go&t=348s) [參考影片_【生成式AI 2023】FrugalGPT: 來看看窮人怎麼用省錢的方式來使用 ChatGPT (下)](https://www.youtube.com/watch?v=VpKN3KvSK6c) 基本上用這麼多的模型大概也知道各模型有強項的部份,也有弱項的部份,那是不是可以再訓練一個模型來決定要把什麼任務交給那一個模型來處理。 雖然GPT-4似乎是很全面了,但是畢竟費用不低,如果簡單的模型能夠給免費的GPT-3.5來處理的話,是不是可以省一點。 當然目前很多的平台上已經使用這樣的技術,不同的問題由不同的模型來回應,對使用者來說也確實並不需要知道這次的回應是那一個模型就是了。 相關技術可以參考參考論文。 ### 模型合作:讓模型彼此討論 ![image](https://hackmd.io/_uploads/Hy25yO_WA.png) 課程中提過,我們是可以讓模型自己想想自己的回應是否正確,換句話說,我們也可以讓模型B去看模型A的回應,然後模型A再根據自己的回應與模型B的回應來看模型B的回應,不斷循環下去。 ### 模型合作:讓模型彼此討論 ![image](https://hackmd.io/_uploads/HyhyeduWC.png) 教授首先是詢問claude葬送的芙莉蓮的英文應該怎麼翻比較好,當然這是在給定一定的劇情上下文的情況下所詢問的。 claude接收到之後就根據問題上下文給出很直白的回應。 ### 模型合作:讓模型彼此討論 ![image](https://hackmd.io/_uploads/B1Fneud-0.png) ![image](https://hackmd.io/_uploads/B1jagdOZC.png) ![image](https://hackmd.io/_uploads/rJjl-OuW0.png) 然後把相同的問題上下文提給GPT-3.5,然後再把claude的回應加上去,並且很重要的是,要強調,不要完全同意所提供的看法,如果沒有說這句話,那模型就會直接說你好棒棒就結束了。 多次的來回詢問之後,最終模型就可能會得到一個結論。 實作上我們是單純的利用呼叫api的方式去取得模型結論,這是課堂上為了說明所以貼來貼去。 :::warning 這邊不給GPT-4是因為它會自己去網路搜尋,一但搜尋就問題結束了,因此使用3.5 ::: ### 模型合作:讓模型彼此討論 ![image](https://hackmd.io/_uploads/SJLGzOdZC.png) [參考論文_Encouraging Divergent Thinking in Large Language Models through Multi-Agent Debate](https://arxiv.org/abs/2305.19118) 參考論文中針對讓模型自我反省跟多模型討論的兩種作法做了分析。圖表中的蹤軸指的是推翻上次回應的可能性有多高,橫軸代表互動的次數。 很明顯的,如果是讓模型自我反省的情況,推翻自己回答的機率是比較低的,但是如果是多模型討論的情況下,這個機率就蠻高的。 ### 模型合作:多一點模型一起討論 ![image](https://hackmd.io/_uploads/S1fAz_OWC.png) [參考論文_Improving Factuality and Reasoning in Language Models through Multiagent Debate](https://arxiv.org/abs/2305.14325) 參考論文中針對一起討論的模型數量做了研究,其中蹤軸是解題的正確率,左圖的橫軸是模型數量,右圖的橫輻是討論的次數。 上圖左的趨勢很明顯的說明,參與的模型數量愈多,得到的正確率就會愈高。上圖右的趨勢則是說明,討論的回合數愈多,正確率就會愈高。大概四個回合就差不多接近了。 ### 模型合作:多模型怎麼討論 ![image](https://hackmd.io/_uploads/BkFB4duZ0.png) [參考論文_Exchange-of-Thought: Enhancing Large Language Model Capabilities through Cross-Model Communication](https://arxiv.org/abs/2312.01823) 參考論文中針對多模型的討論方式做了研究,上圖四種模式分別式: 1. 大家一起討論 2. A像主管一樣,B、C跟他報告討論 3. A跟C說,C跟B說,B跟A說,人體蜈蚣式 4. B跟C辯論,然後A當裁判決定誰是好的 結論就是,不同任務有不同適合的討論方式。 ### 討論要怎麼停下來? ![image](https://hackmd.io/_uploads/HJ72Edd-0.png) 要讓討論停下來的方式就是必需要有一個裁判模型,這個模型根據得到的回應決定討論是否結束。反正就是把A跟B的回應丟給裁判,讓它評判是否討論結束。最終裁判模型再根據A、B的回應給出摘要,結束討論。 ### 討論會不會停不下來? ![image](https://hackmd.io/_uploads/Sy7FH_d-C.png) [參考論文_Encouraging Divergent Thinking in Large Language Models through Multi-Agent Debate](https://arxiv.org/abs/2305.19118) [參考論文_Improving Factuality and Reasoning in Language Models through Multiagent Debate](https://arxiv.org/abs/2305.14325) 基本上不太需要擔心討論停不下來,要擔心的是討論一下子就停下來。 第一個參考論文中嚐試不同程度的prompt,就算用上了為反對而反對的提示詞也不一定會有好的結果就是。反而最好的結果是跟機器說不需要一定同意對方的想法。 第二個參考論文中則是跟模型說把對方的說法當做參考聽聽就好,這種情況下就比較能得到比較多次的討論。而且論文中也發現,比較長的討論通常可以得到比較長的結果。 ### 團隊需要有不同的腳色 ![image](https://hackmd.io/_uploads/r1HGI_O-A.png) 就不爆雷了。 ### 引入不同的腳色 - 組建團隊 ![image](https://hackmd.io/_uploads/Sy6iIOdbR.png) [參考論文_CAMEL: Communicative Agents for "Mind" Exploration of Large Language Model Society](https://arxiv.org/abs/2303.17760) 假設我們希望完成一個程式專案,那專案中也許需要有PM、使用者來測試跟一位程式設計師。這時候我們可以讓不同的模型扮演不同的角色。各自負責各自專精的部份。 ### 引入不同的腳色 - 優化團隊 ![image](https://hackmd.io/_uploads/rkRVD_u-C.png) [參考論文_Dynamic LLM-Agent Network: An LLM-agent Collaboration Framework with Agent Team Optimization](https://arxiv.org/abs/2310.02170) 大概就是幫每個人做的事打分數,分數低的就踢掉。不過因為是學術論文研究,所以測試的都是比較簡單的任務,目前對於是否適用於複雜性工作還是未知數。 ### 開源專案 ![image](https://hackmd.io/_uploads/HJQRPdO-0.png) [參考論文_MetaGPT: Meta Programming for A Multi-Agent Collaborative Framework](https://arxiv.org/abs/2308.00352) [參考程式庫_ChatDev](https://github.com/OpenBMB/ChatDev) 當然目前確實是有開源專案可以自動化完成工作。 ### 由AI組成的社群 [參考論文_Generative Agents: Interactive Simulacra of Human Behavior](https://arxiv.org/abs/2304.03442) [【生成式AI】讓 AI 村民組成虛擬村莊會發生甚麼事?](https://www.youtube.com/watch?v=G44Lkj7XDsA&t=3s) 參考論文中創造了人工智慧村民。