# 章節包:人工智慧導論(AI)W3(9/24)第 02 章「爬山法複習與模擬退火」
影片 0:23:12–0:42:49,YouTube ID S1km7opW6rw。Notion 章節頁 https://app.notion.com/p/3e6fc631b03081a79865f701c688c1c4(頁 ID 3e6fc631b03081a79865f701c688c1c4),頁面標題「02 爬山法複習與模擬退火(0:23–0:42)」。
## 1. 第一行(直接照抄,不要改)
[人工智慧導論](https://app.notion.com/p/3e6fc631b0308131b213f0a3d93fe91d) › [W3(9/24)](https://app.notion.com/p/3e6fc631b0308137bbd8e73f5c6f1b62) › 02|影片 [0:23:12–0:42:49](https://www.youtube.com/watch?v=S1km7opW6rw&t=1392s)|投影片 Ch4 p.2–11(p.2–9 上週講過,本週快速複習)|上一章 [01 下週預錄課與抽算力制度(0:09–0:23)](https://app.notion.com/p/3e6fc631b030813ebaaac6d55eece1b5)|下一章 [03 局部束搜尋與基因演算法(0:42–1:10)](https://app.notion.com/p/3e6fc631b0308105a674c6e43a405835)
## 2. 各段標題(照順序;每段一個 ## 標題,直接照抄連結)
- `## [0:23:12](https://www.youtube.com/watch?v=S1km7opW6rw&t=1392s) 第四章在解什麼問題` 老師講什麼:目標是在解空間裡找到讓目標函數(objective function)最大的解。解通常是高維向量,所以很難直接找出最好的那一組。
- `## [0:24:58](https://www.youtube.com/watch?v=S1km7opW6rw&t=1498s) 複習爬山法` 老師講什麼:Hill climbing 從隨機一個解出發,看周圍鄰居,換成表現最好的鄰居,一直重複;找不到更好的鄰居或改善很小時就停。
- `## [0:28:20](https://www.youtube.com/watch?v=S1km7opW6rw&t=1700s) 卡在區域最大值` 老師講什麼:爬山法可能停在小山丘(local maximum)。真實問題沒有「上帝視角」,看不到整個曲面長什麼樣,所以才需要局部搜尋。
- `## [0:29:26](https://www.youtube.com/watch?v=S1km7opW6rw&t=1766s) 爬山法的三種變形` 老師講什麼:Stochastic:從比自己好的鄰居裡隨機挑;First-choice:找到第一個比自己好的就走;Random-restart:從不同隨機起點多跑幾次。老師說變形不保證一定比基本版好,要看問題。
- `## [0:31:58](https://www.youtube.com/watch?v=S1km7opW6rw&t=1918s) 模擬退火的由來` 老師講什麼:Annealing(退火)就像打鐵:先加熱讓分子鬆動、好塑形,再慢慢冷卻讓結構固定。模擬退火就是模仿這個過程。
- `## [0:33:12](https://www.youtube.com/watch?v=S1km7opW6rw&t=1992s) 模擬退火的流程` 老師講什麼:跟 first-choice 爬山法很像:鄰居比較好就一定換過去;鄰居比較差,也有一定機率換過去,老師比喻成「退一步海闊天空」、第一份工作不一定挑薪水最高的。
- `## [0:35:53](https://www.youtube.com/watch?v=S1km7opW6rw&t=2153s) 接受機率 e^(ΔE/T)` 老師講什麼:走到這一步時 ΔE 一定是負的:鄰居差越多,接受機率越低;只差一點點的鄰居比較容易被接受。
- `## [0:38:35](https://www.youtube.com/watch?v=S1km7opW6rw&t=2315s) 溫度 T 逐漸下降` 老師講什麼:一開始溫度高,比較願意接受差的鄰居;迭代越多溫度越低,越不願意冒險。老師用「年輕時可以冒險投資、快退休就保守」來比喻;聽起來吃力就先複習指數的定義。
## 3. 老師強調/會考/不考的地方(原句已驗證;寫進筆記時 ASR 錯字要改正)
(無)
## 4. 這章摘要與重要度
快速複習爬山法和它的變形,接著講模擬退火怎麼用溫度控制「接受較差解」的機率。(核心)
## 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.6 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p006.png
- Ch4 p.7 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p007.png
- Ch4 p.8 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p008.png
- Ch4 p.9 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p009.png
- Ch4 p.10 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p010.png
- Ch4 p.11 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p011.png
--- Ch4 p.2 ---
• The search algorithms that we have seen so far are designed to explore search
spaces systematically. When a goal is found, the path to that goal also
constitutes a solution to the problem.
• In many problems, however, the path to the goal is irrelevant. In the 8-queens
problem, what matters is the final configuration of queens, not the order in
which they are added.
• We need algorithms not worrying about paths at all.
Local Search Algorithms and Optimization
Algorithms
2
--- Ch4 p.3 ---
• Local search algorithms operate using a single current node and generally
move only to neighbors of that node.
• They use very little memory—usually a constant amount
• They can often find reasonable solutions in large or infinite (continuous)
state spaces for which systematic algorithms are unsuitable.
• Local search algorithms are useful for solving pure optimization problems, in
which the aim is to find the best state according to an objective function.
Local Search Algorithms and Optimization
Algorithms
3
--- Ch4 p.4 ---
Local Search Algorithms and Optimization
Algorithms
4
--- Ch4 p.5 ---
• The hill-climbing search algorithm (steepest-ascent version) is simply a loop
that continually moves in the direction of increasing value. It terminates when
it reaches a “peak”.
• Does not maintain a search tree, so the data structure for the current node need
only record the state and the value of the objective function.
Hill Climbing Search
5
--- Ch4 p.6 ---
• 8-queens problem
• The successors of a state are all possible states generated by moving a single
queen to another square in the same column. The heuristic cost function h is
the number of pairs of queens that are attacking each other.
• Hill-climbing algorithms typically choose randomly among the set of best
successors if there is more than one.
Hill Climbing Search
6
--- Ch4 p.7 ---
• Hill climbing is sometimes called greedy local search because it grabs a good
neighbor state without thinking ahead about where to go next.
• It turns out that greedy algorithms often perform quite well
• Hill climbing often gets stuck for the following reasons:
• Local maxima
• Ridges (屋脊)
• Plateaux (can be flat
local maximum or
a shoulder)
Hill Climbing Search
7
--- Ch4 p.8 ---
• For the 8-queens problem, steepest-ascent hill climbing gets stuck 86% of the
time, solving only 14% of problem instances. It works quickly, taking just 4
steps on average when it succeeds and 3 when it gets stuck—not bad for a
state space with 88 ≈ 17 million states.
• Might it not be a good idea to keep going—to allow a sideways move in the
hope that the plateau is really a shoulder? The answer is usually yes. This
raises the percentage of problem instances solved by hill climbing from 14%
to 94%. Success comes at a cost: the algorithm averages roughly 21 steps for
each successful instance and 64 for each failure.
Hill Climbing Search
8
--- Ch4 p.9 ---
• Stochastic hill climbing chooses at random from among the uphill moves; the
probability of selection can vary with the steepness of the uphill move.
• First-choice hill climbing implements stochastic hill climbing by generating
successors randomly until one is generated that is better than the current state.
• Random-restart hill climbing conducts a series of hill-climbing searches
from randomly generated initial states until a goal is found.
• The success of hill climbing depends very much on the shape of the state-
space landscape.
Hill Climbing Search
9
--- Ch4 p.10 ---
• Annealing is the process used to temper or harden metals and glass by heating
them to a high temperature and then gradually cooling them, thus allowing the
material to reach a low-energy crystalline state.
Simulated Annealing
10
--- Ch4 p.11 ---
• Instead of picking the best move, however, it picks a random move. If the
move improves the situation, it is always accepted. Otherwise, the algorithm
accepts the move with some probability less than 1. The probability decreases
exponentially with the “badness” of the move.
• The probability also decreases as the “temperature” T goes down: “bad”
moves are more likely to be allowed at the start when T is high, and they
become more unlikely as T decreases.
Simulated Annealing
11
## 7. 逐字稿(0:23:12 前後各多 1 分鐘,原始行)
[00:22:12] 我這滑鼠。
[00:22:17] 這樣子。
[00:22:18] 可以。
[00:22:19] 好,那我們就開始上課囉。
[00:22:21] 好,有沒有問題?
[00:22:25] 先停一下。
[00:22:34] 那個後來才看影片的同學,
[00:22:38] 當你聽到,
[00:22:40] 你看到那個線上的表單,
[00:22:42] 跟聽到通關密語之後,
[00:22:44] 你當然會知道通關密語啦,
[00:22:46] 如果你真的有在看影片的話。
[00:22:48] 但是後來,
[00:22:49] 反正我們線上的表單就已經截止了,
[00:22:52] 你填了也沒有用了。
[00:22:53] 好,我們有點煩。
[00:22:57] 上個課還要弄那麼煩。
[00:22:59] 好,我們先公佈第一個通關密語,
[00:23:02] 順便亂講。
[00:23:03] 9527,
[00:23:04] 你幫我記一下。
[00:23:07] 好,那什麼時候會說出第二個通關密語,
[00:23:09] 我也會知道。
[00:23:10] 好,來。
[00:23:12] 那我們繼續來上第四章。
[00:23:16] 好,第四章。
[00:23:19] 好,第四章呢,
[00:23:20] 我們要解的就是一個,
[00:23:22] 我們現在在做一個最佳化的動作。
[00:23:26] 那就是說呢,
[00:23:27] 我們在整個solution space裡面,
[00:23:30] 整個解空間裡面,
[00:23:32] 我們希望能夠找到一個最佳解。
[00:23:34] 什麼叫最佳解呢?
[00:23:35] 那就是,
[00:23:37] 你讓你的這個目標函數的值,
[00:23:39] 能夠越大的那樣子的解,
[00:23:42] 就是所謂的最佳解。
[00:23:44] 你可能帶入各種不同的solution,
[00:23:47] 你對應的目標函數,
[00:23:49] 可能高高低低,
[00:23:50] 有這樣子的一個變動。
[00:23:52] 那你怎麼去,
[00:23:55] 照理講以這個例子來講,
[00:23:57] 我們的最佳解就出現在,
[00:23:59] 大概在這個地方,
[00:24:00] 因為這個地方你推上去,
[00:24:02] 你對上去,
[00:24:03] 這裡就是你的最佳的目標函數的值。
[00:24:07] 所以你的最佳解,
[00:24:08] 就是在excel的這個地方。
[00:24:11] 好,那大家不要誤會喔,
[00:24:13] 最佳解呢,
[00:24:14] 我們現在雖然是用這張圖來表示,
[00:24:17] 我們的solution好像是一個數值,
[00:24:20] 一個值,
[00:24:21] 但實際上,
[00:24:22] 我們的這個state space,
[00:24:24] 可以是在一個非常高維的空間。
[00:24:27] 所以你可以帶入一組向量,
[00:24:30] 就是我的一組值,
[00:24:31] 那它是在高維的空間當中,
[00:24:33] 會對應到一個objective function value,
[00:24:37] 一個目標函數的值。
[00:24:40] 所以其實在一個這麼複雜的,
[00:24:42] 高維的空間當中,
[00:24:43] 找到哪一組向量,
[00:24:46] 是對應到最大的函數的值,
[00:24:50] 是很困難的。
[00:24:51] 好,那所以呢,
[00:24:54] 我們在接下來呢,
[00:24:55] 就介紹了一些演算法。
[00:24:58] 好,那我們很快的複習一下,
[00:25:01] 我們上週最後介紹的這個演算法,
[00:25:03] 叫做Hear Climbing,
[00:25:05] 它是一個最典型,
[00:25:07] 簡單的local search的演算法。
[00:25:10] 那為什麼叫local search呢?
[00:25:12] 因為它就是local嘛,
[00:25:15] 只看局部,
[00:25:16] 區域內的相關的解。
[00:25:20] 它的概念也很簡單,
[00:25:22] 我不知道我的解在,
[00:25:23] 最佳解在哪裡,
[00:25:24] 我就隨機的,
[00:25:26] 先從某一個solution出發,
[00:25:29] 某一個,某一個地點出發,
[00:25:32] 好,或者說,
[00:25:33] 這個stay space的某一組解出發,
[00:25:35] 這樣子,好。
[00:25:37] 從它出發之後呢,
[00:25:38] 我去看看它周圍的鄰居,
[00:25:41] 有沒有人的objective function value,
[00:25:44] 比我現在的objective function value,
[00:25:47] 來得更高,來得更好。
[00:25:49] 好,因為每一個solution,
[00:25:51] 都對應到一個objective function value,
[00:25:55] 都對待一個目標分數的值。
[00:25:57] 好,所以我去看一下我的鄰居們,
[00:25:59] 有沒有人表現得比我好。
[00:26:01] 好,那所以以我為中心,
[00:26:03] 方圓,比如說,
[00:26:05] 5公尺以內的這些鄰居們的這些解,
[00:26:09] 如果有比我好的,
[00:26:11] 好,可能有10個都比我來得好,
[00:26:16] 那我就從這10個裡面,
[00:26:17] 挑最棒的那個鄰居,
[00:26:19] 用它來取代掉我。
[00:26:21] 所以呢,我經過這一次update之後呢,
[00:26:24] 我就得到了一個相對比較好的一個解,
[00:26:27] 對不對。
[00:26:28] 好,那再從剛剛最好的那個鄰居,
[00:26:31] 現在變成我自己走到那個位置了,
[00:26:34] 以它為中心,
[00:26:35] 再去看方圓5公尺之內,
[00:26:38] 好,所謂的方圓5公尺,
[00:26:40] 只是一個比喻,
[00:26:42] 其實你不同的問題,
[00:26:43] 你的鄰居的利益會不一樣。
[00:26:45] OK,好,那你去看一下你的鄰居,
[00:26:49] 再看看說,
[00:26:50] 唉,有沒有比他更好的,
[00:26:52] 唉,有比他更好的,
[00:26:53] 就挑最好的那一個,
[00:26:55] 用它來取代掉我原本的位置。
[00:26:57] 就這樣,一直往下做下去,
[00:26:59] 看你願意做幾步,
[00:27:01] 比如說你可以做1萬步,
[00:27:03] 10萬步,
[00:27:04] 或者是說,
[00:27:05] 你可以設定一些終止的條件,
[00:27:07] 比如說,
[00:27:08] 唉,後來呢,
[00:27:09] 我用鄰居來update掉我之後呢,
[00:27:12] 我的objective function value,
[00:27:14] 變動,
[00:27:15] 微乎其微,
[00:27:16] 那我就知道說,
[00:27:17] 差不多,
[00:27:18] 我已經找不到其他的,
[00:27:19] 這個,
[00:27:20] 更好的企業了,
[00:27:21] 你就可以停了。
[00:27:23] 這樣子的做法呢,
[00:27:24] 就叫做Heel Climbing,
[00:27:26] 好,爬山啦,
[00:27:28] 那你可以想,
[00:27:29] 比如說,
[00:27:30] 我假設我隨機,
[00:27:31] 我從這個點出發,
[00:27:32] 我從這一組企業出發,
[00:27:34] 它的objective function value呢,
[00:27:36] 是在這裡嘛,
[00:27:37] 好,
[00:27:38] 那我去看一下它的鄰居,
[00:27:40] 以目前來講,
[00:27:41] 它的鄰居,
[00:27:42] 其實就是以這個領域作為中心,
[00:27:43] 左右附近的人嘛,
[00:27:45] 唉,我就發現說,
[00:27:46] 唉,這個鄰居,
[00:27:48] 這個鄰居表現最好啊,
[00:27:50] 所以我就用它來取代掉我,
[00:27:53] 好,這樣,
[00:27:54] 然後以此類推,
[00:27:55] 我再以它為核心,
[00:27:57] 我去左右看,
[00:27:58] 又發現右邊一點,
[00:28:00] 又有一個更棒的鄰居,
[00:28:02] 以此類推,
[00:28:03] 一直走到,
[00:28:04] 比如說這個點為止,
[00:28:06] 好,
[00:28:07] 也就是說,
[00:28:08] 我以它為中心,
[00:28:09] 往左右看,
[00:28:10] 發現沒有任何鄰居,
[00:28:11] 比我表現得更好了,
[00:28:13] 那我就回傳這一組答案,
[00:28:16] 好,
[00:28:17] 那這個做法,
[00:28:18] 很顯然的,
[00:28:19] 你可以發現,
[00:28:20] 可能有一個問題啦,
[00:28:21] 就是它可能會卡在local maximum,
[00:28:25] 對不對,
[00:28:26] 因為你到了這個小山丘這裡了,
[00:28:28] 你這個周圍繞一圈一看,
[00:28:32] 發現沒有任何鄰居比你更強的,
[00:28:35] 那你就覺得你自己是最強的,
[00:28:37] 好,
[00:28:38] 那你就卡在local maximum,
[00:28:40] 但事實上以我們,
[00:28:41] 我們現在如果從上帝的視角,
[00:28:44] 遠遠的來看,
[00:28:45] 其實我們知道真正的最佳解在這裡啦,
[00:28:48] OK,
[00:28:49] 好,
[00:28:50] 那你說,
[00:28:51] 不對啊老師,
[00:28:52] 那我對不對,
[00:28:53] 我一看,
[00:28:54] 我就知道最佳解在這裡,
[00:28:55] 我幹嘛要用什麼local search,
[00:28:56] 原因就是,
[00:28:57] 當你實際的解一個真正的問題的時候,
[00:29:00] 你根本就沒有上帝視角,
[00:29:02] 你根本就不知道,
[00:29:03] 你整個objective function value的curve,
[00:29:06] 這個曲線,
[00:29:07] 或這個復長的曲面長什麼樣子,
[00:29:09] 你根本就不知道,
[00:29:11] 好,
[00:29:12] 所以你就從這個local search這裡開始來做,
[00:29:16] 好,
[00:29:17] 那這個我們就不再贅述啦,
[00:29:20] 所以它有可能會卡在local maximum,
[00:29:24] 那所以呢,
[00:29:26] 你可以為這個所謂的hear climbing演算法,
[00:29:29] 做一點變形啊,
[00:29:31] 有沒有可能我盡可能的減少它,
[00:29:34] 卡在local maximum,
[00:29:36] 的狀態的次數呢,
[00:29:39] 所以後來就有一些變形,
[00:29:41] 比如說stochastic hear climbing,
[00:29:44] 它的意思就是說,
[00:29:45] 我今天我看一下我周圍的鄰居,
[00:29:48] 剛剛最原始的版本就是,
[00:29:50] 我用我最好的鄰居來取代掉我,
[00:29:52] OK,
[00:29:53] 好,
[00:29:54] 那我有沒有可能,
[00:29:56] 我根本,
[00:29:57] 比如說我周圍有十個鄰居,
[00:29:59] 都表現得比我來得好,
[00:30:00] 我是隨機的從這十個表現比我好的鄰居裡面,
[00:30:04] 挑一個來取代掉我,
[00:30:06] 我不是永遠都挑最好的那一個,
[00:30:09] 也就是說你不要走那個貪婪的,
[00:30:13] 最貪婪的路線,
[00:30:15] 因為說不定你取到一個,
[00:30:17] 你選擇一個表現第三好的那個鄰居,
[00:30:21] 他說不定他看到的東西,
[00:30:23] 他看到的視野,
[00:30:24] 比起你在現階段你挑最好的那個鄰居,
[00:30:27] 看到的是更好的風景,
[00:30:30] 那所以你如果選擇第三好的那一個,
[00:30:33] 再往外去找,
[00:30:34] 說不定他會找到更好的,
[00:30:36] 而且不知道也不保證,
[00:30:39] 所以我這裡並沒有保證說,
[00:30:42] 這個Stochastic Hill Climbing,
[00:30:44] 表現的一定會比基礎的Hill Climbing來得好,
[00:30:47] 不見得,
[00:30:48] 要看問題而定,
[00:30:51] 那也有另外一種變形,
[00:30:53] 就是First Choice,
[00:30:55] 就是我找到的鄰居裡面,
[00:30:57] 我第一個找到比我表現來得好的那個鄰居,
[00:31:02] 我就用他來取代掉我,
[00:31:04] 我不用把方圓,
[00:31:05] 5公尺內的那100個鄰居全部都掃完一次,
[00:31:09] 我只要找到第一個表現比我好的,
[00:31:11] 我就走過去了,
[00:31:13] 這叫First Choice,
[00:31:15] 那再來就是說,
[00:31:16] 你不管是Stochastic,
[00:31:17] First Choice,
[00:31:18] 或一般的,
[00:31:19] 你都有可能會卡在,
[00:31:21] 都還是有可能卡在Local Max,
[00:31:24] 那原因,
[00:31:27] 除了演算法本身的侷限之外,
[00:31:29] 還跟你一開始,
[00:31:31] 你是落在這個崎嶇不平的,
[00:31:34] 這整個山脈的哪個地方有關,
[00:31:38] 所以有另外一個就是說,
[00:31:40] 那我可不可以做很多次的Hill Climbing,
[00:31:43] 每次出發的地點,
[00:31:45] 隨機的不一樣,
[00:31:49] 那這個叫做Random Restart的Hill Climbing,
[00:31:53] 那這是我們上次講的最後的內容,
[00:31:58] 那再進一步一點,
[00:32:00] 現在演算法叫做Semantic Unnealing,
[00:32:03] Unnealing這個字就是退夥,
[00:32:07] Semantic Unnealing就是模擬退夥,
[00:32:10] 這什麼意思呢,
[00:32:11] 在一些,
[00:32:13] 比如說我們看一些古裝劇,
[00:32:17] 舊的,
[00:32:18] 或者是電影,
[00:32:20] 以前古時候的人,
[00:32:27] 不是會在那邊打鐵嗎,
[00:32:29] 比如說他要鑄造出一把劍,
[00:32:32] 有沒有,
[00:32:33] 那他就會把那個鐵燒熱之後呢,
[00:32:36] 在那邊打,
[00:32:37] 然後塑形,
[00:32:38] 原因是什麼,
[00:32:39] 原因是你燒熱之後呢,
[00:32:41] 他的這個,
[00:32:42] 這個,
[00:32:44] 這個裡面的這個分子啊,
[00:32:46] 就會比較鬆動,
[00:32:47] OK,
[00:32:48] 那你有機會透過外力去塑造他的形狀,
[00:32:52] OK,
[00:32:53] 然後呢,
[00:32:54] 等你塑造差不多這個形狀之後呢,
[00:32:56] 然後是不是又給他降溫,
[00:32:57] 讓他有冷熱冷熱的這個變動,
[00:33:00] 所以我們知道說,
[00:33:01] 當溫度高的時候,
[00:33:03] 分子之間比較容易變動,
[00:33:05] 比較容易塑形,
[00:33:07] 溫度低的時候,
[00:33:08] 他的整個結構就固定了,
[00:33:11] 好,
[00:33:12] 那Simulated Aligning呢,
[00:33:13] 就是有一點想要模仿,
[00:33:17] 這樣子的一個程序,
[00:33:19] 好,
[00:33:20] 他什麼概念呢,
[00:33:21] 他其實跟Heal Academy非常的像,
[00:33:23] 我們看一下這個修道口,
[00:33:25] 好,
[00:33:26] 呃,
[00:33:27] 今天一樣,
[00:33:28] 我隨機從某一個Solution出發,
[00:33:32] 那我去看一下週圍的鄰居,
[00:33:34] 好,
[00:33:35] 所以我現在的Objective Function Value的詞,
[00:33:37] 叫做Current.Value,
[00:33:39] 就是我現在這一組解,
[00:33:40] 好,
[00:33:41] 我的目標函數的詞,
[00:33:44] 叫Current.Value,
[00:33:45] 我的鄰居,
[00:33:46] 某一個鄰居,
[00:33:48] 某一個鄰居,
[00:33:49] 比如說我看到的第一個鄰居,
[00:33:51] Next.Value,
[00:33:53] 他的Objective Function Value的詞是這樣,
[00:33:56] 我把鄰居的函數值減掉,
[00:33:59] 我的函數值,
[00:34:00] 叫做Delta1,
[00:34:02] OK,
[00:34:03] 可以吧,
[00:34:04] 好,
[00:34:05] 如果Delta1大於0,
[00:34:06] 什麼意思,
[00:34:07] 就是鄰居表現得比我好嘛,
[00:34:10] 如果鄰居表現得比我好,
[00:34:12] 那我就用這個鄰居Next,
[00:34:14] 來取代掉我,
[00:34:17] 這樣可以嗎,
[00:34:19] 對目前為止,
[00:34:20] 完全跟剛剛的那個First Choice的Hear Climbing,
[00:34:24] 一模一樣,
[00:34:25] 如果鄰居表現得比我好,
[00:34:27] 我就用他來取代掉我,
[00:34:29] 好,
[00:34:30] 再來,
[00:34:31] 那如果鄰居表現得比我不好呢,
[00:34:33] 也就是說當Delta1等於0,
[00:34:36] 或小於等於0的時候,
[00:34:38] 當Delta1小於等於0的時候,
[00:34:40] 我依舊有一定的機率,
[00:34:43] 用鄰居來取代掉我,
[00:34:46] 也就是說在Seminating and Nearing的,
[00:34:49] 這個演算法裡面,
[00:34:51] 我有可能用一個比較爛的解答,
[00:34:56] 來取代掉,
[00:34:57] 目前這個比較好的解答,
[00:35:00] 它的原因就在於,
[00:35:02] 說不定,
[00:35:03] 我退一步海闊天空嘛,
[00:35:06] 我先用一個暫時稍微爛一點的,
[00:35:09] 的解答,
[00:35:12] 來取代掉我,
[00:35:13] 我走過去之後,
[00:35:14] 說不定那邊的視野更好,
[00:35:18] 這樣懂我意思嗎?
[00:35:20] 這有點像是,
[00:35:21] 以後大家畢業,
[00:35:22] 一開始出去找工作,
[00:35:24] 你是不是永遠都要,
[00:35:26] 你的第一份工作是不是都一定要,
[00:35:29] 去給你薪水最高的那個工作,
[00:35:32] 不見得,
[00:35:33] 說不定你是選擇,
[00:35:35] 第二或第三高的某一個工作,
[00:35:38] 說不定那個地方,
[00:35:40] 雖然是一個小公司,
[00:35:41] 但是未來發展的潛力可能更高,
[00:35:44] 或怎麼樣,
[00:35:45] 所以這裡的概念就是說,
[00:35:47] 我會有一定的一個機率,
[00:35:49] 去接受一個比較爛的鄰居,
[00:35:52] 來取代掉我,
[00:35:53] 那現在的重點就在於說,
[00:35:55] 那這個機率怎麼設定?
[00:35:57] 這個機率怎麼設定?
[00:35:58] 我們可以看一下,
[00:35:59] 這個機率叫設定成,
[00:36:01] Exponential Delta E over T,
[00:36:04] 它是一個指數,
[00:36:06] 然後呢,
[00:36:07] Delta E over T,
[00:36:08] 首先我們知道,
[00:36:09] 會走到這一行,
[00:36:10] 一定代表Delta E是什麼?
[00:36:12] 是負的,對不對?
[00:36:14] 所以這其實是一個,
[00:36:16] Exponential的一個負的指數次法,
[00:36:20] 代表它是什麼?
[00:36:22] Exponential,
[00:36:24] 它其實是,
[00:36:26] 你知道Exponential,
[00:36:28] 比如說Exponential負二,
[00:36:30] 其實就是什麼?
[00:36:31] Exponential二次方分之一的意思吧,
[00:36:34] 好,
[00:36:35] 那我們來看一下,
[00:36:37] Delta E,
[00:36:38] 如果負的越多,
[00:36:40] 代表這個鄰居表現得比我爛,
[00:36:47] 而且爛很多,
[00:36:48] 那它的Delta E就會負很多,
[00:36:51] 對不對?
[00:36:52] 如果Delta E負很多,
[00:36:54] 這整個值算出來就,
[00:36:57] 怎麼樣?
[00:36:58] 比較大還是比較小?
[00:36:59] 就比較小,
[00:37:03] 這整個值,
[00:37:04] 因為是,
[00:37:05] 比如說Exponential負二次方,
[00:37:07] 跟Exponential負零點五次方,
[00:37:09] 哪一個數字比較小?
[00:37:11] Exponential負二次方,
[00:37:13] 數字比較小,
[00:37:15] 這樣聽懂嗎?
[00:37:19] 可以吧,
[00:37:20] Exponential可以吧,
[00:37:21] 指數為理嘛,
[00:37:22] 所以今天翻一層白話的意思是,
[00:37:25] 如果鄰居比我爛很多,
[00:37:30] 我用它來取代掉,
[00:37:32] 我的機率就很低,
[00:37:35] 就這個意思,
[00:37:37] 相較之下,
[00:37:38] 如果Delta E,
[00:37:40] 只是負一點點,
[00:37:42] 比如說負0.001,
[00:37:43] 這樣子,
[00:37:44] 代表什麼?
[00:37:45] 代表這個鄰居,
[00:37:46] 雖然表現得比我差,
[00:37:48] 但是其實只差一點點,
[00:37:50] 好,所以呢,
[00:37:51] 這裡的機率就是Exponential,
[00:37:53] 負0.001,
[00:37:56] 除上大T,
[00:37:58] 那相較之下,
[00:37:59] 這個就是一個比較大的機率,
[00:38:01] 當然我們都知道,
[00:38:02] 機率一定都在Delta E之間嘛,
[00:38:05] 所以我們這是相對的,
[00:38:06] 相較之下,
[00:38:08] 如果一個,
[00:38:09] 跟我比起來,
[00:38:10] 沒有那麼差的鄰居,
[00:38:12] 我就有比較高的機率,
[00:38:14] 會用它來取代掉我,
[00:38:22] 表現得比我好,
[00:38:23] 那沒什麼好說的,
[00:38:24] 那就是剛剛上面第一條路,
[00:38:26] 我一定會用那個比較好的鄰居,
[00:38:29] 來取代掉我,
[00:38:30] OK,好,
[00:38:31] 那這是第一個特性,
[00:38:33] 第二個特性是,
[00:38:35] 你除上大T,
[00:38:37] 這什麼意思?
[00:38:38] 好,這個其實才是Semitic Annuity,
[00:38:41] 最主要的一個,
[00:38:43] 的一個參數,
[00:38:45] 這個大T啊,
[00:38:46] 指的就是溫度,
[00:38:48] 在一般來講呢,
[00:38:49] 它會,
[00:38:51] 這個溫度呢,
[00:38:53] 會隨著時間,
[00:38:54] 一開始的溫度是高的,
[00:38:56] 後來呢,
[00:38:57] 就慢慢慢慢降溫,
[00:38:59] 所以這個大T的指會越來越小,
[00:39:02] 好,那你想一下喔,
[00:39:04] 在Delta E不變的情況之下,
[00:39:07] T如果大,
[00:39:09] 這是你指,
[00:39:10] Delta E不變的情況之下,
[00:39:14] T如果越大,
[00:39:15] 我整個指數的數字就越小,
[00:39:20] 好,
[00:39:23] 越小,
[00:39:24] 數字的部分就越小,
[00:39:25] 但是不要忘記喔,
[00:39:26] 這個指數,
[00:39:27] 是負的,
[00:39:29] 那個數字,
[00:39:31] 所以說呢,
[00:39:32] 如果你這個指數的數字越小,
[00:39:35] Exponential負越小,
[00:39:38] 就代表,
[00:39:39] 這個機率算起來就越大,
[00:39:42] 的意思,
[00:39:43] 可以嗎?
[00:39:44] 這簡單的數學,
[00:39:45] 好,如果你聽起來有點吃力,
[00:39:48] 你稍微看一下Exponential的定義,
[00:39:50] 好,
[00:39:51] 或者指數的定義,
[00:39:52] 好,
[00:39:53] 所以這句話翻成白話什麼意思?
[00:39:55] 這整個演算法一開始在跑的時候,
[00:39:58] 溫度比較高,
[00:40:01] 所以呢,
[00:40:02] 這一開始,
[00:40:03] 我會比較傾向於,
[00:40:05] 用比較爛的鄰居來取代掉我,
[00:40:10] 我比較願意,
[00:40:11] 用比較高的機率,
[00:40:13] 用比較爛的鄰居來取代掉我,
[00:40:16] 當演算法一開始跑的時候,
[00:40:19] 那你看啊,
[00:40:20] 這個是一個Fall Loop嘛,
[00:40:21] T的,
[00:40:22] 從1到無限大,
[00:40:23] 對不對?
[00:40:24] 好,
[00:40:25] 隨著你的T,
[00:40:26] 隨著你的時間一直往下走走走,
[00:40:28] 當你這個演算法已經跑了100個Iteration,
[00:40:32] 或者1000個Iteration,
[00:40:33] 隨著Iteration數量增加,
[00:40:35] 我的溫度就會急劇的下降,
[00:40:39] 當大T這個值,
[00:40:41] 越來越小的時候,
[00:40:45] Delta1除上T,
[00:40:48] 就越大,
[00:40:50] 也就是說Exponential,
[00:40:51] 負的越大次方,
[00:40:54] 那機率,
[00:40:55] 就是什麼?
[00:40:56] 越小,
[00:40:57] 可以嗎?
[00:41:00] 好,
[00:41:01] 所以翻譯成白話的意思就是說,
[00:41:03] 隨著你的這個演算法,
[00:41:04] 跑了很多很多次的Iteration之後呢,
[00:41:07] 我就越來越不願意,
[00:41:10] 用比較爛的鄰居來取代掉我的意思,
[00:41:14] 這個就是Seminatic的年齡,
[00:41:16] 啊你如果覺得這個很難記,
[00:41:22] 你就想,
[00:41:23] 這個跟我們的人生是一樣的嘛,
[00:41:25] 對不對?
[00:41:26] 在座的年輕的同學們,
[00:41:28] 你們現在還年輕,
[00:41:30] 不要怕失敗,
[00:41:31] 對不對?
[00:41:32] 你們應該要勇於冒險,
[00:41:34] 所以呢,
[00:41:35] 你們應該有越高的機率,
[00:41:39] 願意去接受一個,
[00:41:41] 越Risky,
[00:41:43] 越有冒險性的一個選擇,
[00:41:48] 投資理財也一樣嘛,
[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] 對不對,
## 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 一次),檢查後集中修改。