# 章節包:人工智慧導論(AI)W3(9/24)第 04 章「連續空間的梯度上升」 影片 1:21:32–1:40:36,YouTube ID S1km7opW6rw。Notion 章節頁 https://app.notion.com/p/3e6fc631b030812a99d4eb793b437690(頁 ID 3e6fc631b030812a99d4eb793b437690),頁面標題「04 連續空間的梯度上升(1:21–1:40)」。 ## 1. 第一行(直接照抄,不要改) [人工智慧導論](https://app.notion.com/p/3e6fc631b0308131b213f0a3d93fe91d) › [W3(9/24)](https://app.notion.com/p/3e6fc631b0308137bbd8e73f5c6f1b62) › 04|影片 [1:21:32–1:40:36](https://www.youtube.com/watch?v=S1km7opW6rw&t=4892s)|投影片 Ch4 p.16–20|上一章 [03 局部束搜尋與基因演算法(0:42–1:10)](https://app.notion.com/p/3e6fc631b0308105a674c6e43a405835)|下一章 [05 牛頓法與線性規劃(1:40–2:04)](https://app.notion.com/p/3e6fc631b03081f79e51ec7d5af80d42) ## 2. 各段標題(照順序;每段一個 ## 標題,直接照抄連結) - `## [1:21:32](https://www.youtube.com/watch?v=S1km7opW6rw&t=4892s) 從離散到連續:蓋三座機場` 老師講什麼:前面的八皇后都是離散問題,連續空間其實有更有效率的做法。例子:在羅馬尼亞蓋三座新機場,解是 (x1,y1,x2,y2,x3,y3) 這個六維向量。 - `## [1:24:13](https://www.youtube.com/watch?v=S1km7opW6rw&t=5053s) 目標函數:距離平方和` 老師講什麼:每個城市到離它最近機場的距離平方,全部加起來,要讓總和最小;Ci 是離第 i 座機場最近的城市集合。 - `## [1:25:38](https://www.youtube.com/watch?v=S1km7opW6rw&t=5138s) 最大化改寫成最小化` 老師講什麼:最佳化問題通常改寫成最小化 cost 或 loss,因為最大化容易讓數值爆掉,而 loss 最小是 0,不會 overflow。 - `## [1:27:01](https://www.youtube.com/watch?v=S1km7opW6rw&t=5221s) 離散化:12 個鄰居` 老師講什麼:為了避開連續空間的無限多種變化,每次只動一座機場的 x 或 y,加或減 δ,所以每個狀態只有 12 個鄰居,就能套用前面的局部搜尋。 - `## [1:29:02](https://www.youtube.com/watch?v=S1km7opW6rw&t=5342s) 微分等於零求極值` 老師講什麼:數學上可以直接解 ∇f = 0:對六個變數各自偏微分、令它等於 0。但很多問題沒有 closed form 解。老師說深度學習幾百萬個參數也是用接下來這套做法;為什麼微分等於 0 有效,這門課不講。 - `## [1:33:09](https://www.youtube.com/watch?v=S1km7opW6rw&t=5589s) 最陡上升的更新式` 老師講什麼:沒有 closed form 時,用 x ← x + α∇f 一步一步更新(steepest-ascent hill climbing)。梯度就是往哪個方向走海拔上升最多,負責決定方向。 - `## [1:36:45](https://www.youtube.com/watch?v=S1km7opW6rw&t=5805s) 步長 α 太大太小都不好` 老師講什麼:α 決定一次走多遠:太小要走很多步,太大會衝過山頂、高度反而下降。 - `## [1:38:48](https://www.youtube.com/watch?v=S1km7opW6rw&t=5928s) Line search 與牛頓法` 老師講什麼:找最好的 α 本身又是一個最佳化問題,可以用 line search。牛頓法原本用來求 g(x)=0 的根,更新式是 x ← x − g(x)/g′(x);老師提醒忘了就回去翻以前的數學書。 ## 3. 老師強調/會考/不考的地方(原句已驗證;寫進筆記時 ASR 錯字要改正) - (1:25:38) [強調] 「那請大家記得,當我們在找所謂的最佳解」 → 最佳化問題習慣改寫成最小化 cost/loss,因為最大化容易數值爆掉(1:26:44 接著說:即使概念上是最大化,也會改寫成最小化 cost) - (1:30:17) [不考] 「我們在這門課裡面不會告訴你為什麼」 → 為什麼「一次微分令它等於 0」就能找到極值,本課不講,要去修最佳化導論(原話是「不會告訴你」,沒有明說不考) ## 4. 這章摘要與重要度 用蓋三座機場的例子,把局部搜尋搬到連續空間:離散化、梯度、步長 α 與 line search。(核心) ## 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.16 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p016.png - Ch4 p.17 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p017.png - Ch4 p.19 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p019.png - Ch4 p.20 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p020.png --- Ch4 p.16 --- • Suppose we want to place three new airports anywhere in Romania, such that the sum of squared distances from each city on the map to its nearest airport is minimized. • The state space is then defined by the coordinates of the airports: (x1,y1), (x2,y2), and (x3,y3). This is a six-dimensional space; we also say that states are defined by six variables. Local Search in Continuous Spaces 16 --- Ch4 p.17 --- • Let Ci be the set of cities whose closest airport (in the current state) is airport i. The objective function is • To avoid continuous problems: discretize the neighborhood of each state. We can move only one airport at a time in either the x or y direction by a fixed amount ±δ. With 6 variables, this gives 12 possible successors for each state. We can then apply any of the local search algorithms described previously. Local Search in Continuous Spaces 17 --- Ch4 p.18 --- • Many methods attempt to use the gradient of the landscape to find a maximum. The gradient of the objective function is a vector ∇f that gives the magnitude and direction of the steepest slope. • In some cases, we can find a maximum by solving the equation ∇f = 0. In many cases, however, this equation cannot be solved in closed form. Local Search in Continuous Spaces 18 --- Ch4 p.19 --- • For example, with three airports, the expression for the gradient depends on what cities are closest to each airport in the current state. This means we can compute the gradient locally; for example, • Given a locally correct expression for the gradient, we can perform steepest- ascent hill climbing by updating the current state according to the formula where α is a small constant often called the step size. Local Search in Continuous Spaces 19 --- Ch4 p.20 --- • If α is too small, too many steps are needed; if α is too large, the search could overshoot the maximum. The technique of line search tries to overcome this dilemma by extending the current gradient direction until f starts to decrease again. • For many problems, the most effective algorithm is the Newton–Raphson method. This is a general technique for finding roots of functions—that is, solving equations of the form g(x)=0. It works by computing a new estimate for the root x according to Newton’s formula Local Search in Continuous Spaces 20 ## 7. 逐字稿(1:21:32 前後各多 1 分鐘,原始行) [01:21:32] 在講的大部分的情況 [01:21:34] 我們都是假設它是discrete的case [01:21:38] 就是說比如說八皇后問題 [01:21:40] 以皇后的位置一定就是在固定的某個位置嘛 [01:21:44] 不會是連續的一個什麼東西啊 [01:21:47] 那呃當然你如果是hear climbing的話 [01:21:51] 你可能是在一個連續的solution space裡面 [01:21:54] 去找到最好的一個解 [01:21:56] 好 [01:21:57] 那其實如果專門針對continuous space裡面的問題的話 [01:22:03] 呃我們有其他的辦法來去做local search [01:22:07] 好 [01:22:08] 做到所謂的更有效率的local search [01:22:10] 所以你應該可以感覺的到 [01:22:12] 剛剛在呃剛剛前面講的hear climbing也好 [01:22:16] 然後seminating而已而已 [01:22:19] GA也好 [01:22:20] 他都他都有一種 [01:22:22] 好像試試看隨機性的感覺 [01:22:25] 有沒有啊 [01:22:26] 我看一下 [01:22:27] 欸隔壁的鄰居比我好 [01:22:28] 我就用他來取代掉我 [01:22:30] 啊我再去看 [01:22:31] 啊然後就是有一種隨機性 [01:22:34] 但在某一些問題呢 [01:22:36] 其實我們是可以有更有效率的解法的啊 [01:22:39] 所以我們底下來看一個例子 [01:22:41] 角色呢 [01:22:43] 之前有給大家看過一個例子 [01:22:46] 就是一個羅馬尼亞的地圖嘛 [01:22:48] 對不對 [01:22:49] 什麼要從A走到B這個 [01:22:50] 好 [01:22:51] 假設呢 [01:22:52] 我現在想要在羅馬尼亞蓋三座新的機場 [01:22:56] OK [01:22:57] 那要蓋在哪裡呢 [01:22:58] 在這個地圖裡面你要蓋在哪裡呢 [01:23:00] 呃我們希望達到的目標是 [01:23:02] the sum of square distance from each city on the map to its nearest airport is minimized [01:23:08] 我們希望 [01:23:11] 每一個城市到它最近的那個機場 [01:23:15] 的距離 [01:23:17] 接下來要越想越好 [01:23:20] 這是我們的目標 [01:23:21] 好等於說 [01:23:22] 這個各個都市都有一個最接近的機場 [01:23:26] 那它都選在一個很不錯的一個位置 [01:23:29] 讓大家很方便可以到那個機場去 [01:23:32] 好 [01:23:33] 那所以呢 [01:23:34] 我們要決定的就是這三座機場的XY座標 [01:23:38] X1 Y1 X2 Y2跟X3 Y3 [01:23:41] 好也就是我們要決定這六個變數的值的意思 [01:23:46] 好 [01:23:47] 這六個變數的值呢 [01:23:49] 它的一個solution存在一個六維的空間當中 [01:23:54] 對不對 [01:23:55] 因為我們就是要決定X1 Y1 X2 Y2 X3 Y3 [01:23:58] 我們決定這六個值 [01:24:00] 我們要決定一個六維的向量 [01:24:02] 代表這三座機場的位置 [01:24:05] 這樣 [01:24:06] 所以我們是在一個六維的空間當中 [01:24:08] 來找最佳解的一個問題 [01:24:10] 好 [01:24:13] 那首先先寫出我們的objective function value [01:24:16] 因為我們的目標就是說 [01:24:18] 比例而言 [01:24:19] 每一個都市到距離它最近的那個airport [01:24:23] 的距離總和加起來會越來越好 [01:24:25] 所以我們可以寫下這個式子 [01:24:27] 我們可以列出一個function [01:24:29] 代入不同的X跟Y [01:24:32] 那我這個function的詞呢 [01:24:34] 就定義成summationI等於1到3 [01:24:36] 因為三座機場 [01:24:38] 然後呢summationC屬於C1 [01:24:40] 這什麼意思 [01:24:41] 就是說 [01:24:42] 某一個程式C [01:24:44] 它是在Di座機場的中間 [01:24:47] Di座機場的最近的 [01:24:50] 應該說它是屬於離Di座機場最近的 [01:24:53] 那些都市的集合之一 [01:24:56] 叫做小C [01:24:57] 所以xi-sc就是指 [01:25:00] C這座都市離它最近的那個機場的 [01:25:03] X座標的差距的平方 [01:25:05] 加上Yi-Yc的平方 [01:25:08] 這樣 [01:25:10] 那所以說離Ci Di座機場最近的 [01:25:14] 可能有比如說五個都市 [01:25:16] 這五個都市 [01:25:17] 距離Di座機場的距離平方 [01:25:19] 加上 [01:25:21] 有可能有三個都市 [01:25:23] 距離第二座機場最接近 [01:25:25] 那它們的 [01:25:26] 跟機場的距離的平方加起來 [01:25:28] 以此類推 [01:25:29] 整個全部加起來 [01:25:31] 我希望能夠minimize [01:25:34] 這個objective function代入 [01:25:36] 好我們要最小化 [01:25:38] 那請大家記得 [01:25:39] 當我們在找所謂的最佳解 [01:25:41] 我們在找 [01:25:42] 我們在做最佳化的時候 [01:25:45] 剛剛我們前面舉的例子 [01:25:47] 都是說我們要最大化 [01:25:49] 那個objective function value [01:25:51] 這OK沒問題 [01:25:53] 那我們有的時候呢 [01:25:54] 我們是要去最小化 [01:25:56] 那個objective function value [01:25:57] 也OK [01:25:59] 只不過普遍來講 [01:26:01] 在整體而言各式各樣不同的 [01:26:03] 最佳化的這個工作裡面 [01:26:07] 我們傾向於 [01:26:09] 把問題都轉成 [01:26:11] 我們要去最小化這個cause [01:26:14] 我們稱呼它叫做cause [01:26:16] 或者叫做loss [01:26:18] 因為在數學上 [01:26:19] 你要去最大化一個東西 [01:26:21] 容易造成那個數字會爆掉 [01:26:24] 那如果是最小化那個loss [01:26:26] 因為loss會 [01:26:28] 一般來講 [01:26:29] 一般正常的心魔教 [01:26:31] loss最小等於0 [01:26:32] 所以我們去minimize這個loss [01:26:34] 或minimize這個cost [01:26:36] 我們一路就會 [01:26:38] 最小化到接近0 [01:26:40] 它不會產生出 [01:26:41] 那個數值的overflow [01:26:43] 所以 [01:26:44] 即使在 [01:26:45] 概念上 [01:26:46] 我們要去最大化 [01:26:47] 某一個objective function value [01:26:48] 我們也會把數學改寫一下 [01:26:50] 變成是 [01:26:51] 我們要去最小化那個cost [01:26:53] 這樣子 [01:26:55] 好 [01:26:56] 那所以我們現在的objective function value [01:26:58] 是長這樣嗎 [01:26:59] 或者說我們的cause長這樣嗎 [01:27:01] 那為了避免呢 [01:27:03] 這個如果說 [01:27:05] 你今天你要去決定 [01:27:06] 這個機場的位置 [01:27:08] XI YI的話 [01:27:10] 呃 [01:27:12] 你可以把這個 [01:27:14] 它在這個連續空間當中 [01:27:16] 你XI跟YI有幾種變化 [01:27:18] 有無限多種變化 [01:27:20] 對不對 [01:27:21] 因為它是在一個連續的空間當中 [01:27:23] 如果你為了要避開 [01:27:25] 這種continuous [01:27:26] 無限多種變化的情況 [01:27:27] 你可以把這個問題呢 [01:27:29] discritize [01:27:30] 把它離散化 [01:27:32] 這是一個妥協的方案 [01:27:34] 也就是說呢 [01:27:35] 假設 [01:27:36] 我永遠呢 [01:27:37] 當我在決定 [01:27:39] 任何一座機場的時候 [01:27:42] 我永遠 [01:27:43] 每次我在變動我的選擇的時候呢 [01:27:46] 我只選擇X或Y [01:27:48] 來進行變動 [01:27:50] 然後呢 [01:27:51] 我每次變動 [01:27:52] 要嘛是加delta [01:27:53] 要嘛是減delta [01:27:56] OK [01:27:57] 好 [01:27:58] 所以整體而言呢 [01:27:59] 我每 [01:28:01] 我隨機的 [01:28:03] 選某一個XI [01:28:05] YI [01:28:06] X1 Y1 [01:28:07] X2 Y2 [01:28:08] X3 Y3 [01:28:09] 我隨機挑出一組解之後 [01:28:12] 我要怎麼去 [01:28:14] 定義它的鄰居 [01:28:16] 它的鄰居 [01:28:17] 根據這裡的定義就是說 [01:28:18] 我每次只挑 [01:28:19] 機場的X或機場的Y來變 [01:28:22] 而且每次變 [01:28:23] 都是加delta或者是減delta [01:28:26] 所以整體而言呢 [01:28:28] 我一定只會有12個鄰居 [01:28:31] 為什麼 [01:28:32] 因為你選X或Y有兩種選擇 [01:28:35] 然後呢 [01:28:36] 你選了之後 [01:28:38] 你可以做的變動 [01:28:39] 要嘛是加delta [01:28:40] 要嘛是減delta [01:28:42] 所以就是2乘2 [01:28:44] 一組機場 [01:28:45] 一個機場有2乘2 [01:28:46] 有4個選擇 [01:28:47] 有3個機場 [01:28:48] 4乘3 [01:28:49] 所以總共12種選擇 [01:28:51] 來去 [01:28:53] 所以每一個初始的state [01:28:56] 我都只有12個鄰居 [01:28:59] 對意思 [01:29:00] 這個是離散化的情況 [01:29:02] 不過 [01:29:04] 如果你要從數學上 [01:29:06] 比較更妥善的來解這個問題呢 [01:29:09] 你其實你可以直接 [01:29:10] work on continual space [01:29:12] 你在一個連續的空間當中 [01:29:14] 你去找到 [01:29:16] 能夠使得這個function value [01:29:19] objective function value [01:29:21] 能夠有極值的地方 [01:29:24] 能夠有極值的地方 [01:29:26] 好 [01:29:27] 那這裡呢 [01:29:28] 就牽涉到微積分 [01:29:29] 大家學過微積分吧 [01:29:31] 以前呢 [01:29:32] 告訴你一個函數 [01:29:35] 要你求極值 [01:29:37] 怎麼做 [01:29:39] 口訣就是什麼 [01:29:41] 對它進行一次微分 [01:29:42] 令它等於0 [01:29:43] 然後求解 [01:29:45] 對不對 [01:29:46] 你找出來的那個 [01:29:48] variable的值 [01:29:49] 就是能夠造成 [01:29:50] 這個function [01:29:52] 有極大值或極小值 [01:29:54] 有極值的地方就可以了 [01:29:58] OK [01:29:59] 這是以前大家學微積分的時候 [01:30:01] 或者高中數學 [01:30:02] 你要求極值的時候 [01:30:04] 老師告訴你的口訣 [01:30:06] 那至於為什麼 [01:30:08] 怎麼那麼好用啊 [01:30:09] 我給它做一次 [01:30:10] 對它做一次微分 [01:30:12] 令它等於0 [01:30:13] 然後求解 [01:30:14] 為什麼 [01:30:16] 好 [01:30:17] 我們在這門課裡面 [01:30:18] 不會告訴你為什麼 [01:30:19] 因為你有興趣的話 [01:30:21] 你可以去修最佳化導論 [01:30:23] 那是一門博大精深的課 [01:30:26] 我們這裡沒辦法 [01:30:27] 跟大家講為什麼 [01:30:29] 我也開過這門課啦 [01:30:31] 另外一門 [01:30:32] 不過那已經是另外一門課了 [01:30:33] 總而言之 [01:30:34] 你還是照用 [01:30:35] 你之前學過的那個口訣 [01:30:37] 你要去找到這個function的極值 [01:30:41] 這個function是一個什麼 [01:30:42] 有六個變數 [01:30:43] 所形成的一個函數 [01:30:46] 你要找到這個函數的極值在哪裡 [01:30:49] 你要找到最好的S1應該是多少 [01:30:51] 最好的S2是多少 [01:30:52] 最好的S3是多少 [01:30:54] S2是多少 [01:30:55] S1 Y1 S2 Y2是多少 [01:30:57] 就是對它做一次微分 [01:30:59] 那因為它有六個變數啊 [01:31:00] 所以其實對它做一次微分 [01:31:02] 的意思就是 [01:31:04] 我先對S1做偏微分 [01:31:06] 再對S2 [01:31:07] 再對Y1做偏微分 [01:31:09] 再對S2偏微分 [01:31:10] 再對Y2偏微分 [01:31:11] 再對S3偏微分 [01:31:12] Y3偏微分 [01:31:13] 所以這個function的一次微分 [01:31:16] 就等於是 [01:31:18] 我個別對這六個變數 [01:31:20] 個別做偏微分的結果 [01:31:22] 利他等於零 [01:31:24] 然後你去找到 [01:31:26] 最好的那一組 [01:31:28] S1一直到Y3的那一組結 [01:31:31] 這是數學上 [01:31:34] 概念上你可以這麼做 [01:31:36] However [01:31:38] 但是 [01:31:39] 事情總是沒有那麼容易嘛 [01:31:41] 對不對 [01:31:42] 今天要是你這個function [01:31:44] 非常的複雜 [01:31:45] 你微分 [01:31:46] 你做不出來 [01:31:47] 或者你找 [01:31:48] 你整理不出一個 [01:31:49] close form solution的時候 [01:31:51] 你找到一個數學式 [01:31:53] 你代入那個數學式 [01:31:54] 直接求出最好解 [01:31:56] 最佳解的時候 [01:31:58] 你就沒有辦法用這樣子的一個來做 [01:32:00] This equation cannot be solved in close form [01:32:03] In many cases [01:32:04] 在很多的情況之下 [01:32:06] 這一個問題根本沒有 [01:32:08] close form solution [01:32:13] 那這件事情 [01:32:15] 就會跟 [01:32:17] 等一下我們要講的這個計法 [01:32:19] 其實就跟你現在在 [01:32:21] Trend Deep Learning Model的時候 [01:32:23] 用的計法是一樣的 [01:32:25] Deep Learning [01:32:27] 裡面隨隨便便就是幾百萬個參數 [01:32:29] 幾億個參數 [01:32:31] 現在我們在畫面上 [01:32:33] 看到的這個例子只有六個參數 [01:32:35] 但是在New World Network裡面 [01:32:37] 有幾百萬個 [01:32:39] 但是找到這最好的那一組 [01:32:41] 幾百萬個參數的做法 [01:32:43] 跟我們現在在這裡在講的 [01:32:45] 是一樣的做法 [01:32:47] 原則上是一樣的 [01:32:49] 那我們舉個例子 [01:32:51] 現在三座機場 [01:32:53] 假設我現在先對S1做偏微分 [01:32:55] 大家會偏微分吧 [01:32:57] 微完之後呢就長這樣 [01:32:59] OK [01:33:01] 那我怎麼去找到 [01:33:03] 最好的 [01:33:05] 這個是有close form solution的 [01:33:07] 情況之下 [01:33:09] 那如果沒有close form solution [01:33:11] 你今天你如果要去 [01:33:13] 逐步的去 [01:33:15] 你的XY的話 [01:33:17] 你可以怎麼做呢 [01:33:19] 我們可以做 [01:33:21] State Piste [01:33:23] Assent Here Climbing [01:33:25] By updating the current state according to the formula [01:33:27] 我們可以用 [01:33:29] 最陡峭的 [01:33:31] T這個Here Climbing [01:33:33] 來找 [01:33:35] 來去update我的X [01:33:37] 什麼叫做最陡峭的 [01:33:39] Here Climbing [01:33:41] 大家懂了吧對不對 [01:33:43] 我從某一個地方出發看一下週圍的鄰居 [01:33:45] 然後我去update到那個鄰居 [01:33:47] 如果今天 [01:33:49] 你找你周圍的鄰居 [01:33:51] 你永遠都是找最強的 [01:33:53] 那個鄰居 [01:33:55] 你update過去的話 [01:33:57] 在概念上你是不是就是說 [01:33:59] 從你現在原本的objective function value [01:34:01] 變成是 [01:34:03] 那個objective function value [01:34:05] 所以你objective function value的變動 [01:34:07] 是一個最陡峭的狀況 [01:34:09] 一路走上去 [01:34:11] 你用最快的速度 [01:34:13] 爬到你目前眼見所及 [01:34:15] 的高度對不對 [01:34:17] 就是這一個 [01:34:19] 就是這一個 [01:34:21] 那這個式子呢Xupdate成什麼 [01:34:23] X加上Alpha倍的 [01:34:25] 這個是function f [01:34:27] 的一次微分 [01:34:29] 其實這個就是T度的意思 [01:34:31] 在 [01:34:33] 微細本裡面 [01:34:35] 你對某一個方向做一次微分 [01:34:37] 代表的就是 [01:34:39] 你在某一個方向上面的 [01:34:41] T度的意思 [01:34:43] 這講的再更白一點 [01:34:45] 你想像成 [01:34:47] 你現在是站在一個山坡上 [01:34:49] 假設你現在是在一個 [01:34:51] 三維的空間當中 [01:34:53] 你在一個山坡上 [01:34:55] 你的海拔高度就是你的 [01:34:57] objective function value [01:34:59] 然後呢 [01:35:01] 你往右邊走 [01:35:03] 你的右左這個 [01:35:05] 維度叫做X [01:35:07] 你的前後這個維度叫做Y [01:35:09] OK [01:35:11] 那我對X做偏微分 [01:35:13] 是什麼意思 [01:35:15] 意思就是說 [01:35:17] 我要去算 [01:35:19] 我如果往右邊走 [01:35:21] 一個單位的話 [01:35:23] 我的海拔高度會怎麼變動 [01:35:25] 是會上升一公尺呢 [01:35:27] 還是下降0.5公尺呢 [01:35:29] 這個就是叫做 [01:35:31] 我在X方向做偏微分 [01:35:33] 的意義 [01:35:35] 我們也稱呼這個叫做 [01:35:37] 這個叫做T度 [01:35:39] 我們在X方向上面的T度的意思 [01:35:41] 那我也可以在Y方向上面 [01:35:43] 我做一次偏微分 [01:35:45] 物理意義就代表說 [01:35:47] 我現在站在一個山坡上 [01:35:49] 我往前走一步 [01:35:51] 我的海拔高度會變動的情況 [01:35:53] 這個就是我在Y方向上面的T度 [01:35:55] 所以 [01:35:59] 回到這個數學 [01:36:01] 你可以看到說 [01:36:03] 我這個X [01:36:05] 我用誰來取代掉它呢 [01:36:07] 就是我原本的X再加上 [01:36:09] 我去看我往 [01:36:11] 哪一個 [01:36:13] 我往X這個方向 [01:36:15] 我走一步 [01:36:17] 我能夠造成的 [01:36:19] 海拔高度的變動 [01:36:23] 不止 [01:36:25] 應該是說 [01:36:27] 我要走多遠 [01:36:29] 這個是運作在X上面 [01:36:31] 我這裡是決定方向 [01:36:33] 這是決定方向 [01:36:35] 比如說我到底是 [01:36:37] 我應該往右走 [01:36:39] 海拔高度會變高 [01:36:41] 還是我往左走 [01:36:43] 海拔高度會變高 [01:36:45] 所以這個倒三角的這個gradient FLS [01:36:47] 走多遠呢 [01:36:49] 就是這個Alpha [01:36:51] 你是走一步呢 [01:36:53] 還是走十步呢 [01:36:55] 那基本上這個Alpha [01:36:57] 就成為是Step size [01:36:59] 你要走幾步的意思 [01:37:01] 一旦你決定好你要走的方向 [01:37:03] 接下來你就看說 [01:37:05] 你要走幾步 [01:37:10] 這個Alpha你要走幾步啊 [01:37:12] 其實沒有一定要走幾步 [01:37:14] 你也不知道要走幾步 [01:37:16] 這基本上是一個參數 [01:37:18] 你要去決定的 [01:37:20] 這個Alpha太小 [01:37:22] 代表說你雖然決定好一個 [01:37:24] 能夠提升你海拔高度的方向 [01:37:26] 但是你每次都走小碎步 [01:37:28] 慢慢走 [01:37:30] 那你可能就要走很久 [01:37:32] 你還要跑到很高的地方嗎 [01:37:34] 所以如果Alpha太小 [01:37:36] 你就要走很多步 [01:37:38] 才會跑到最高的地方 [01:37:40] 那如果Alpha很大 [01:37:42] 太大了 [01:37:44] 你決定好往右邊走那個方向 [01:37:46] 你一口氣就衝兩公里 [01:37:48] 一下就衝兩公里 [01:37:50] 越過山丘 [01:37:52] 又跑到山的另外一頭 [01:37:54] 你的高度搞不好還會下降 [01:37:56] 這樣懂我意思嗎 [01:37:58] 所以過猶不及 [01:38:00] 你Alpha太小 [01:38:02] 你整個update的過程要走很多步 [01:38:04] Alpha太大 [01:38:06] 你可能就會錯失了 [01:38:08] 你真正最好該走的那個步數 [01:38:10] 這樣子 [01:38:12] OK [01:38:14] 所以呢 [01:38:16] 這裡告訴我們說 [01:38:18] 你做梯度 [01:38:20] 是決定 [01:38:22] 你要走的方向 [01:38:24] 那你要走多遠呢 [01:38:26] 你要走多遠 [01:38:28] 其實這又是另外一個 [01:38:30] 最佳化的問題 [01:38:32] 我怎麼知道我現在往右走 [01:38:34] 我到底是要走十步還是要走兩公里 [01:38:36] 說不定是我往右邊走 [01:38:38] 150公尺是最好的 [01:38:40] 我如果真的往這邊走 [01:38:42] 走右邊150公尺 [01:38:44] 我能夠造成的海拔高度提升 [01:38:46] 是最多的 [01:38:48] 這又是另外一個 [01:38:50] 最佳化的問題 [01:38:52] 那你可以用 [01:38:54] 所謂的line search的做法 [01:38:56] 來解決 [01:38:58] 來找到所謂的最佳化的 [01:39:00] 最好的Alpha [01:39:02] 那在很多的問題裡面呢 [01:39:04] 其實line search [01:39:06] 有很多種做法 [01:39:08] 那其中很有名的呢 [01:39:12] 就是牛頓法 [01:39:14] 似曾相識對不對 [01:39:16] 大家以前學過只是你忘記了嘛 [01:39:18] 牛頓法 [01:39:20] 牛頓法在幹嘛呢還記得嗎 [01:39:22] 牛頓法用來找 [01:39:24] 求一個function的root [01:39:26] 求一個function的解 [01:39:28] Finding root of function [01:39:30] that is solving equation of the form [01:39:32] g of x等於0 [01:39:34] 就是說當我們要求 [01:39:36] g of x等於0的時候 [01:39:38] 哪一個x代進去它會接近0 [01:39:40] 對不對 [01:39:42] 這是牛頓法的功用 [01:39:44] 如果你還記得的話 [01:39:46] 那沒辦法現在告訴你 [01:39:48] 或者是你可以回去翻一下你以前的數學書 [01:39:50] 牛頓法的功用 [01:39:52] 牛頓法update的功用是這樣 [01:39:54] 牛頓法的概念也是 [01:39:56] 我怎麼知道這個x [01:39:58] 哪一個x代進去 [01:40:00] 我x要代入什麼樣的值 [01:40:02] g of x等於0 [01:40:04] 其實不知道 [01:40:06] 我就亂猜 [01:40:08] 我先隨便亂猜一個x [01:40:10] 然後我再去update這個x [01:40:12] 讓它很接近 [01:40:14] 我新的x代進去之後 [01:40:16] 能夠比較 [01:40:18] g of x會比較接近0 [01:40:20] 這樣 [01:40:22] x減掉 [01:40:24] g of x除上g prime x [01:40:26] 這個prime代表的就是 [01:40:28] 我對x做 [01:40:30] 一次微分的意思 [01:40:32] 這個是牛頓法update公式 [01:40:36] 有了這個基礎之後 [01:40:38] 我們再從另外一個角度 [01:40:40] 應該說把剛剛講的 [01:40:42] 再重述一次 [01:40:44] 底下這兩頁投影片 [01:40:46] 是我之前教 [01:40:48] 最佳化的時候 [01:40:50] 的兩頁投影片 [01:40:52] 現在你就把它想像成 [01:40:54] 我呢 [01:40:56] 我的參數有s1跟x2 [01:40:58] 然後呢 [01:41:00] 我的objective function value [01:41:02] 是這個z [01:41:04] 所以你代入不同的s1跟s2 [01:41:06] 你的z的一個 [01:41:08] 變動 [01:41:10] 可能長得像是這樣的一個曲面 [01:41:12] 好像一個碗 [01:41:14] 假設我們講一個比較簡單的case [01:41:16] 事實上這個曲面 [01:41:18] 可能是高高低低 [01:41:20] 很崎嶇的一個奇怪的 [01:41:22] 曲面 [01:41:24] 好假設現在這個曲面 [01:41:26] 就是好像一個碗這個樣子 [01:41:28] 那我要找到最佳解 [01:41:30] 我要找到極值 [01:41:32] 什麼樣子的s1y1 [01:41:34] s1跟s2代進去 [01:41:36] 能夠讓我找到 ## 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 一次),檢查後集中修改。