---
# System prepended metadata

title: 【2023 生成式AI】04~06 文字冒險和機器學習原理
tags: [生成式AI]

---

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)