{ "summary": "Plan chapter splits for AI W2/W3 and NLP W2/W3; migrate concept DB exam-signal options to plain text", "agentCount": 5, "logs": [], "result": { "segments": [ { "lecture": "ai-w2", "week_title": "Agent 類型、搜尋演算法", "one_liner": "講完五種 agent 後進入搜尋:無資訊搜尋(BFS、UCS、DFS 家族、雙向)、有資訊搜尋(Greedy、A*),最後用爬山演算法開啟 Ch4 的 local search。", "special_notes": [ "影片開頭缺幾分鐘:YouTube 標題 AI2026_0917_3。0:00:00–0:01:43 老師在設定直播畫面,0:01:46 起接著講到一半的 HW1 說明,HW1 前段不在影片裡。", "1:02:22–1:02:52 約 30 秒逐字稿是 ASR 亂碼(重複「我用這個」「有一個」),剛好是八皇后問題的開場,寫筆記時以投影片 Ch3 p.7 為準。", "兩次下課:0:40:28–0:53:20、1:43:47–1:56:41。下課時段的逐字稿時間戳有跳動(0:43:20→0:53:20、1:52:41→1:56:41 都剛好差整數分鐘),Ch3 與 informed search 的起點建議開影片確認。" ], "remember": [ "HW1(期末專題提案)10/1 晚上 11:59 截止,時間到系統自動關閉;CVPR 格式、1–2 頁,檔名 homework1_組別編號 (0:06:12、0:07:06)", "HW1 評分以 introduction 比例最高:要寫清楚研究動機、問題定義、預計解法與相關文獻;預期結果可以用想的、手繪示意圖 (0:02:25)", "先到分組表格照順序填題目、學校、姓名拿組別編號,不跳號、不改別人資料;每組最多 4 人,組員退選可以併到還沒滿 4 人的組 (0:03:58、1:43:26)", "下課時老師回答同學:HW1 不用比別人做得好,只是要你們開始找文獻、寫出想法;專題若用 LLM,要自己設計 agent loop(反思、檢驗後再決策),不要只是用工具 (1:45:07、1:51:45)", "前置知識:時間/空間複雜度與 Big-O,非電機資工背景老師要大家自己補 (1:10:36、1:15:25)", "本週講到 Ch4 p.9 hill climbing 變形,下週從 Ch4 p.10 simulated annealing 接續 (2:35:20)" ], "chapters": [ { "num": 1, "title": "HW1 提案寫法與分組", "start": "0:01:46", "end": "0:13:28", "slides": "無投影片(HW1 說明頁不在本機投影片 _text 裡)", "summary": "接續 HW1(期末專題提案)的寫作重點、分組編號、檔名格式與截止時間,並回答 Slido 上的加簽、分組問題。", "importance": "行政", "segments": [ { "time": "0:01:46", "title": "HW1 要寫什麼:introduction 最重", "gist": "要寫清楚研究動機、問題定義、預計解法與文獻;因為還沒開始做,HW1 的 introduction 分數比例最高,之後 HW3 會改成更看重執行進度。" }, { "time": "0:02:51", "title": "方法、預期結果與參考文獻", "gist": "方法要先找文獻、整理別人用什麼方法(老師說這邊佔 75%);預期結果可以用想的、手繪示意圖;最後附參考文獻。" }, { "time": "0:03:58", "title": "分組表格:照順序拿組別編號", "gist": "到指定網址填題目、學校、姓名,拿到組別編號並寫進報告;要照順序填、中間不要空號、不要改別人的資料。" }, { "time": "0:06:08", "title": "檔名、格式與截止時間", "gist": "檔名 homework1_組別編號,也可以寫在標題下;CVPR 格式、1–2 頁,10/1 晚上 11:59 截止,系統會自動關閉。" }, { "time": "0:07:52", "title": "Slido 問答:加簽、分組、錄影", "gist": "成大加簽名額已滿,其他學校照自己學校的程序;線上同學自己揪團分組、每組最多 4 人,直播有錄影、沒有點名。中間重申的考試方式是已知資訊,不重講。" } ], "emphasis": [ { "time": "0:02:25", "quote": "我們其實是會把introduction這一塊的分數放最高的比例", "kind": "強調", "about": "HW1 評分:introduction(動機、問題定義、預計做法、文獻)佔最高比例" }, { "time": "0:06:39", "quote": "為什麼要講那麼慢,這麼簡單的事情要這樣講那麼慢,因為就是會有人沒在聽,不符合規則", "kind": "強調", "about": "檔名 homework1_組別編號與填表規則要確實照做" } ] }, { "num": 2, "title": "環境性質與五種 Agent", "start": "0:13:28", "end": "0:40:28", "slides": "Ch2 p.2、p.9–26(p.2–12 為 W1 複習)", "summary": "複習 agent 與 task environment,補完四組環境性質,再依序介紹 simple reflex、model-based、goal-based、utility-based、learning 五種 agent。", "importance": "核心", "segments": [ { "time": "0:13:28", "title": "複習:agent、PEAS 與前三組環境性質", "gist": "Agent 用 sensor 感知、用 actuator 行動,兩者都很廣義;task environment 用 PEAS 描述(計程車例子),老師補充現代 agent 的大腦多由 LLM 擔任。接著複習 fully/partially observable、single/multi-agent、deterministic/stochastic。" }, { "time": "0:22:04", "title": "新的四組環境性質", "gist": "Episodic vs sequential(下棋、開車是 sequential)、static vs dynamic(思考時環境會不會變,開車是 dynamic)、discrete vs continuous、known vs unknown(是否知道環境背後的規則),並帶過 p.15 的屬性對照表。" }, { "time": "0:25:03", "title": "Agent = architecture + program", "gist": "AI 的工作是設計 agent program,把感知對應到動作;它跑在有感測器與致動器的 architecture 上,虛擬世界也算。最直觀的查表法不可行,因為表會大到列不完。" }, { "time": "0:28:17", "title": "Simple reflex agent", "gist": "只看當下這一刻的感知,用 condition-action rule 決定動作,例如吸塵器髒就吸、乾淨就移到另一格。" }, { "time": "0:29:42", "title": "Model-based reflex agent", "gist": "保留 internal state(記憶),綜合過去看到的、做過的與現在看到的,再用規則決定動作,能處理部分可觀察的環境。" }, { "time": "0:31:37", "title": "Goal-based agent", "gist": "給 agent 目標,決策時考慮「做了之後會不會更接近目標」,也就是會考慮未來;目標一改,行為就跟著改。" }, { "time": "0:33:49", "title": "Utility-based agent", "gist": "目標不只一個又互相衝突時(例如又要快又要安全),用效益來權衡;理性的 agent 會選 expected utility 最大的動作。" }, { "time": "0:37:06", "title": "Learning agent 與第二章收尾", "gist": "讓 agent 從資料和回饋中自己越做越好,老師說這就是後來機器學習、深度學習的脈絡;老師說第一、二章都講得很 high level。" } ], "emphasis": [ { "time": "0:14:14", "quote": "那在這邊大家要注意的是,這裡講的感測器,不見得一定是什麼IoT的", "kind": "強調", "about": "sensor 與 action 的定義很廣,收到資料就算感知,送出資料也算動作" }, { "time": "0:17:34", "quote": "PEAS這樣的地理還缺了一個很重要的東西,就是大腦", "kind": "強調", "about": "現代 agent 的大腦(決策者)多由 LLM 擔任" } ] }, { "num": 3, "title": "搜尋問題的定義", "start": "0:53:20", "end": "1:08:52", "slides": "Ch3 p.1–10", "summary": "Problem-solving agent 把解答看成一串動作,用羅馬尼亞地圖、8-puzzle、8-queens 示範怎麼正式定義問題,再把問題展開成搜尋樹。", "importance": "核心", "segments": [ { "time": "0:53:20", "title": "Problem-solving agent 與 search", "gist": "延續 goal-based agent,這章只看最簡單的情況:解答是一串固定的動作,找出這串動作的過程就叫 search。" }, { "time": "0:55:20", "title": "羅馬尼亞地圖:問題的五個要素", "gist": "從 Arad 走到 Bucharest,用 initial state、actions、transition model、goal test、path cost 五要素定義問題;這個環境是 deterministic,任何解答都是一串 action。" }, { "time": "0:59:42", "title": "8-puzzle 的問題定義", "gist": "狀態是盤面,動作想成空格上下左右移,goal test 看有沒有排好,path cost 是移動次數;老師說這些例子之後的章節還會再用。" }, { "time": "1:02:21", "title": "8-queens 的問題定義", "gist": "8×8 棋盤擺 8 個皇后互不攻擊(同列、同行、對角線);狀態是放了 0–8 個皇后的盤面,動作是再放一個皇后。開頭約 30 秒逐字稿是亂碼。" }, { "time": "1:04:42", "title": "真實世界的搜尋問題", "gist": "旅行推銷員、VLSI layout、機器人導航等問題更複雜,但本質上都是在建構 problem-solving agent。" }, { "time": "1:05:45", "title": "把問題展開成搜尋樹", "gist": "從起點 A 展開可以走到的城市,一層層畫成 search tree:root 是起點,分支是動作,節點是狀態。" }, { "time": "1:07:03", "title": "樹上節點的結構", "gist": "用 8-puzzle 說明每個 node 記錄 state(盤面)、parent(造成這個盤面的上一步)、action,以及 path cost(多走一個分支就多一步成本)。" } ], "emphasis": [ { "time": "0:59:43", "quote": "這是一個我們之後會用的例子,我們順便也介紹其他,在往後不只這一章,在往後其他Chapter也可能會用到的例子", "kind": "強調", "about": "羅馬尼亞地圖、8-puzzle、8-queens 之後各章會反覆使用" } ] }, { "num": 4, "title": "BFS 與 UCS 搜尋", "start": "1:08:52", "end": "1:23:14", "slides": "Ch3 p.11–17", "summary": "先定義評估搜尋演算法的四個指標,再介紹無資訊搜尋裡的 BFS 與 uniform-cost search,比較兩者展開順序的差別。", "importance": "核心", "segments": [ { "time": "1:08:52", "title": "評估演算法的四個指標", "gist": "Completeness(有解時一定找得到嗎)、optimality(找到的是最佳解嗎)、time complexity、space complexity;非電機資工背景要自己補複雜度觀念。" }, { "time": "1:10:54", "title": "Uninformed search 是什麼", "gist": "Uninformed(blind)search 只知道問題定義,只能產生後繼節點、判斷是不是目標,不同策略差在展開順序;多知道哪個方向比較接近目標,就是 informed(heuristic)search。" }, { "time": "1:12:54", "title": "BFS 怎麼展開", "gist": "先把 root 的所有分支都檢查一遍,再往下一層展開,一層一層往下。" }, { "time": "1:14:22", "title": "BFS 的複雜度 O(b^d)", "gist": "每個節點有 b 個分支、深度 d,總共要產生 b + b² + … + b^d 個節點,時間複雜度 O(b^d),記憶體需求也很大;沒學過 Big-O 要自己查。" }, { "time": "1:15:53", "title": "BFS 的時間與記憶體有多誇張", "gist": "範例表:b=10、每秒 100 萬節點、每節點 1KB,深度 10 要 3 小時、10 TB,深度 16 要 350 年、10 EB。" }, { "time": "1:17:21", "title": "Uniform-cost search(Dijkstra)", "gist": "AI 叫 uniform-cost search,理論資工叫 Dijkstra:每次展開 path cost g(n) 最小的節點,而且展開時才做 goal test;用 80+97+101=278 對比 99+211=310 示範。" }, { "time": "1:21:07", "title": "Uninformed 的意思,UCS 與 BFS 的差別", "gist": "Uninformed 不是完全沒資訊,而是沒用到「離目標還多遠」的估計;UCS 一般是最佳的,依 path cost 展開而 BFS 依深度展開,步驟成本都一樣時 UCS 就像 BFS。" } ], "emphasis": [ { "time": "1:15:25", "quote": "如果說你沒有學過BIG OF的話,同學你可能要自己去查一下,我們假設你來修正門課,你其實是有這些幾個素養的", "kind": "強調", "about": "Big-O 時間複雜度是前置知識,要自己補" }, { "time": "1:21:07", "quote": "所以這裡要釐清一個點,就是說Uninformed,你看字面上的意義", "kind": "強調", "about": "uninformed 不是沒有任何資訊,而是沒用到離目標多遠的估計(投影片 p.16 另附中文說明)" } ] }, { "num": 5, "title": "DFS 家族與雙向搜尋", "start": "1:23:14", "end": "1:43:47", "slides": "Ch3 p.18–26", "summary": "DFS 一路走到底、省記憶體卻可能白走深樹,因此有 depth-limited 與 iterative deepening 兩種折衷,最後介紹從兩端同時搜的 bidirectional search。", "importance": "核心", "segments": [ { "time": "1:23:14", "title": "DFS 一條路走到底", "gist": "從 root 沿第一個分支一路走到最深,不是目標就退回上一層換另一個分支。" }, { "time": "1:24:17", "title": "DFS 時間差、空間省", "gist": "最糟時間 O(b^m),m 是最大深度,可能遠大於最淺解的深度 d;但只要記目前這條路徑和沿途還沒展開的兄弟節點,空間只要 O(bm),遠低於 BFS。" }, { "time": "1:28:06", "title": "Depth-limited search 與 AI agent 類比", "gist": "替 DFS 加一個深度上限 L,避免在很深的子樹白花時間;老師用現在的 AI agent 做事時若一路 DFS 會跑很久、鬼打牆來比喻。" }, { "time": "1:31:26", "title": "深度上限的代價與領域知識", "gist": "設了上限可能找不到解(incomplete),也不保證最佳;若有領域知識(羅馬尼亞任兩城最多 9 步)就能把 L 設成 9。" }, { "time": "1:32:49", "title": "Iterative deepening DFS", "gist": "不知道 L 怎麼設時,從小到大逐步放寬深度上限;兼有 DFS 的低記憶體與 BFS 的完整性,路徑成本隨深度不減時也是最佳的。" }, { "time": "1:34:47", "title": "重複展開其實不太浪費", "gist": "上層會被重複展開看似浪費,但大部分節點都在最底層(例:底層 8 個、上面兩層共 6 個),樹越深差距越大,所以浪費沒有想像中大。" }, { "time": "1:38:02", "title": "Bidirectional search", "gist": "從起點和目標兩端同時搜,兩邊 frontier 交會就找到解(像雪隧兩端同時開挖),約 O(b^(d/2));要能往回推前一步,地圖與 8-puzzle 容易,8-queens 這種抽象目標就難。" }, { "time": "1:41:56", "title": "前半總結與分組問答", "gist": "Ch3 前半是 uninformed search,後半要講 informed search;回答問題:組員退選可以併到別組,但不管怎麼變最多四人一組。" } ], "emphasis": [] }, { "num": 6, "title": "Greedy 與 A* 搜尋", "start": "1:56:41", "end": "2:11:49", "slides": "Ch3 p.27–35", "summary": "Informed search 多知道「離目標多遠」的 heuristic:greedy best-first 只看 h(n),快但不保證最佳;A* 用 f(n)=g(n)+h(n),在 admissible 與 consistent 條件下是最佳的。", "importance": "核心", "segments": [ { "time": "1:56:41", "title": "Informed search 與 heuristic h(n)", "gist": "除了問題定義,還多知道離目標多遠的估計,也就是 heuristic function h(n);羅馬尼亞例子用各城市到 Bucharest 的直線距離(像在空照圖上畫直線)。" }, { "time": "1:58:47", "title": "Greedy best-first search", "gist": "只用 h(n) 評估,每次走直線距離最近的鄰居,A→S→F→B 很快就找到解。" }, { "time": "2:00:15", "title": "Greedy 找到的不是最佳解", "gist": "這條路比經過 R、P 的路多 32 公里,所以不是最佳解;不過好的 heuristic 能大幅降低複雜度,不用像 BFS、DFS 慢慢找。" }, { "time": "2:02:15", "title": "A*:f(n)=g(n)+h(n)", "gist": "A* 是最有名的 best-first search,g(n) 是走到 n 已花的成本,h(n) 是從 n 到目標的估計成本,兩者相加決定先走哪條。" }, { "time": "2:03:17", "title": "A* 走一次羅馬尼亞", "gist": "從 A 出發,S=140+253=393 最小先走 S,再比較 F=415、R=413 等,最後得到 A→S→R→P→B;勝過 greedy 是因為同時考慮過去成本與未來估計。" }, { "time": "2:05:50", "title": "A* 最佳的條件:admissible", "gist": "heuristic 符合 admissibility 與 consistency 時,A* 是 complete 且 optimal(詳細證明不講);admissible 是永遠不高估到目標的成本,直線距離就是例子。" }, { "time": "2:08:07", "title": "Consistency 就是三角不等式", "gist": "h(n) 不大於「n 走到 n' 的成本加上 h(n')」,老師畫圖說明這就是三角不等式;第三章到這裡結束。" } ], "emphasis": [ { "time": "2:10:37", "quote": "那詳細的證明我們就不講了,我們只講它的特性是怎樣", "kind": "不考", "about": "A* 最佳性的詳細證明不講(2:06:01 也說過),只要會 admissible、consistent 兩個條件;老師說的是「不講」,沒有明說「不考」" } ] }, { "num": 7, "title": "局部搜尋與爬山演算法", "start": "2:11:49", "end": "2:35:52", "slides": "Ch4 p.1–9", "summary": "Ch4 開場:像 8-queens 這種只在乎最後結果、不在乎路徑的問題改用 local search,重點介紹 hill climbing、它會卡住的原因和幾種改良版。", "importance": "核心", "segments": [ { "time": "2:11:49", "title": "路徑不重要的問題", "gist": "前面的問題都能畫成樹、路徑就是解;8-queens 只在乎最後擺法,跟放的順序無關,所以需要不管路徑的演算法,其中最重要的是 local search。老師用線性代數找最小平方解比喻:這裡的 search 是在解空間裡找最好的解。" }, { "time": "2:16:03", "title": "Local search 的基本原則", "gist": "從目前這個解看周圍鄰居,往比自己好的鄰居移動再重複;記憶體用得很少,在很大的解空間也常能找到還不錯的解,適合有 objective function 的純最佳化問題。" }, { "time": "2:18:08", "title": "State-space landscape", "gist": "x 軸是各種狀態、y 軸是 objective function 的值,目標是找到最高點;用 8-puzzle 說明鄰居就是空格移一步後的盤面。" }, { "time": "2:21:46", "title": "會卡住的地方", "gist": "一路往上爬可能停在 local maximum、平坦高原(flat local maximum)或山腰平台(shoulder),而且解題時永遠不知道真正的最高點在哪。" }, { "time": "2:23:55", "title": "Hill climbing 演算法", "gist": "看所有鄰居,最好的鄰居比自己好就移過去,否則自己就是答案;像被丟到山區,每次往方圓 100 公尺內最高的地方走。" }, { "time": "2:26:12", "title": "八皇后例子與 greedy local search", "gist": "鄰居定義成把某一欄的皇后在同一欄內移動,h 是互相攻擊的皇后對數(例:14 降到 12);hill climbing 又叫 greedy local search,常表現不錯,但會卡在 local maximum、ridge、plateau。" }, { "time": "2:29:33", "title": "成功率與 sideways move", "gist": "8-queens 有 86% 會卡住、只有 14% 成功,但成功平均 4 步、卡住 3 步(狀態共 8^8,約 1,700 萬);允許走到一樣好的鄰居後成功率升到 94%,代價是成功要 21 步、失敗要 64 步。" }, { "time": "2:32:35", "title": "三種變形與收尾", "gist": "Stochastic hill climbing 從比較好的鄰居中隨機挑;first-choice 遇到第一個比自己好的就走(老師用找工作比喻);random-restart 用多個隨機起點再取最好的。成敗很看 landscape 形狀,本週講到這裡。" } ], "emphasis": [ { "time": "2:14:09", "quote": "最重要的一種做法,就叫做Local Search", "kind": "強調", "about": "路徑不重要的問題,最重要的做法是 local search" } ] } ], "skipped": [ { "start": "0:00:00", "end": "0:01:46", "reason": "老師請同學幫忙設定直播畫面,沒有課程內容" }, { "start": "0:10:03", "end": "0:10:56", "reason": "章內略過:重申已知的考試規則(12/10 實體考試,線上同學回自己學校電腦教室考),筆記不重講" }, { "start": "0:40:28", "end": "0:53:20", "reason": "下課休息十分鐘;0:41:03–0:42:20 講台邊有學生問專題題目(老師:要求沒那麼高,研究生最好做對論文有幫助的題目),不另成章" }, { "start": "1:43:47", "end": "1:56:41", "reason": "下課休息;1:44:44–1:52:27 講台邊有學生問作業(HW1 不用比別人好、用 LLM 要設計 agent loop),要點已放進「這週要記得」" } ], "problems": [ "HW1 說明前段不在影片裡,本機投影片也沒有 HW1 說明頁(Lecture 0 只有一行 project proposal),研究動機之前講了什麼無法得知。", "0:03:10「所以這邊會佔75%的比例」不確定指哪幾塊(introduction 加方法?),筆記建議只寫老師提到 75%,不要自行解讀。", "ASR 錯字(寫筆記時要改):0:06:52「CPPR的格式」應為 CVPR;0:06:57「體驗報告」推測是「提案報告」;0:07:02「角角的期限」應為「繳交期限」;2:28:58「無極」應為 ridge(屋脊);2:30:5x「8的84%17個million」應為 8^8 ≈ 17 million;另外多處 Asian=agent、Socastic=stochastic、Pass Cost=path cost、heel climbing=hill climbing、None=known、Amstrong Search/Active=A* search/optimal。", "1:29:16「GPD-6 ASTRON」不確定原詞,大概是某個 GPT 的 agent 產品,筆記建議寫「現在的 AI agent」即可。", "1:02:22–1:02:52 逐字稿亂碼約 30 秒(八皇后開場,老師好像在說買了一個小棋盤),內容以 Ch3 p.7 補。", "時間戳疑似漂移:0:43:20「好接下來呢」→0:53:20、1:52:41「第二個部分」→1:56:41,都剛好差整數分鐘;章節起點採後者,建議開影片確認。", "老師口誤或 ASR:1:12:54、1:17:25 把 BFS、UCS 說成「Informed Search」,投影片 p.12–17 標的是 Uninformed,筆記照投影片寫。", "老師口頭說法跟投影片不同(筆記照投影片寫,並加「注意」):(a) 1:21:5x 說「BFS 也可以找最佳解」,課本是步驟成本都一樣時才是;(b) 2:01:2x 說 greedy「有解一定會找到」,p.30 寫的是只在有限狀態空間才 complete;(c) 2:06 說 A* 要同時符合 admissible 與 consistent 才最佳,p.33 說 consistency 是稍強的條件,只有 graph search 才需要。", "投影片內容有、老師沒明講的地方,Exam-ready 要補原句:Ch3 p.23(IDDFS 是搜尋空間大、解的深度未知時的首選)、Ch2 p.25(utility-based 能處理 stochastic/部分可觀察環境的不確定性)、Ch4 p.6 後半(有多個最好的鄰居時隨機挑)。", "投影片 _text 缺公式(p.14、p.19、p.20、p.25 的 O(b^d)、O(b^m)、O(bm)、O(b^(d/2)) 都是空白),寫 Exam-ready 前要看投影片圖確認。", "下課時段講台邊的對話(1:44:44–1:52:27)分不清誰是老師、誰是學生,例如 1:45:54「就是有自己的想法這才是那個重點」不確定是誰說的;「這週要記得」只用確定是老師回答的部分。", "0:11:10「沒有點名」推測是回答 Slido 上「有沒有點名」的問題,但沒看到原問題,不確定。" ] }, { "lecture": "ai-w3", "week_title": "局部搜尋與最佳化、機率入門", "one_liner": "講完 Ch4 局部搜尋(模擬退火、束搜尋、基因演算法、梯度與牛頓法、線上搜尋),再跳到 Ch12,用牙醫例子說明 AI 為什麼要引入機率。", "special_notes": [ "0:00:42–0:09:57 直播沒有聲音(0:00:42 只有一句「今天是9月24號」),從 0:09:57 的「上課注意事項」才開始有內容。不確定這 9 分鐘有沒有漏掉課程內容。", "這堂有兩次下課:1:10:01–1:21:32、2:04:58–2:16:36。", "Ch12 投影片本機沒有(課程網站連不上),第 07 章的 Exam-ready 要等主理人從 NTU COOL 下載後再補(停車場 P1)。", "Ch4 講義 PDF 頁碼有跳號:_text 的 p.27 以後,投影片上印的頁碼是 52–63。本週 slides 欄一律用 _text 的 PDF 頁序 p.N。", "0:53:50–0:55:00 逐字稿有大量重複和亂碼(八皇后 fitness 的例子),老師那段講的 fitness 定義聽不清楚。", "課本 Ch5–10(符號邏輯)整段跳過,Ch4 講完直接進 Ch12(2:30:39)。" ], "remember": [ "作業一 10/1(四)23:59 截止,時間一到系統自動關閉;同一天線上公布作業二。(0:11:45)", "10/1 老師出國開會,不直播,改看預錄影片,連結放在 NTU COOL。(0:09:57)", "新制度:之後每次實體課都抽算力。線上同學要看直播,掃 QR code 填 Google 表單(填個人 Gmail),並答對當堂兩個通關密語;表單當天 16:00 關閉,看回放才填就來不及。(0:16:13、0:19:15)", "考試範圍訊號:課本 Ch5–10(符號邏輯)整段跳過,Ch4 之後直接上 Ch12。(2:30:39)", "Ch12 老師說主要是複習機率,停在 product rule,說後面也是複習;沒修過機率統計的先複習條件機率。(2:32:09、2:53:38)", "老師兩次說聽起來吃力就回去複習以前的數學:指數函數、偏微分、牛頓法、Hessian 矩陣。(0:39:45、1:49:48)" ], "chapters": [ { "num": 1, "title": "下週預錄課與抽算力制度", "start": "0:09:57", "end": "0:23:12", "slides": "無投影片(現場 QR code 畫面)", "summary": "下週 10/1 改看預錄影片、作業一截止與作業二公布,以及本週新宣布的抽算力制度。", "importance": "行政", "segments": [ { "time": "0:09:57", "title": "下週改看預錄影片", "gist": "老師 10/1 出國開會,那週不直播,改成預錄影片放 NTU COOL。還沒收到 NTU COOL 邀請的,可能是加退選的時間差,或沒去收學校官方信箱;目前還有 300 多人沒接受邀請。" }, { "time": "0:11:37", "title": "作業一截止、作業二公布", "gist": "作業一 10/1(四)晚上 11:59 截止,時間到系統自動關閉;同一天線上公布作業二。" }, { "time": "0:12:21", "title": "為什麼要抽算力", "gist": "線上線下同步上課讓實體教室沒什麼人,TAICA 提供算力當獎勵,鼓勵大家實體來上課、線上也認真聽。本學期含今天還有 10 次實體課。" }, { "time": "0:16:13", "title": "抽獎規則", "gist": "每次實體課抽現場成大同學 6 位、線上同學 5 位,共 11 位;其中再抽 1 位拿 2000 元算力,其餘每人 400 元。" }, { "time": "0:17:50", "title": "線上同學怎麼參加", "gist": "掃 QR code 填 Google 表單(學號、姓名、學校、個人 Gmail),還要答對老師上課中隨機說出的兩個通關密語;表單當天 16:00 截止,看回放再填沒有用。" } ], "emphasis": [ { "time": "0:12:02", "quote": "那請特別注意這個繳交的時間。因為時間一到,系統就會自動關起來。", "kind": "強調", "about": "作業一的繳交時間(10/1 23:59),逾時系統自動關閉" } ] }, { "num": 2, "title": "爬山法複習與模擬退火", "start": "0:23:12", "end": "0:42:49", "slides": "Ch4 p.2–11(p.2–9 上週講過,本週快速複習)", "summary": "快速複習爬山法和它的變形,接著講模擬退火怎麼用溫度控制「接受較差解」的機率。", "importance": "核心", "segments": [ { "time": "0:23:12", "title": "第四章在解什麼問題", "gist": "目標是在解空間裡找到讓目標函數(objective function)最大的解。解通常是高維向量,所以很難直接找出最好的那一組。" }, { "time": "0:24:58", "title": "複習爬山法", "gist": "Hill climbing 從隨機一個解出發,看周圍鄰居,換成表現最好的鄰居,一直重複;找不到更好的鄰居或改善很小時就停。" }, { "time": "0:28:20", "title": "卡在區域最大值", "gist": "爬山法可能停在小山丘(local maximum)。真實問題沒有「上帝視角」,看不到整個曲面長什麼樣,所以才需要局部搜尋。" }, { "time": "0:29:26", "title": "爬山法的三種變形", "gist": "Stochastic:從比自己好的鄰居裡隨機挑;First-choice:找到第一個比自己好的就走;Random-restart:從不同隨機起點多跑幾次。老師說變形不保證一定比基本版好,要看問題。" }, { "time": "0:31:58", "title": "模擬退火的由來", "gist": "Annealing(退火)就像打鐵:先加熱讓分子鬆動、好塑形,再慢慢冷卻讓結構固定。模擬退火就是模仿這個過程。" }, { "time": "0:33:12", "title": "模擬退火的流程", "gist": "跟 first-choice 爬山法很像:鄰居比較好就一定換過去;鄰居比較差,也有一定機率換過去,老師比喻成「退一步海闊天空」、第一份工作不一定挑薪水最高的。" }, { "time": "0:35:53", "title": "接受機率 e^(ΔE/T)", "gist": "走到這一步時 ΔE 一定是負的:鄰居差越多,接受機率越低;只差一點點的鄰居比較容易被接受。" }, { "time": "0:38:35", "title": "溫度 T 逐漸下降", "gist": "一開始溫度高,比較願意接受差的鄰居;迭代越多溫度越低,越不願意冒險。老師用「年輕時可以冒險投資、快退休就保守」來比喻;聽起來吃力就先複習指數的定義。" } ], "emphasis": [] }, { "num": 3, "title": "局部束搜尋與基因演算法", "start": "0:42:49", "end": "1:10:01", "slides": "Ch4 p.12–15", "summary": "局部束搜尋一次追蹤 k 個解並放在一起比較,基因演算法再加上選擇、交配、突變;最後是課堂問答。", "importance": "核心", "segments": [ { "time": "0:42:49", "title": "局部束搜尋", "gist": "Local beam search 一次隨機撒 k 個解,把每個解的鄰居全部產生出來,再從所有鄰居裡挑最好的 k 個繼續。" }, { "time": "0:44:42", "title": "跟 random restart 差在哪", "gist": "Random restart 每次重跑互相獨立;beam search 把 k 組的鄰居放在一起 PK,好的區域可能把 k 個名額全拿走,等於資訊在平行搜尋之間互相傳遞。老師講了兩次。" }, { "time": "0:47:22", "title": "它是策略,也有隨機版", "gist": "老師說 beam search 嚴格說是一種搜尋策略,可以搭配爬山法或模擬退火。Stochastic beam search 依機率挑 k 個,越好的越容易被挑;深度學習的訓練策略裡也常看到 beam search。" }, { "time": "0:49:17", "title": "基因演算法的名詞", "gist": "GA 是 stochastic beam search 的變形,受演化論啟發:k 個隨機解叫 population,每個解叫 individual,解要寫成有限字母的字串,最常見是 0 和 1。" }, { "time": "0:51:36", "title": "八皇后:染色體與適應度", "gist": "把每一欄皇后由下往上的位置寫成一串數字,這串叫 chromosome(染色體),每個數字是 gene(基因);再用 fitness(適應度)幫每個盤面打分數。" }, { "time": "0:55:39", "title": "選擇、交配、突變", "gist": "依 fitness 比例挑父母(24、23、20、11 分對應 31%、29%、26%、14%),表現好的可能被挑很多次;隨機選切點做 crossover 產生子代,再以很小的機率做 mutation。" }, { "time": "1:00:39", "title": "繁衍多代與各種變形", "gist": "繁衍很多代後挑最好的解。演化式計算本身就是一門課,有很多變形,例如讓超優秀個體「長生不老」、用實數當染色體;關鍵在把問題寫成染色體的形式。" }, { "time": "1:03:18", "title": "課堂問答", "gist": "模擬退火會不會越走越爛:溫度只會一路下降,最後越走越爛的機率非常低(證明略過)。找不到全域最佳解怎麼辦:實務上用 random restart 多跑幾次,夠好就好,連 GPT 找到的也只是 local maxima。(下課時另有同學問能不能記住歷史最佳解,老師說實務上可以,1:10:16)" } ], "emphasis": [ { "time": "0:45:14", "quote": "差別在於Local Research,它其實有不同Solution之間的溝通,再講一次,再講一次", "kind": "強調", "about": "Local beam search 和 random-restart 的差別:k 條平行搜尋之間會傳遞資訊(逐字稿的 Local Research=Local Beam Search)" }, { "time": "1:06:10", "quote": "只是我們書上這個證明的部分就略過不談", "kind": "不考", "about": "模擬退火收斂的數學證明略過不講(原話是「略過不談」,沒有明說不考)" } ] }, { "num": 4, "title": "連續空間的梯度上升", "start": "1:21:32", "end": "1:40:36", "slides": "Ch4 p.16–20", "summary": "用蓋三座機場的例子,把局部搜尋搬到連續空間:離散化、梯度、步長 α 與 line search。", "importance": "核心", "segments": [ { "time": "1:21:32", "title": "從離散到連續:蓋三座機場", "gist": "前面的八皇后都是離散問題,連續空間其實有更有效率的做法。例子:在羅馬尼亞蓋三座新機場,解是 (x1,y1,x2,y2,x3,y3) 這個六維向量。" }, { "time": "1:24:13", "title": "目標函數:距離平方和", "gist": "每個城市到離它最近機場的距離平方,全部加起來,要讓總和最小;Ci 是離第 i 座機場最近的城市集合。" }, { "time": "1:25:38", "title": "最大化改寫成最小化", "gist": "最佳化問題通常改寫成最小化 cost 或 loss,因為最大化容易讓數值爆掉,而 loss 最小是 0,不會 overflow。" }, { "time": "1:27:01", "title": "離散化:12 個鄰居", "gist": "為了避開連續空間的無限多種變化,每次只動一座機場的 x 或 y,加或減 δ,所以每個狀態只有 12 個鄰居,就能套用前面的局部搜尋。" }, { "time": "1:29:02", "title": "微分等於零求極值", "gist": "數學上可以直接解 ∇f = 0:對六個變數各自偏微分、令它等於 0。但很多問題沒有 closed form 解。老師說深度學習幾百萬個參數也是用接下來這套做法;為什麼微分等於 0 有效,這門課不講。" }, { "time": "1:33:09", "title": "最陡上升的更新式", "gist": "沒有 closed form 時,用 x ← x + α∇f 一步一步更新(steepest-ascent hill climbing)。梯度就是往哪個方向走海拔上升最多,負責決定方向。" }, { "time": "1:36:45", "title": "步長 α 太大太小都不好", "gist": "α 決定一次走多遠:太小要走很多步,太大會衝過山頂、高度反而下降。" }, { "time": "1:38:48", "title": "Line search 與牛頓法", "gist": "找最好的 α 本身又是一個最佳化問題,可以用 line search。牛頓法原本用來求 g(x)=0 的根,更新式是 x ← x − g(x)/g′(x);老師提醒忘了就回去翻以前的數學書。" } ], "emphasis": [ { "time": "1:25:38", "quote": "那請大家記得,當我們在找所謂的最佳解", "kind": "強調", "about": "最佳化問題習慣改寫成最小化 cost/loss,因為最大化容易數值爆掉(1:26:44 接著說:即使概念上是最大化,也會改寫成最小化 cost)" }, { "time": "1:30:17", "quote": "我們在這門課裡面不會告訴你為什麼", "kind": "不考", "about": "為什麼「一次微分令它等於 0」就能找到極值,本課不講,要去修最佳化導論(原話是「不會告訴你」,沒有明說不考)" } ] }, { "num": 5, "title": "牛頓法與線性規劃", "start": "1:40:36", "end": "2:04:58", "slides": "Ch4 p.21–26", "summary": "用等高線解釋梯度方向,用切線法講牛頓法與 Hessian,再介紹限制最佳化與線性規劃;最後是課堂問答。", "importance": "一般", "segments": [ { "time": "1:40:36", "title": "梯度的幾何意義", "gist": "老師拿自己最佳化課的投影片,用碗狀曲面和等高線(level set)說明:梯度垂直於等高線,是上升最快的方向,反方向就是下降最快的方向。" }, { "time": "1:44:19", "title": "牛頓法:切線法", "gist": "知道方向後要決定走多遠。牛頓法在目前這點畫切線,切線和 x 軸的交點就是下一個位置,通常更新兩三次就很接近真正的根。" }, { "time": "1:47:11", "title": "牛頓法拿來找極值", "gist": "找極值就是找 ∇f(x) = 0,所以把牛頓法的 g 換成 ∇f,g′ 就變成二次微分,也就是 Hessian 矩陣;矩陣的除法變成乘反矩陣。吃力的話要複習以前的數學。" }, { "time": "1:50:14", "title": "連續空間一樣會卡住", "gist": "連續空間也會卡在 local max、ridge、plateau,可以搭配 random restart 或模擬退火。實務上 α 常根據經驗設成固定值,它就是深度學習裡的 learning rate。" }, { "time": "1:51:55", "title": "限制最佳化與線性規劃", "gist": "Constrained optimization:變數必須符合限制(例如座標不能是負的)。Linear programming 的目標和限制都是線性,是 convex optimization 的特例;標準形式是在 Ax = b、x ≥ 0 下最小化 cᵀx。" }, { "time": "1:56:12", "title": "例子:製造商排產", "gist": "四種產品、三種資源(人力、原料 A、原料 B),在資源上限內決定各生產幾份,讓利潤最大。LP 在二戰期間快速發展,後來廣泛用在經濟學和作業研究;怎麼求解本課不講。" }, { "time": "2:00:30", "title": "課堂問答:先大步後小步", "gist": "同學問重新計算時會不會一直被拉回原本的解。老師說一開始 α 大、後期縮小,模擬退火的 T 也隨時間變,只有特殊設計的問題才會來回震盪;深度學習的 learning rate 排程也是「先冒險、後保守」。" } ], "emphasis": [ { "time": "1:43:49", "quote": "所以大家只需要記得一件事情就是說你在這個function裡面的某一組體你去算他的t度", "kind": "強調", "about": "梯度的方向就是讓函數值上升最快的方向,反方向下降最快(逐字稿的「某一組體」=某一組解,「t度」=梯度)" }, { "time": "2:00:18", "quote": "我們在這門課裡面呢我們就不再講怎麼求解", "kind": "不考", "about": "線性規劃怎麼求解本課不講,要去修最佳化導論(原話是「不再講」,沒有明說不考)" } ] }, { "num": 6, "title": "部分觀察與線上搜尋", "start": "2:16:36", "end": "2:29:37", "slides": "Ch4 p.27–35(投影片上印的頁碼是 52–63)", "summary": "只能看到部分環境時,怎麼用感測器推算位置;以及邊走邊探索的線上搜尋和 competitive ratio。", "importance": "一般", "segments": [ { "time": "2:16:36", "title": "部分觀察:迷宮裡的機器人", "gist": "有些問題只能觀察到一部分狀態。例子:機器人有四個方向的感測器、知道整張地圖,但導航壞了,只能隨機移動到相鄰格子,任務是判斷自己在哪。" }, { "time": "2:19:02", "title": "靠感測縮小可能位置", "gist": "第一次感測到北、南、西有障礙物,就把可能位置縮成幾格;往東走一步再感測,就能確定位置。老師說感測器如果只有八成正確會更難,之後的章節會講。" }, { "time": "2:21:32", "title": "Offline 與 online search", "gist": "前面講的都是 offline search:先算完整個解再執行。Online search 是做一個動作、觀察環境、再決定下一步,典型例子是掃地機器人一邊走一邊建地圖。" }, { "time": "2:22:37", "title": "Online agent 只知道什麼", "gist": "Agent 只知道能做哪些動作、做完的 cost、是否到達目標;不真的做一次,就不知道動作的結果。迷宮例子:從 S 往上走才發現是死路,只好走回來。" }, { "time": "2:24:12", "title": "盲目搜尋與啟發式", "gist": "盲目亂走就像上一章的 DFS、BFS;如果有 admissible heuristic(例如到目標的曼哈頓距離),就能用 A* 之類的方法。" }, { "time": "2:25:12", "title": "Competitive ratio", "gist": "評估 online 演算法:拿實際走的路徑成本,除以事先知道地圖時的最佳路徑成本,這個比值叫 competitive ratio,越小越好。" }, { "time": "2:27:02", "title": "邊走邊建地圖、小結", "gist": "每做一個動作就更新地圖,再決定下一步;DFS 和爬山法都有「只在附近展開」的特性,適合 online。老師最後提醒:各種 Search 名稱的地位不同,有的是問題定義、有的是策略、有的是演算法,這段偏聊天性質。" } ], "emphasis": [] }, { "num": 7, "title": "不確定性與機率基礎", "start": "2:29:37", "end": "2:53:55", "slides": "Ch12(投影片待補)", "summary": "跳過 Ch5–10 直接進 Ch12:用牙醫例子說明邏輯規則不夠用、要改用機率,並複習樣本空間、條件機率和乘法規則。", "importance": "核心", "segments": [ { "time": "2:29:37", "title": "從第四章跳到第十二章", "gist": "課本 Ch5–10 講符號邏輯學派,現在幾乎沒人用,所以整段跳過;Ch12 開始把不確定性納入,時代感大約是 1980–90 年代 AI 開始引入機率。" }, { "time": "2:32:29", "title": "為什麼要處理不確定性", "gist": "Agent 常常只能部分觀察環境,或者動作是 non-deterministic(叫吸塵器往右,它不一定真的往右),所以可能永遠無法確定自己在哪個狀態、做完一串動作會停在哪。" }, { "time": "2:34:02", "title": "牙醫例子:邏輯規則寫不完", "gist": "用 propositional logic 寫診斷規則:「牙痛 → 蛀牙」不對,牙痛可能是牙齦、口腔破洞甚至撞到門;反過來「蛀牙 → 牙痛」也不對,不是所有蛀牙都會痛。" }, { "time": "2:37:33", "title": "邏輯失敗的三個原因", "gist": "Laziness:原因和結果列不完;theoretical ignorance:醫學本身還沒有完整理論(例如失智症);practical ignorance:就算知道規則,要做的檢查太多太貴。" }, { "time": "2:39:41", "title": "用機率摘要不確定性", "gist": "機率可以把「懶得列」和「做不到完整檢查」的不確定性摘要起來。例如牙痛病人有 80% 有蛀牙;多了牙齦病史等新證據,機率就更新成 0.4;這些說法互不矛盾,機率取決於目前已知的證據。" }, { "time": "2:43:53", "title": "效用與決策理論", "gist": "回到第二章的 utility-based agent:每個狀態有 utility(效用),機率加上效用就是 decision theory;agent 是 rational 的,若且唯若它選擇 expected utility 最高的動作(MEU 原則)。" }, { "time": "2:45:47", "title": "樣本空間與事件", "gist": "丟兩顆骰子有 36 種結果,全部結果叫 sample space(Ω),每個結果 ω 的機率介於 0 和 1、總和為 1。我們關心的組合叫 event,AI 裡也叫 proposition,例如點數和為 11 的機率是 2/36。" }, { "time": "2:49:57", "title": "條件機率與乘法規則", "gist": "看到證據後的機率是 conditional probability,例如第一顆是 5 點時兩顆相同的機率是 1/6;小鎮蛀牙率 25% 和牙痛病人蛀牙率 60% 兩者都對。P(a|b) = P(a∧b)/P(b),移項就是 product rule:P(a∧b) = P(b)P(a|b)。" } ], "emphasis": [ { "time": "2:31:02", "quote": "所以我們直接跳過我們直接進入到第十二章", "kind": "不考", "about": "課本 Ch5–10(符號邏輯學派)整段跳過不上(原話是「跳過」,沒有明說不考)" }, { "time": "2:43:40", "quote": "所以這邊只是要跟大家強調說你在預估一個機率的時候其實是根據你現有已知的某一些資訊來去預估這個機率", "kind": "強調", "about": "機率取決於目前已知的證據;不同證據下的機率陳述(0.8、0.4…)彼此不矛盾" }, { "time": "2:51:42", "quote": "那請注意喔這兩個句話這兩個機率都是對的沒有互相衝突", "kind": "強調", "about": "先驗機率 P(cavity) 和條件機率 P(cavity | toothache) 可以同時成立、互不衝突" } ] } ], "skipped": [ { "start": "0:00:00", "end": "0:09:57", "reason": "開頭直播沒有聲音(0:00:42 只有一句「今天是9月24號」),0:09:57 才開始講上課注意事項" }, { "start": "1:10:01", "end": "1:21:32", "reason": "下課休息。1:10:16–1:11:30 有同學到台前私下問問題、約老師 meeting,收音不完整" }, { "start": "2:04:58", "end": "2:16:36", "reason": "下課休息" }, { "start": "2:53:55", "end": "2:57:10", "reason": "現場抽算力,加上重複提醒下週看影片、交作業一(第 01 章已涵蓋)" } ], "problems": [ "老師講的和課本不一樣:老師把牛頓法說成 line search 找最好 α 的一種做法(1:38:54、1:44:29、1:47:11);投影片 p.20、p.23 則是把 Newton–Raphson 當成另一種更有效的方法,直接解 ∇f(x)=0,更新式是 x ← x − H⁻¹∇f。寫筆記建議照課本寫,另加一句「注意:老師口頭說的是……」。", "「不考」這類 emphasis 共 4 條(1:06:10、1:30:17、2:00:18、2:31:02),老師的原話都是「略過不談/不會告訴你/不再講/跳過」,沒有一條明說「不考」。直接標【老師說不考】可能太強,建議寫成內文的「注意:本課不講……」,由寫章節的人判斷。", "0:53:50–0:55:00 逐字稿亂掉:「這個」連續重複十幾次,還有「measure 3 種不同的劑다車 種」「erlebt,omination」。八皇后 fitness 的定義聽不清楚;推測是課本的定義(互不攻擊的皇后對數,24/23/20/11 分),寫筆記照課本寫。", "Ch4 PDF 頁碼跳號:_text 的 p.26 之後,p.27 投影片上印的是 52,一路到 p.35=63。印刷頁 27–51 不在講義裡,老師也沒講(推測是課本 4.3 非確定性動作等內容,不確定)。p.4、p.28 是純圖片頁,要看圖。", "1:17:52 那行「我們在這一張的前半段那一邊呢」時間戳疑似錯位:它的語意接的是 1:21:32,老師實際應該是 1:21:3x 左右才開始講課。休息結束時間我用 1:21:32。", "已知事實說「可能還有 Ch3 收尾」:這堂沒有用到 Ch3 投影片,只在 2:24:29 口頭提到上一章的 DFS、BFS、A*。Ch4 p.2–9 上週(W2)已經講過(W2 逐字稿 2:29:44 講了 p.8 的 86%/14%),本週只是快速複習。", "老師口頭說小鎮蛀牙的先驗機率是 25%(2:51:1x);我記得課本(AIMA 4e)是 P(cavity)=0.2、P(cavity|toothache)=0.6,但不確定。等 Ch12 投影片到手再核對。", "Stochastic beam search 老師口頭說「跟我目前現有的 Solution 差不多的挑的機率越高」(0:48:23),講得不太清楚;投影片 p.12 的說法是挑選機率是 value 的遞增函數。寫筆記照投影片寫。", "第 06 章只有 13 分鐘,比 15 分鐘的下限短。它前面是下課、後面接 Ch12,沒辦法合理併到別章,所以維持獨立一章。", "emphasis 的 quote 照規定用逐字稿原文,裡面有 ASR 錯字,寫進筆記時要改成正確的字。本週常見錯字可以補進 fix_transcript.py 的 ASR 表:Hear/Heel Climbing=Hill Climbing、Semantic Unnealing/Seminity Unlimited/Seminating and Nearing=Simulated Annealing、Local Bean Search/Local Research=Local Beam Search、經驗演算法/經易演算法=基因演算法、chromazone=chromosome、Colon=column、八王二=八皇后、修道口=虛擬碼、T度/t度=梯度、State Piste Assent=steepest ascent、S1/S2=x1/x2、助療=蛀牙、simple space=sample space、Peper-Z(2:39:38,推測=propositional logic)、一頓=一對(doubles)、汗毛牌=號碼牌、admission=admissible、snide=Slido。" ] }, { "lecture": "nlp-w2", "week_title": "NLP 簡介、TF-IDF 與 BM25、為什麼需要詞向量", "one_liner": "老師用三小時帶過 LLM 之前的 NLP:語言為什麼難、以前做過哪些應用,接著從資訊檢索講到反向索引、TF-IDF、BM25,最後點出稀疏向量的限制,引出詞向量。", "special_notes": [ "老師 0:04:39 才開始講課,前面約 4 分半逐字稿沒有內容。", "兩次下課:0:58:52–1:08:43、2:07:15–2:16:39。", "2:18:33–2:19:11 逐字稿有約 40 秒空白,老師說「沒有抓到畫面」,2:20:21 又問「現在投影是對的吧」。這段錄影可能暫時沒拍到投影片(沒看影片,不確定)。", "本週投影片是 W1_NLP_brief_v2.pdf(檔名的 W1 不等於上課週),實際講的範圍是 p.3–64;p.2 目錄老師說跳過。" ], "remember": [ "第一個作業「應該下禮拜就出了」。可以先到課程 GitHub 看 2025/2024 年的舊作業,但老師說難度會稍微調高 (2:46:25)", "作業用 AI 寫不難,但老師要求「你們務必要自己自己搞懂他在幹什麼」 (2:47:26)", "TF、IDF、BM25 的公式不用背,但概念要懂:TF 算一個字在一篇文章裡出現幾次,IDF 看這個字出現在幾篇文件裡,用來判斷它有沒有鑑別力 (2:22:04)", "下週從 p.64 貓/狗/卡車那張圖接著講,用 word2vec 學詞向量,不講 GloVe (2:58:06)", "Precision/Recall 老師說下次補充;課程 GitHub 連結放在投影片上的 Live Announcement (2:59:09)" ], "chapters": [ { "num": 1, "title": "課程定位與傳統 NLP 流程", "start": "0:04:39", "end": "0:21:17", "slides": "W1_NLP_brief_v2 p.3–7(p.2 目錄跳過)", "summary": "老師說明這門課是「深度學習時代的 NLP」,再用新聞和股市報表的例子,對比以前要一步一步串起來的傳統流程,和現在 LLM 一次做完。", "importance": "一般", "segments": [ { "time": "0:04:39", "title": "開場:三小時濃縮半學期", "gist": "三節課連續上,照原本的課堂時間下課。今天把以前這門課大約一半的內容濃縮成三小時,細節不必會做,但名詞要聽過。" }, { "time": "0:06:29", "title": "課程定位:深度學習時代的 NLP", "gist": "這門課像 Stanford 的 NLP+Deep Learning 課,會直接跳進深度學習。p.3 的圖說明以前靠人訂規則、現在靠資料訓練;模型越大越難解釋,例如 BERT 每層的參數、word embedding 裡的數字。" }, { "time": "0:09:31", "title": "什麼是 NLP:拿到新聞能做什麼", "gist": "NLP 是用計算的方式理解人類語言,以前最紅的應用是翻譯和資訊檢索。拿到一批新聞,可以做索引、分類、事件偵測、影響力分析、摘要、情緒分析。" }, { "time": "0:12:59", "title": "非監督式訓練語料", "gist": "監督式資料要成對標註,成本很高。LLM 先靠大量沒標註的語料學人類知識,老師用「學英語不背文法、用聽的」來比喻。" }, { "time": "0:14:55", "title": "示範:叫 Claude 整理股市報表", "gist": "老師請 AI 找出外資買賣超前十名、抓相關新聞、整理成報表,現在一句話就做得到。但要知道它背後做了哪些步驟,才知道哪裡可能出錯。" }, { "time": "0:16:43", "title": "傳統 NLP 的一條龍流程", "gist": "以前要自己串起斷詞與詞性標註、NER、關鍵字權重、摘要、情緒分析、主題分群。前三步到大約四年前都還是標準 SOP,只要一步沒做好,後面幾乎都沒用。" } ], "emphasis": [ { "time": "0:06:05", "quote": "不過你大概要知道這些東西", "kind": "強調", "about": "今天講的傳統做法現在不一定要自己做,但名詞和概念要知道" } ] }, { "num": 2, "title": "語言的歧義與理解難題", "start": "0:21:17", "end": "0:41:29", "slides": "W1_NLP_brief_v2 p.8–19", "summary": "用詞性、歧義、閱讀理解、推理等例子,說明語言對電腦為什麼難,並討論 LLM 是真的懂,還是只是看過類似的資料。", "importance": "一般", "segments": [ { "time": "0:21:17", "title": "詞性標註沒那麼簡單", "gist": "人覺得詞性不超過十種,但真的細分下去非常多。用過 CKIP、結巴就知道,工具會吐出一大堆詞性標籤。" }, { "time": "0:22:55", "title": "詞義歧義:Watch for kids", "gist": "watch 當名詞或動詞,意思就不同,要靠前後文判斷,這也是 LLM 的 context window(一次能讀進的文字長度)很重要的原因。AI 要被問對角度才答得好。" }, { "time": "0:25:27", "title": "前後文歧義:Siri 與規則式對話", "gist": "問「要不要帶傘」,Siri 知道是在查天氣。但以前的聊天機器人本質是字典比對加一點情境,規則顧此失彼,隨便問幾句就答不出來。" }, { "time": "0:28:23", "title": "閱讀理解題", "gist": "老師建議做完前兩個作業後,自己試試用 embedding 算選項和文章的相似度來答題。要解釋答案就得靠生成,拿掉 LLM 幾乎做不到。" }, { "time": "0:29:15", "title": "英文句法歧義:望遠鏡句", "gist": "I saw a man on a hill with a telescope 有好幾種解讀。把句子翻成別的語言再翻回來(回譯),可以產生多樣化的語料;剖析樹(parsing tree)取決於用哪種統計基礎,所以不是唯一的。" }, { "time": "0:33:13", "title": "NER:抓出財經新聞的關鍵實體", "gist": "財經新聞只要標出公司、日期、數字,就能拿來分類、分群。以前要靠 CRF 這類機率模型加上標註資料,老師實驗室曾有兩位博士生靠這個題目畢業。" }, { "time": "0:34:55", "title": "推理、情境與同音字", "gist": "舅舅偷錢的推理題、冬天夏天「能穿多少穿多少」的情境、趙元任《季姬擊雞記》和 AI 仿作的《詩師食獅史》。LLM 解得出來,但老師認為多半是看過相關語料。" }, { "time": "0:39:43", "title": "Strawberry 有幾個 R", "gist": "依照 LLM 切 token 的設計,它理論上不知道一個字怎麼拼。會答對,很可能是訓練資料裡本來就有人把 strawberry 一個字母一個字母拼出來。這段沒有對應投影片。" } ], "emphasis": [] }, { "num": 3, "title": "LLM 之前的應用與分析層次", "start": "0:41:29", "end": "0:58:52", "slides": "W1_NLP_brief_v2 p.20–32", "summary": "回顧 LLM 出現前的 NLP 應用(聊天機器人、社群文字探勘、醫療),再介紹 NLP 的分析層次,以及深度學習怎麼把每一層重做一遍。", "importance": "一般", "segments": [ { "time": "0:41:29", "title": "Siri 與小冰", "gist": "微軟小冰大約十年前很紅,深夜陪大學生聊天;記者問它這輩子最期待什麼,它回答「活著」。當時靠大量網路對話語料訓練,現在用 LLM 包一層 API 就做得到。" }, { "time": "0:43:51", "title": "LLM 之前的應用清單", "gist": "假新聞偵測、情緒分析、翻譯、醫療建議、股票、摘要、Deep Web Mining(例如寫程式搶高鐵票、撈出網站背後的資料庫)、資訊擷取。" }, { "time": "0:45:10", "title": "Twitter 文字探勘", "gist": "用推文的時間和地點追颱風路徑;推文情緒和蓋洛普民調對得起來;Science 論文發現星期一大家心情最差;還有股票分析。用推文和 Google Trends 偵測流感,比疾管局公告更早。" }, { "time": "0:50:26", "title": "美食評論與臉書按讚", "gist": "日本美食的情緒探勘;PNAS 研究用臉書按讚預測宗教、性別傾向等個人特質,很多項準到八成以上。" }, { "time": "0:52:24", "title": "醫療文字探勘", "gist": "可以輔助判讀病歷、找出相似病患。最難的是症狀和醫學名詞有很多種寫法,要把它們對起來。" }, { "time": "0:53:30", "title": "非結構化資料", "gist": "前面這些應用都是在管理非結構化資料。結構化資料可以用 SQL 查欄位;非結構化資料沒有 metadata(描述資料的欄位資訊),就需要 NLP 來處理。" }, { "time": "0:55:02", "title": "NLP 的分析層次", "gist": "構詞、語法、語意、語用一層一層往上做,詞性標註、剖析樹屬於語法層。老師自己也發表過用 LLM 概念做中文斷詞的論文(p.29)。" }, { "time": "0:56:08", "title": "深度學習把每一層重做:構詞", "gist": "深度學習出來後,每一層都用大型神經網路重做一遍。構詞從字首字尾的統計表,變成把每個詞素學成向量(例如 un- 帶反向的意思),很好用,但說不出那些數字代表什麼。" } ], "emphasis": [] }, { "num": 4, "title": "語法層次與深度學習時代", "start": "1:08:43", "end": "1:20:25", "slides": "W1_NLP_brief_v2 p.33–37", "summary": "接著講語法與語意層的限制、Manning 對 NLP 的定義,以及深度學習時代怎麼用 word2vec、BERT 這類表示學習把 NLP 重做一遍。", "importance": "一般", "segments": [ { "time": "1:08:43", "title": "續課:教材要一直更新", "gist": "今天只是看故事,不談細節。資工系到了 AI 時代,一半以上的教材都要跟著更新。" }, { "time": "1:10:27", "title": "沒學過機器學習會不會吃力", "gist": "寫作業應該還好;但理解上課內容時,有訓練過模型的人感受會不太一樣。" }, { "time": "1:11:22", "title": "語法層:語法樹", "gist": "用詞性分析出語法樹,從 root 往下切出名詞片語、動詞片語,再從語法推出語意。中研院做了很多這類語料,但這條路大約十年前就碰到瓶頸。" }, { "time": "1:13:19", "title": "NLP 的限制與語言學途徑", "gist": "名詞片語的角色、抽象概念、同義詞都很難處理,換一種語言規則又不同。語言學途徑不把文件當成一袋字,而是要抽出概念;現在 LLM 的 embedding 已經把前後文的概念學進去了。" }, { "time": "1:16:17", "title": "Manning:語言理解是 AI-complete", "gist": "NLP 是資工、AI、語言學的交集,完美的語言理解是 AI-complete(跟做出通用 AI 一樣難)。老師介紹 Christopher Manning(GloVe 出自他的實驗室),並秀出自己在 ACL 2023 和他的合照。" }, { "time": "1:18:28", "title": "AI 加值的 NLP", "gist": "資料處理換成 word2vec、GloVe、ELMo、BERT(2019–2021 年幾乎人人都用 BERT),後面再接各種模型與應用。模型訓練效果好,但可解釋性差,可能只是記住了資料。" } ], "emphasis": [] }, { "num": 5, "title": "資訊檢索、索引與前處理", "start": "1:20:25", "end": "1:48:46", "slides": "W1_NLP_brief_v2 p.38–47", "summary": "從資訊檢索的角度看文字處理,介紹反向索引和詞表大小,以及斷詞、詞幹還原、詞形還原、停用詞這幾個前處理步驟。", "importance": "核心", "segments": [ { "time": "1:20:25", "title": "從資訊檢索看文字", "gist": "先不用 LLM,看以前怎麼處理文字。WWW 在 1998–99 年起飛後,Google 靠資訊檢索起家,那時資訊檢索的問題幾乎就等於 NLP 的問題。" }, { "time": "1:22:20", "title": "資訊檢索兩大重點:索引與排序", "gist": "以前做資訊檢索遇到的問題,現在做 RAG 也會遇到。索引讓暴力搜尋變成 log 等級的搜尋;排序的代表是 Google 的 PageRank。Yahoo 用人工分類網頁(DMOZ),資料一多就撐不住。" }, { "time": "1:25:40", "title": "Inverted index、term 與 Vocabulary", "gist": "反向索引記錄每個字出現在哪些文件裡。term 是一個字、片語或關鍵字;Vocabulary 是系統要處理的字的集合,以前常用的字典大約三萬字。" }, { "time": "1:27:39", "title": "LLM 詞表大小:越大越好嗎", "gist": "LLM 的詞表大約 32K–256K。詞表越大,參數量(詞表大小乘上向量維度)越多,解碼時要算機率的字也越多,所以各有利弊。" }, { "time": "1:30:20", "title": "反向索引怎麼建、怎麼跑得快", "gist": "文章斷詞後,記下每個字出現在第幾篇、第幾個位置,串成 bucket。暴力找字頭會越跑越慢,要用 Hash 做到常數時間,文件編號也要省空間。缺點是只能比對一模一樣的關鍵字。" }, { "time": "1:37:43", "title": "前處理:斷詞、詞幹、停用詞", "gist": "Tokenization 是抽出 term,拿掉 HTML 和標點、全部轉小寫。Stemming 用 Porter 演算法砍字尾回到詞根(fish、fisher),但 fishing rod 砍掉就變了意思。拿掉停用詞可以省 20–30% 的索引空間。" }, { "time": "1:42:46", "title": "Stemming vs Lemmatization", "gist": "Stemming 照規則砍、速度快,但常產生不是真正單字的詞根(studies 變 studi)。Lemmatization 會考慮詞性和語意,還原成真正的字(study),比較慢但結果比較乾淨。" }, { "time": "1:45:10", "title": "停用詞的取捨", "gist": "停用詞因語言和應用而不同,例如新聞裡的「報導」也算。什麼時候拿掉會影響語意,to be or not to be 整句都是停用詞。現在寧願多買記憶體,而且 LLM 對 prompt 裡每個字都很敏感。" } ], "emphasis": [ { "time": "1:25:43", "quote": "這個名詞可能大家就記一下因為這個是博物館會出現的名字叫Inverted index", "kind": "強調", "about": "Inverted index(反向索引)這個名詞要記住" }, { "time": "1:42:49", "quote": "大家可能要稍微瞭解一下因為它還蠻有用的", "kind": "強調", "about": "Lemmatization(詞形還原)要了解" } ] }, { "num": 6, "title": "向量空間模型與 TF-IDF", "start": "1:48:46", "end": "2:07:15", "slides": "W1_NLP_brief_v2 p.48–52", "summary": "用向量空間模型把文件變成向量,再用 TF、IDF 加權、用 cosine 算相似度,並說明這些老方法在 RAG 裡仍然有用。", "importance": "核心", "segments": [ { "time": "1:48:46", "title": "向量空間模型", "gist": "使用者丟進很多字或整篇文章時,就把每篇文件變成一個向量,維度等於詞表大小,字有出現就是 1、沒出現就是 0。詞表有三萬維,但每篇只有幾百個不同的字,所以向量非常稀疏。" }, { "time": "1:52:22", "title": "TF:詞頻與正規化", "gist": "一個字在文章裡出現越多次,可能越重要。但要除以文章的總字數做正規化,不然長文章會壓過短文章。" }, { "time": "1:54:01", "title": "IDF:逆文件頻率", "gist": "IDF 看一個字出現在多少篇文件裡。「報導」每篇新聞都有,IDF=log(N/n)=0,等於完全沒有鑑別力。" }, { "time": "1:55:34", "title": "為什麼做 RAG 還要懂 TF-IDF", "gist": "IDF 是鑑別器(discriminator)。句子轉成 embedding 會有點模糊,在稠密向量之外加上 TF-IDF 稀疏向量,關鍵字檢索的效果會變好,是很強的 baseline。" }, { "time": "1:57:07", "title": "IDF 的正規化與分佈", "gist": "一個字只出現在一篇文件時,IDF 最大;除以 log N 可以正規化到 0–1。IDF 是憑經驗訂的權重,但和 Entropy 有理論上的關係,可以畫分佈圖檢查它的鑑別力。" }, { "time": "1:59:58", "title": "cosine 相似度與內積", "gist": "cosine 就是內積再除以兩個向量的長度。向量都正規化成長度 1 時,cosine 就等於內積;向量資料庫做的就是這件事。" }, { "time": "2:03:38", "title": "TF-IDF 的各種變形", "gist": "TF 可以取 log,或壓到 0.5–1 之間,讓很少出現的字也有權重。查詢短、文件長,所以兩邊可以用不同算法(例如 ltn.lnc);這些都是憑經驗調出來的做法。" } ], "emphasis": [ { "time": "1:49:28", "quote": "可能你覺得很Trivial但是其實這個概念還蠻重要的", "kind": "強調", "about": "用向量空間模型表示文件" }, { "time": "1:56:24", "quote": "雖然它是很古老的東西但是它是一個非常Strong的Baseline", "kind": "強調", "about": "TF-IDF 在 RAG 檢索裡仍是很強的 baseline" }, { "time": "1:56:31", "quote": "大家就要記住IDF是用來幹嘛", "kind": "強調", "about": "IDF 的用途:判斷一個字在整個文件集裡有沒有鑑別力" }, { "time": "2:02:20", "quote": "那這件事情其實還蠻重要的尤其是到時候現在你說做LM做REG你會建所謂的Vector Database", "kind": "強調", "about": "正規化後的 cosine 等於內積,向量資料庫算的就是這個" } ] }, { "num": 7, "title": "課堂提問與 BM25", "start": "2:16:39", "end": "2:29:52", "slides": "W1_NLP_brief_v2 p.48–53(口頭提到 p.94)", "summary": "先回答課堂提問(向量空間、反向索引、TF-IDF 要懂到哪),再介紹 BM25:一個用進階版 TF-IDF 算相似度的演算法,到現在仍是很強的 baseline。", "importance": "核心", "segments": [ { "time": "2:16:39", "title": "回頭看向量空間的例子", "gist": "詞表只有三個字時,每篇文件就是三維空間裡由 0 和 1 組成的向量。詞表可以從文件裡自己累積,也可以直接用現成的三萬字常用字典。2:18:33 左右畫面可能沒抓到。" }, { "time": "2:20:24", "title": "提問:inverted index 和 index 差在哪", "gist": "技術上就是資料庫的索引。概念上是反過來:不是記「這篇文章有哪些字」,而是記「這個字出現在哪些文章」。" }, { "time": "2:21:28", "title": "提問:字幕與 TF-IDF 要懂到哪", "gist": "YouTube 自動字幕可能會怪怪的。p.52 看不懂沒關係,但要知道 TF 是算字在一篇文章出現幾次,IDF 是算字出現在多少篇文件。" }, { "time": "2:22:47", "title": "權重變形是經驗法則", "gist": "各種變形是為了配合文章長短、字詞分佈。老師用期末調分來比喻壓縮分數範圍:排序不變,但分數擠在一起、比較難區分。公式不用記,會活用就好。" }, { "time": "2:24:45", "title": "BM25", "gist": "BM25(Best Matching 25)是非常強的 baseline,向量資料庫公司的老闆也這麼說。它算文件和查詢有多像,參數設 k=2、b=0.75,在多數應用都好用。" }, { "time": "2:27:05", "title": "BM25 和 TF-IDF 差在哪", "gist": "TF-IDF 描述單一文件向量的權重;BM25 則用變形的 TF-IDF 算兩者之間的相似度。它屬於稀疏向量,和 BERT 這類模型產生的稠密向量(通常不超過 1000 維)不同。公式不用背。" } ], "emphasis": [ { "time": "2:22:04", "quote": "但是你要知道你要知道TF是這個算出現次數算它在一篇文章中出現的次數", "kind": "強調", "about": "TF 和 IDF 的概念要懂" }, { "time": "2:24:31", "quote": "那的確這個公式不用去記不太需要去記你大概就是活用", "kind": "不考", "about": "TF-IDF 變形公式不用背(老師說的是不用記,沒有明說不考)" }, { "time": "2:24:46", "quote": "搞不好這一頁還比較重要就是BM25BM25其實是一個非常強的一個Base Line", "kind": "強調", "about": "BM25 是很強的 baseline" }, { "time": "2:28:40", "quote": "這是BM25其實你也不用記公式", "kind": "不考", "about": "BM25 公式不用背(老師說的是不用記,沒有明說不考)" } ] }, { "num": 8, "title": "從詞袋到詞向量", "start": "2:29:52", "end": "2:59:43", "slides": "W1_NLP_brief_v2 p.54–64", "summary": "說明稀疏的 one-hot 表示無法表達字與字有多像,進而引出連續、分散式的詞向量,並用同義詞、一詞多義、WordNet 的限制,為下週的 word2vec 鋪路。", "importance": "核心", "segments": [ { "time": "2:29:52", "title": "稀疏向量的死穴", "gist": "在 one-hot 空間裡,貓和狗、貓和卡車的相似度都是 0。所以希望有連續、分散式(continuous, distributed)的字表示,讓相似度可以是 0.6 這種連續的數字。" }, { "time": "2:32:04", "title": "詞袋模型與斷詞提問", "gist": "Bag of words 不管字的順序,「錢不是問題」和「不,錢是問題」變成同一個向量。回答提問:英文用空白斷詞,LLM 則用 BPE 從字母開始合併;中文要處理一字詞到多字詞,常用長詞優先。" }, { "time": "2:35:12", "title": "從評論到 one-hot encoding", "gist": "用餐廳評論裡的形容詞當例子。one-hot 就是只有一個維度是 1 的向量,像把血型拆成幾個欄位;文件向量是把字向量 OR 起來,詞表以外的字完全比對不到。" }, { "time": "2:38:18", "title": "Word embedding:稠密的概念空間", "gist": "用少數幾個維度(概念空間)描述每個字,每一維都有值。壓縮後反而能聚合共通的概念,「便宜」和「讚」會比「便宜」和「差」更像;重點是這些數字是學出來的,不是數出來的。" }, { "time": "2:43:54", "title": "三國志比喻:特徵空間", "gist": "呂布、張飛、關羽的武力很接近,但加上統率、武力、智力、政治一起描述,就能區分他們,也能比較誰跟誰比較像。用固定長度、連續的數字來描述,就是好的表示方式。" }, { "time": "2:46:15", "title": "第一個作業預告", "gist": "作業應該下週出,可以先看 GitHub 上 2024/2025 年的版本,但難度會稍微調高。用 AI 做不難,但一定要自己搞懂在做什麼。" }, { "time": "2:47:32", "title": "同義詞、一詞多義與概念比對", "gist": "同義詞會讓 recall 下降,一詞多義(bank、蘋果)會讓 precision 下降;LLM 靠 attention,讓同一個字在不同句子裡有不同表示,但句子越長,轉出來的向量越接近。只比對字面會漏掉繁簡差異、領域用語(智慧型行動運算裝置就是手機)、新詞和詞義隨時間的改變。" }, { "time": "2:54:53", "title": "WordNet 與貓狗卡車", "gist": "WordNet 是人工建的同義詞集與上下位關係表,乾淨但離散、不看上下文、還要人維護。目標是讓貓和狗靠近、卡車離遠一點,下週講怎麼用 word2vec 訓練出來(不講 GloVe);最後回答 recall 的提問,說下次補充。" } ], "emphasis": [ { "time": "2:42:35", "quote": "這概念其實還蠻重要的因為在現在NLP的處理的概念裡面我們其實基本上都是在Embedding的Label", "kind": "強調", "about": "從稀疏向量走到 word embedding(稠密向量)" }, { "time": "2:47:26", "quote": "你們務必要自己自己搞懂他在幹什麼", "kind": "強調", "about": "作業可以用 AI,但要自己搞懂做法" }, { "time": "2:58:06", "quote": "不過我們不會提到GloVe大概是講word2vec而已", "kind": "不考", "about": "詞向量只講 word2vec,不講 GloVe(老師說的是不講)" }, { "time": "2:58:59", "quote": "尤其是在做資訊檢索的時候通常Recall非常重要", "kind": "強調", "about": "資訊檢索裡 Recall 很重要(Precision/Recall 下次補充)" } ] } ], "skipped": [ { "start": "0:00:00", "end": "0:04:39", "reason": "開課前,逐字稿沒有內容(老師 0:04:39 才開始講)" }, { "start": "0:58:52", "end": "1:08:43", "reason": "第一次下課休息" }, { "start": "2:07:15", "end": "2:16:39", "reason": "第二次下課休息" }, { "start": "2:59:43", "end": "3:00:07", "reason": "下課後的片尾,沒有內容" } ], "problems": [ "投影片起點和已知事實不同:已知事實寫從 p.5 開始,但老師 0:07:25 說跳過 p.2 目錄,接著簡短講了 p.3(以前和現在做法差別的圖),0:09:31 講 p.4「What is NLP」。所以實際範圍是 p.3–64。", "舊筆記(Notion 封存頁)記的時間和本逐字稿差約 1 分鐘。舊筆記寫下課 0:57:28、2:06:15,續課 1:09:37;本逐字稿是 0:58:52 下課、1:08:43 續課、2:07:15 下課、2:16:39 續課。這份計畫以本逐字稿為準。舊筆記寫的投影片檔是 W1_NLP_brief.pdf,不是 v2。", "音檔長度 2:59:56,YouTube 是 3:00:07,差 11 秒。逐字稿時間和 YouTube 播放時間有沒有對齊,我沒有逐一驗證(不確定)。", "2:18:33–2:19:11 逐字稿有約 40 秒空白,老師說「沒有抓到畫面」,這段錄影可能沒拍到投影片(不確定)。", "2:24:56 老師說 BM25 的引言在「這一份投影片的最後一頁」,實際是 p.94(p.95 是 Summary),而且不在本週講的範圍。", "p.19 是 AI 仿作的《詩師食獅史》(同音字例子)。Strawberry 那段(0:39:43)沒有對應的投影片。", "有 4 則 emphasis 標成「不考」,但老師原話是「公式不用記」(2:24:31、2:28:40)或「不會提到 GloVe」(2:58:06),不是明說「不考」。寫章節時建議用「老師說不用背/不講」,不要寫成【老師說不考】。", "第 4 章(約 12 分鐘)和第 7 章(約 13 分鐘)比 15 分鐘短一點。因為兩章都緊貼下課分界,主題也各自獨立,所以沒有併章。", "逐字稿常見的語音辨識錯字(引用時要改成正確寫法,也可以補進 fix_transcript 的錯字表):小平→小冰、Crystal→Chris(Manning)、STARBOARD→stop words、Wall Embedding/World Embedded→word embedding、World Reputation→word representation、構制學→構詞學、磁→詞、One-Half/One Heart→one-hot、Palsymy→Polysemy、RuCode→recall、O2Bect→word2vec、Bangio→Bengio、imprtindex/Import index→inverted index、Portal→Porter、REG→RAG、Patch rank→PageRank、Uptractive→Abstractive、Passing Tree→parsing tree、WSA→WSD、Tornazion→Tokenization、三國字→三國志、宇步→呂布、Facial Splash→feature space。1:37:48 的「Lesson」可能是 lexical processing(不確定);0:34:4x 的「VirusDM」推測是某種機率模型,可能是 HMM(不確定),所以 NER 那段我只寫 CRF。" ] }, { "lecture": "nlp-w3", "week_title": "詞向量、word2vec 與 N-gram 語言模型", "one_liner": "為了讓電腦分得出貓、狗、卡車,從 LSA 講到 word2vec 怎麼學出詞向量,再回到 N-gram 語言模型與困惑度;並公布作業一與閉書考試方式。", "special_notes": [ "0:00:00 那句「有任何疑問或感想,歡迎留言…點讚、訂閱、分享」是語音辨識幻覺,不是老師講的;0:01:21–0:02:30 是設定畫面,0:02:31 才開始上課。", "0:42:31–0:43:48 疑似麥克風干擾(老師先問「有帶電池嗎」,接著說「為什麼幹擾」),逐字稿變成重複的「這個是電」加亂碼,約 1 分多鐘的內容遺失,大約是 brief p.74 的前半段。", "作業一說明(1:46:39–2:02:06)用的是 NLP_HW1_word_emb.pdf,不在兩份投影片文字檔裡。本機有原檔(自然語言處理\\NTHU_Natural_Language_Processing\\2026\\Assignments\\Assignment1\\),也有整理好的 自然語言處理\\HW1_Word_Analogy_規定.md。", "W2 投影片這堂實際講到 p.17(困惑度),不只「開頭幾頁」;W2 p.4 跟 brief p.66(Markov/Shannon)是同一張,老師 2:16:45 自己說兩份投影片有重疊。", "YouTube 影片標題寫「Fall 2025」,實際是 2026-09-24 這堂(以網址為準)。" ], "remember": [ "作業一 Word Analogy 今天公布,公布後三週交(約 10/15,確切日期以 NTU COOL 為準)(2:01:32、2:48:25)", "新的考試資訊:今年是實體閉書考試,大約第 14 週(課綱寫 mid-term,但實際比較接近期末,老師說兩週內確認);不考 BM25 公式這種算式,考你做作業的過程和抓到的 insight (1:47:41、2:48:36、2:49:14)", "作業報告占 45%。可以用 AI,但自己要消化;今年額外實驗要附 notebook 連結;兩份雷同的話雙方都 0 分 (1:56:53、2:01:17)", "寫作業時把觀察記下來:「貓」附近的向量為什麼不是貓、Queen 為什麼沒排第一。這就是報告和考試要的 insight (0:05:37、0:31:12)", "老師不教神經網路,要自己補 NN、反向傳播、cross entropy;p.83 附有 McCormick 的 word2vec 教學連結 (1:16:41)", "下一堂應該從 W2 投影片 p.18(bigram、Markov assumption)接著講,這堂停在 p.17 困惑度 (2:46:33)" ], "chapters": [ { "num": 1, "title": "詞向量的起源與類比", "start": "0:02:31", "end": "0:36:38", "slides": "W1_NLP_brief_v2 p.64–69", "summary": "為什麼要把字變成帶語意的向量:從 Bengio 2003、Markov、Shannon 講起,最後看詞向量怎麼做出 king−man+woman 這種類比。", "importance": "核心", "segments": [ { "time": "0:02:31", "title": "開場與回顧:one-hot 分不出貓狗卡車", "gist": "今天要講完 intro 投影片並公布作業一。回顧上週:one-hot 和 TF-IDF 只能比對一模一樣的字,所以要做出帶語意的向量(embedding)。老師先預告,做作業時會發現「貓」附近的向量常常不是貓。" }, { "time": "0:06:01", "title": "從數數改成用學的:Bengio 2003", "gist": "以前靠數 n-gram 和共現機率,成本高、效果也不好。2000 年後資料和算力都變多,就改成用神經網路把語料裡的知識「內化」成模型參數。順帶聊 Bengio、LeCun、Hinton 拿圖靈獎,以及 AAAI 2019 的照片。" }, { "time": "0:12:07", "title": "語言模型的源頭:Markov", "gist": "在宗教主導的年代,Markov 親手統計母音和子音的前後關係,得出「下一步只看目前的狀態」。老師用作弊賭徒偷換骰子的例子講 hidden state(藏起來看不到的狀態),再延伸到 DNA 序列,以及「文字換成看不懂的符號也能分析」的想法。" }, { "time": "0:21:08", "title": "Shannon 與資訊熵", "gist": "越少見、越出乎意料的字,帶的資訊量越高,可以用 entropy(熵)來量化。這跟後面算語言模型機率和困惑度有關。" }, { "time": "0:23:20", "title": "為什麼向量表示行得通", "gist": "貓和狗都會跳、會吃、會咬,卡車不會,所以字跟哪些字一起出現是有規律的。老師用「描述學生的特徵向量」來比喻 representation,並希望向量空間是平滑的:小貓、大貓都要靠近貓。" }, { "time": "0:26:48", "title": "詞向量的類比:man:woman=king:queen", "gist": "把向量畫到 2D 平面,重點是字與字之間的相對關係:方向要一致。直接做向量運算就能推出 Queen,這就是作業一要做的事,不過 Queen 不一定排第一。另外也有公司對 CEO、比較級對最高級的例子。" }, { "time": "0:32:59", "title": "題外話:有了大語言模型還要學這些嗎", "gist": "老師認為要回頭看以前的人怎麼做、遇到什麼痛點,才能建立「痛點對解法」的對應。凡事都問 AI 的話,表現會停在某個程度。" }, { "time": "0:35:08", "title": "更多類比與跨語言對應", "gist": "首都、公司名稱也能這樣對應。英文和西班牙文的詞向量分布形狀很像,所以可以拿來做翻譯;不過跨語系(例如對中文)分布可能就不一樣。" } ], "emphasis": [ { "time": "0:05:37", "quote": "所以這個就可以讓你反思,當你在做assignment,我們會問你這些問題", "kind": "強調", "about": "作業一會要你反思:「貓」附近的向量常常不是貓,詞向量到底有沒有用(0:25:54 又講一次)" }, { "time": "0:31:12", "quote": "這個就是在你們assignment1要做的事情,但是你可能會發現你的Queen並不會在這個數字的附近的第一個選項", "kind": "強調", "about": "作業一做的就是 king−man+woman 的類比,正確答案常常不在第一名,可以拿來討論" } ] }, { "num": 2, "title": "分布假說與 LSA/LSI", "start": "0:36:38", "end": "0:53:48", "slides": "W1_NLP_brief_v2 p.70–80", "summary": "一個字的意思由它的鄰居決定。在神經網路出現之前,LSA/LSI 用共現矩陣加 SVD 把相關的字拉近,但計算太貴,也沒辦法只補新資料。", "importance": "一般", "segments": [ { "time": "0:36:38", "title": "分布假說:看一個字的鄰居", "gist": "語言學家 Firth 的想法:不認識的字可以從前後文猜出來。貓和狗周邊的字幾乎一樣,所以概念相近;你不會看到文章寫「卡車舔他的貓」。目標是讓電腦學出一個能反映共現機率的表示。" }, { "time": "0:38:09", "title": "以前的做法:共現矩陣小例子", "gist": "講 word2vec 之前,先看以前怎麼做。用 Stanford 課程的三句話當例子,數字兩兩相鄰出現的次數,做成對稱的共現矩陣。" }, { "time": "0:40:26", "title": "用 SVD 降維", "gist": "把共現矩陣用 SVD 拆開,只留最重要的幾個維度再乘回去,就得到每個字的向量。畫到 2D 以後,NLP 和 deep 因為都接在 like 後面而靠在一起。老師沒細講 SVD 怎麼算。" }, { "time": "0:43:49", "title": "為什麼需要 LSA", "gist": "一詞多義,所以字有出現不代表相關;一個概念有很多種說法,所以字沒出現也不代表無關。老師把 LSI 比喻成「參觀博物館」,看以前的人怎麼做,核心就是 SVD。(前面約 1 分鐘的逐字稿因為干擾變成亂碼。)" }, { "time": "0:45:00", "title": "十篇文章範例:Linux 與基因體", "gist": "前五篇講 Linux,後五篇講基因體,兩組只靠 database 這個字連起來。做成詞-文件矩陣以後,搜尋「Dolly 羊」原本絕對找不到前五篇。" }, { "time": "0:48:40", "title": "只留前 K 個奇異值再乘回去", "gist": "對角矩陣只留最大的兩個值,其餘設成 0,再乘回去重建矩陣。原本是 0 的地方出現了正值或負值:database 這個字把概念傳到另一群文章,這就是語意延伸。" }, { "time": "0:51:20", "title": "LSA 與 LSI 的差別和致命傷", "gist": "這個方法叫 LSA,拿去做檢索、建索引時叫 LSI。缺點有兩個:SVD 遇到十萬維的矩陣就算不動;新增一篇文章就要整個重算,沒辦法只補新的部分。所以後來改成用學的。" } ], "emphasis": [] }, { "num": 3, "title": "word2vec 的訓練方式", "start": "1:02:56", "end": "1:28:24", "slides": "W1_NLP_brief_v2 p.81–90", "summary": "先回答課間 Slido 提問,再從 unigram、bigram 語言模型講到 word2vec 的 Skip-gram:怎麼從語料自己造出訓練資料,以及只有一層隱藏層的網路怎麼學出詞向量。", "importance": "核心", "segments": [ { "time": "1:02:56", "title": "課間 Slido 問答", "gist": "NTU COOL 的加選是批次處理的。BM25 只是 TF-IDF 的變形,屬於經驗法則。詞向量通常幾百維,不會超過 1K。word vector 分不出「蘋果」和「蘋果電腦」,所以之後需要會看上下文的向量(contextual vector)。" }, { "time": "1:06:49", "title": "無限猴子:語言有機率規律", "gist": "用中山大學的猴子,以及「無限多隻猴子總能打出莎士比亞」來說明:人類文章裡的字有機率分布。所以可以讓電腦學「看到這幾個字,下一個字應該是什麼」。" }, { "time": "1:09:40", "title": "unigram 與 bigram 語言模型", "gist": "unigram 假設字與字互相獨立,一句話的機率就是每個字的機率相乘;bigram 只看前一個字。再延伸到 n-gram。GPT 解碼下一個 token 也是同樣的精神。" }, { "time": "1:11:20", "title": "CBOW 與 Skip-gram", "gist": "word2vec 論文提出兩種學法。CBOW 像克漏字,看前後文猜中間的字;Skip-gram 反過來,看中間的字猜周邊的字。實務上比較常用 Skip-gram。" }, { "time": "1:13:00", "title": "從語料自己造訓練資料", "gist": "context window 設 1 時,掃過句子就得到 (the, cat)、(cat, licked) 這類配對;window 越大,配對越多。老師強調這是設計訓練資料的巧思,後來 BERT 的遮字訓練也是同一招。" }, { "time": "1:16:18", "title": "一層隱藏層的神經網路", "gist": "老師不講 NN 的細節,推薦 McCormick 的教學。word2vec 只有 V 和 U 兩個矩陣:輸入 one-hot,隱藏層例如 300 個神經元,輸出要預測周邊的字。「能預測周邊的字就懂字義」是很強的假設;學完以後的 V 就是詞向量。" }, { "time": "1:22:29", "title": "一步步拆解:one-hot、查表、輸出權重", "gist": "用只有 8 個字的字典舉例:one-hot 乘上 V,等於把 V 的某一列取出來(embedding lookup,查表)。U 是輸出權重,跟每個字的輸出向量做內積,再經過 softmax,就得到整個字典的機率分布。" }, { "time": "1:25:36", "title": "算誤差:cross entropy 與反向傳播", "gist": "前向算出的機率跟正確答案算 cross entropy(交叉熵),再用反向傳播調整 V 和 U。學完把 V 拉出來就是 word embedding。作業一做的就是這件事,但用套件就好,不用自己刻。" } ], "emphasis": [ { "time": "1:13:44", "quote": "其實你會覺得很trivial,但是這個動作其實是一個非常,你說有創意嗎,或是說一個人類的一個,我覺得是一個訓練上的一種巧思", "kind": "強調", "about": "Skip-gram 從沒有標註的語料,自己造出輸入與輸出的配對" }, { "time": "1:15:28", "quote": "自動化的方式產生一個這樣的監督式這樣的學習,這其實都是後來一個在NLP非常常用的概念", "kind": "強調", "about": "自動產生監督資料(self-supervised)是 NLP 的常用概念,BERT 遮字訓練也是" }, { "time": "1:16:41", "quote": "的確我不會講NN的東西,所以你可能要自己catch一下這些概念", "kind": "強調", "about": "老師不教神經網路,要自己補 NN 基礎(需要前置知識摺疊)" }, { "time": "1:27:09", "quote": "但是希望你可以去了解說,為什麼人家這個一層的NN就可以搞這麼厲害的事情", "kind": "強調", "about": "要懂為什麼只有一層的網路、只做預測周邊字的訓練,就能學出詞向量" } ] }, { "num": 4, "title": "GloVe、FastText 與向量檢索", "start": "1:28:24", "end": "1:46:39", "slides": "W1_NLP_brief_v2 p.91–95", "summary": "word2vec 之後的 GloVe 與 FastText、詞向量怎麼評估,以及一家向量資料庫公司的心得:BM25 仍然很強、句子向量會糊掉、相似不等於相關。", "importance": "核心", "segments": [ { "time": "1:28:24", "title": "GloVe:從局部到全域統計", "gist": "word2vec 只看 context window,範圍很 local;GloVe 用整個語料的共現統計(global)。老師只點到為止,細節請自己看論文。" }, { "time": "1:29:49", "title": "FastText:拆成字元片段", "gist": "FastText 從字元層級學,所以能拼出沒看過的字(OOV),例如靠字首、字尾組成的醫學用字。中文比較難拆,多半用比較大的 n-gram,另外也有以筆畫為基礎的版本。" }, { "time": "1:32:08", "title": "該用哪一種向量、怎麼評估", "gist": "各有利弊,老師說一般認為 GloVe 比 word2vec 好。以前常拿自己的語料再訓練或微調,來減少 OOV。評估可以用人工標好相似度的 WordSim353,但它很小、也很舊。" }, { "time": "1:33:42", "title": "BM25 仍是強基準", "gist": "介紹一篇向量資料庫公司技術長寫的心得。老師說第一句對大家很重要:BM25 用稀疏向量比對關鍵字,到現在還是很強的 baseline(比較基準)。" }, { "time": "1:35:00", "title": "為什麼句子向量會糊掉", "gist": "「我今天去上 NLP 課」和「我今天去上機器學習課」大部分的字都一樣,整句的向量會把關鍵字沖淡。句子越長,概念越擠在一起、越難區分;例如叫 AI 用一句話摘要每週課程,可能每週都一樣。" }, { "time": "1:38:38", "title": "MTEB 排行榜", "gist": "MTEB 是很常被引用的 embedding benchmark,依語言、任務、領域分類。想比較自己做的 embedding,可以到排行榜上看。" }, { "time": "1:40:45", "title": "靜態與上下文向量、相似不等於相關", "gist": "word2vec、GloVe 是 static embedding(同一個字不管在哪都是同一個向量),之後會講 contextual 的 BERT。還有 768 維或 1536 維的取捨。「修水龍頭」和「買廚房水龍頭」用字很像,意圖卻不同。向量搜尋對打錯字很敏感。" }, { "time": "1:43:49", "title": "OOV 與 OOD、RAG 與總結", "gist": "字典裡沒有的字(OOV)和沒見過的領域(OOD),在技術上遇到的問題很像。做 RAG 一定要做檢索比對。最後總結:傳統 NLP 這段只留下「怎麼學字的表示」,W2 從這裡接下去。" } ], "emphasis": [ { "time": "1:34:36", "quote": "其實第一句話對你們蠻重要的,BM25是一個還是一個很strong的Base Line", "kind": "強調", "about": "BM25(稀疏向量、關鍵字比對)到現在仍是很強的 baseline,不是有了 dense vector 就能取代" } ] }, { "num": 5, "title": "作業一說明", "start": "1:46:39", "end": "2:02:06", "slides": "作業一說明 NLP_HW1_word_emb.pdf(不在投影片文字檔內)", "summary": "公布作業一 Word Analogy:用現成的詞向量和自己拿 wiki 訓練的詞向量做類比題,再寫報告,三週後交;也首次說明今年有實體閉書考試。", "importance": "行政", "segments": [ { "time": "1:46:39", "title": "作業變難,今年有閉書考試", "gist": "主題跟去年一樣,但因為修課人數變多,要求也變多。今年有實體閉書考試,不考 BM25 公式這種題目,而是考你從作業和上課抓到的 insight。" }, { "time": "1:48:10", "title": "作業在做什麼:類比資料集", "gist": "用 Google 的 word analogy 資料集,分成語意(king/queen)和語法(形容詞、副詞)兩大類,底下還有子類別。題目給 A、B、C,要你猜出 D。" }, { "time": "1:49:50", "title": "程式模板、Colab、助教影片", "gist": "雖然把投影片丟給 GPT 也寫得出來,還是給了模板當規範。程式碼放在 GitHub,在 Colab 上跑,細節另有助教錄的說明影片。" }, { "time": "1:51:30", "title": "評分:程式 TODO 加報告", "gist": "作業分程式和報告兩塊,每個 TODO 都有配分。評分像考作文,不要計較一兩分;被扣分,就是有人做得比你好。" }, { "time": "1:52:32", "title": "TODO 內容:現成向量與 wiki 自己訓練", "gist": "前面幾個 TODO 用已經訓練好的向量做預測、畫 t-SNE(也可以再比較其他降維方法);後面四個用 wiki dump 自己訓練,工具是 Gensim。只抽 20% 的資料,不要整份載入再抽;Colab 記憶體不夠,多半是程式寫法的問題。" }, { "time": "1:56:53", "title": "報告 45%:可以用 AI,但要附實驗", "gist": "報告題目列得很細,是為了給方向。可以用 AI,但要自己消化。今年額外實驗要附 notebook 連結,證明真的做過。可以做得很深(老師用天才兒童漫畫比喻),但一定要照格式,因為有一部分會用 AI 初審。" }, { "time": "2:00:00", "title": "格式、抄襲與期限", "gist": "一定要照格式要求。可以一起討論,但要分開寫;兩份一樣的話,雙方都 0 分。今天公布、三週後交,拖到最後一週才寫會很趕。" } ], "emphasis": [ { "time": "1:47:30", "quote": "我們這門課的作業難度會稍微比以前稍微再多加一點東西", "kind": "強調", "about": "老師特別強調:作業一的要求比往年多" }, { "time": "1:47:41", "quote": "然後重點是我們今年的課會有一個實體的closed-book考試", "kind": "會考", "about": "今年有實體閉書考試" }, { "time": "1:47:47", "quote": "那那個考試其實當然不會不會考作比如說叫你寫出BM25的公式,不會這麼低級的題目這樣子", "kind": "不考", "about": "不考 BM25 公式這類背算式的題目" }, { "time": "1:47:57", "quote": "但是至少會我覺得可以考出你做這些作業或者是說你在聽這些內容你到底有catch到什麼樣的insight,我覺得那個是要能夠寫出來的這樣子", "kind": "會考", "about": "考你從作業和上課抓到的 insight,而且要寫得出來" }, { "time": "2:01:17", "quote": "我們是兩份一樣全都是0分這樣子", "kind": "強調", "about": "抄襲規定:兩份一樣,被抄的人也是 0 分" } ] }, { "num": 6, "title": "N-gram 語言模型", "start": "2:12:42", "end": "2:33:51", "slides": "W2_Word embeddings and Language Modeling (RNN)_v2 p.1–14", "summary": "換到 W2 投影片,說明為什麼需要語言模型,再用 n-gram、語言指紋、bigram 計數表和平滑,講怎麼從語料算出一句話的機率。", "importance": "核心", "segments": [ { "time": "2:12:42", "title": "接到 W2:先想為什麼需要", "gist": "Slido 上的繳交問題交給助教回。W2 延續語言模型,之後會講 RNN、LSTM。老師提醒:先想清楚當時遇到什麼問題,以及這個方法為什麼能解決它。" }, { "time": "2:14:25", "title": "真實場域沒有 SOP", "gist": "現在大家的起手式是先丟給 LLM 試。以前的做法是人工標註資料再訓練模型,但實際上常常沒有訓練資料,要自己設計不用標註的訓練方式,就像 word2vec 那樣。" }, { "time": "2:16:39", "title": "語言模型:根據前文猜下一個字", "gist": "問答、寫文章、聊天都要生成句子,所以需要語言模型。Google 搜尋建議(來自 query log)就是例子。拿周杰倫歌詞自己算機率也可以,但語料太少,算不出好的分布。" }, { "time": "2:18:31", "title": "N-gram 與 Google n-gram 資料集", "gist": "n-gram 是連續 n 個字組成的片段(unigram、bigram、trigram)。Google 釋出的 n-gram 資料集讓做檢索的人如獲至寶,可以拿來做斷詞。一篇文章可以從 1-gram 到 n-gram 全部掃一遍,當作索引。" }, { "time": "2:21:01", "title": "語言指紋:J.K. Rowling 的筆名", "gist": "J.K. Rowling 用筆名 Robert Galbraith 出書。研究者比對四字元片段的分布、常用字頻率、字長分布、常一起出現的字對,發現兩本書的風格一致。" }, { "time": "2:24:09", "title": "用統計抓 AI 寫的文章靠得住嗎", "gist": "國科會和 ICML 都在討論怎麼抓 AI 寫的審查意見。GPTZero 這類工具是算 perplexity,但改幾個字、故意打錯字就能騙過。Turnitin 的 AI 偵測準確率不是百分之百,很難拿來認定你用了 AI。" }, { "time": "2:27:25", "title": "Bigram 計數表與加一平滑", "gist": "教科書例子:數 I want、want to 這類 bigram 出現幾次。只要有一個機率是 0,整句連乘就變 0,所以全部加 1 做 smoothing(平滑)。老師用「四個作業分數相乘,一次沒交就歸零」來比喻。" }, { "time": "2:30:08", "title": "條件機率連乘:從 bigram 到 n-gram", "gist": "用 chain rule(連鎖律)把 i want to eat 每一步的條件機率乘起來。n 越大,每種組合出現的次數越少,統計越不可靠,所以簡化成只看前一個字的 bigram。" } ], "emphasis": [] }, { "num": 7, "title": "語言模型定義與困惑度", "start": "2:33:51", "end": "2:51:05", "slides": "W2_Word embeddings and Language Modeling (RNN)_v2 p.15–17", "summary": "語言模型的正式定義、為什麼從統計改成用神經網路學,以及困惑度(perplexity)的意義和用途;課後問答補充作業時程與考試時間。", "importance": "核心", "segments": [ { "time": "2:33:51", "title": "語言模型的正式定義", "gist": "教科書的定義:能替一串字指定機率的模型,叫做語言模型。以前做 NLP 的人用語言模型,會被認為是偏理論的做法。" }, { "time": "2:35:12", "title": "不同族群有不同的語言模型", "gist": "中風或有語言障礙的病人,用語模式跟一般人不同,用一般語料訓練的模型就能分辨出來。把文字一對一換成其他符號,算出來的 perplexity 還是一樣,所以這種密碼很容易被破解。" }, { "time": "2:36:42", "title": "統計太難,改成用學的", "gist": "理想上要看前面所有的字(n-gram),但資料不夠、算不出來,所以改用模型從有限資料裡學(neural LM)。老師舉大公司面試用 AI 統計應徵者用字、預測表現的例子,也提到訓練資料本身就有偏差。" }, { "time": "2:39:39", "title": "困惑度:模型有多困惑", "gist": "老師說這個非常重要。perplexity 衡量模型看到一句話有多意外:機率越低,困惑度越高。小朋友說「吃飯飯」,對用成人語料訓練的模型來說就很困惑。" }, { "time": "2:41:25", "title": "用困惑度檢查微調與幻覺", "gist": "困惑度是評估大語言模型的重要工具。fine-tune 以後困惑度如果大增,代表把模型原本會的東西弄壞了。模型沒把握、可能產生幻覺時,困惑度也會升高。" }, { "time": "2:44:20", "title": "困惑度的意義:不確定性與壓縮", "gist": "困惑度代表不確定性,也可以看成壓縮效率:用幾 billion 個參數壓縮全人類的語料,壓得好,困惑度就低。AI 偵測工具就是在算 perplexity,但改一個字就能讓分數掉下來。" }, { "time": "2:46:33", "title": "課後問答:先備知識、作業時程、考試", "gist": "沒學過機器學習、深度學習的人寫作業會比較辛苦,但追得上。Colab 要跑多久,會請助教提供經驗。截止日是公布後三週。考試著重作業和上課內容,大約在第 14 週。Gensim 還有沒有在維護,會再確認。" } ], "emphasis": [ { "time": "2:39:39", "quote": "那我們今天就看到這一個這個這個其實非常重要,就是這個字本身就是困惑的意識", "kind": "強調", "about": "困惑度(perplexity)非常重要" }, { "time": "2:41:25", "quote": "這perplexity其實是用來度量很多由於是現在大語言模型的一個很重要的工具", "kind": "強調", "about": "perplexity 是現在評估大語言模型(包括 fine-tune 好壞)的重要工具" }, { "time": "2:48:36", "quote": "考試會著重作業跟上課內容", "kind": "會考", "about": "考試範圍:作業加上課內容" }, { "time": "2:48:53", "quote": "對的確可能會有很大部分是從作業你做的過程跟你的insight跟有一些一些你一定會做過就瞭解的細節去著手", "kind": "會考", "about": "考試很大部分從作業的過程、insight,以及做過才會懂的細節出題" }, { "time": "2:49:07", "quote": "不太會去考,只能舉例不太會去考叫你算BM25這樣子", "kind": "不考", "about": "不太會考計算題(例如算 BM25)" }, { "time": "2:49:14", "quote": "對我們會有一個考試是會排在應該是14周", "kind": "會考", "about": "考試大約在第 14 週(課綱寫 mid-term,但實際偏期末,老師兩週內確認)" } ] } ], "skipped": [ { "start": "0:00:00", "end": "0:02:31", "reason": "上課前設定畫面、確認直播;0:00:00 那句是語音辨識幻覺" }, { "start": "0:53:48", "end": "1:02:56", "reason": "下課休息(老師說 10 分鐘)" }, { "start": "2:02:06", "end": "2:12:42", "reason": "下課休息(老師說 10 分鐘)" } ], "problems": [ "brief p.68、p.69、p.89 是純圖頁(只有標題或 [IMAGE-ONLY]),0:26:48–0:36:38 那幾張類比圖各在 p.68 還是 p.69,從文字檔確認不了,寫章節時要轉成 PNG 看圖。", "0:42:31–0:43:48 逐字稿是亂碼(重複「這個是電」加日文、俄文字元),約 1 分多鐘內容遺失,大概是老師在講 p.74「有出現不見得是相關」的前半;需要的話回去看影片。", "作業一說明 PDF(NLP_HW1_word_emb.pdf)沒有 _text 文字版,第 5 章的 slides 欄無法標頁碼;需要的話先跑 slides_to_text.py。", "SOP 第 1 節寫 NLP-W3 用 W2 投影片的「開頭幾頁」,實際講到 W2 p.17(困惑度),建議改成 W2 p.1–17。", "老師兩次說詞向量預設「700 多維」(1:04:34、1:22:11),可能跟 BERT 的 768 維混在一起;就我所知,Gensim word2vec 預設 vector_size 是 100,Google News 預訓練向量是 300 維。寫筆記前要再查證。", "1:28:38 老師先說 GloVe 是 2013 年、又改口說 2014;投影片 p.91 寫 2014,考試照投影片寫。1:32:25 老師說「一般認為 GloVe 比 word2vec 好」,但投影片 p.93 寫「It depends」,Exam-ready 照投影片寫。", "逐字稿裡 property/priority/publicity 大多是 probability(例:2:34:56「一串字的priority」),但 0:23:03「在算publicity的時候」比較像 perplexity,要看上下文,不能一律取代。", "新發現的語音辨識錯字(建議加進 fix_transcript.py):WATTO VECTOR/what-to-vector/Wall-to-back/VoltoVector/waterbath/photo vector=word2vec;GrowVac/grow back=GloVe;Fosting=WordSim;Categor Label=character level;angry/engram=n-gram;CBUS=syllabus;基礎學習跟深入學習=機器學習跟深度學習;GPT ISO=GPTZero;turn in=Turnitin;Tica=TAICA;biblicoding=vibe coding;Contactual=contextual;Cross Entry=cross entropy;Wall-Embedded=word embedding;ntu庫=NTU COOL;Chanon=Shannon;Markup=Markov;annual p=NLP;Geno=genome;多利養=Dolly 羊;絞交=繳交;超習=抄襲;1:06:15「到Fur以後」可能是 BERT(不確定)。" ] } ], "migration": "37 列全部改好,沒有失敗。\n\n- **舊值改新值**:37 列。36 列從「⭐ 核心(我判斷)」改成「核心(我判斷)」。1 列從「⭐⭐ 老師強調」改成「老師強調」,是 Risks and Benefits of AI 那一列。\n- **白話欄**:「Rationality vs. Omniscience vs. Perfection」那一列,已把「⚠️ 」換成「注意:」。再查一次確認生效,其餘文字沒變。這一列的考試訊號也在同一次更新裡改成「核心(我判斷)」。\n- **最後查詢**:現在的分布是「核心(我判斷)」36 列、「老師強調」1 列、空白 7 列,已經沒有任何一列是舊值。空白那 7 列本來就沒有值,沒有動。\n- **沒碰的東西**:其他欄位和其他列都沒改。舊的兩個 emoji 選項還留在欄位的選單裡,這次沒刪。" }, "workflowProgress": [ { "type": "workflow_phase", "index": 1, "title": "Segment" }, { "type": "workflow_phase", "index": 2, "title": "DB migrate" }, { "type": "workflow_agent", "index": 1, "label": "db:migrate-signal", "phaseIndex": 2, "phaseTitle": "DB migrate", "agentId": "ad891b8a71047ffb8", "model": "claude-opus-5-5", "state": "done", "startedAt": 1790353656971, "queuedAt": 1790353656967, "attempt": 1, "lastToolName": "mcp__notion__notion-query-data-sources", "promptPreview": "Notion 概念資料庫(data source collection://6fc4ce25-cd77-4295-b3e9-8756987a0340)的「考試訊號」select 欄要把 emoji 拿掉。\n新選項已經建好:「老師說會考」「老師強調」「核心(我判斷)」「老師說不考」。舊選項「⭐ 核心(我判斷)」「⭐⭐ 老師強調」暫時還在。\n\n要做的事:\n1. 用 notion-query-data-sources(SQL 模式)找出所有 考試訊號 = '⭐ 核心(我判斷)' 或 '⭐⭐ 老師強調' 的列,拿到每列的 url 與目前值。\n2. 對每一列用 notion-update-page(command update_properties)改成對應的新值:'⭐ 核心(我判斷)' → '核心(我判斷)';'⭐⭐ 老師強調' → '老師強調'。\n3. 另外,Name 為 \"Rationalit…", "promptFramed": true, "lastProgressAt": 1790353716255, "tokens": 102532, "toolCalls": 42, "durationMs": 59283, "resultPreview": "37 列全部改好,沒有失敗。\n\n- **舊值改新值**:37 列。36 列從「⭐ 核心(我判斷)」改成「核心(我判斷)」。1 列從「⭐⭐ 老師強調」改成「老師強調」,是 Risks and Benefits of AI 那一列。\n- **白話欄**:「Rationality vs. Omniscience vs. Perfection」那一列,已把「⚠️ 」換成「注意:」。再查一次確認生效,其餘文字沒變。這一列的考試訊號也在同一次更新裡改成「核心(我判斷)」。\n- **最後查詢**:現在的分布是「核心(我判斷)」36 列、「老師強調」1 列、空白 7 列,已經沒有任何一列是舊值。空白那 7 列本來就沒有值,沒有動。\n- **沒碰的東西**:其他欄位和其他列都沒改。舊的兩個 emoji 選項還留在欄位的選單裡,這次沒刪。" }, { "type": "workflow_agent", "index": 2, "label": "segment:ai-w2", "phaseIndex": 1, "phaseTitle": "Segment", "agentId": "a134fad83d1a6b14d", "model": "claude-opus-5-5", "state": "done", "startedAt": 1790353657053, "queuedAt": 1790353657015, "attempt": 1, "lastToolName": "StructuredOutput", "lastToolSummary": "人工智慧導論(AI)W2(9/17),YouTube hNZQIO0q74o,2:35:52", "promptPreview": "你要替一堂 TAICA 課規劃「章節怎麼切」。先完整讀手冊 C:\\D槽\\TAICA課程\\_筆記SOP.md(特別是第 0、1、2、3.1、3.2、4、6 節),照裡面的原則做。\n\n課:人工智慧導論(AI) W2(9/17),YouTube hNZQIO0q74o,長度 2:35:52\n原始逐字稿(每行 [HH:MM:SS] 文字):C:\\D槽\\TAICA課程\\人工智慧導論\\第二周1150917\\W2_人工智慧導論_朱威達.逐字稿.txt\n合併逐字稿(約 90 秒一段,好讀):C:\\D槽\\TAICA課程\\_work\\notes-v2\\ai-w2\\transcript_merged.txt\n投影片文字(每頁 === pN === 分隔):\n- C:\\D槽\\TAICA課程\\人工智慧導論\\投影片\\_text\\Chapter 2 Intelligent Agents.txt\n- C:\\D槽\\TAIC…", "promptFramed": true, "lastProgressAt": 1790354140145, "tokens": 181054, "toolCalls": 32, "durationMs": 483088, "resultPreview": "{\"lecture\":\"人工智慧導論(AI)W2(9/17),YouTube hNZQIO0q74o,2:35:52\",\"week_title\":\"Agent 類型、搜尋演算法\",\"one_liner\":\"講完五種 agent 後進入搜尋:無資訊搜尋(BFS、UCS、DFS 家族、雙向)、有資訊搜尋(Greedy、A*),最後用爬山演算法開啟 Ch4 的 local search。\",\"special_notes\":[\"影片開頭缺幾分鐘:YouTube 標題 AI2026_0917_3。0:00:00–0:01:43 老師在設定直播畫面,0:01:46 起接著講到一半的 HW1 說明,HW1 前段不在影片裡。\",\"1:02:22–1:02:52 約 30 秒逐字稿是 ASR 亂碼(重複「我用這個」「有一個」),剛好是八皇后問題的開場,寫筆記時以投影片 Ch3 p.7 為準。\",\"兩次下課:…" }, { "type": "workflow_agent", "index": 3, "label": "segment:ai-w3", "phaseIndex": 1, "phaseTitle": "Segment", "agentId": "a5b6ce3e33b220189", "model": "claude-opus-5-5", "state": "done", "startedAt": 1790353657055, "queuedAt": 1790353657015, "attempt": 1, "lastToolName": "StructuredOutput", "lastToolSummary": "AI-W3 人工智慧導論 9/24(YouTube S1km7opW6rw,2:57:10)", "promptPreview": "你要替一堂 TAICA 課規劃「章節怎麼切」。先完整讀手冊 C:\\D槽\\TAICA課程\\_筆記SOP.md(特別是第 0、1、2、3.1、3.2、4、6 節),照裡面的原則做。\n\n課:人工智慧導論(AI) W3(9/24),YouTube S1km7opW6rw,長度 2:57:10\n原始逐字稿(每行 [HH:MM:SS] 文字):C:\\D槽\\TAICA課程\\人工智慧導論\\第三周1150924\\W3_人工智慧導論_朱威達.逐字稿.txt\n合併逐字稿(約 90 秒一段,好讀):C:\\D槽\\TAICA課程\\_work\\notes-v2\\ai-w3\\transcript_merged.txt\n投影片文字(每頁 === pN === 分隔):\n- C:\\D槽\\TAICA課程\\人工智慧導論\\投影片\\_text\\Chapter 3 Solving Problems by Searching.txt\n-…", "promptFramed": true, "lastProgressAt": 1790354182590, "tokens": 196530, "toolCalls": 43, "durationMs": 524211, "resultPreview": "{\"lecture\":\"AI-W3 人工智慧導論 9/24(YouTube S1km7opW6rw,2:57:10)\",\"week_title\":\"局部搜尋與最佳化、機率入門\",\"one_liner\":\"講完 Ch4 局部搜尋(模擬退火、束搜尋、基因演算法、梯度與牛頓法、線上搜尋),再跳到 Ch12,用牙醫例子說明 AI 為什麼要引入機率。\",\"special_notes\":[\"0:00:42–0:09:57 直播沒有聲音(0:00:42 只有一句「今天是9月24號」),從 0:09:57 的「上課注意事項」才開始有內容。不確定這 9 分鐘有沒有漏掉課程內容。\",\"這堂有兩次下課:1:10:01–1:21:32、2:04:58–2:16:36。\",\"Ch12 投影片本機沒有(課程網站連不上),第 07 章的 Exam-ready 要等主理人從 NTU COOL 下載後再補(停車場 P1)。…" }, { "type": "workflow_agent", "index": 4, "label": "segment:nlp-w2", "phaseIndex": 1, "phaseTitle": "Segment", "agentId": "a38a4353f5ced9e2d", "model": "claude-opus-5-5", "state": "done", "startedAt": 1790353657056, "queuedAt": 1790353657016, "attempt": 1, "lastToolName": "StructuredOutput", "lastToolSummary": "自然語言處理(NLP) W2(9/17)", "promptPreview": "你要替一堂 TAICA 課規劃「章節怎麼切」。先完整讀手冊 C:\\D槽\\TAICA課程\\_筆記SOP.md(特別是第 0、1、2、3.1、3.2、4、6 節),照裡面的原則做。\n\n課:自然語言處理(NLP) W2(9/17),YouTube MnA5KUETSg4,長度 3:00:07\n原始逐字稿(每行 [HH:MM:SS] 文字):C:\\D槽\\TAICA課程\\自然語言處理\\第二周1150917\\W2_自然語言處理_高宏宇.逐字稿.txt\n合併逐字稿(約 90 秒一段,好讀):C:\\D槽\\TAICA課程\\_work\\notes-v2\\nlp-w2\\transcript_merged.txt\n投影片文字(每頁 === pN === 分隔):\n- C:\\D槽\\TAICA課程\\自然語言處理\\NTHU_Natural_Language_Processing\\2026\\Slides\\_text\\W1…", "promptFramed": true, "lastProgressAt": 1790354248575, "tokens": 217892, "toolCalls": 42, "durationMs": 590196, "resultPreview": "{\"lecture\":\"自然語言處理(NLP) W2(9/17)\",\"week_title\":\"NLP 簡介、TF-IDF 與 BM25、為什麼需要詞向量\",\"one_liner\":\"老師用三小時帶過 LLM 之前的 NLP:語言為什麼難、以前做過哪些應用,接著從資訊檢索講到反向索引、TF-IDF、BM25,最後點出稀疏向量的限制,引出詞向量。\",\"special_notes\":[\"老師 0:04:39 才開始講課,前面約 4 分半逐字稿沒有內容。\",\"兩次下課:0:58:52–1:08:43、2:07:15–2:16:39。\",\"2:18:33–2:19:11 逐字稿有約 40 秒空白,老師說「沒有抓到畫面」,2:20:21 又問「現在投影是對的吧」。這段錄影可能暫時沒拍到投影片(沒看影片,不確定)。\",\"本週投影片是 W1_NLP_brief_v2.pdf(檔名的 W1 不等於上課週)…" }, { "type": "workflow_agent", "index": 5, "label": "segment:nlp-w3", "phaseIndex": 1, "phaseTitle": "Segment", "agentId": "a2dd6c4eca8dcb3b6", "model": "claude-opus-5-5", "state": "done", "startedAt": 1790353657057, "queuedAt": 1790353657016, "attempt": 1, "lastToolName": "StructuredOutput", "lastToolSummary": "自然語言處理(NLP) W3(9/24)", "promptPreview": "你要替一堂 TAICA 課規劃「章節怎麼切」。先完整讀手冊 C:\\D槽\\TAICA課程\\_筆記SOP.md(特別是第 0、1、2、3.1、3.2、4、6 節),照裡面的原則做。\n\n課:自然語言處理(NLP) W3(9/24),YouTube g0QE6O17BWE,長度 2:51:05\n原始逐字稿(每行 [HH:MM:SS] 文字):C:\\D槽\\TAICA課程\\自然語言處理\\第三周1150924\\W3_自然語言處理_高宏宇.逐字稿.txt\n合併逐字稿(約 90 秒一段,好讀):C:\\D槽\\TAICA課程\\_work\\notes-v2\\nlp-w3\\transcript_merged.txt\n投影片文字(每頁 === pN === 分隔):\n- C:\\D槽\\TAICA課程\\自然語言處理\\NTHU_Natural_Language_Processing\\2026\\Slides\\_text\\W1…", "promptFramed": true, "lastProgressAt": 1790354222836, "tokens": 208862, "toolCalls": 48, "durationMs": 564456, "resultPreview": "{\"lecture\":\"自然語言處理(NLP) W3(9/24)\",\"week_title\":\"詞向量、word2vec 與 N-gram 語言模型\",\"one_liner\":\"為了讓電腦分得出貓、狗、卡車,從 LSA 講到 word2vec 怎麼學出詞向量,再回到 N-gram 語言模型與困惑度;並公布作業一與閉書考試方式。\",\"special_notes\":[\"0:00:00 那句「有任何疑問或感想,歡迎留言…點讚、訂閱、分享」是語音辨識幻覺,不是老師講的;0:01:21–0:02:30 是設定畫面,0:02:31 才開始上課。\",\"0:42:31–0:43:48 疑似麥克風干擾(老師先問「有帶電池嗎」,接著說「為什麼幹擾」),逐字稿變成重複的「這個是電」加亂碼,約 1 分多鐘的內容遺失,大約是 brief p.74 的前半段。\",\"作業一說明(1:46:39–2:02:06)用的是 …" } ], "totalTokens": 906870, "totalToolCalls": 207 }