20251026筆記 內容可能有錯誤,請參考原始影片 [李宏毅【機器學習 2023】(生成式 AI)](https://www.youtube.com/playlist?list=PLJV_el3uVTsOePyfmkfivYZ7Rqr2nMk3W) [【生成式AI】讓 AI 做計劃然後自己運行自己](https://www.youtube.com/watch?v=eCurieNADlR0jSs&list=PLJV_el3uVTsOePyfmkfivYZ7Rqr2nMk3W&index=28) [【生成式AI】FrugalGPT: 來看看窮人怎麼用省錢的方式來使用 ChatGPT (上)](https://www.youtube.com/watch?v=vxxPtDCb9Go&list=PLJV_el3uVTsOePyfmkfivYZ7Rqr2nMk3W&index=29) [【生成式AI】FrugalGPT: 來看看窮人怎麼用省錢的方式來使用 ChatGPT (下)](https://www.youtube.com/watch?v=VpKN3KvSK6c&list=PLJV_el3uVTsOePyfmkfivYZ7Rqr2nMk3W&index=30) ### 【生成式AI】讓 AI 做計劃然後自己運行自己 大綱 I. **自主 AI 代理的概述與核心概念** * **類型:** 涵蓋 AutoGPT、BabyAGI 等系列自主運行 AI。 * **核心精神:** 讓大型語言模型(LLM)將複雜任務**拆解**成一系列可執行的小任務。 * **規劃機制:** AI 進行自我規劃,並將成果合起來達成最終目標。 II. **規劃與執行的應用案例** * **寫作與創造:** 透過分步規劃(場景、人物關係、草稿、修訂)來寫出優質故事(Re3 論文)。 * **虛擬環境操作:** 在模擬器中控制虛擬實體執行複雜動作(例如倒牛奶),需要將抽象步驟對應到可執行的動作。 III. **進階規劃與外部工具調用 (HuggingGPT)** * **HuggingGPT(HGT):** GPT-4 進行規劃,並從 Hugging Face 上尋找並調用其他專業 AI 模型來解決子任務。 * **流程:** 任務規劃(Task Planning)、模型選擇(Model Selection)、任務執行、報告生成。 IV. **數位環境中的自主操作** * **目標:** 讓 AI 根據人類指令在螢幕上進行互動操作(如點擊、打字、刪除郵件)。 * **方法:** 輸入螢幕的 HTML 內容,模型輸出可執行的操作指令(如滑鼠移動、打字)。 * **優化:** 在執行前加入自我 **Self-Criticism 或** Grounding 步驟,以確保行動的可執行性和合理性。 --- #### 一、 自主 AI 代理的概述與核心概念 1. **自主運行的 AI 類型:** 目前已有多種自主運行的 AI 系統,如 AutoGPT、BabyAGI 等。 2. **核心精髓:** 這些自主運行的 ChatGPT 背後的核心精神是**把大任務拆解成一系列的小任務**,也就是學會做**規劃**。 3. **規劃機制:** 面對一個複雜的任務,LLM 會先將其拆解成一系列的子任務,再逐個完成子任務,並將這些成果合起來,最終完成大任務。 4. **AutoGPT 的優勢:** 推薦使用 AutoGPT 進行學習,因為它在每一個執行的階段都會停下來詢問使用者是否執行下一步,並會清楚告知其理由。這使得使用者能夠更容易理解這些自主運作的 AI 的運作邏輯。 #### 二、 大型任務的拆解與執行例子 1. **學習地圖的規劃範例:** 給 Godmode 一個複雜的任務(例如將 YouTube 頻道上的機器學習影片製作成學習地圖)時,它會列出三個子任務: * 觀看 YouTube 上的機器學習影片。 * 將這些影片進行整理和分類。 * 產生一個可視化的學習地圖。 2. **執行流程與干預:** 在執行每個子任務之前,模型會闡述其思維過程(例如它需要先看完影片才能規劃地圖),並給出它接下來想採取的行動(例如 Google 搜尋影片)。使用者可以在此步驟提供建議來影響模型的行為。 3. **自動運行的風險:** 實際測試發現,如果自行運行,它可能會開始做一些奇怪且沒用的事情,例如花費大量時間研究影片摘要工具,但最終卻無法執行這些工具。 4. **故事寫作的先例(Re3):** 早在 2022 年就有類似的嘗試。若直接讓機器寫一個完整的故事通常效果不好,因此採用分步規劃。 * **寫故事的規劃:** 讓機器先搭建場景、想好故事裡的角色關係,然後寫一個故事大綱。 * **細緻執行:** 接著根據大綱的每一個段落,寫草稿和重新撰寫(修訂)。它會寫好幾個版本的草稿,並訓練另一個模型來選擇最好的版本。這個修訂過程甚至包括檢查人物屬性(如性別、年紀)是否與原計劃衝突。 #### 三、 虛擬與實際環境中的行動執行 1. **語言模型作為具體化代理人(Embodied Agents):** 這是更早的研究,讓語言模型去控制一個虛擬實體,使其在虛擬環境中完成任務(例如倒一杯牛奶)。 2. **行動規劃的挑戰:** * **挑戰一:** 如何將大任務自動分解成小任務。 * **挑戰二:** 如何將每個小任務對應到實體在虛擬環境中可執行的動作(因為實體的動作集合是有限的)。 3. **解決方法:** * **規劃:** 使用 **In-Context Learning**(給予模型範例)來讓大型模型自動生成完成任務所需的步驟。 * **動作校準:** 模型產生的步驟可能無法直接執行。因此,將所有可執行的動作列出,然後將模型生成的動作與**最接近**的可執行動作進行比對,並執行後者。 4. **行為正確性與可執行性評估:** * **正確性(Correctness):** 由人類判斷模擬的動作是否正確。在某些情況下(如 GPT-3),AI 規劃的步驟甚至比人類規劃的更正確。 * **可執行性(Executability):** 衡量動作實際能被執行的比例。透過動作校準(將非可執行的動作映射到可執行的動作),雖然正確率會略微下降,但可執行性會大幅提高。 #### 四、 進階規劃與外部工具調用 (HuggingGPT) 1. **HuggingGPT:** 這是一個更進階的概念,它不僅會做規劃,還會**尋找並調用其他模型**來完成子任務。HuggingGPT 的論文於 2023 年 3 月發布。 2. **HuggingGPT 的複雜任務範例:** 讓 HuggingGPT 執行一項複雜任務:生成一張讀書的小女孩的圖片,該小女孩的動作必須與另一張範例圖中的小男孩動作一樣,最後還需用語音合成方式朗讀圖片描述。 3. **HuggingGPT 的運作步驟:** * **Task Planning(任務規劃):** LLM(GPT-4)先將複雜任務拆解成一系列子任務,並安排執行順序。例如,它會規劃先做動作控制來偵測小男孩的動作,然後根據動作生成圖片,接著進行圖片分類、文字生成等。 * **Model Selection(模型選擇):** HuggingGPT 會去 Hugging Face 上尋找模型來解決子任務。它會讓 Chatbot 閱讀任務描述和模型卡(Model Card,描述模型用途),從而判斷哪個模型最適合當前任務。 * **Execution(執行):** 將模型所需的輸入(例如圖像、文字)丟給選定的模型,然後得到輸出。 * **Report Generation(報告生成):** HGT 會產生一份報告,將每個子任務的執行過程、輸入、輸出一一整理,並總結最終成果。 #### 五、 數位環境中的自主操作 (UI/Web 互動) 1. **目標:** 讓機器根據人類的指令,在螢幕(例如網頁界面)上進行操作,類似於用戶操作產品。例如,讓機器點擊特定圖示、刪除特定郵件或點擊鏈接。 2. **輸入與輸出:** * **輸入:** 模型的輸入是螢幕畫面的 **HTML 原始碼**。 * **輸出:** 模型的輸出必須是可執行的指令,例如打字(`Type("文字")`)或移動滑鼠到特定物件上。 3. **增強規劃:** 在這種 UI 互動任務中,模型會先制定計畫。 * **自我修正:** 接著,它會進行自我質疑(Self-Criticism),找出計畫中的問題。 * **產生更好的計畫:** 模型會根據質疑的結果,產生一個更優化的計畫(例如,先用 `LS` 指令查看有哪些檔案,再決定要刪除哪些檔案)。 4. **行動審視(Grounding):** 在執行動作時,AI 會進行審視: * **審視當前狀態:** 考慮當前網頁狀態(web page)來重寫想要執行的動作。 * **執行校準:** 即使模型產生了動作(例如 `rm .RB`),這個指令可能無法直接執行,因此需要挑選一個**可以被執行**的、最接近的指令來替代(例如 `type rm .RB`)。 ### 【生成式AI】FrugalGPT: 來看看窮人怎麼用省錢的方式來使用 ChatGPT (上) 大綱 I. **研究背景與動機:高昂的 API 成本** * GPT-4 的計費結構:輸入與輸出的 Token 數會被分開計費,且輸出的費用更高。 * 大規模使用的成本問題:即使單次使用費用低廉,但總量龐大時(如分析台北市 1999 專線),成本將非常巨大。 II. **成本節約方法一:優化輸入內容** * **Few-shot 選取:** 減少提供給模型的範例數量,只使用最少量的範例。 * **輸入合併:** 將多個問題串接起來一次丟給 API,以節省重複輸入 Few-shot 範例所需的成本。 III. **成本節約方法二:模型在地化與快取** * **自建模型:** 資源足夠時,自建語言模型來避免使用線上 API(適用於「比較有錢的窮人」)。 * **問答快取(Caching):** 儲存問過的問題與答案。當遇到相似問題時,直接從資料庫丟出答案,以節省 API 呼叫費用。 IV. **核心方法三:語言模型池 (LLM Pooling, LLM Cascade)** * **基本策略:** 針對問題難度,分級使用不同強度和價格的 API。 * **運作機制:** 採用階梯式詢問與驗證,從最便宜、最弱的模型開始,只有難題才升級到最強、最貴的模型(如 GPT-4)。 V. **LLM Cascade 成果:節省成本與提高準確度** * **成本效益:** 系統能大幅減少昂貴模型的使用,顯著降低總成本。 * **準確度提升:** 由於模型的非單調性(Non-Monotonicity),組合系統的準確率甚至比單獨使用最強的 GPT-4 更高。 --- #### 一、 研究背景與高昂的 API 成本 1. **論文名稱與目標:** Frugal AI,主要目標是在**不犧牲效能**的情況下,找到節省 API 費用的方法。 2. **GPT-4 的計費結構:** 使用大型語言模型會產生費用,且計費方式是根據 Token 數量收費。 * GPT-4 的收費標準是:每輸入 1,000 個 Token 約 $0.03 美元;每輸出 1,000 個 Token 約 $0.06 美元。 * **輸出成本更高:** 通常模型的**輸出成本**比輸入成本高,有時甚至高達一倍,這可能是因為模型覺得輸出(生成答案)的成本比輸入更高。 3. **大規模使用導致的成本爆炸:** 雖然單次使用 API 花費很少,但當使用量非常大時,總成本會非常可觀。 * **案例:** 假設分析台北市 1999 市民專線的電話資料。台北市每個月有約 **15 萬通**電話。 * 如果每次分析一通電話的花費大約是 3 塊錢(新台幣),那麼每個月的費用將高達約40 多萬台幣,這對市政服務來說是一筆巨大的費用。 #### 二、 成本節約方法一:優化輸入內容 這類方法目的在減少輸入的 Token 數量,因為輸入也是要花錢的。 1. **範例選擇優化(Few-shot Selection):** * 在 In-Context Learning 中,我們通常會提供範例(Example)給模型。但研究建議,可以考慮**是否真的需要這麼多範例**。 * 如果只用一個範例就能得到相似的結果,就應該只放一個,達到省錢的目的。 2. **輸入串接(Input Concatenation):** * 通常我們將問題 Curie3 丟給模型得到答案,再將 Curie4 丟給模型得到答案。 * 真正的節省來自於:當模型需要 Few-shot 範例時,這些範例原本需要**丟兩次**(Curie3 丟一次,Curie4 丟一次)。 * **優化:** 將 Curie3 和 Curie4 串接起來**一次丟入**,並要求 Chatbot 同時回答兩個問題,這樣**範例(Example)只需要丟一次**,從而省下重複丟範例的成本。 #### 三、 成本節約方法二:本地化與快取 1. **自建語言模型(Self-Build LLM):** * 如果不想使用線上 API,可以自行建立一個語言模型。 * 然而,這個方法需要耗費大量資源和成本,因此被稱為是「比較有錢的窮人」才能使用的技術。 2. **問答快取(Caching):** * 將過去問過 Chatbot 的問題和答案,全部儲存在一個資料庫中。 * 當有人問一個新問題時,先檢查資料庫中**有沒有非常類似的問題**。 * 如果找到相似的問題,就直接丟出先前看過的答案,藉此省下 API 的費用。如果服務的使用者經常問非常類似的問題,這個方法將非常有效。 #### 四、 核心方法三:LLM Cascade 這是論文中真正進行實驗的主要方法。 1. **核心理念:分級使用模型** * 線上有許多 API 可供選擇,它們的強度、大小和收費都不一樣。例如,GPT-Curie 相較於 GPT-3 或 GPT-4 偏小,GPT-3 的收費是 GPT-Curie 的 **十倍**。 * **策略:** 應該拿**簡單的問題**去問比較弱、但更便宜的模型,只有**難的問題**才去問比較強的模型。這就是「殺雞用雞刀,殺牛用牛刀」的原則。 2. **非單調性能力(Non-Monotonicity):** * 不同模型的能力並非完全可以互相取代。 * 研究發現,即使是最強的 GPT-4 也不是完美的,仍然會答錯一些問題。例如,在某項任務(HeadLine)中,**有 4% 的問題是 GPT-4 答錯,但 GPT-J 卻答對了**。 * 這意味著,將所有語言模型整合在一起使用,有潛力比單獨使用最強模型得到更好的結果。 #### 五、 LLM Cascade 的機制與成果 1. **階梯式詢問與驗證機制:** * **第一步:** 當使用者輸入一個問題時,先將問題輸入給**最弱的模型**(如 GPT-J)。 * **第二步:** 答案產生後,交給一個 **驗證模組(Scorer Module)** 進行判斷。 * 這個驗證模組會輸出一個分數,代表該答案是正確的機率。 * 驗證模組通常是一個**非常小的模型**,執行成本低廉,因此在計算總成本時,其資源消耗被忽略。 * **第三步:** 閾值判斷:系統預設一個閾值(Threshold),例如 **0.96**。如果驗證分數超過 0.96,則認為 GPT-Curie 的答案已經足夠好,直接輸出。 * **第四步:** 升級:如果分數低於閾值,則將問題傳遞給**下一個更強的模型**(如 GPT-J1-L),並再次驗證其答案。 * **最終步驟:** 只有當所有簡單模型都無法解決的問題,才會去詢問**最強且最貴的 GPT-4**。 2. **實驗結果:成本節約與準確度提升:** * 在 HeadLine 數據集上測試,單純使用 GPT-4 的準確率是 85.7%,但跑完整個數據集要花費 **$33**。 * 使用 LLM Cascade 組合系統(GPT-J, J1L, GPT-4)之後: * **成本大幅減少:** 因為很多問題都被便宜的 GPT-Curie 解決了,只有少量問題會升級到 GPT-4,總花費顯著降低。 * **結果更強:** LLM Cascade 系統的準確率甚至比單獨使用 GPT-4 **更高**。這是因為在某些狀況下,如果問題直接問 GPT-4 反而會得到錯誤答案,但 GPT-Curie 卻可能答對,並被驗證模組確認為足夠好的答案。 * 總結:綜合多個語言模型不僅能省錢,在某些情況下,結果還會比單獨使用最強模型更好。 ### 【生成式AI】FrugalGPT: 來看看窮人怎麼用省錢的方式來使用 ChatGPT (下) 大綱 I. **LLM Cascade的優化問題定義** * **目標:** 找到一組最佳的模型序列 ($L$) 和對應的閾值 ($T$)。 * **約束條件:** 總花費(Cost)必須小於或等於總預算 ($B$)。 * **優化目標:** 在滿足預算限制下,最大化最終輸出答案的整體正確率(分數)。 II. **LLM Cascade 的運作機制與成本計算** * **最終模型決定:** $L^*(q)$ 是序列中第一個達到驗證閾值 $T_i$ 的模型。 * **成本計算:** 每次 API 呼叫的成本是輸入長度、輸出長度以及一個固定的費用三者相加的結果,且各有不同的常數係數。 III. **實驗設置與結果分析** * **測試任務:** 測試了三個不同類型的任務(HeadLine, OVERRULIMG, COQA)。 * **非單調性發現:** 在某些任務上(如 COQA),較弱的模型(GPT-3)表現可能比最強的模型(GPT-4)還強。 * **LLM Cascade 系統的效益:** 該系統在相同的成本下,通常能比單一模型獲得更好的準確度。 --- #### 一、 LLM Cascade 的最優化問題定義 ![image](https://hackmd.io/_uploads/HyT7xTwCgl.png) 1. **目標與組件:** 該研究在解決一個最優化問題,目的是找到一串最優的語言模型序列 ($L$) 和一串最佳的閾值 ($T$)。 * $L_i$:代表序列中的第 $i$ 個語言模型。 * $q$:代表輸入的問題 (query)。 * $L_i(q)$:代表模型 $L_i$ 對問題 $q$ 輸出的答案。 * $A$:代表問題 $q$ 的正確答案。 2. **驗證模組分數 $S$:** * $S(q,L_i(q))$ 代表驗證模組的輸出分數。 * 該分數的輸入是問題 $q$ 和模型 $L_i$ 的輸出答案,它代表驗證模組對該答案**是正確的信心有多少**。 3. **最終模型的決定 $L^*(q)$:** * $L^*(q)$ 代表在整個模型序列中,**最終被執行並拿出答案**作為最終輸出的模型。 * $L^*(q)$ 是在序列 $L$ 中,**第一個**其驗證分數 ($S$) **達到或超過**其對應閾值 ($T_i$) 的那個模型。 #### 二、 成本計算與優化約束 1. **單次 API 呼叫的費用:** 每次呼叫線上 API 的費用,是根據三個面向來計算的: * **輸入的長度**:即輸入問題 $q$ 的長度,前面會乘以一個常數項。 * **輸出的長度**:即輸出答案 $L_i(q)$ 的長度,前面也會乘以一個常數項。 * **固定費用(Overhead Cost)**:有時候不論輸入輸出多長,都會加收一點錢,這也被視為一個常數項。 * 這些常數項在不同的線上 API 模型上是不同的。 2. **預算限制:** * 假設全部可以花費的錢叫做**總預算 $B$**。 * 在優化問題中,計算將資料集裡所有問題都跑完所需要的總花費。這個總花費的結果,**必須小於或等於總預算 $B$**。 3. **優化目標:** * 在滿足預算限制的前提下,目標是**最大化**所有問題經過這個模型序列後,最終得到的答案與正確答案 $A$ 相比的**總正確率(或分數)**。 #### 三、 實驗設置與成果 1. **實驗任務:** 研究測試了三個不同的任務: * **HeadLine:** 根據新聞標題判斷股價漲跌的任務。 * **OVERRULING:** 判斷一個法律條文是否蓋過之前的其他法律條文。 * **COQA:** 一個問答任務。 2. **結果呈現:** 實驗結果圖表中的**縱軸(Y-axis)是正確率**,**橫軸(X-axis)是花費(Cost)**。 3. **模型表現的非單調性:** * 一般認知上,GPT-4 應該是最強的模型。 * 但最有趣的發現在 COQA 這個任務上:**GPT-3 竟然比 GPT-4 還要強**,準確度更高。這驗證了不同模型的能力並非完全單調,最強的模型仍有失誤的可能性。 4. **成本差異:** * GPT-4 在所有任務中基本都是**最貴的**。 * 但第二貴的模型會根據任務不同而有所差異。例如在 COQA 任務上,第二貴的是 GPT-3;但在 HeadLine 任務上,第二貴的是另一個區塊的模型。這顯示不同模型在不同任務上所需的成本節奏(輸入/輸出長度)是不同的。 5. **LLM Cascade 系統的效益:** * LLM Cascade 系統在同樣的花費下,通常會比所有單獨模型表現得更好。 * **成本節省與準確度提升的實證:** * 在 **HeadLine** 任務中,LLM Cascade 系統可以**花比 GPT-4 少的錢,卻得到比 GPT-4 更好的結果**。 * 在 **COQA** 任務中,LLM Cascade 系統**花一點點錢就可以達到跟 GPT-4 一樣好的結果**。 * 在 COQA 任務中,由於 GPT-3 是表現最好的模型,LLM Cascade 系統可以**花比 GPT-3 更少的錢,就得到跟 GPT-3 一樣好的結果**。 --- 其他課程 [【2023 生成式AI】01~03 ChatGPT 原理剖析](https://hackmd.io/@JuitingChen/SyUtDmaalx) [【2023 生成式AI】04~06 文字冒險和機器學習原理](https://hackmd.io/@JuitingChen/S1wwdXa6ge) [【2023 生成式AI】07~08 生成式學習策略和可使用工具的AI](https://hackmd.io/@JuitingChen/BJPQtQpagx) [【2023生成式AI】09~11 Finetuning vs. Prompting](https://hackmd.io/@JuitingChen/H15otQpael) [【2023生成式AI】12~15 大模型 + 大資料 = 神奇結果?](https://hackmd.io/@JuitingChen/rJ1Gi7a6le) [【2023生成式AI】16~17 圖像生成模型 和 Stable Diffusion、DALL-E、Imagen 背後共同的套路](https://hackmd.io/@JuitingChen/HJnB2QTagg) [【2023 生成式AI】19~22 Diffusion Model 原理剖析 ](https://hackmd.io/@JuitingChen/SyBx6mp6xe) [【2023生成式AI】23~25 低成本復刻ChatGPT、ChatGPT自我反省、AI村莊](https://hackmd.io/@JuitingChen/r10hAsrCxe) [【2023生成式AI】26~27 用語言模型來解釋語言模型](https://hackmd.io/@JuitingChen/SJ0aYiwAeg) [【2023生成式AI】28~30 FrugalGPT 用省錢的方式來使用 ChatGPT](https://hackmd.io/@JuitingChen/rypFqnPRll)