20251018筆記 內容可能有錯誤,請參考原始影片 [李宏毅【機器學習 2023】(生成式 AI)](https://www.youtube.com/playlist?list=PLJV_el3uVTsOePyfmkfivYZ7Rqr2nMk3W) 今日影片 [【生成式AI】用 ChatGPT 和 Midjourney 來玩文字冒險遊戲](https://youtu.be/A-6c584jxX8?si=nnC3D_bcTS-TV5XP) [【生成式AI】快速了解機器學習基本原理 (1/2) (已經略懂機器學習的同學可以跳過這段)](https://youtu.be/phQK8xZpgoU?si=MU_m5FplBw-affM6) [【生成式AI】快速了解機器學習基本原理 (2/2) (已經略懂機器學習的同學可以跳過這段)](https://youtu.be/XLyPFnephpY?si=iDdth2MbR1IlEFUB) ### 【生成式AI】用 ChatGPT 和 Midjourney 來玩文字冒險遊戲大綱 一、 文字冒險遊戲概述與設定 二、 首次遊戲演示:尋找古代寶藏 三、 遊戲劇情延續與守護者協商 四、 第二次遊戲演示:角色扮演 (RPG) 模式與複雜規則 --- ### 一、 文字冒險遊戲概述與設定 #### 1. 遊戲定義與類型 * 文字冒險遊戲是使用ChatGPT進行的一項功能。 * 這種遊戲又被稱為**互動式小說**。 * 遊戲方式是玩家面對情境並從幾個選項中做出選擇,劇情會根據選擇發展。 * 透過ChatGPT進行的遊戲是**開放世界的文字冒險遊戲**,不是遵循固定腳本,玩家不知道會發生什麼事。 #### 2. 催眠指令與遊戲設定 * **關鍵催眠指令**:只需輸入「請開始一個文字冒險遊戲」即可開始。 * **輔助描述(讓遊戲更流暢)**: * 強調「由玩家決定採取的動作」,否則遊戲可能會自行出題並結束。 * 要求ChatGPT精確詳盡地描述場景。 * 要求遊戲開始時要先敘述故事的背景。 #### 3. 圖像生成整合 (Midjourney) * 為了讓文字冒險遊戲更具代入感,決定使用 **Midjourney** 生成配圖。 * 操作流程是將 GPT 產生的文字敘述輸入 Midjourney 軟體,讓它產生插圖。 * 由於操作 Midjourney 需要技巧,所以用 **ChatGPT 扮演 Midjourney 詠唱師**。 * ChatGPT 接受催眠指令,將它自己產生的中文敘述改寫成適合 Midjourney 生成圖片的英文敘述。 * 實際操作中,搬運過程是手動的,但希望未來能自動化連接。 ### 二、 首次遊戲演示:尋找古代寶藏 #### 1. 遊戲背景與起始選擇 * **背景**:玩家是一名冒險家,聽說古代寶藏隱藏在遠古遺蹟中。 * **場景**:站在遺蹟入口,看到石門上刻有古老的文字(Midjourney 配圖呈現出遺蹟入口和發光的古老文字)。 * **選擇**: 1. 嘗試開門 2. 回到城市尋求更多訊息 3. 拿出筆記型電腦拍照並研究文字 (玩家選擇 3)。 #### 2. 尋找翻譯器 * 玩家使用筆電識別技術,發現文字是一種古老的語言,需要尋找翻譯。 * **後續選擇**: 1. 繼續前進尋找翻譯器 2. 回到城市尋找翻譯器 3. 嘗試用電腦自行翻譯 (玩家選擇 3)。 * **結果**:電腦無法翻譯這種非常古老的語言,仍需尋找專業翻譯。 * **下一步**:玩家決定直接進入遺蹟繼續尋找翻譯器。 #### 3. 獲取翻譯石碑 * 玩家走過長廊,看到古老壁畫和雕像,發現一個小房間,裡面桌上有一個石盒。 * **選擇**: 1. 打開石盒 (玩家選擇此項) 2. 走過去看看石盒 3. 忽視石盒,繼續尋找翻譯。 * **結果**:打開石盒,發現一個古老的石碑,意識到這就是翻譯器。 * 玩家將石碑帶回筆電進行翻譯,翻譯結果顯示必須回答**三個謎題**才能找到寶藏。 #### 4. 回答謎題 * **謎題一 (風)**: * 謎面:「我沒有腳卻能走路,我沒有手卻能抓物,我沒有眼睛卻能看見。我是什麼?」。 * 選項:時鐘、地圖、風 (玩家選擇**風**,答案正確)。 * **謎題二 (稻草)**: * 謎面:「我生在水中,卻不能活在水中。我生在土中,卻不能活在土中。我是什麼?」。 * 選項:火、風、稻草 (玩家選擇**稻草**,答案正確)。 * **謎題三 (雲/火)**: * 謎面:「我有身沒有骨,有臉沒有皮,有眼沒有。我是什麼?」。 * 選項:水、**雲**、**火**。 * 玩家第一次選擇「雲」,答案正確。 * 玩家後續實驗選擇「火」,答案也正確。 * **結論**:後續實驗發現,這三個選項中似乎選哪一個最後都是正確的。 ### 三、 遊戲劇情延續與守護者協商 #### 1. 發現寶藏與強制延續 * 回答完三個謎題,遺蹟的石門打開,玩家發現一個巨大的寶藏箱,裡面裝滿寶石和黃金。 * 遊戲最初以「你成功找到遺蹟中的寶藏」結束,但玩家決定**強迫遊戲繼續**。 #### 2. 遭遇守護者 * 玩家帶著寶藏準備離開遺蹟時,遇到一個神秘的人站在出口。 * 神秘人說寶藏是他的,要求玩家還給他。 * **選擇**: 1. 還給他寶藏 2. 用你的武器威脅他 (玩家選擇 2,試圖觸發戰鬥). 3. 嘗試跑掉。 * **結果**:玩家拔刀威脅,但神秘人不害怕,自稱是**遺蹟的守護者**,威脅如果玩家不還寶藏,將永遠被困在遺蹟中。 #### 3. 和平協商 * **後續選擇**: 1. 還給他寶藏 2. 嘗試與他協商 (玩家選擇 2)。 3. 仍然威脅他。 * **結果**:守護者對和平協商表示滿意,並提出條件:玩家必須答應**不能再次威脅他**,且**不能告訴任何人**在遺蹟中找到寶藏。 * 玩家同意條件。 * **最終結局**:守護者允許玩家帶走寶藏,玩家離開遺蹟回到旅館,遊戲結束。 ### 四、 第二次遊戲演示:角色扮演 (RPG) 模式與複雜規則 #### 1. 導入複雜規則 * 為了展示遊戲的開放世界特性,重新開始遊戲並加入更複雜的規則。 * **新增規則**: * 提供數個**身份**供玩家選擇。 * 說明玩家的**生命值** 和**真氣值** (具有 RPG 遊戲的感覺)。 * **玩家選擇**:法師,生命值 100,真氣值 100。 #### 2. 任務背景 * 玩家在陌生的黑暗城堡醒來,遇到城堡主人。 * **任務**:城堡被邪惡力量佔據,玩家必須找到**四個魔法印章**來消滅邪惡力量並拯救世界。 * **印章細節**:主人解釋印章由水、火、風、地四種元素構成。主人給了玩家一支魔法棒。 #### 3. 尋找魔法印章 * **印章一 (戰鬥)**: * 場景:黑暗通道,一群怪物圍繞著一個寶箱。 * 動作:玩家選擇使用魔法攻擊怪物。喊出「火球」。 * 結果:火球炸開怪物,獲得第一個印章。**真氣值減少 10**(剩 90)。 * *註:Midjourney 將 Magic Seal 翻譯成 Magic Seal (海豹),故配圖是一張魔法海豹*。 * **印章二 (飛行)**: * 場景:第二區域是一條河流,寶箱在對岸。 * 動作:玩家選擇使用魔法度過河流。喊出「飛行」。 * 結果:漂浮飛過河流,獲得第二個印章。真氣值減少 10(剩 80)。 * **印章三 (穿透與規則限制)**: * 場景:第三區域是一片森林。 * **規則限制**:玩家嘗試「直接魔法取得剩餘印章」被拒絕,因「不是合法的選擇」。嘗試「燒毀森林」也被拒絕,因「不道德」且對環境造成損害。 * 動作:玩家選擇用魔法穿越森林,喊出「穿透」。 * 結果:穿過樹木,獲得第三個印章。真氣值減少 10(剩 70)。 * **印章四 (攀爬)**: * 場景:第四區域是一個城堡,寶箱在頂端。 * 動作:玩家選擇用魔法爬上城堡,喊出「爬」。 * 結果:到達頂端,獲得最後一個印章。真氣值減少 10(剩 60)。 #### 4. 遊戲結束 * 玩家回到主人那裡,主人稱讚玩家是「真正的英雄」,成功阻止邪惡力量崛起。 * **最終嘗試**:玩家嘗試選擇「攻擊主人」(不道德選項),但系統只留下「向主人交付魔法印章」一個選項。 * 遊戲結束。 ### 【生成式AI】快速了解機器學習基本原理 (1/2) (已經略懂機器學習的同學可以跳過這段) 大綱 一、 機器學習 (ML) 的定義與任務分類 二、 尋找函式的三個主要階段 三、 階段一:設定函式範圍 (Model/Scope) 四、 階段二:設定評估標準 (Loss/Standard) 五、 階段三:達成目標 (Optimization) 六、 機器學習技術分類的重要性 --- ### 一、 機器學習 (ML) 的定義與任務分類 * **機器學習的定義:** 機器學習是讓機器**自動尋找一個函式 ($f$)** 的過程。 * 例如,ChatGPT 是一個函式,輸入是一個例句,輸出是接下來應該接的字。 * 例如,AlphaGo 的函式輸入是棋盤上的黑白子位置,輸出是下一步應該落下的子。 * **函式輸出類型分類:** 根據函式的輸出性質,機器學習任務可分為以下幾種: 1. **迴歸 (Regression):** 函式輸出是一個**數值**。例如,預測 PM2.5 值或明日的氣溫。 2. **分類 (Classification):** 函式輸出是一個**類別**(讓機器做選擇)。例如,垃圾郵件過濾(輸出是「是垃圾郵件」或「不是垃圾郵件」)。 3. **結構化學習 (Structure Learning) / 生成式學習 (Generative Learning):** 機器要產生具有**結構的物件**,例如影像、語音、或文字。 * **ChatGPT 的分類:** ChatGPT 解決的是**生成式學習**的問題,它將生成式學習的問題拆解成了多個**分類**問題。 * 從技術角度看,GPT 判斷接下來應接哪一個字,選項是全世界所有的符號和字,因此可視為一個**分類**問題。 * 從使用者角度看,它產生一個完整的句子,也可視為**生成式學習**。 ### 二、 尋找函式的三個主要階段 機器尋找函式主要包含三個互動的步驟,但在這些步驟之前,有一個重要的前置作業。 * **前置作業(找什麼樣的函式):** **決定要找什麼樣的函式**(定義輸入與輸出)。 * 這個決定與技術無關。 * 例如,決定找一個函式,輸入是一隻寶可夢,輸出是它的戰鬥力。 ### 三、 尋找函式三步驟:設定範圍、標準、目標 #### 1. 步驟一:設定範圍 (Setting the Scope) * **定義:** 設定一個**候選函式的集合** ($H$)。 * 這個集合有另一個名稱叫做**模型 ($M$)**。 * 在深度學習中,類神經網路的結構(如 **CNN, RNN** 等)定義了這個候選函式的集合 ($H$)。 #### 2. 步驟二:設定標準 (Setting the Standard) * **定義:** 定出評量函式好壞的標準,稱為 **Loss ($L$)**。 * **目標:** $L$ 越小代表函式越好。 * **Loss 的計算:** Loss 的計算是透過比較函式 $f$ 的輸出與**標準答案**(由專家標註)之間的**差距**或**距離**。 * $L$ 的計算過程取決於手上的**訓練資料**。 * **Loss Function:** 衡量差距的這個大 $L$ 本身是一個**函式**,。 * **半監督式學習 (Semi-supervised Learning):** 當訓練資料中只有部分有標準答案時,可以利用沒有標註的資料。 * 可以定義額外標準,例如:長得像的物件(寶可夢)丟進函式後,它們輸出的預測值(戰鬥力)應該越接近越好。 * 標準的定義是靈活的,可根據手上的資料來決定。 #### 3. 步驟三:達成目標 (Achieving the Goal) * **定義:** 找出一個**最好的函式**。 * **最佳化 (Optimization):** 這個找尋過程稱為最佳化。 * **數學目標:** 找出一個函式 $f$,使 $L(f)$ 最小化($\min_{f \in H} L(f)$)。 * **演算法:** 由於候選函式的集合通常數量無窮多,需要好的演算法來尋找 Loss 較低的函式。 * 最通用的方法是 **Gradient Descent (梯度下降)**。 * 應用在特定神經網路架構上,需要另一項技巧叫 **Backpropagation (反向傳播)**。 ### 四、 機器學習技術分類的重要性 * **技術的三個面向:** 所有的機器學習專有名詞和技術,最終都屬於這三個面向之一:**設定範圍**、**設定標準**、或**達成目標**。 * **避免誤解:** 了解技術的分類有助於正確判斷其功能。 * 例如,**強化學習 (Reinforcement Learning, RL)** 是一種**評定函式好壞的標準**,它用於在沒有移動正確答案時,利用獎勵來評估函式的好壞。 * RL 不會取代深度學習 (Deep Learning),因為 RL 仍需要先定義候選函式的集合(Scope,例如深度神經網路架構),以及尋找最佳函式的演算法。 ### 【生成式AI】快速了解機器學習基本原理 (2/2) (已經略懂機器學習的同學可以跳過這段) 大綱 一、 達成目標:優化演算法與超參數 二、 設定標準:訓練與測試的資料差異與額外考量 三、 設定範圍:候選函式集合(模型)的畫定與資料量的關係 四、 技術發展的跨面向支持與總結 --- ### 一、 達成目標:優化演算法與超參數 * **優化演算法 (Optimization) 的定義:** 最佳化演算法可以視為一個巨大的函式。它吃進兩個輸入:**大 H**(候選函式集合)和**大 L**(評量函式好壞的標準/Loss Function)。 * **演算法的輸出:** 輸出一個最佳的函式 F,這個 F 位於大 H 集合中,且能讓 L 的數值越小越好。 * **好的優化方法:** 期望比較好的最佳化演算法,在給定同樣的 H 和 L 時,能跑得更快或答案(L 值)更好。 * **優化挑戰:** 現有的最佳化演算法通常找不出讓大 L 最小的那個 F。我們期望它至少能找到一個讓 L 較低的函式 F。 * **超參數 (Hyperparameter):** 最佳化演算法有許多需要手動設定的按鈕或參數。例如,如果使用梯度下降法,需要設定學習率 (Learning Rate) 和動量 (Momentum)。 * **調參:** 這些參數被稱為**超參數**。它們需要手動去調整,而不是類神經網路內部的參數。 * **演算法的期望特性:** 好的最佳化演算法應該是**超參數不敏感**的,即使使用預設值也能得到不錯的結果。 ### 二、 設定標準:訓練與測試的資料差異與額外考量 * **機器學習的兩個階段:** 機器學習一般被分為**訓練**和**測試**兩個階段。 * **訓練 (Training):** 指的是找函式的過程,需要由訓練資料來定義 Loss function。 * **測試 (Testing):** 指的是函式找到後,將輸入丟給它,期待它跑出正確結果的環節。 * **問題:** 許多在訓練資料上計算出 Loss 較低的函式,在實際拿來**測試合**時,結果卻很差。 * **根本原因:** 這是因為在訓練資料上定出的標準,直接用在測試資料上,而兩組資料可能存在差異(分布不同),結果自然不好。 * **額外考量:** 為了讓函式在測試資料上也表現良好,可以在尋找函式或定義標準時加入額外考量。 * **範例:** Dropout 和 Regularization (正規化) 都是這類額外考量的方法,目的是讓函式在訓練資料上找到的標準,在測試資料上也能是好的。 ### 三、 設定範圍:候選函式集合(模型)的畫定與選擇 * **限制範圍的必要性:** 必須設定候選函式集合(大 H)的範圍。如果只依照評量標準(大 L)來判斷,可能會挑選到「硬背答案」的函式。 * **「硬背答案」的函式:** 這種函式只會將輸入和輸出之間的關係記憶下來,完全不做任何推論或舉一反三。它們在標準上表現得很好,但實際測試結果不會太好。畫定範圍的目的就是直接將這些不好的函式排除在選擇範圍之外。 * **範圍畫定的技巧:** 範圍畫定不能太大,否則會框進不想納入的函式。也不能太小,否則可能根本找不到任何好的函式。 * **資料量與範圍的關係:** * **訓練資料越少**,這種硬背答案的函式就越多。 * 在訓練資料少的情況下,畫定的**範圍必須越保守(越小)**。 * **不同模型架構對應的範圍:** 不同的神經網絡架構對應著不同的候選函式集合(範圍),這些集合有大有小。 * **CNN (卷積神經網絡) vs. Fully Connected Network:** CNN 畫定的範圍比 Fully Connected Network 小,因此 CNN 適合資料量較少的狀況。 * **Transformer vs. CNN:** Transformer畫定的範圍比 CNN 更大。近年來圖像處理從 CNN 轉移到 Transformer,暗示著大家認為**圖像處理的標註資料已經夠多**,多到可以將範圍畫得更大,以便找到更好的函式。 ### 四、 技術發展的跨面向支援與總結 * **跨面相支持的技術:** 有些技術的好處不在於其本身所屬的步驟,而是能夠去**支持(support)**其他面向的優化。 * **範例:範圍支持目標 (Optimization)** * Residual Connection (殘差連接) 和 Normalization (正規化)。 * 雖然單從畫定範圍的角度來看,這些結構可能沒有特別的優勢,但它們可以讓第三步的「達成目標」(找到最佳函式)更容易實現。 * **範例:標準支持目標 (Optimization)** * 在做分類時會使用的 Cross Entropy。 * 使用Cross Entropy可能一個很重要的原因是它對「達成目標」這個優化過程較為友善。 * **總結:** 機器學習在技術開發上有三個主要面向:**設範圍、設標準、達成目標**。理解一項新技術是針對這三個步驟中的哪一個進行改進,有助於加速理解和判斷其價值。 --- 其他課程 [【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)