# 章節包:人工智慧導論(AI)W3(9/24)第 05 章「牛頓法與線性規劃」 影片 1:40:36–2:04:58,YouTube ID S1km7opW6rw。Notion 章節頁 https://app.notion.com/p/3e6fc631b03081f79e51ec7d5af80d42(頁 ID 3e6fc631b03081f79e51ec7d5af80d42),頁面標題「05 牛頓法與線性規劃(1:40–2:04)」。 ## 1. 第一行(直接照抄,不要改) [人工智慧導論](https://app.notion.com/p/3e6fc631b0308131b213f0a3d93fe91d) › [W3(9/24)](https://app.notion.com/p/3e6fc631b0308137bbd8e73f5c6f1b62) › 05|影片 [1:40:36–2:04:58](https://www.youtube.com/watch?v=S1km7opW6rw&t=6036s)|投影片 Ch4 p.21–26|上一章 [04 連續空間的梯度上升(1:21–1:40)](https://app.notion.com/p/3e6fc631b030812a99d4eb793b437690)|下一章 [06 部分觀察與線上搜尋(2:16–2:29)](https://app.notion.com/p/3e6fc631b0308161a1a1c05842cdd2c7) ## 2. 各段標題(照順序;每段一個 ## 標題,直接照抄連結) - `## [1:40:36](https://www.youtube.com/watch?v=S1km7opW6rw&t=6036s) 梯度的幾何意義` 老師講什麼:老師拿自己最佳化課的投影片,用碗狀曲面和等高線(level set)說明:梯度垂直於等高線,是上升最快的方向,反方向就是下降最快的方向。 - `## [1:44:19](https://www.youtube.com/watch?v=S1km7opW6rw&t=6259s) 牛頓法:切線法` 老師講什麼:知道方向後要決定走多遠。牛頓法在目前這點畫切線,切線和 x 軸的交點就是下一個位置,通常更新兩三次就很接近真正的根。 - `## [1:47:11](https://www.youtube.com/watch?v=S1km7opW6rw&t=6431s) 牛頓法拿來找極值` 老師講什麼:找極值就是找 ∇f(x) = 0,所以把牛頓法的 g 換成 ∇f,g′ 就變成二次微分,也就是 Hessian 矩陣;矩陣的除法變成乘反矩陣。吃力的話要複習以前的數學。 - `## [1:50:14](https://www.youtube.com/watch?v=S1km7opW6rw&t=6614s) 連續空間一樣會卡住` 老師講什麼:連續空間也會卡在 local max、ridge、plateau,可以搭配 random restart 或模擬退火。實務上 α 常根據經驗設成固定值,它就是深度學習裡的 learning rate。 - `## [1:51:55](https://www.youtube.com/watch?v=S1km7opW6rw&t=6715s) 限制最佳化與線性規劃` 老師講什麼:Constrained optimization:變數必須符合限制(例如座標不能是負的)。Linear programming 的目標和限制都是線性,是 convex optimization 的特例;標準形式是在 Ax = b、x ≥ 0 下最小化 cᵀx。 - `## [1:56:12](https://www.youtube.com/watch?v=S1km7opW6rw&t=6972s) 例子:製造商排產` 老師講什麼:四種產品、三種資源(人力、原料 A、原料 B),在資源上限內決定各生產幾份,讓利潤最大。LP 在二戰期間快速發展,後來廣泛用在經濟學和作業研究;怎麼求解本課不講。 - `## [2:00:30](https://www.youtube.com/watch?v=S1km7opW6rw&t=7230s) 課堂問答:先大步後小步` 老師講什麼:同學問重新計算時會不會一直被拉回原本的解。老師說一開始 α 大、後期縮小,模擬退火的 T 也隨時間變,只有特殊設計的問題才會來回震盪;深度學習的 learning rate 排程也是「先冒險、後保守」。 ## 3. 老師強調/會考/不考的地方(原句已驗證;寫進筆記時 ASR 錯字要改正) - (1:43:49) [強調] 「所以大家只需要記得一件事情就是說你在這個function裡面的某一組體你去算他的t度」 → 梯度的方向就是讓函數值上升最快的方向,反方向下降最快(逐字稿的「某一組體」=某一組解,「t度」=梯度) - (2:00:18) [不考] 「我們在這門課裡面呢我們就不再講怎麼求解」 → 線性規劃怎麼求解本課不講,要去修最佳化導論(原話是「不再講」,沒有明說不考) ## 4. 這章摘要與重要度 用等高線解釋梯度方向,用切線法講牛頓法與 Hessian,再介紹限制最佳化與線性規劃;最後是課堂問答。(一般) ## 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.21 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p021.png - Ch4 p.22 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p022.png - Ch4 p.23 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p023.png - Ch4 p.25 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p025.png - Ch4 p.26 → C:\D槽\TAICA課程\_work\notes-v2\ai-w3\img\brief_Ch4_p026.png --- Ch4 p.21 --- Introduction 21 • The gradient of at , denoted by , is orthogonal to the tangent vector to an arbitrary smooth curve passing through on the level set • The direction of maximum rate of increase of a real-valued differentiable function at a point is orthogonal to the level set of the function through that point. • The gradient acts in such a direction that for a given small displacement, the function increases more in the direction of the gradient than in any other direction. --- Ch4 p.22 --- Newton’s Method 22 • Newton’s method for solving equations of the form is also referred to as Newton’s method of tangents. • If we draw a tangent to at the given point , then the tangent line intersects the x-axis at the point , which we expect to be closer to the root of . • Note that the slope of at is --- Ch4 p.23 --- • To find a maximum or minimum of f, we need to find x such that the gradient is zero (i.e., ∇f (x) = 0). Thus, g(x) in Newton’s formula becomes ∇f (x), and the update equation can be written in matrix–vector form as where Hf(x) is the Hessian matrix of second derivatives, whose elements Hij are given by . • Local search methods suffer from local maxima, ridges, and plateaux in continuous state spaces just as much as in discrete spaces. Random restarts and simulated annealing can be used and are often helpful. Local Search in Continuous Spaces 23 --- Ch4 p.24 --- • A constrained optimization problem is constrained if solutions must satisfy some hard constraints on the values of the variables. • The best-known category is that of linear programming problems, in which constraints must be linear inequalities forming a convex set and the objective function is also linear. • Linear programming is probably the most widely studied and broadly useful class of optimization problems. It is a special case of the more general problem of convex optimization, which allows the constraint region to be any convex region and the objective to be any function that is convex within the constraint region. Local Search in Continuous Spaces 24 --- Ch4 p.25 --- Simple Examples of Linear Programs 25 • Formally, a linear program is an optimization problem of the form where . The vector inequality means that each component of is nonnegative. • Several variations of this problem are possible. For example, we can maximize, or the constraints may be in the form of inequalities, such as or . In fact, these variations can all be rewritten into the standard form shown above. --- Ch4 p.26 --- Example 26 • A manufacturer produces four different products: there are three inputs to this production process: labor in person-weeks, kilograms of raw material A, and boxes of raw material B. Each product has different input requirements. In determining each week’s production schedule, the manufacturer cannot use more than the available amounts of labor and the two raw materials. The relevant information is presented in this table. Every production decision must satisfy the restrictions on the availability of inputs. These constraints can be written using the data in this table. ## 7. 逐字稿(1:40:36 前後各多 1 分鐘,原始行) [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] 能夠讓我找到 [01:41:38] 最低的 [01:41:40] 這一個點呢 [01:41:42] 好那其實假設我隨機 [01:41:44] 挑選了某一個 [01:41:46] x1等於這麼多 [01:41:48] x2等於這麼多 [01:41:50] 那大概就對應到這個位置吧 [01:41:52] 那我可以去它的objective function value [01:41:54] 大概在這裡 [01:41:56] 好 [01:41:58] 那相當於 [01:42:01] 我現在站在這個碗的這個山腰上 [01:42:03] 對不對我在山腰上 [01:42:05] 那 [01:42:07] 跟我這個位置 [01:42:09] 同樣高度的 [01:42:11] 這一圈 [01:42:13] 假設我們把它投影下來 [01:42:15] 這個叫做level set [01:42:17] level set你把它想像的就是 [01:42:19] 等高線的意思 [01:42:21] 在我們地理課裡面的等高線 [01:42:23] 那我們現在 [01:42:25] 假設這個向量叫做x0 [01:42:27] 如果我們 [01:42:29] 去算 [01:42:31] f 的t度 [01:42:33] 代表的就是這一圈 [01:42:40] 跟這一圈等高線的 [01:42:42] 切線垂直的 [01:42:44] 這個方向 [01:42:46] 的意思 [01:42:48] 好那其實 [01:42:50] 也就是你想一下這個需要一點點想像力 [01:42:52] 你想一下 [01:42:54] 這個切線這個方向相當於是說 [01:42:56] 你現在只能站在這個地方 [01:42:59] 你要往 [01:43:01] 切線的這個方向走 [01:43:03] 你的海拔高度會增加最快 [01:43:05] 你想一下你現在人站在這個 [01:43:07] 你如果往 [01:43:09] 那個方向走 [01:43:11] 你是不是就很快的沿著這個 [01:43:13] 碗的這個高度 [01:43:15] 一路就爬升 [01:43:17] 你只要走一個單位 [01:43:19] 他就一路就爬升到這個地方 [01:43:21] 或者相反假設你今天 [01:43:23] 你是要去minimize你的高度 [01:43:25] 那你就是走切線的反方向 [01:43:27] 就是往切線的 [01:43:29] 反方向來走 [01:43:31] 所以你就是往這個方向走 [01:43:33] 其實你沒有辦法 [01:43:35] 直接往因為你不會說往這個方向走 [01:43:37] 掉下去啦其實往這個方向走的意思 [01:43:39] 其實就是你會快速的 [01:43:41] 走到這個碗的 [01:43:43] 底端的意思 [01:43:45] 這樣可以嗎這需要一點想像力 [01:43:47] 稍微抽象一點 [01:43:49] 好所以大家 [01:43:51] 只需要記得一件事情就是說 [01:43:53] 你在這個function裡面的 [01:43:55] 某一組體你去算他的t度 [01:43:57] t度代表的意義是 [01:43:59] 你能夠 [01:44:01] 快能夠用 [01:44:03] 最快速讓你提升 [01:44:05] 海拔高度的那個 [01:44:07] 方向就是他的t度 [01:44:09] 反之 [01:44:11] t度的反方向就是能夠讓 [01:44:13] 你快速降低 [01:44:15] 海拔高度的那個方向 [01:44:17] ok [01:44:19] 好那現在 [01:44:21] 我們現在假設 [01:44:23] 人在這裡我們已經 [01:44:25] 假設我們現在是要去走到碗的 [01:44:27] 最底處好了我們知道 [01:44:29] 他是這個方向可是要走多遠 [01:44:31] 要走多遠 [01:44:33] 這時候 [01:44:35] 牛頓法出來了 [01:44:37] 牛頓法大家以前高中 [01:44:39] 或者大學有幾分一定看過 [01:44:41] 這張圖 [01:44:43] 今天假設我這個曲線長這樣 [01:44:45] 就是說我這個碗啦 [01:44:47] 我現在站在碗的這個地方 [01:44:49] 我這個碗的這個高度 [01:44:51] 一路曲線是這樣走 [01:44:53] 所謂的牛頓法大家還記得嗎牛頓法是怎麼做的 [01:44:55] 就是什麼 [01:44:57] 我現在這個點 [01:44:59] 我對應的 [01:45:01] x在這裡 [01:45:03] 我的高度在這裡 [01:45:05] 我站在山腰上的這裡 [01:45:07] 我在這裡我做一個切線 [01:45:09] 有沒有我做一個切線 [01:45:11] 碰到 [01:45:14] x這個地方 [01:45:16] 這個點x [01:45:18] k加1就是我要 [01:45:20] update過去的位置 [01:45:22] 我本來從sk出發 [01:45:24] 我要update到哪一個 [01:45:26] sk加1就是我這樣切線過去 [01:45:28] 到這裡 [01:45:30] 這個sk加1就是我要update的地方 [01:45:32] 好 [01:45:34] 我在從它的高度這個點 [01:45:36] 我在做一個切線 [01:45:38] 我就下一次update [01:45:40] 我就跑到這個地方 [01:45:42] 如果你還記得的話 [01:45:44] 高中老師數學老師就告訴你說 [01:45:46] 牛頓法真的厲害 [01:45:48] 你只要update兩三次之後 [01:45:50] 你幾乎就 [01:45:52] 非常非常接近真正的 [01:45:54] 標準答案 [01:45:56] x star這個點 [01:45:58] 你看幾乎我update到第三次 [01:46:00] 我幾乎就已經達到 [01:46:02] 真正數學上的 [01:46:04] 最接近的點 [01:46:06] 你以前一定算過這個 [01:46:08] 牛頓法非常厲害 [01:46:10] 好那現在回到這裡 [01:46:12] 我們現在人在這裡 [01:46:14] 我要走到我的最低點 [01:46:16] 我要走多遠呢 [01:46:18] 我就是用牛頓法 [01:46:20] 那牛頓法怎麼推的 [01:46:22] 你看一下 [01:46:24] gprom sk [01:46:26] 所謂的gprom sk是什麼意思 [01:46:28] 就是代表這個切線 [01:46:30] 的 [01:46:34] 斜率 [01:46:36] 對吧 [01:46:38] 數學課 [01:46:40] 斜率那斜率怎麼算 [01:46:42] 就是你高度的變化 [01:46:44] 除上 [01:46:46] 寬度的變化 [01:46:48] 你高度就是g of sk [01:46:50] 寬度的變化 [01:46:52] 就是sk減掉sk加1 [01:46:54] 對不對 [01:46:56] 這裡整理一下 [01:46:58] 牛頓法的update公式寫成 [01:47:00] sk加1等於sk減掉 [01:47:02] g of sk除上gprom sk [01:47:04] 這就是牛頓法的公式 [01:47:11] 所以我們可以利用牛頓法 [01:47:13] 決定說 [01:47:16] 我們怎麼去 [01:47:18] 達到最好的 [01:47:21] 那個α [01:47:23] 好回過頭來 [01:47:25] 我們回到剛剛一開始的這個式子 [01:47:32] 這裡的t度包括三角形的 [01:47:36] f of x [01:47:38] 它扮演的角色就如同是 [01:47:40] 欸 [01:47:42] 牛頓法裡面的這個gx [01:47:44] 所以 [01:47:46] 不要忘記 [01:47:48] 倒三角fx [01:47:50] 已經是fx的一次微分了 [01:47:52] 它的角色就如同是這裡的 [01:47:54] gx [01:47:56] 所以這裡的gprom x呢 [01:47:58] 就相當於是fx的二次微分的意思 [01:48:00] 二次微分的意思 [01:48:02] 所以 [01:48:04] to find a maximum or minimum of f [01:48:06] we need to find x [01:48:08] such that the gradient is 0 [01:48:10] 為了要找到 [01:48:12] 最好的那一組結 [01:48:14] x [01:48:16] 我們其實要對f做一次微分 [01:48:18] 令它等於0 [01:48:20] 所以你看一下這個式子 [01:48:22] 所以相當於是 [01:48:24] 我們要找到適合的x [01:48:26] 使得它帶進去之後等於0 [01:48:28] 你看一下這個臉 [01:48:30] 這個 [01:48:32] 跟我們牛頓法裡面 [01:48:34] 要求的 [01:48:36] 這個臉不是長一樣嗎 [01:48:38] 所以我們要如何找到最好的 [01:48:40] x使得 [01:48:42] f的gradient等於0呢 [01:48:44] 就等於是 [01:48:46] 我們要同樣的那個x能夠使得這裡的gx等於0 [01:48:48] 所以代入牛頓法 [01:48:50] gx [01:48:52] in Newton's formula [01:48:54] becomes the gradient of fx [01:48:56] 所以說呢 [01:48:58] 原本update的那個式子 [01:49:00] 牛頓法的那個式子就變成是 [01:49:02] x等於是x減掉 [01:49:04] 這是gx [01:49:06] 然後呢 [01:49:08] 除上gprom x [01:49:10] 其實就是等於是fx的兩次微分 [01:49:12] 寫成這個樣子 [01:49:14] 它基本上 [01:49:16] 是一個hessian matrix [01:49:18] 一個 [01:49:20] 多函數 [01:49:22] 的 [01:49:24] 一個多變數的函數 [01:49:26] 你對它做二次微分之後 [01:49:28] 它會變成一個矩陣 [01:49:30] 這個矩陣叫做 [01:49:32] hessian matrix [01:49:34] 裡面的值hij [01:49:36] 這個裡面的dij這個值 [01:49:38] 其實就是f [01:49:40] 對xi做偏微分 [01:49:42] 再對xj做偏微分 [01:49:44] 的意思 [01:49:46] ok [01:49:48] 如果你聽起來有點吃力呢 [01:49:50] 你就是要稍微複習一下以前的數學 [01:49:52] 這其實沒有到那麼難 [01:49:54] 那這裡寫成是hof f [01:49:56] hof x的 [01:49:58] 什麼-1 [01:50:00] 這個是代表它其實是 [01:50:02] 除再分五的意思 [01:50:04] 但因為它是矩陣嘛 [01:50:06] 大家知道說在時數裡面我們做除法 [01:50:08] 在矩陣的運算裡面就相當於是在 [01:50:10] inverse的意思 [01:50:12] 好 [01:50:14] 總而言之呢整個update的式子是這樣 [01:50:16] 好 [01:50:18] 那local search method呢 [01:50:20] 它還是有可能會卡在local max嘛 [01:50:22] 卡在這個屋極上面 [01:50:24] 或者是平原上面 [01:50:26] 高原上面 [01:50:28] 那 [01:50:30] 所以即使你看起來用這種 [01:50:32] 比較高級的 [01:50:34] 厲害的continuous的這種 [01:50:36] update的方式呢 [01:50:38] 你還是有可能卡在local min [01:50:40] 所以說呢 [01:50:42] 你可以搭配random restart的策略 [01:50:44] 或者是simulated annealing的策略 [01:50:46] 來解決 [01:50:48] 這個local max嘛的問題 [01:50:52] 好 [01:50:54] 這樣可以齁 [01:50:56] 那其實這個整個的update的 [01:50:58] 這個整個原理呢 [01:51:00] 後來其實它一直都沿用在 [01:51:02] 包含你現在一直 [01:51:04] 有些人可能都已經在寫 [01:51:06] 這個 [01:51:08] deep learning的程式對不對 [01:51:10] 好 [01:51:12] 那我們剛剛雖然講說 [01:51:14] 這個alpha [01:51:16] 沒有alpha要怎麼決定 [01:51:18] 我們後來就變成是 [01:51:20] 我們常常是設定一個固定的 [01:51:22] 一個值啦 [01:51:24] 根據經驗設定一個固定的值 [01:51:26] 大概你跑夠多次 [01:51:28] 也不會差太多啦 [01:51:30] 那你如果現在已經開始有在寫 [01:51:32] 一些deep learning的 [01:51:34] 程式的話 [01:51:36] 其實這個alpha就是learning rate [01:51:38] 的意思 [01:51:40] 你設定learning rate [01:51:42] 其實就是這個意思 [01:51:44] 你根據你的gradient [01:51:46] 你找到你的方向 [01:51:48] 你要調多多元 [01:51:50] 這是learning rate的意思 [01:51:52] 是同一件事 [01:51:55] 好那各式各樣的 [01:51:57] 最佳化問題有很多嘛 [01:51:59] 有一類的問題叫做constraint optimization problem [01:52:01] 就是有一些限制的 [01:52:03] 最佳化問題 [01:52:05] 好 [01:52:07] 那它就會要求說 [01:52:09] 你這些變數一定要符合 [01:52:11] 某些規範 [01:52:13] 比如說我們剛剛講這個 [01:52:15] 羅馬尼亞的機場 [01:52:17] 這個很顯然它一定有一個規範就是說 [01:52:19] 你的S跟Y不可以是負的 [01:52:21] 這是肯定的 [01:52:23] 你地圖上怎麼會有什麼負的座標 [01:52:25] 那 [01:52:27] 有一類的constraint optimization [01:52:29] problem呢 [01:52:31] 首先constraint optimization problem [01:52:33] 這本身就是一門課 [01:52:35] 也可以是一本書 [01:52:37] 的內容 [01:52:39] 在constraint optimization [01:52:41] 這個大範圍的情況之下 [01:52:43] 有一種類別的問題 [01:52:45] 叫做linear programming的問題 [01:52:47] again [01:52:49] linear programming [01:52:51] 也可以是一本書 [01:52:53] 也可以是一本課 [01:52:55] 那它只是constraint optimization problem [01:52:57] 或者是convex optimization problem的 [01:52:59] 一個字集合而已 [01:53:01] 那他說呢 [01:53:03] 這種linear programming的問題呢 [01:53:05] 在實際的生活應用上 [01:53:07] 其實還蠻常出現的 [01:53:09] 它呢 [01:53:11] 它也許是最著名 [01:53:13] 而且被廣為研究的一類的問題 [01:53:15] 那 [01:53:17] 它是屬於convex optimization problem的一個special case [01:53:23] 什麼叫做convex optimization呢 [01:53:25] 就是說它的constraint [01:53:27] 它的objective function [01:53:29] 可以寫 [01:53:31] 寫成一個convex function [01:53:33] convex function就是 [01:53:35] convex function [01:53:37] 我不想要講 [01:53:39] 它的數學定義 [01:53:41] 總之你可以自己去翻 [01:53:43] 來我們舉個例子 [01:53:45] 這也是 [01:53:47] 從我另外一門課的同學拿過來的 [01:53:49] 一個linear programming的問題呢 [01:53:51] 通常會長這個樣子 [01:53:53] 比如說 [01:53:55] 我要去minimize [01:53:57] c transpose x [01:53:59] 這是什麼東西 [01:54:01] 這其實沒有什麼了不起 [01:54:03] 學過線性代數的都知道 [01:54:05] 線性代數裡面我們喜歡 [01:54:07] 把內積兩項量的內積寫成矩陣相乘的形式 [01:54:09] 就長這樣 [01:54:11] 所以這其實就是 [01:54:13] c這個項量跟s這個項量在做內積 [01:54:15] 比如說 [01:54:17] c1s1加上c2s2加上c3s3 [01:54:19] c這個項量就是 [01:54:21] c1c2c3 [01:54:23] s這個項量就是 [01:54:25] s1s2s3對不對 [01:54:27] 所以c1s1加上c2s2 [01:54:29] 加上c3s3 [01:54:31] 我可以寫成這個樣子 [01:54:35] 我要去minimize這個值 [01:54:39] 但是呢 [01:54:41] 我要這個條件 [01:54:43] 線性代數整本課本整個學期 [01:54:45] 不是都在解這個問題嗎 [01:54:47] a s等於b [01:54:49] 它是一個線性系統 [01:54:51] 就是說我的這些 [01:54:53] x應該要符合什麼特性 [01:54:55] 比如說都要大於0 [01:54:57] 然後 [01:54:59] s1加s2加s3 [01:55:01] 要等於7 [01:55:03] 2s1加上3s2 [01:55:05] 加上5s3 [01:55:07] 要等於5 [01:55:09] 合在一起就變成一個線性系統 [01:55:11] a s等於b [01:55:13] 就是一個 [01:55:15] 你在objective function [01:55:18] 是一個linear equation [01:55:20] 是一個線性方程式 [01:55:22] 你的constraint也是一個線性方程式 [01:55:24] 你的constraint也是一個線性方程式 [01:55:26] 你的constraint呢 [01:55:28] 你的constraint呢 [01:55:30] 你可以是a s等於b [01:55:32] 當然也有可能是a s大於b [01:55:34] 或者是a s等於b [01:55:36] 不過在最佳化的 [01:55:38] 不過在最佳化的 [01:55:40] 整個演算法的推導過程當中 [01:55:42] 整個演算法的推導過程當中 [01:55:44] 都會把這個a s等於b [01:55:46] 都會把這個a s等於b [01:55:48] 都改寫成這種形式 [01:55:50] 都改寫成這種形式 [01:55:52] 有一套SOP [01:55:54] 有一套制式的做法 [01:55:56] 你可以把問題改寫一下 [01:55:58] 那我們就是專門針對這一類的 [01:56:00] 問題 [01:56:02] 有一些演算法來求解 [01:56:04] 當然這是另外一門課的內容 [01:56:06] 國道精深的 [01:56:08] 最佳化導論的內容 [01:56:10] 最佳化導論的內容 [01:56:12] 那麼舉一個例子讓大家有感覺 [01:56:14] 這其實很實際的例子 [01:56:16] 這一類的 [01:56:18] linear programming的研究 [01:56:20] 大約是在二次大戰期間 [01:56:22] 大約是在二次大戰期間 [01:56:24] 快速的發展 [01:56:28] 所以後來它廣泛的用在 [01:56:30] 像經濟學 [01:56:33] 作業研究的這個領域裡面 [01:56:35] 作業研究的這個領域裡面 [01:56:37] 為什麼在戰爭期間 [01:56:39] 它發展速度那麼快呢 [01:56:41] 我們看一下這個例子 [01:56:43] 它說現在有一個製造商 [01:56:45] 它會製造四種產品 [01:56:47] 一二三四這四種產品 [01:56:51] 那為了要製作出這四種產品 [01:56:53] 那為了要製作出這四種產品 [01:56:55] 我可能需要一些人工 [01:56:57] 我要A這個原料 [01:56:59] 我要B這個原料 [01:57:01] 我要A這個原料 [01:57:03] 所以這四種產品 [01:57:05] 都得要有這三種資源 [01:57:07] 都得要有這三種資源 [01:57:09] 才能夠完成 [01:57:11] 那生產每一種產品 [01:57:13] 它對於人力 [01:57:15] 以及材料的需求不一樣 [01:57:17] 那為了要決定 [01:57:20] 我的 [01:57:22] 我的製造的這個安排 [01:57:24] 我到底要製造 [01:57:26] 一號產品要製造多少份 [01:57:28] 二號產品要多少份 [01:57:30] 三號產品要多少份 [01:57:32] 我基本上這個就是一個最佳化問題 [01:57:34] 我基本上這個就是一個最佳化問題 [01:57:36] 這個製造商呢 [01:57:38] 不能夠用超出你現有資源 [01:57:40] 不能夠用超出你現有資源 [01:57:42] 來製造這些產品 [01:57:44] 所以底下這個例子就是說 [01:57:46] 我要製造一號產品呢 [01:57:48] 我要製造一號產品呢 [01:57:50] 一種人 州 [01:57:52] 一個 One May Week [01:57:54] 然後6公斤的A跟三合的B [01:57:56] 然後呢 [01:57:58] 二號產品呢 [01:58:00] 我要兩個人 州 [01:58:02] 5公斤的A [01:58:04] 4合的B [01:58:06] 所以我到底 [01:58:10] 1234這四種產品 [01:58:12] 我要生產幾份 [01:58:14] 那我們先假設 [01:58:16] 一號產品生產S1份 [01:58:18] 二號產品生產S2份 [01:58:20] 一匙類推 [01:58:22] 我只有20個人中 [01:58:24] 我只有100公斤的A材料 [01:58:26] 我只有75盒的B材料 [01:58:29] 所以我的限制就是 [01:58:33] X1乘以1加上2X2 [01:58:39] 加上1乘以X3加上2乘以X4 [01:58:42] 一定要小於等於20 [01:58:44] 因為這是我所有的人力資源總和 [01:58:47] 你生產這些產品 [01:58:50] 你用的人力資源一定要小於等於20 [01:58:53] 那同樣的 [01:58:55] 6乘X1加上5乘X2加上3乘X3加上2乘X4 [01:58:59] 一定要小於等於100 [01:59:01] 然後呢 [01:59:03] 一樣 [01:59:04] 針對B這個材料 [01:59:06] 它要符合這個條件 [01:59:09] 這個是我的限制 [01:59:11] 那我想要 [01:59:12] 我可能我要做的事情可能是說 [01:59:14] 我這四個產品 [01:59:16] 1234這四個產品 [01:59:18] 它的售價 [01:59:20] 可能不一樣 [01:59:21] 假設我這個生產商 [01:59:23] 我的目標是 [01:59:24] 我這一週 [01:59:26] 我這個整個生產的結果 [01:59:29] 我希望能夠獲得最高的利潤 [01:59:34] 所以我要去Maximize [01:59:36] 假設 [01:59:38] 一號產品 [01:59:39] 它每一個賣100塊 [01:59:41] 100乘X1 [01:59:43] 二號產品每一個賣50塊 [01:59:45] 加上50乘以X2 [01:59:47] 一直類推 [01:59:48] 我要去Maximize [01:59:50] 我所得 [01:59:51] 我得到的利潤 [01:59:53] 但是呢 [01:59:54] 我要怎麼樣 [01:59:55] 我要去符合這個條件 [01:59:58] 所以你想一下 [01:59:59] 我剛剛的這個問題 [02:00:00] 是不是就是這種形式的問題 [02:00:03] 這就是一個Linear Programming的問題 [02:00:07] 好 [02:00:08] 那 [02:00:09] 這種問題怎麼求解呢 [02:00:11] 很抱歉 [02:00:12] 這個是一整個學期的課 [02:00:15] 有興趣的話請去修最佳化導論 [02:00:18] 我們在這門課裡面呢 [02:00:20] 我們就不再講 [02:00:21] 怎麼求解 [02:00:22] 這裡 [02:00:23] 這是一個博大計深的學問 [02:00:24] 有一大堆的最佳化的這個演算法在裡面 [02:00:30] 好 [02:00:32] 來 [02:00:33] 那 [02:00:34] 這是一個小段落 [02:00:35] 我們來看一下 [02:00:37] 有沒有問題 [02:00:39] 重新計算時我們理論上會偏向找 [02:00:46] 和原先結果差距較遠的解 [02:00:50] 那有沒有可能在計算上 [02:00:52] 會一直引導我們回取原先結果 [02:00:55] 例如一個寬度很高的丘陵 [02:00:58] 在遠處有一個很窄的山峰 [02:01:04] 你說在重新計算時 [02:01:12] 我們理論上會找 [02:01:14] 離原先結果比較遠的解 [02:01:17] 好 [02:01:18] 這句話呢 [02:01:19] 對 [02:01:21] 但是也錯 [02:01:23] 這其實在大部分的演算法設計裡面 [02:01:26] 這一樣又跟人生的大道理一樣 [02:01:28] 你在演算法一開始跑的時候 [02:01:31] 我們的確傾向於 [02:01:32] 一次就走遠一點 [02:01:36] 這也牽涉到我們剛剛前面講的 [02:01:39] 在continuous space裡面 [02:01:41] 我們在update我們原本的解X的時候 [02:01:44] 我們那個α [02:01:45] 其實有一個策略是 [02:01:47] 當我演算法一開始開跑的時候 [02:01:49] 我的α要大一點 [02:01:52] 然後呢 [02:01:53] 等到你iteration跑很多很多次了 [02:01:55] 我傾向於就把α再縮減一點 [02:01:58] 然後再慢慢縮減一點 [02:01:59] 所以你講這句話 [02:02:01] 對 [02:02:02] 也不對 [02:02:03] 對是指說 [02:02:04] 在一開始跑的時候呢 [02:02:05] 我們的確傾向於 [02:02:07] 可以大步走 [02:02:10] 一開始找遠一點的 [02:02:12] 可是等到你跑了一萬個iteration [02:02:15] 或多少個iteration之後呢 [02:02:17] 你要慢慢的 [02:02:19] 不要那麼的冒險 [02:02:21] 你的α就小一點 [02:02:23] 你就會找跟你周圍鄰居相對近的一點解 [02:02:27] 因為當你已經跑了一萬個iteration之後 [02:02:30] 你應該有足夠的自信 [02:02:31] 你已經找到一個還蠻不錯的解了 [02:02:34] 這樣瞭解嗎 [02:02:39] 那你說有沒有可能在計算上 [02:02:41] 引導我們去找原先 [02:02:43] 一直去找原先的解 [02:02:45] 我覺得不能排除有這種情況 [02:02:49] 不排除有這種情況 [02:02:51] 你如果在某種 [02:02:52] 剛好某種很特殊的case裡面 [02:02:56] 它就在兩邊在那邊震盪 [02:02:58] 是有可能的 [02:03:00] 所以我們剛剛在講說 [02:03:02] 我們那個α [02:03:04] 事實上是可以隨著時間變動的 [02:03:06] 我們的seminary annealing的那個t [02:03:09] 也是隨著時間變動的 [02:03:11] 那一旦有變動 [02:03:13] 你從這邊走過去 [02:03:15] 你下一次不見得再走回來了 [02:03:17] 因為你的有一些參數已經變了 [02:03:20] 這樣瞭解嗎 [02:03:21] 所以附帶一提 [02:03:22] 如果現在現場或者是線上的同學 [02:03:25] 有些人你已經在跑deep learning的程式了 [02:03:29] 你就會發現 [02:03:30] 你的learning rate [02:03:32] 很多人會建議說 [02:03:35] 你在前面100個aerop的時候 [02:03:37] 你learning rate是多少 [02:03:38] 你過了100個aerop之後 [02:03:40] 每過50個aerop [02:03:41] learning rate就乘上0點多 [02:03:44] 是不是這個意思 [02:03:46] 就是這樣的意思 [02:03:48] 一開始冒險一點 [02:03:50] 後來就越來越保守 [02:03:52] 所以這個最佳化 [02:03:57] 跟我們人生的哲藝是一樣的 [02:03:59] 我講過很多次 [02:04:04] 在座的有沒有什麼問題 [02:04:09] 這只有兩根 [02:04:10] 這是local沒什麼根 [02:04:12] 這是最大的沒什麼 [02:04:13] 然後這個都沒什麼 [02:04:14] 山丘就是 [02:04:16] 所以只要在那個範圍內 [02:04:18] 都一定會遇到阿宗 [02:04:20] 然後一個很窄的山峰 [02:04:22] 所以它只有在那個階段 [02:04:24] 往上跳就會找到那個最大的 [02:04:26] 它意思應該是一個比較奇怪的地方 [02:04:29] 所以我剛剛講了 [02:04:31] 如果在一個這麼特別的狀態之下 [02:04:36] 有可能就是會發生 [02:04:38] 剛剛同學所講的 [02:04:40] 這麼奇怪的事情 [02:04:42] 不過那個 [02:04:43] 我覺得那個都是要 [02:04:44] 特殊設計的問題才會這樣子 [02:04:47] 我們一般在做真正實體世界的 [02:04:51] 最佳化的時候 [02:04:53] 是很少遇到這樣子的東西的 [02:04:55] OK [02:04:58] 那我們講到這邊再休息一下 [02:05:00] 再來 [02:05:01] 範圍內呢 ## 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 一次),檢查後集中修改。