# 章節包:人工智慧導論(AI)W3(9/24)第 03 章「局部束搜尋與基因演算法」 影片 0:42:49–1:10:01,YouTube ID S1km7opW6rw。Notion 章節頁 https://app.notion.com/p/3e6fc631b0308105a674c6e43a405835(頁 ID 3e6fc631b0308105a674c6e43a405835),頁面標題「03 局部束搜尋與基因演算法(0:42–1:10)」。 ## 1. 第一行(直接照抄,不要改) [人工智慧導論](https://app.notion.com/p/3e6fc631b0308131b213f0a3d93fe91d) › [W3(9/24)](https://app.notion.com/p/3e6fc631b0308137bbd8e73f5c6f1b62) › 03|影片 [0:42:49–1:10:01](https://www.youtube.com/watch?v=S1km7opW6rw&t=2569s)|投影片 Ch4 p.12–15|上一章 [02 爬山法複習與模擬退火(0:23–0:42)](https://app.notion.com/p/3e6fc631b03081a79865f701c688c1c4)|下一章 [04 連續空間的梯度上升(1:21–1:40)](https://app.notion.com/p/3e6fc631b030812a99d4eb793b437690) ## 2. 各段標題(照順序;每段一個 ## 標題,直接照抄連結) - `## [0:42:49](https://www.youtube.com/watch?v=S1km7opW6rw&t=2569s) 局部束搜尋` 老師講什麼:Local beam search 一次隨機撒 k 個解,把每個解的鄰居全部產生出來,再從所有鄰居裡挑最好的 k 個繼續。 - `## [0:44:42](https://www.youtube.com/watch?v=S1km7opW6rw&t=2682s) 跟 random restart 差在哪` 老師講什麼:Random restart 每次重跑互相獨立;beam search 把 k 組的鄰居放在一起 PK,好的區域可能把 k 個名額全拿走,等於資訊在平行搜尋之間互相傳遞。老師講了兩次。 - `## [0:47:22](https://www.youtube.com/watch?v=S1km7opW6rw&t=2842s) 它是策略,也有隨機版` 老師講什麼:老師說 beam search 嚴格說是一種搜尋策略,可以搭配爬山法或模擬退火。Stochastic beam search 依機率挑 k 個,越好的越容易被挑;深度學習的訓練策略裡也常看到 beam search。 - `## [0:49:17](https://www.youtube.com/watch?v=S1km7opW6rw&t=2957s) 基因演算法的名詞` 老師講什麼:GA 是 stochastic beam search 的變形,受演化論啟發:k 個隨機解叫 population,每個解叫 individual,解要寫成有限字母的字串,最常見是 0 和 1。 - `## [0:51:36](https://www.youtube.com/watch?v=S1km7opW6rw&t=3096s) 八皇后:染色體與適應度` 老師講什麼:把每一欄皇后由下往上的位置寫成一串數字,這串叫 chromosome(染色體),每個數字是 gene(基因);再用 fitness(適應度)幫每個盤面打分數。 - `## [0:55:39](https://www.youtube.com/watch?v=S1km7opW6rw&t=3339s) 選擇、交配、突變` 老師講什麼:依 fitness 比例挑父母(24、23、20、11 分對應 31%、29%、26%、14%),表現好的可能被挑很多次;隨機選切點做 crossover 產生子代,再以很小的機率做 mutation。 - `## [1:00:39](https://www.youtube.com/watch?v=S1km7opW6rw&t=3639s) 繁衍多代與各種變形` 老師講什麼:繁衍很多代後挑最好的解。演化式計算本身就是一門課,有很多變形,例如讓超優秀個體「長生不老」、用實數當染色體;關鍵在把問題寫成染色體的形式。 - `## [1:03:18](https://www.youtube.com/watch?v=S1km7opW6rw&t=3798s) 課堂問答` 老師講什麼:模擬退火會不會越走越爛:溫度只會一路下降,最後越走越爛的機率非常低(證明略過)。找不到全域最佳解怎麼辦:實務上用 random restart 多跑幾次,夠好就好,連 GPT 找到的也只是 local maxima。(下課時另有同學問能不能記住歷史最佳解,老師說實務上可以,1:10:16) ## 3. 老師強調/會考/不考的地方(原句已驗證;寫進筆記時 ASR 錯字要改正) - (0:45:14) [強調] 「差別在於Local Research,它其實有不同Solution之間的溝通,再講一次,再講一次」 → Local beam search 和 random-restart 的差別:k 條平行搜尋之間會傳遞資訊(逐字稿的 Local Research=Local Beam Search) - (1:06:10) [不考] 「只是我們書上這個證明的部分就略過不談」 → 模擬退火收斂的數學證明略過不講(原話是「略過不談」,沒有明說不考) ## 4. 這章摘要與重要度 局部束搜尋一次追蹤 k 個解並放在一起比較,基因演算法再加上選擇、交配、突變;最後是課堂問答。(核心) ## 5. 整堂課的提醒(ASR 錯字、老師口誤、投影片缺公式等;只用跟這章有關的) - 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)。 - 老師講的和課本不一樣:老師把牛頓法說成 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。 ## 6. 投影片文字(這章範圍) **這幾頁的公式或內容只在圖裡(文字檔抓不到),寫 Exam-ready 與公式前先用 Read 看這幾張圖:** - Ch4 p.12 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p012.png - Ch4 p.13 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p013.png - Ch4 p.14 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p014.png --- Ch4 p.12 --- • The local beam search algorithm keeps track of k states rather than just one. • It begins with k randomly generated states. At each step, all the successors of all k states are generated. If any one is a goal, the algorithm halts. Otherwise, it selects the k best successors from the complete list and repeats. • A local beam search seem to be nothing more than running k random restarts in parallel instead of in sequence. In a random-restart search, each search process runs independently of the others. In a local beam search, useful information is passed among the parallel search threads. • Stochastic beam search chooses k successors at random, with the probability of choosing a given successor being an increasing function of its value. Local Beam Search 12 --- Ch4 p.13 --- • A genetic algorithm (or GA) is a variant of stochastic beam search in which successor states are generated by combining two parent states rather than by modifying a single state. • GAs begin with a set of k randomly generated states, called the population. Each state, or individual, is represented as a string over a finite alphabet— most commonly, a string of 0s and 1s. Genetic Algorithms 13 --- Ch4 p.14 --- • A fitness function should return higher values for better states. The probability of being chosen for reproducing is directly proportional to the fitness score. • For each pair to be mated, a crossover point is chosen randomly from the positions in the string. Genetic Algorithms 14 --- Ch4 p.15 --- • Finally, each location is subject to random mutation with a small independent probability. In the 8-queens problem, this corresponds to choosing a queen at random and moving it to a random square in its column. Genetic Algorithms 15 ## 7. 逐字稿(0:42:49 前後各多 1 分鐘,原始行) [00:41:50] 比如說你們現在, [00:41:51] 理論上你們還年輕, [00:41:53] 對不對? [00:41:54] 你們應該可以去投, [00:41:55] 比較高風險性的資產, [00:41:59] 等到已經快要退休了, [00:42:02] 老年人快要退休了, [00:42:03] 他投的資產, [00:42:04] 就應該要風險性比較低的, [00:42:06] 因為他比較不能夠接受, [00:42:08] 用比較爛的結果, [00:42:10] 來取代掉現有的結果嘛, [00:42:12] 所以隨著生命, [00:42:14] 隨著人生也是一樣, [00:42:15] 一開始溫度比較高, [00:42:17] 你可以比較接受比較爛的結果, [00:42:19] 因為蹲下是為了跳起來, [00:42:22] 你可以這麼說, [00:42:23] 好, [00:42:24] 只要你年紀大了, [00:42:26] 你就比較不願意, [00:42:28] 用比較爛的選擇, [00:42:30] 來取代掉你現在的選擇, [00:42:33] 這樣懂我意思嗎? [00:42:34] 就跟人生的哲理是一樣的, [00:42:36] 這個就是Seminity Unlimited, [00:42:38] 講完了, [00:42:40] 就這樣, [00:42:41] 那這個請大家自己去看, [00:42:43] 這就是Seminity Unlimited的概念, [00:42:45] 好, [00:42:49] 那接下來, [00:42:50] 繼續進階, [00:42:52] 下一個叫做Local Bean Search, [00:42:54] 好, [00:42:55] 剛剛前面的Hear Climbing, [00:42:57] 跟Seminity Unlimited, [00:42:59] 一次就是看一組姐, [00:43:02] 比如說我以一個姐為中心, [00:43:04] 我去看周圍的鄰居, [00:43:05] 然後去決定要不要取代, [00:43:07] 對不對, [00:43:08] 好, [00:43:09] 那Local Bean Search是說, [00:43:10] 我為什麼一次只看一個姐, [00:43:12] 我可不可以一次就看K個姐啊, [00:43:14] 對不對, [00:43:15] 有沒有, [00:43:16] 我在這個State Space裡面, [00:43:17] 我一次就灑K個, [00:43:19] Random灑, [00:43:20] K個不同的點嘛, [00:43:21] 對不對, [00:43:22] 那以每一個點為中心, [00:43:23] 去看一下週圍的鄰居嘛, [00:43:25] 一次看K個, [00:43:27] 好, [00:43:28] 那所以說呢, [00:43:29] It begins with K, [00:43:30] Randomly generated state, [00:43:32] 好, [00:43:33] 那以每一個State為中心, [00:43:36] 我去看, [00:43:39] 第一個人, [00:43:40] 以第一個人為中心, [00:43:41] 去看一下他周圍的鄰居, [00:43:43] 然後呢, [00:43:44] 用最好的來取代掉他, [00:43:45] 第二組姐, [00:43:46] 我以他為中心, [00:43:47] 看一下週圍的鄰居, [00:43:49] 對不對, [00:43:50] 不對, [00:43:51] 我剛剛講太誇張, [00:43:52] 應該是這樣講, [00:43:53] 我第一個, [00:43:54] Random的solution, [00:43:56] 我去看一下他周圍的鄰居, [00:43:58] 每一個, [00:43:59] 我都可以知道他的objective function value嘛, [00:44:02] 第二個, [00:44:03] 以他為中心, [00:44:04] 看一下他的鄰居, [00:44:05] 第三個, [00:44:06] 我也看一下他的鄰居, [00:44:07] 假設, [00:44:08] 每一個人, [00:44:09] 都看10個鄰居, [00:44:10] 那我現在一開始就隨機灑, [00:44:12] 10個可能的解, [00:44:14] 所以呢, [00:44:15] Totally, [00:44:16] 你是不是會有100個鄰居啊, [00:44:18] 對不對, [00:44:19] 因為一個人就看10個鄰居, [00:44:21] 10個人就看, [00:44:22] 10乘10, [00:44:23] 100個鄰居, [00:44:24] 他再從這100個, [00:44:27] 所有官看到的鄰居裡面, [00:44:30] 挑10個最好的出來, [00:44:33] 這個就叫做Local Research, [00:44:36] 講完了, [00:44:39] 就這麼簡單, [00:44:40] 好, [00:44:41] 那, [00:44:42] 這麼簡單, [00:44:43] 你會想說, [00:44:44] 這個跟, [00:44:46] 這個跟我剛剛那個什麼, [00:44:48] Random Restart Here Climbing, [00:44:50] 有什麼不一樣, [00:44:51] 剛剛Random Restart Here Climbing是說, [00:44:53] 我隨機挑一個點, [00:44:55] 以它為中心, [00:44:56] 去看周圍的鄰居, [00:44:58] 對不對, [00:44:59] 然後一直跑Here Climbing, [00:45:01] 好, [00:45:02] 跑完, [00:45:03] 得到一個最佳解, [00:45:05] 啊, [00:45:06] 我再隨機又再挑一個, [00:45:07] 又再跑跑跑, [00:45:08] 找到一個最佳解, [00:45:09] 好, [00:45:10] 那跟剛剛聽起來很像啊, [00:45:11] 好, [00:45:12] 我跟你講, [00:45:13] 差別在哪裡, [00:45:14] 差別在於Local Research, [00:45:17] 它其實有不同Solution之間的溝通, [00:45:23] 再講一次, [00:45:25] 再講一次, [00:45:26] 怎麼樣一個溝通方式呢, [00:45:28] 它其實它的意思就是說, [00:45:29] 比如說我今天, [00:45:30] 我隨機灑十個, [00:45:33] 我為了避免重複, [00:45:35] 我隨機灑五個Solution好了, [00:45:39] 我第一個Solution, [00:45:40] 以第一個Solution為中心, [00:45:42] 我去看周圍的十個鄰居, [00:45:46] 好, [00:45:47] 然後第二個Solution, [00:45:48] 我也去看周圍, [00:45:49] 找十個鄰居, [00:45:50] 所以Totally我是不會找到五十個, [00:45:53] 對不對, [00:45:54] 這五十個裡面, [00:45:56] 我要挑最好的五個出來, [00:46:00] 有可能喔, [00:46:01] 有可能我挑出來的這五個, [00:46:04] 全部來自剛剛的第一個Solution的那十個鄰居裡面, [00:46:13] 這樣大家懂我意思嗎, [00:46:15] 它跟剛剛一開始那個Random Restart Here Climbing, [00:46:19] 是不一樣的, [00:46:21] 因為它是把所有這五個Random Start, [00:46:26] Random State, [00:46:28] 開頭的這五十個鄰居是一起同胞, [00:46:31] 一起去PK得到最好的那五個, [00:46:37] 好, [00:46:38] 那當然也有可能說, [00:46:39] 我是從第一個Random State的十個鄰居裡面挑出兩個, [00:46:44] 然後呢, [00:46:45] 第二個Random State挑出一個, [00:46:46] 第三個又挑出兩個, [00:46:48] 這樣去抽到所謂的最好的五個, [00:46:50] 也是有可能的, [00:46:52] 所以呢, [00:46:53] 這一段的話, [00:46:54] 這字比較多, [00:46:55] 但講的就是在講這個意思, [00:46:58] 你會覺得說呢, [00:46:59] 這個做法好像Seem to Nothing More Than Running K Random Restart, [00:47:04] 但其實不一樣, [00:47:05] 好, [00:47:06] 在Random Restart, [00:47:07] 每一次Restart, [00:47:09] 都是一個獨立的開始, [00:47:11] 那如果是Local Bean Search呢, [00:47:13] Useful Information is Passed Among the Parallel Search Threat, [00:47:18] 好, [00:47:19] OK, [00:47:20] 好, [00:47:21] 那這個, [00:47:22] 所以, [00:47:23] 嚴格來講, [00:47:24] Local Bean Search啊, [00:47:26] 它其實不是一種, [00:47:28] 演算法, [00:47:29] 它其實是一種, [00:47:30] 搜尋策略啦, [00:47:32] 你今天, [00:47:36] 我隨機灑五個Random State出去, [00:47:39] 接下來你要怎麼運作, [00:47:41] 你可以搭配Hear Climbing來運作, [00:47:43] 你可以搭配Symmetric Engineering來運作, [00:47:46] 所以Local Bean Search其實是一個, [00:47:51] 一個策略, [00:47:53] 一個策略這樣子, [00:47:55] 好, [00:47:56] 那你也可以有一些變形啊, [00:47:58] 比如說今天我, [00:48:00] 不是永遠取, [00:48:02] 這五十個, [00:48:04] 鄰居裡面的最好的那五個出來, [00:48:06] 你可能是隨機挑五個出來, [00:48:09] 好, [00:48:11] 或者也不是隨機, [00:48:12] 而是根據某一個機率, [00:48:14] 來挑五個出來, [00:48:16] 好, [00:48:17] 那這機率怎麼設定呢, [00:48:18] 那就是看, [00:48:19] 一樣嘛, [00:48:20] 這邊跟剛剛Symmetric Engineering很像, [00:48:22] 就是, [00:48:23] 跟我目前現有的Solution, [00:48:27] 差不多的, [00:48:29] 我挑的機率就越高嘛, [00:48:31] 好, [00:48:32] 甚至贏越多的, [00:48:33] 我挑的機率就更高, [00:48:35] 甚至是必挑嘛, [00:48:37] 好, [00:48:38] 那這個就叫做Stochastic的Bean Search, [00:48:41] 好, [00:48:42] 那大家不要覺得這個Local Bean Search, [00:48:44] 這個好像是, [00:48:45] 老Coco, [00:48:46] 現在沒有人在用演算法, [00:48:47] 現在你, [00:48:48] even你是在訓練Deep Learning的模型, [00:48:51] 有的時候你的一個訓練策略裡面, [00:48:53] 你就會看到, [00:48:54] 它是講Bean Search, [00:48:56] Bean Search, [00:48:57] 所謂的Bean Search, [00:48:58] Bean就是一束, [00:49:00] 一束的意思, [00:49:01] 就是一次看一堆結的意思, [00:49:03] 一束, [00:49:05] 把什麼稻草捆成一束, [00:49:07] 的那個Bean Search, [00:49:09] OK, [00:49:11] 這樣可以嗎? [00:49:12] 好, [00:49:13] 所以我們用一頁, [00:49:14] 把Local Bean Search的策略講完了, [00:49:17] 再來下一個, [00:49:22] Genetic Algorithm, [00:49:24] 基因演算法, [00:49:26] 一樣, [00:49:27] 其實基因演算法呢, [00:49:28] 它可以是一本書, [00:49:30] 但是我們打算用三頁頭影片, [00:49:33] 講談基因演算法, [00:49:36] 基因演算法, [00:49:37] 它其實是Stochastic Bean Search的一個變形, [00:49:42] 好, [00:49:43] 那你一聽你就知道, [00:49:44] OK, [00:49:45] 它是Bean Search的變形, [00:49:47] 代表它一次會看一堆結的意思, [00:49:50] 然後呢, [00:49:51] 前面又加一個Stochastic, [00:49:52] 就代表說, [00:49:53] 它有這個隨機性, [00:49:55] 對吧, [00:49:56] 好, [00:49:57] 那基因演算法呢, [00:49:59] 它其實是受到, [00:50:01] 這個, [00:50:02] 演化論的這個啟發, [00:50:05] 好, [00:50:06] 它的概念是這樣, [00:50:07] 一樣的, [00:50:08] 基因演算法呢, [00:50:09] 它會從K個Random Generated State出發, [00:50:14] 好, [00:50:15] 等於說它一開始呢, [00:50:16] 就會隨機出K個結, [00:50:19] 好, [00:50:20] 那在基因演算法裡面呢, [00:50:22] 它稱呼這K個結呢, [00:50:24] 稱為是一個Population, [00:50:26] 一個群體, [00:50:28] 好, [00:50:29] 一個群體, [00:50:30] 好, [00:50:31] 一個結, [00:50:32] 我們又稱呼它這樣, [00:50:33] 一個一個個體, [00:50:36] OK, [00:50:37] 這個群體裡面有一個個個體, [00:50:39] 每一個個體, [00:50:40] 其實就是一個結的意思, [00:50:43] 好, [00:50:44] 那比較特別的事情是, [00:50:46] 它為了要套用這整個染色體, [00:50:51] 演化的這整個過程, [00:50:53] 好, [00:50:54] 所以它會把它的Solution呢, [00:50:56] 都表達成一個字串, [00:51:00] 一個序列, [00:51:01] 一個字串, [00:51:02] 好, [00:51:03] 然後這個字串通常都會定義在, [00:51:06] 一個現有的這個字母, [00:51:09] Alphabet裡面, [00:51:10] 好, [00:51:11] 等一下我們會看到一些例子, [00:51:12] 好, [00:51:13] 那一般來講, [00:51:14] 這個Alphabet, [00:51:15] 或者這個, [00:51:16] 常常是隻有0或1, [00:51:17] 所以一個Solution表達成, [00:51:19] 一堆011010100, [00:51:22] 這樣子的一個Binary String, [00:51:24] 這是一個常見的一個情況, [00:51:26] 另外一種常見的情況是, [00:51:28] 我可能是定義好, [00:51:30] 這些字母, [00:51:32] 來表達一組結, [00:51:34] 這樣子, [00:51:35] 好, [00:51:36] 那講這樣子, [00:51:37] 講這樣子, [00:51:38] 好像搞不清楚你在講什麼, [00:51:39] 我們直接舉一個例子, [00:51:41] 八皇后問題, [00:51:43] 大家還記得吧, [00:51:44] 好, [00:51:45] 在這個八乘八的棋盤裡面呢, [00:51:47] 我要放八隻皇后, [00:51:49] 對不對, [00:51:50] 然後希望八隻放上去之後呢, [00:51:52] 彼此之間沒有互相衝突, [00:51:54] 好, [00:51:55] 那我怎麼放, [00:51:56] 我現在, [00:51:57] 我就先隨便放, [00:51:58] 假設我的, [00:51:59] 我的這個限制就是說, [00:52:02] 我一個Colon, [00:52:03] 只能放一隻皇后, [00:52:05] 所以, [00:52:06] 我八個Colon, [00:52:07] 我就放八隻皇后, [00:52:09] 所以呢, [00:52:10] 我就把八隻皇后放好之後, [00:52:13] 這個盤面, [00:52:15] 它基本上就是一個結, [00:52:17] 它是一個Solution, [00:52:18] 只是, [00:52:19] 這個Solution是一個蠻爛的Solution, [00:52:21] 因為我們可以蠻輕易的看出, [00:52:23] 有好多衝突的地方嘛, [00:52:25] But anyway, [00:52:26] 它就是一個Solution, [00:52:27] 一個Possible的Solution, [00:52:29] 如何來表達這個Solution呢, [00:52:31] 我們可以設計說, [00:52:33] 我們根據它在盤面上的位置, [00:52:37] 比如說, [00:52:38] 今天第一隻皇后, [00:52:39] 是在第一個Colon的由下往上數, [00:52:41] 第三個位置, [00:52:43] 第二隻皇后, [00:52:44] 就是第二個Colon的, [00:52:46] 第二個這個, [00:52:47] 由下往上的第二個位置, [00:52:49] 以此類推, [00:52:50] 所以我可以把這個盤面, [00:52:51] 表達成, [00:52:52] 3, [00:52:53] 2, [00:52:54] 7, [00:52:55] 5, [00:52:56] 2, [00:52:57] 4, [00:52:58] 這裡, [00:52:59] 3, [00:53:00] 2, [00:53:01] 7, [00:53:02] 5, [00:53:03] 2, [00:53:04] 4, [00:53:05] 1, [00:53:06] 這個, [00:53:07] 這一串, [00:53:08] 就代表, [00:53:09] 那個8皇后的那個盤面, [00:53:10] 可以吧, [00:53:11] 好, [00:53:12] 所以, [00:53:13] 我們可以把每一組解, [00:53:14] 表達成, [00:53:15] 一個字串, [00:53:16] 而我們在經驗的演算法裡面呢, [00:53:17] 我們稱呼這個字串呢, [00:53:18] 叫做一個Colon, [00:53:19] 一個染色體, [00:53:20] 好, [00:53:21] 一個染色體, [00:53:22] 其中呢, [00:53:23] 呃, [00:53:24] 這個染色體裡面的每一個質啊, [00:53:25] 這個染色體裡面的每一個質啊, [00:53:27] 3, [00:53:28] 2, [00:53:29] 7, [00:53:30] 5, [00:53:31] 2, [00:53:32] 4, [00:53:33] 這個每一個質, [00:53:34] 叫做, [00:53:35] 就是一個基因啦, [00:53:36] 一串基因串起來, [00:53:37] 變成一個染色體, [00:53:38] 這個意思, [00:53:39] OK, [00:53:40] 好, [00:53:41] 所以, [00:53:42] 這只是, [00:53:43] solution 的表達法喔, [00:53:44] 接下來, [00:53:45] 針對每一組染色體, [00:53:46] 我們都可以去評估, [00:53:47] 它的好壞, [00:53:48] 在經驗的演算法裡面, [00:53:49] 叫做, [00:53:50] Fitness, [00:53:51] Fitness, [00:53:52] 哦, [00:53:53] Fitness, [00:53:54] 指的就是, [00:53:55] Fitness, [00:53:56] Fitness, [00:53:57] 適應程度, [00:53:58] 好, [00:53:59] 因為它基本上就是搭建在, [00:54:00] 因為它基本上就是搭建在, [00:54:01] 因為它基本上就是搭建在, [00:54:02] 演化論裡面嘛, [00:54:03] 就適者生存, [00:54:04] 不適者失敗嘛, [00:54:05] 對不對, [00:54:06] 好, [00:54:07] 在八皇后問題裡面的Fitness, [00:54:08] 在八皇后問題裡面的Fitness, [00:54:09] 可能是設計成, [00:54:10] 可能是設計成, [00:54:11] 欸, [00:54:12] 今天, [00:54:13] 你的皇后的衝突的, [00:54:14] 你的皇后的衝突的, [00:54:15] 這個, [00:54:16] 這個, [00:54:17] 這個, [00:54:18] 這個, [00:54:19] 這個, [00:54:20] 這個, [00:54:21] 這個, [00:54:22] 這個, [00:54:23] 這個, [00:54:24] 這個, [00:54:25] 這個, [00:54:26] 這個, [00:54:27] 這個, [00:54:28] 會去算出需要Fitness的頻率, [00:54:29] 會去算出需要Fitness的頻率, [00:54:30] 這樣, [00:54:34] 那再來, [00:54:35] 那再來, [00:54:36] 講設今天, [00:54:37] 我們要用經易演算法, [00:54:38] 我們要用經易演算法, [00:54:39] 要用經易演算法, [00:54:40] 來處理八皇后問題, [00:54:41] 那首先呢, [00:54:42] 那首先呢, [00:54:43] 我就先隨機產生出, [00:54:44] 我就先隨機產生出, [00:54:46] 四組不同的結, [00:54:47] 那當然就是表達成, [00:54:48] 那當然就是表達成, [00:54:49] 四種不同的染色體, [00:54:50] 四種不同的染色體, [00:54:52] measure 3 種不同的劑다車 種, [00:54:53] 譬如說, [00:54:54] 第1種檯面, [00:54:55] 比如說, [00:54:56] 第一種 erlebt, [00:54:57] omination, [00:54:58] 的分數 [00:54:59] 第一種盤面給24分 [00:55:01] 第二種盤面23 [00:55:02] 第三種盤面20 [00:55:03] 第四個盤面11 [00:55:05] 分數 數字越大的就代表表現越好 [00:55:09] 這裡你可以自己定 [00:55:10] 你可以自己定你自己的 [00:55:12] 這個所謂的 [00:55:13] 適者生存的這個條 [00:55:16] 這個所謂的適應程度 [00:55:18] 你可以給它一個原則 [00:55:20] 好 根據這個Fitness Value [00:55:25] 我們要從 [00:55:27] 這四個人呢 [00:55:28] 我們就說它形成了一個Population [00:55:32] 每一個都是一個Individual [00:55:33] 那每一個Individual也都表達 [00:55:35] 就是都表達成染色體的形式 [00:55:39] 好啦 那這次這個群體裡面呢 [00:55:42] 我們要先做第一件事情就是 [00:55:44] 我們要先挑出優秀的人出來 [00:55:48] 來結婚產生出下一個子彈 [00:55:52] 那什麼叫優秀呢 [00:55:53] 那就是看這個Fitness的值 [00:55:56] OK 有24 23 20 11 [00:55:58] 好 所以基本上呢 [00:56:00] 它就是我挑到第一個染色體的機率 [00:56:05] 31% [00:56:06] 挑到第二個29% [00:56:08] 挑到第二個26% [00:56:09] 挑到第四個14% [00:56:11] 好 那我就挑 [00:56:13] 那假設我也挑四次 [00:56:15] 好 第一次我挑到這個327521 [00:56:18] 第二次我挑到24748552 [00:56:21] 第三次又很巧的 [00:56:23] 又挑到327521 [00:56:25] 第四次我挑到2441512 [00:56:28] 四次 [00:56:28] 那之前被挑出來的 [00:56:31] 我挑的時候是菁英原則 [00:56:35] 就是說你表現越好的 [00:56:38] 就越有可能被挑出來 [00:56:40] 當成是產生出下一代的那個群體 [00:56:46] 那同一個Chromosome可能被挑很多次 [00:56:48] 如果它表現超優秀的話 [00:56:53] 好 挑出來之後 [00:56:55] 接下來兩兩兩兩之間 [00:56:58] 比如說第一個跟第二個結婚 [00:57:00] 好 第一個盤面跟第二個盤面結婚 [00:57:03] 那在這裡就會做兩種不同的動作 [00:57:06] 第一個動作叫Crossover [00:57:08] 其實就是交配啦 [00:57:09] 好 交配 [00:57:10] 那我們會隨機的在這個染色體這邊 [00:57:15] 隨機找某一個位置 [00:57:16] 好 交配之後呢 [00:57:19] 我就是把第一個Chromosome的前半部分 [00:57:23] 會接上第二個Chromosome的第二個部分 [00:57:26] 第二個Chromosome的第一部分會接上 [00:57:29] 第一個Chromosome的第二部分 [00:57:31] 這個就是交配生出的小孩 [00:57:36] 好 所以這叫子代 [00:57:38] 這是父母 [00:57:40] 這是Parent [00:57:41] 這是Children [00:57:43] 好 那同樣的 [00:57:44] 後面這兩個也結婚 [00:57:46] 然後呢進行Crossover得到什麼 [00:57:48] 那不要忘記這是什麼意思 [00:57:50] 這個其實就是新的Solution的意思 [00:57:54] 新的盤面的意思 [00:57:56] 好 這叫Crossover [00:57:58] 那Crossover [00:57:59] 這個完呢 [00:58:00] 我們也知道在生物界 [00:58:04] 產生出像一個子代的 [00:58:05] 這個整個繁衍的過程當中 [00:58:07] 有可能會發生突變嘛 [00:58:09] 除了父親跟母親交換染色體之外 [00:58:13] 有可能產生突變 [00:58:15] 所以呢 [00:58:16] 每一個Individual [00:58:20] 都有可能有一個很小的機率 [00:58:22] 可能某一個基因會變 [00:58:26] 比如說這裡本來是五的 [00:58:27] 它就變成了一 [00:58:29] 有很小很小的機率 [00:58:31] 那像第二個 [00:58:33] 這個就沒有產生任何的突變 [00:58:35] 那第三個又有某一個隨機某一個位置 [00:58:37] 產生一個突變 [00:58:39] 好 第四個這樣子 [00:58:40] 這個叫做Mutation [00:58:44] 好 那所以說呢 [00:58:46] 這裡你看 [00:58:47] 所謂的 [00:58:48] 這是第一個染色體 [00:58:50] 這是第二個染色體 [00:58:51] 第二個染色體就是 [00:58:52] 2 4 7 4 8 [00:58:56] 8嗎 8 [00:58:58] 5 5 2 [00:58:59] 這樣子 [00:59:01] 有沒有 [00:59:01] 還有 在這裡 [00:59:02] 就是這兩個Crossover [00:59:05] 我得到的 [00:59:06] 比如說我把它的 [00:59:07] 左邊這個盤面接上這裡的 [00:59:09] 右邊這個盤面 [00:59:10] 接起來就長這樣 [00:59:12] 所以你看它接起來就變成 [00:59:13] 3 2 7 4 8 5 5 2 [00:59:19] 就是對應到這個 [00:59:23] 產生出下一代之後 [00:59:26] 那同樣的啦 [00:59:27] 這樣的步驟可以繼續往下走 [00:59:30] 產生出下一代之後一樣 [00:59:32] 我就可以去計算這裡面每一個新的Solution [00:59:37] 你的Fitness的值是怎麼樣 [00:59:41] 對不對 [00:59:42] 你現在產生出新的解嗎 [00:59:43] 產生出來你的新的Fitness是怎麼樣 [00:59:47] 然後呢 [00:59:48] 再根據Fitness的值去挑出能夠繁衍下一代的Chromosome [00:59:53] 然後又繼續Crossover Mutation [00:59:56] 那依此類推 [00:59:57] 你可以繁衍很多代 [01:00:00] 最終 [01:00:01] 在這整個繁衍了之後呢 [01:00:01] 最終在這整個繁衍了之後呢 [01:00:01] 最終在這整個繁衍了之後呢 [01:00:02] 這個過程當中 [01:00:03] 可能繁衍到最後 [01:00:04] 你比如說你讓它繁衍100代 [01:00:07] 你就去挑出第100代的 [01:00:11] 表現最好的那一個盤面 [01:00:12] 來當成你的解 [01:00:14] 或者是說你讓它繁衍100個世代 [01:00:18] 然後你再去看說 [01:00:20] 每一個世代最強的那個你都留下來 [01:00:23] 那你繁衍完100個世代之後 [01:00:25] 再把100個世代祖孫 [01:00:27] 從這個曾祖父祖父對不對 [01:00:31] 父母自己小孩孫子什麼玄孫 [01:00:35] 全部最強的拿出來再PK [01:00:37] 再挑出一個最好的 [01:00:39] 這個就是基因演算法 [01:00:41] 講完了 [01:00:45] 就這樣 [01:00:46] 這就是基因演算法的最核心的概念 [01:00:50] 那當然其實基因演算法 [01:00:52] 或者說講得更廣一點 [01:00:54] 所謂的演化式計算 [01:00:56] 它根本就是一個學問 [01:00:58] 它根本就是一門課 [01:01:00] 它有根本就是有一門課 [01:01:04] 有一本教科書完全就是在講這個的 [01:01:07] 那裡面呢 [01:01:08] 整個大體的概念 [01:01:10] 就是我們這三頁頭裡面所說的 [01:01:13] 那裡面有很多小細節 [01:01:14] 比如說你這個挑 [01:01:16] 你要怎麼挑啊 [01:01:19] 比如說你這個挑 [01:01:21] 你是用什麼樣的策略來挑出 [01:01:23] 優秀的個體 [01:01:26] 產生出下一個子彈 [01:01:28] 那還有啊 [01:01:30] 還有另外一種做法就是 [01:01:31] 你允許假設其中某一彈 [01:01:34] 有某一個個體 [01:01:36] 超級優秀 [01:01:38] 你可以給它一個特權 [01:01:40] 就是長生不老 [01:01:41] 就是它永遠 [01:01:43] 下一代要生 [01:01:45] 就是說它超級優秀 [01:01:47] 你可以讓它在下一次 [01:01:49] 下一個世代 [01:01:51] 也永遠都會保留 [01:01:53] 它一定就可以再生出 [01:01:55] 下一代 [01:01:56] 它一定會被選 [01:01:57] 你可以給它一個特權 [01:01:59] 或者是怎麼樣 [01:02:01] 這裡有一大堆各式各樣不同的 [01:02:04] 變形 [01:02:06] 包含像你的chromazone [01:02:08] 一定是binary的嗎 [01:02:09] 還是說你可以像現在畫面上的這種 [01:02:12] 你是real number的 [01:02:16] 那所以只要你的想法 [01:02:20] 你所想要求的解 [01:02:23] 有辦法表達成chromazone的形式 [01:02:27] 你就可能可以應用經驗演算法 [01:02:30] 來解這個問題 [01:02:32] 所以我們目前在書上 [01:02:34] 我們這裡是用八王二問題來表達 [01:02:37] 那接下來其他的 [01:02:39] 你自己比如說你自己final project [01:02:41] 你假設你要做 [01:02:42] 那就看你自己的創意 [01:02:43] 比如說在過去以前 [01:02:45] 我們曾經 [01:02:47] 我們實驗室也用過 [01:02:49] 經驗演算法來幫忙我們解決 [01:02:51] 比如說棒球比賽 [01:02:54] 棒球影片分析的問題 [01:02:56] 那重點在於說你如何把那個問題 [01:02:58] 轉化成chromazone的形式 [01:03:01] 讓它去求一個最佳解 [01:03:03] 好 [01:03:04] 這當然就是各自看你的 [01:03:06] 個人的這個功力 [01:03:09] 看你個人的設計而定 [01:03:12] 好 [01:03:13] 以上就是這個基因演算法 [01:03:16] 好 [01:03:18] 講到這邊一個段落 [01:03:20] 我們來看一下snide上面有沒有問題 [01:03:22] 我如果一開始就存在整體最佳解 [01:04:00] 根據模擬退火的機制 [01:04:03] 它會為了尋找更最佳 [01:04:05] 更佳的解而有機率容許問題嗎 [01:04:08] 就是溫度更高的解存在 [01:04:10] 如果最後發現溫度越來越高 [01:04:14] 它怎麼會回傳原本一開始的最佳解 [01:04:17] 我覺得問這個問題可能有點誤解 [01:04:20] 就是說溫度一定不會越來越高 [01:04:23] 因為根據定義溫度一定是一開始最高溫 [01:04:27] 然後溫度會一路下降 [01:04:29] 所以你的溫度是肯定一路下降的 [01:04:33] 那溫度下降是什麼意思呢 [01:04:35] 就是你越來越不容易用 [01:04:38] 比較爛的解來取代掉現有的解的意思 [01:04:44] 那我在猜這位同學問這個問題是說 [01:04:48] 會不會比如說我本來我在某一個位置 [01:04:53] 然後我用一個比較爛的解來取代掉我 [01:04:58] 那我就變爛了啊 [01:05:00] 你的意思應該是說 [01:05:02] 當我變爛了之後 [01:05:04] 我會不會又一路爛下去 [01:05:06] 我再也就回不到 [01:05:08] 我剛剛比如說我現在在時間t等於3的時候 [01:05:11] 其實我的解比t等於4的時候的解來得更好 [01:05:15] 那你走到t等於4 [01:05:17] 你變爛了 [01:05:18] 然後又跑到t等於5 [01:05:20] 會不會又更爛 [01:05:22] 你的意思是說有沒有可能再回歸到 [01:05:27] 當時t等於3的時候的那個 [01:05:29] 真正在歷史上曾經掌握的最佳解呢 [01:05:32] 我覺得有可能可以 [01:05:36] 也有可能不可以 [01:05:40] 我可以講說 [01:05:42] 因為機率嘛 [01:05:43] 所以它沒有一定會怎麼樣 [01:05:45] 我只能夠說它最終 [01:05:47] 它的解 [01:05:51] 你找到的解會變得越來越爛的 [01:05:53] 那個機率是非常非常低的 [01:05:55] 非常非常低的 [01:05:57] 應該有很高的機會 [01:05:59] 你的解是會朝好的方向來走 [01:06:03] 我只能夠跟你這麼講 [01:06:05] 那當然你如果要很嚴謹的數學證明 [01:06:08] 這個一定也有證明 [01:06:10] 只是我們書上這個證明的部分 [01:06:12] 就略過不談 [01:06:14] 好 [01:06:15] 所以同學你這個問得不錯 [01:06:19] 信件這個我已經說過N次了 [01:06:23] N次了 [01:06:24] 我不想要再回答 [01:06:28] 成大同學不可以填線上保單 [01:06:31] 我們說過了 [01:06:34] 我們為什麼要弄這個算力 [01:06:36] 就是我們要鼓勵大家來實體上課 [01:06:39] 你只要成大同學 [01:06:41] 你填再多也沒有用 [01:06:43] 因為你必須在現場 [01:06:45] 當場領號碼牌 [01:06:46] 這個我講過太多次了 [01:06:56] 老師說會卡在極大值 [01:06:59] 應該說local maxima [01:07:01] 但老師後來又說 [01:07:03] 正常來講根本不可能像現在看一眼就知道 [01:07:06] 最大值在哪裡 [01:07:07] 對 [01:07:08] 那這個問題是不是隻能 [01:07:11] 只能怎樣 [01:07:12] 不同方法多找幾個極大值再來比較 [01:07:15] OK [01:07:16] 好 [01:07:17] 我稍微 [01:07:19] 對 [01:07:20] 就是說很多時候 [01:07:22] 在現實世界當中 [01:07:24] 我們根本就不知道 [01:07:25] 真正的極大值在哪裡 [01:07:29] 這是很正常的 [01:07:31] 那所以呢 [01:07:32] 很多時候我們找到的解 [01:07:34] 都只是local maxima [01:07:38] 即使 [01:07:39] 你現在看全世界AI最強的 [01:07:42] 對不對GPT-6 Ultra [01:07:45] 你認為它現在的這個模型 [01:07:47] 找到的就已經是這個宇宙裡面的最佳解嗎 [01:07:50] 一定不是 [01:07:52] 我們只能夠說 [01:07:53] 它是目前地球上 [01:07:55] 我們能夠所使用的training data裡面 [01:07:58] 能夠找到 [01:07:59] 目前人類能夠找到的 [01:08:01] 某一組 [01:08:03] 你認為是很不錯的一個解而已 [01:08:06] 但它是不是在數學上是一個 [01:08:08] 真正的最佳解 [01:08:10] 事實上我覺得一定不是 [01:08:13] 如果是的話 [01:08:15] 它就再也不會有GPT-7 [01:08:17] GPT-8 [01:08:18] GPT-9了嘛 [01:08:19] 一定不是 [01:08:20] 它就不可能再進步了 [01:08:22] 所以一定不是 [01:08:23] 好 [01:08:24] 好那再來 [01:08:25] 所以你的問題是說 [01:08:26] 那怎麼辦呢 [01:08:28] 不能怎麼辦 [01:08:29] 或者是說 [01:08:30] 我們剛剛講了有幾種做法 [01:08:32] 比如說Random Restart [01:08:34] 我們就多做幾次 [01:08:36] 然後再從這幾次的結果裡面 [01:08:39] 找到相對最好的那一個 [01:08:42] 但是你可能永遠都無法保證 [01:08:45] 你找到的是數學上的最佳解 [01:08:49] OK我希望這樣有回答到你的問題 [01:08:53] 很多時候我們 [01:08:55] 那你說 [01:08:56] 那這樣子我沒有找到真正的最佳解 [01:08:59] 會不會怎麼樣啊 [01:09:00] 答案是也不會怎麼樣 [01:09:02] 我們還活得好好的 [01:09:04] 很多時候在人類的真正的應用上 [01:09:07] 你找到的解 [01:09:09] 只要夠好就行了 [01:09:13] 我們就覺得Happy了 [01:09:15] 我們就覺得Happy了 [01:09:16] 這樣子 [01:09:17] 像你現在用GPT-6 [01:09:19] 你蠻Happy的吧 [01:09:20] 用得還行吧 [01:09:22] 事實上在GPT-6出來之前 [01:09:24] 你GPT-5 [01:09:25] 你用得也還蠻Happy的吧 [01:09:27] 所以其實沒有一定要找到最佳解 [01:09:32] 只有什麼人要找到 [01:09:34] 真正窮極意義上的最佳解呢 [01:09:37] 大概就是數學家吧 [01:09:39] 在概念上consecually要找到最佳解 [01:09:43] 在實際工程應用上 [01:09:45] 通常我們大部分接受的都是 [01:09:47] 到目前為止能夠找到的那個解 [01:09:50] 可用的解這樣子 [01:09:55] 而且沒有公認最好的最佳化的方法 [01:09:57] 沒有 [01:09:58] 根據不同的問題 [01:10:00] 你所使用的策略 [01:10:01] 先休息一下再回來 [01:10:16] 你不是有提到那個 [01:10:32] 炊火它有可能越來越爛 [01:10:34] 然後你說可能性很低 [01:10:36] 那我剛剛的想法就是 [01:10:38] 就是在演算法為什麼就是先不要記住 [01:10:40] 哎我有個時間的最佳解 [01:10:42] 然後往下走 [01:10:43] 然後它會有一個最終的重點 [01:10:45] 然後如果最後真的最爛 [01:10:46] 那我就用一個額外的能源去把那個 [01:10:49] 可以啊 [01:10:50] 可以啊 [01:10:51] 剛剛我有回答問題的時候 [01:10:53] 我有提到類似像這樣 [01:10:54] 可以可以 [01:10:55] 實際上真正應用的時候 [01:10:57] 的確是可以 [01:10:58] 另外一個問題是 ## 8. 寫作規則 (這是 `_筆記SOP.md` 第 3.1、4、5、6 節的濃縮版。兩者衝突時以 SOP 為準。) 讀者:碩士生,兩門課期末是英文考試。要只看筆記就能學會,講得比老師好懂。畫面要簡潔。 ### 輸出兩個檔 1. `chNN.md`(Notion 寫法,不含頁面標題),結構固定: - 第一行:章節包第 1 節那行,原樣照抄。 - `## 重點`:三點中文,每點一到兩句。 - `## Exam-ready`:3–10 行英文,**從章節包的投影片文字逐字抄**,每行 `- **Term**: "原句"(Ch3 p.14)`。老師有明確證據才在行尾加 `【老師強調】(h:mm:ss)`。 - 章節包第 2 節的每一段:`## [h:mm:ss](連結) 標題`(照抄),下面 2–4 句白話摘要,其餘全部收進摺疊: ```
問句(例:用生活例子講,BFS 在做什麼?) 內容
``` 摺疊種類(需要才放):用生活例子講?/它到底怎麼運作?/要先懂什麼?(老師假設你會的數學或概念,短版教學)/老師原話是什麼?(「原話」(h:mm:ss),只放重要的,最多 5 句)。 - 「它到底怎麼運作?」要用一組小數字把這段的演算法**真的跑 1–3 步**(例:算出梯度、更新一次、比較兩個 α),不是只示範定義的加減乘除。全章盡量沿用同一組數字,讓前一段的答案能在下一段被驗證。 - 每段正文要回答讀者最可能卡住的一個「為什麼」。投影片公式方向跟題目相反、或投影片說「解不出來」時,用一兩句講出原因,自己補的標(我補充)。 - 投影片句子停在公式前(公式在圖裡)時:Exam-ready 在粗體詞條上補公式、引號內保持原句;正文寫出同一條式子。公式圖看章節包第 6 節列出的 PNG。 - `## Self-check`:2–4 題英文考題,答案收摺疊,答案後補「中文重點:一句」。**至少一題考老師強調的內容**;不出「老師和投影片哪裡不同」這類不會考的題目。 - 不要把章節包或這份規則裡的指示句寫進筆記(例如「寫筆記時照投影片寫」「已改正 ASR 錯字」)。 - 長度 8,000–14,000 字元。 2. `chNN.concepts.json`:JSON 陣列,4–12 個考試可能問的術語,每個物件: `name`(英文)、`zh`、`type`(概念/演算法/公式/人物事件/前置知識/行政)、`signal`("老師說會考"/"老師強調"/"核心(我判斷)"/"")、`evidence`(有 signal 前兩種時必填:原句+時間)、`definition_en`(投影片原句;沒有就註明 (textbook)/(lecture)/(my wording))、`plain`(一句中文)、`a4`(≤150 字元英文,可夾極短中文;期末拼貼用的小方塊)、`time`、`slides`、`prereq`(英文名陣列)。 ### 風格鐵律 - 不用 emoji 或裝飾符號(✓✗★⚠ 都不要;→ 可以)。不用 callout。不用 `$`。時間不要用 code 樣式。 - 每個 `##` 段落最多一種視覺元素:一張圖、或一個表格、或一個 mermaid。 - 摺疊標題是問句,前面不加符號。 - 圖片最多 3 張,只放文字取代不了的圖。放法:單獨一行 `[[IMG: | 中文圖說]]`,PNG 用 `slides_to_png.py <圖片資料夾> <頁> --dpi=110` 產生。 - 考試訊號只在老師明確說時標。老師只說「不用背」「不講」就寫「注意:……」。 - 老師口誤或跟投影片不同:照投影片寫,加「注意:老師口頭說的是……」。 - 引用老師的話時,ASR 錯字改成正確的字。 ### 沒有投影片時 不要憑記憶逐字重現課本段落或數值表。英文定義用自己的話寫、句尾標 (my wording);Exam-ready 每行標「(自擬,投影片待補)」。例子只用老師講的。 ### 寫完之後(只做一次) 跑檢查: `C:\Users\user\.cache\meeting-record\venv\Scripts\python.exe C:\Users\user\.claude\scripts\check_note.py --transcript <逐字稿> --slides <投影片 txt …> --start <起> --end <訖> --vid <影片 ID>` - STYLE/VISUAL/TIME/FORMAT:全部改掉。 - QUOTE:確認是不是你改正了 ASR 錯字(是就保留),不是就改成原文或拿掉引號。 - ENGLISH:確認是不是投影片斷行造成的(是就保留),不是就改成投影片原句。 **省額度守則**:章節包裡已經有你需要的全部資料。不要再去讀整份逐字稿、整份投影片、segments.json 或手冊。一次寫好整個檔(Write 一次),檢查後集中修改。