20251114筆記 內容可能有錯誤,請參考原始影片 [李宏毅【生成式人工智慧與機器學習導論2025】](https://www.youtube.com/playlist?list=PLJV_el3uVTsMMGi5kbnKP5DrDHZpTX0jT) [【生成式人工智慧與機器學習導論2025】第0講:開場與課程簡介](https://youtu.be/VuQUF1VVX40?si=_rR8fHlwAF6qEKh-) [【生成式人工智慧與機器學習導論2025】第1講:一堂課搞懂生成式人工智慧的原理](https://youtu.be/TigfpYPJk1s?si=p-aHikb8j2wiBULW) ### 生成式人工智慧與機器學習導論2025】第0講:開場與課程簡介 大綱 ### I. 課程核心與學習目標 A. 開場:AI 生成內容的全面展示。 B. 核心理念:從使用者轉變為理解者與創造者。 C. 學習動機:區分「魔術」與「魔法」的重要性。 ### II. 課程定位與先備要求 A. 課程受眾:適合入門者、想深入 AI 領域或想更智慧使用工具者。 B. 不適合對象:已有模型訓練經驗或從未使用過 GPT 者。 C. 預習資源:可參考「生成式 AI 導論 2023」或「機器學習 2021」課程。 ### III. 課程結構與內容規劃 A. 課程總長:共十講。 B. 階段劃分: 1. 前四講:了解現有生成式 AI 的運作方式。 2. 中四講:介紹 AI 如何被打造(含訓練機會),以文字互動為主。 3. 後兩講:講解影像與語音相關內容。 ### IV. 課程行政與上課安排 A. 主辦單位與時間:台灣大專院校人工智慧學程聯盟課程,週五下午 2:20 直播。 B. 課程形式:1.5-2 小時講解,0.5-1 小時助教講解作業。 C. 資訊與互動:所有內容錄影(週一結束前上線);透過 NTUCool 進行課堂發問。 D. 網路應對:若直播斷線,將透過 NTUCool 寄發新連結,鼓勵同學勿驚慌。 ### V. 作業系統與難度分級 A. 作業數量與時程:共 10 個作業,通常有三週完成時間。 B. 成績與時限:預計於明年 1 月 12 號送出成績。 C. 繳交平台:NTUCool (選擇題) 與 Judge Boi (非選擇題,由 AI 助教批改)。 D. 難度評定:分為一到三顆星 (★),一顆星約十幾分鐘,三顆星可能需數小時。 E. 訓練哲學:保留耗時的訓練作業,目的在讓學生體驗 AI 的「醍醐味」——在迷茫中前進的焦躁等待。 --- ### I. 課程核心與學習目標 * **開場內容皆由 AI 生成:** 課程開場影片的所有內容,包括老師本人出場之前,都是人工智慧生成的。 * **具體 AI 技術展示:** * **Google Veo3:** 用來生成影片,例如倒數計時和長出翅膀的鳥人影片。Veo3 可以根據**文字敘述**生成影片,也支援輸入**照片**並搭配敘述來產生會說話或動作的影片。英文的課程介紹聲音也是 Veo3 自己生成的。 * **Eleven Labs (語音合成軟體):** 用來合成中文講課的聲音。它是透過輸入老師上課錄影來模仿聲音,然後輸入文字即可用該聲音朗讀。 * **HeyGen:** 用來生成「在房間裡演講的頭像」。只需要提供一張照片和一段語音,它就能讓照片中的人開始說話。 * **Genspark (AI Agent 平台):** 用於生成課程投影片和講稿。老師透過輸入課程說明,讓 Genspark 製作投影片和講稿,再將講稿丟給 Eleven Labs 產生聲音。 * **課程目的:** 本課程的目標是做**更深層的事情**,而非僅僅學會用 GPT 寫作業。 * **核心轉變:** 學生應從**使用者**轉變為**理解者**,甚至是**創造者**。 * **魔術與魔法的比喻:** * 現今生成式 AI 強大,使用起來像**變魔術**。 * 不懂原理會將「魔術」誤認為是「**魔法**」(神秘不可解釋)。 * 將 AI 視為魔法會產生誤解,例如認為 AI 全能或害怕 AI 取代所有人。 * **理解原理**後,魔術不再是魔法,你能看清背後的**技巧**,甚至能創造自己的技巧。 ### II. 課程定位與先備要求 * **課程定位:** 這是一門 AI 入門課,旨在提供對 AI **正確且深入的認識**。 * **適合修課對象:** 1. 未來想更深入人工智慧領域的人(作為 AI 旅程很棒的第一步)。 2. 想用**更智慧的方式**使用 AI 工具的人。 * **先備知識要求:** 即使不會寫程式,只要對 ChatGPT 或類似人工智慧有**使用經驗**,老師會盡力讓每個人跟上。 * **不適合修課對象:** 1. **已有訓練模型經驗**的同學,本課程可能**太淺**。 2. **完全沒有使用過 GPT** 或類似 AI,完全不知道 GPT 是什麼的人,本課程可能**挑戰太大**。 * **預習建議:** * 若對生成式 AI 一無所知,可先看「生成式 AI 導論 2023」課程。 * 若想進一步了解 AI 如何被訓練出來,可看「機器學習 2021」課程。 * 本門課會從基礎開始講起,因此即使沒有時間預習也無妨。 ### III. 課程結構與內容規劃 * **課程總覽:** 課程計畫講授**十講**。 * **內容分佈與重點:** * **前四講 (1-4):** 帶領大家了解**現有的生成式人工智慧**的運作方式。 * **中四講 (5-8):** 介紹這些生成式人工智慧是**如何被打造出來的**,並會提供機會**自行訓練生成式 AI**。 * **主題重心:** 前八講主要以**文字互動**為主。 * **後兩講 (9-10):** 將講解**影像與語音**相關的內容。 ### IV. 課程行政與上課安排 * **課程名稱與主辦單位:** 課程名稱為「生成式人工智慧與機器學習導論」,是**台灣大專院校人工智慧學程聯盟**的課程。 * **上課方式與時間:** * 主要以**直播**進行。 * 上課時間為**週五的下午 2 點 20 分**。 * 直播錄製地點在台大新生教學館 202,但鼓勵同學在家看直播即可,因為教室不大。 * **單次課堂流程:** * 老師上課:通常 1.5 到 2 小時,以講解為主,有時會輔助實作。 * 助教講解作業:通常 0.5 到 1 小時左右。 * **下課時間不固定**:取決於當週內容講完即下課,可能提早或較晚。 * **錄影與離席:** 所有課程內容都會錄影並上線。若同學有事或課程持續太長,**歡迎隨時中斷或離開**。錄影預計在**下一個週一結束前**上線。 * **課堂發問與互動:** * 對上課內容有問題,可在 NTUCool 上發問。 * 每次課程都會開設對應的留言區(例如 9 月 12 號上課即時討論區)。 * 老師若有時間,會優先回答 NTUCool 留言區中的問題。 * 旁聽生若想加入 NTUCool,需寄信給助教。 * **直播斷線處理:** 由於網路不穩定,直播有可能斷線。若發生斷線: * 會開一個**新的直播連結**,並透過 NTUCool 寄給所有修課同學。 * **重要提醒:** 請勿驚慌,因為所有的課程內容都有錄影。 ### V. 作業系統與難度分級 * **作業總數與時程:** 總共有 **10 個作業**,每一個講次都有對應的作業。基本上每個作業有**三週**時間完成。 * **特殊時程:** * 前兩個作業截止日期特別延後至 **10 月 17 號**,以配合不同學校加退選的時間差異。 * 最後一個作業(作業十)截止日是明年的 **1 月 9 號**。 * **成績送出時間:** 預計在 **1 月 12 號**送出成績。若有合理理由需要提早知道成績,可以在 12 月 19 號作業十公告之後,聯繫助教進行**優先批改**。 * **作業繳交平台:** 1. **NTUCool:** 用於繳交**選擇題形式**的作業。今日(開課當日)就會公告作業一。 2. **Judge Boi:** 用於繳交**非選擇題形式**的作業,該平台背後有 **AI 助教**來批改作業。 * **作業難度與所需時間(以達到及格成績為準):** * **一顆星 (★):** 預計在**十幾分鐘**內可以完成(及格分數,例如滿分 10 分拿到 6 分)。 * **兩顆星 (★★):** 至少需要**超過一個小時**才能完成(及格分數)。 * **三顆星 (★★★):** 可能需要**數個小時**(例如三、四個小時)才能達到及格成績。 * **模型訓練的必要性與哲學意義:** * 有些作業需要**訓練模型**,這是非常耗時的事情,訓練時間可能長達三、四個小時。 * 雖然過去有訓練時間長達三天以上的作業已移除,但老師選擇保留這些需耗時數小時訓練的作業。 ![image](https://hackmd.io/_uploads/ry3aBpVgWl.png) ![image](https://hackmd.io/_uploads/Sk4Rr6EgZe.png) * 焦躁地等待結果、迷茫地調參數、不知道會不會成功的過程,正是人工智慧的**醍醐味**。 * 這類作業在讓學生**學會在迷茫中前進**,並被定位為**預防針**,幫助同學對未來面對更大挑戰做好心理準備。 ### 【生成式人工智慧與機器學習導論2025】第1講:一堂課搞懂生成式人工智慧的原理 大綱 ### I. 語言模型的核心原理 A. 基本功能:**文字接龍**。 B. 輸出機制:機率分佈與擲骰子 (Sampling)。 C. 關鍵概念:Prompt、Token、Vocabulary。 ### II. 文字接龍的能力要求與限制 A. 必備知識:語言知識(文法)與世界知識(真實物理認識)。 B. 模型的規模與學習來源:函式 $F(X)$、數十億參數、學習來源。 C. 限制與幻覺:AI 幻覺(Hellucination)的成因。 ### III. 從接龍到實用問答的技術 A. 單輪對話:Chat Template 與 System Prompt (開發者設定資訊)。 B. 多輪對話:將過去對話記錄納入 Prompt。 C. 減少幻覺:RAG (Retrieval Augmented Generation) 技術。 ### IV. 跨模態生成:萬物皆 Token A. 定義:生成複雜且有結構的物件,其基本單位為 Token。 B. 影像與語音:使用編碼器(Encoder)將像素/取樣點壓縮成 Token。 C. 生成策略:Auto-Regressive Generation (自動迴歸生成,即接龍)。 ### V. 開源模型實作與控制 A. 開源工具:Hugging Face、Transformers 套件、Colab 平台。 B. 模型操作:Tokenizer 的編碼 (Encode) 與解碼 (Decode)。 C. 輸出控制:Sampling (擲骰子) 與 TopK 機制 (限制擲骰範圍以防生成荒謬內容)。 --- ### I. 語言模型的核心原理 * **基本運作方式:** ChatGPT、Gemini、Claude 等人工智慧基本上就是**語言模型**。語言模型一言以蔽之,就是一個在做**文字接龍**的人工智慧。 * **Prompt 與 Token:** * 給語言模型的輸入(未完成的句子)稱為 **Prompt**。 * 模型拿來做接龍輸出的單位稱為 **Token**,在此有其獨特的意思,不是字典中的「代幣」。 * **接龍過程:** 當輸入一個問題時,語言模型會將其作為未完成的句子開始接龍。 * 模型預測下一個 Token(例如「玉」)。 * 將預測出的 Token 重新貼到 Prompt 後面。 * 重複此步驟,直到模型輸出代表**結束的符號**為止。 * **輸出機制:機率分佈與擲骰子** * 語言模型真正的輸出,是對每一個 Token 的**機率分佈**,代表該 Token 接在 Prompt 後面的機率。 * 模型接著會根據這個機率分佈來**擲骰子** (Sampling),決定輸出哪個 Token。 * 因為每次生成 Token 都需要擲骰子,所以即使問相同的問題,答案也會**略有不同**。 * **詞彙庫 (Vocabulary):** 所有語言模型會給分數的 Token 集合稱為 **Vocabulary**。 * 現代語言模型的 Vocabulary 往往**非常巨大**,通常有數十萬個 Token。 * 這個詞彙庫包羅萬象,包含多國語言文字、單字、符號(如@、%)等等。例如,LLaMA-3.2-3B 模型就有 128,000 個 Token。 ### II. 文字接龍的能力要求與限制 * **知識要求:** 成功且正確地進行文字接龍,AI 必須具備至少兩方面的知識。 1. **語言知識:** 對人類語言的**文法**、詞彙接續有基本認識(例如「黃色的」後面接名詞的機率高於接動詞)。通常收集上百萬篇文章就能學會語言知識,較少犯文法錯誤。 2. **世界知識:** 對人類的物理世界有**真實的認識**(例如知道水的沸點是攝氏 100 度,除非前提被改變)。世界知識是**無窮無盡**且相對難學的。 * **模型規模與運作:** * 語言模型可以想像成一個**函式 $F$**,輸入 Prompt ($X$) 輸出機率分佈 ($F(X)$)。 * 模型內部擁有**大量參數** (Parameter);今天「十億參數不算多」,百億參數遍地走。 * 這些參數是透過**資料自動學習**得到的,而非人工設定。 * **學習來源:** 語言模型學習接龍的能力主要來自三個方面: 1. **網路爬蟲數據:** 網路上大量的句子作為教材,讓模型知道哪個字後面應該接哪個字。 2. **人類提供的標註:** 開發者告知模型在特定 Prompt 後面應該接什麼答案。 3. **使用者回饋:** 使用者對答案按讚或倒讚,讓模型調整不同答案的機率。 * **AI 幻覺 (Hallucination) 的解釋:** * 當 AI 產生一些**不存在的東西**或似是而非的話,稱為 AI 幻覺。 * 這並不是因為背後的**資料庫有問題**,因為語言模型**並沒有資料庫可言**。 * 一切輸出都是透過文字接龍產生的,答案都是在**幻覺中產生**的。 * **比喻:** 語言模型就像一個**關在暗無天日的小房間裡的人**,唯一會做的事就是文字接龍。它無法得知外界即時資訊(如「今天是幾月幾號」)。 ### III. 從接龍到實用問答的技術 * **單輪問答 (Chat Template):** 為了讓模型回答問題,平台會「加料」。 * 使用者輸入的 Prompt 會被加上**額外的文字**(例如:使用者問:[你的問題] AI回答:)。 * 這些額外加上的文字稱為 **Chat Template**。 * **系統資訊 (System Prompt):** * 有些基本資訊(如**當前日期**、模型名稱)會被開發者預先設定,並在每次對話時,塞在對話的最前面。 * 這些開發者事先寫好的、使用者可能不知道的 Prompt 稱為 **System Prompt**。例如,Llama 的 Chat Template 中會自動塞入系統提示,包含模型的知識截止日期和當日日期。 * **多輪對話:** 模型的多輪對話能力來自**歷史記錄的傳遞**。 * 當使用者問下一個問題時,**過去所有的對話記錄**(包括 System Prompt、前一個問題、前一個回答)會被合併成一個**長 Prompt**,丟給模型進行接龍。 * 模型就是看這一大串文字來預測下一個 Token。 * **減少幻覺的方法:RAG** * 減少 AI 幻覺的方法之一,是將**搜尋引擎搭配 AI 一起使用**。 * 這項技術稱為 **RAG (Retrieval Augmented Generation)**。 ### IV. 跨模態生成:萬物皆 Token * **生成式人工智慧定義 (Generative AI):** * 生成式 AI 是指讓機器學會產生**複雜而有結構的物件**。 * 「有結構」的意思是這些物件由**有限可能的基本單位**所構成,這些基本單位統稱為 **Token**。 * 雖然基本單位有限,但它們組合起來可以組成**無窮無盡的可能**。 * **聲音與影像的生成:** * **原理:** 影像生成可能是透過**像素接龍**,聲音生成可能是透過**取樣點接龍**。 * **實際挑戰:** 直接用像素或取樣點進行接龍會**太過耗費運算資源**。例如,生成一張 $1024 \times 1024$ 的圖片,需要的接龍次數比寫一部《紅樓夢》的 Token 數還多。 * **現代方法:** 先對圖片或聲音進行**壓縮**,透過**編碼器 (Encoder)** 將其轉換為比較少的 Token。這些 Token 再通過**解碼器 (Decoder)** 轉回原始訊號。 * **統一模型:** 無論是生成文字、圖片還是聲音,其原理都是**Token 的接龍**。 * 如黃仁勳所言,Token 可以是文字、圖像、語音、影片,**萬事萬物都是 Token**。 * **生成策略:** 文字接龍這種生成策略有一個專有名詞,叫做 **Auto-Regressive Generation** (自動迴歸生成)。 ### V. 開源模型實作與控制 * **開源模型概念:** 開源模型(如 Meta 的 LLaMA、Google 的 Gemma)是指我們知道模型背後對應的**函式 $F$**、參數數量與數值。 * **實作平台與工具:** * 尋找開源模型:可在 **Hugging Face** 網站上找到各式各樣的模型。 * 程式平台:使用 **Colab** 來執行範例程式碼。 * 核心套件:使用 Hugging Face 開發的 **Transformers** 套件。 * **Token 的操作:** * 每個語言模型都會下載 **Tokenizer** (儲存 Vocabulary 定義) 和 **Model** (儲存參數)。 * `Tokenizer.encode`:將文字轉成 Token 的**編號 (ID)**,用於輸入給 Model。 * `Tokenizer.decode`:將 Token 編號轉回**文字**。 * **特殊規則:** 同一個英文單字,在前面有空白或沒有空白,可能被視為**不同的 Token**。 * **生成控制 (Sampling):** * 在生成多個 Token 時,可以選擇每次都選**機率最高**的 Token,但這樣每次答案都一樣。 * 更真實的做法是根據機率分佈**擲骰子** (Sampling)。 * **TopK 機制:** 完全隨機擲骰子容易在中間選到機率極低的 Token,導致句子變得**荒謬或亂講話**。因此,實際做法是只允許**機率前 TopK 名**的 Token 參與擲骰子的過程,以確保產生比較正常的句子。 * **簡化操作:** * 可以使用 `Model.Generate` 函式來連續產生一連串 Token,無需自己寫 `For` 迴圈。 * 可以使用 `Tokenizer.Apply_Chat_template` 函式來自動加上官方的 Chat Template,避免自行輸入錯誤的複雜範本。 * 最簡便的方法是使用 **Pipeline**,它可以省略 Encode 和 Decode 過程,直接輸入文字並輸出文字結果。