最佳化

最佳化(粵拼:zeoi3 gaai1 faa3;英文:optimization),全名數學最佳化,係應用數學嘅一個分支,研究點樣喺特定情況下將一個特定嘅函數嘅輸出或者變數有咁大得咁大(最大化)或者有咁細得咁細(最小化)。

概念

  • 損失函數(loss function),又有叫成本函數(cost function):指一個能夠「攞一件事件或者若干個變數嘅數值、並且計出代表呢件事件會造成幾大損失或者成本」嘅函數,喺最佳化上指一個表示「如果模型參數係噉嘅數值,做預測嗰陣嘅誤差會係咁多咁多」等資訊嘅函數。
  • 正則化(regularization):指喺一個要做最佳化嘅函數裏面加多個數值,令到個最佳化過程進行得順利啲,唔會出現過適等嘅問題。

局部搜尋

爬山演算法

爬山演算法係一種常用嚟做最佳化嘅演算法:想像一個統計模型,有兩個參數,最佳化 最佳化 ,而家用某個指標 最佳化  量度個統計模型嘅表現,而呢個指標係數值愈細代表個模型愈理想嘅,例如係個模型嘅犯錯率(睇下圖)。家陣 最佳化 最佳化  經已有咗數值,所以個模型喺上圖入面有個座標位置,而個爬山演算法可以喺每一步噉做:

  1. 加減 最佳化 最佳化  嘅數值嚟改變個模型,即係個模型有 4(最佳化 )個前進方向;
  2. 計四個數值 最佳化 ,當中 最佳化  係移去第 最佳化  個方向會得到嘅 最佳化  值;
  3. 按「揀 最佳化  值最小化嘅方向」呢條法則嚟改變 最佳化 最佳化  嘅數值;
  4. 重複,直至結束條件達到為止。

如果順利,個模型嘅 最佳化  值會慢慢變到愈嚟愈細(接近理想數值),不過原則上,呢個最後嘅答案值唔保證會係理想數值-可能喺睇到嘅空間外有更低嘅可能 最佳化  值,但呢個演算法唔會能夠保證將個模型帶到去嗰個數值-所以係一個近似演算法。多個兩個參數嘅情況可以用同一道理想像。

最佳化 
爬山演算法嘅圖解;X 軸同 Y 軸係個模型嗰兩個參數,Z 軸(上下)表示一個量度模型表現嘅指標;演算法嘅目標係要將 最佳化  最小化。

梯度下降法

梯度下降法係另一種常用嚟做最佳化嘅演算法。梯度下降法同爬山演算法相似,分別在於梯度下降法用嘅係斜率:喺每一步當中,一個梯度下降法啲參數移去邊一面唔係最決於邊一面嘅 最佳化  數值低啲,而係取決於邊一面嘅 最佳化  值嘅斜率高啲,諗住如果某一面嘅 最佳化  數值跌得快,移去過一面就會最快噉令 最佳化  數值下降。梯度上升法(gradient ascent)係指用同樣嘅手法搵最大值。以下係用 Python 寫嘅一段梯度下降法碼:

next_x = 6  # We start the search at x=6 gamma = 0.01  # Step size multiplier precision = 0.00001  # Desired precision of result max_iters = 10000  # Maximum number of iterations  # Derivative function def df(x):     return 4 * x ** 3 - 9 * x ** 2   for _ in range(max_iters):     current_x = next_x     next_x = current_x - gamma * df(current_x) # 睇吓個斜率係點。      step = next_x - current_x     if abs(step) <= precision:         break  print("Minimum at ", next_x)  # The output for the above will be something like # "Minimum at 2.2499646074278457" 

隨機梯度下降法(SGD):指個梯度下降法演算法唔係靠睇嗮成個數據庫嘅數據計出現時嗰點周圍嘅斜率(梯度),而係靠由數據庫嗰度抽一個樣本出嚟,用個樣本嘅數據計梯度;呢種做法喺個數據庫好大嗰陣可以用嚟減低部電腦所受嘅負荷。

p
Error rate
ideal value
local minimum
X 軸表示個模型嘅參數,而 Y 軸表示量度個模型「有幾好」嘅指標 最佳化 ;一個理想嘅學習演算法會將啲參數變成 ideal value(指標數值最低化)嘅數值。

模擬退火

模擬退火:爬山演算法嘅一個變種;喺每步當中,最簡單嘅模擬退火演算法會考慮周圍嘅可能 最佳化  值嘅 最佳化  值,foreach 呢啲 最佳化  值,將佢個 最佳化 ±s,當中 s 係一個隨機俾嘅數值(溫度值),然後個演算法會再按邊個 最佳化  嘅(±s 後)最佳化  數值比較接近理想數值,決定參數要變成邊個可能 最佳化  值-噉做嘅話,個演算法唔會咁易企喺一個地區性最細或者地區性最大嗰度唔郁,但因為 最佳化  比較近理想數值嘅 最佳化  會比較大機會被選中,所以經過好多步之後,個演算法最後得出嗰個 最佳化  值好有可能會係 最佳化  值理想嘅。一段用模擬退火嘅虛擬碼如下:

 Input:    ProblemSize,    iteration, // 重複幾多次    max_temp, // 最大溫度值  Output:    S_best // 最佳嘅參數值    Initialize:    S_current = CreateInitialSolution(ProblemSize); // 將現時參數值設做隨機數值。    S_best = S_current; // 暫時當最佳參數值係現時數值。    for (i = 1 to iteration)    S_i = CreateNeighborSolution(S_current); // 搵 S_current 周圍嘅參數值。    current_temp = CalculateTemperature(i, max_temp); //「現時溫度」由 i 同 max_temp 話事。    if Cost(S_i) < Cost(S_current) // 如果 S_i 嘅指標值靚過 S_current 嘅...      S_current = S_i;      if Cost(S_i) < Cost(S_best) // 如果 S_i 嘅指標值靚過 S_best 嘅...        S_best = S_i;      end    else if (Exp[((Cost(S_current) - Cost(S_i)) / current_temp]) > rand()    // 當中 rand() 係一個隨機產生嘅數值;隨住 current_temp 變細,呢個 elseif 發生嘅機會率會愈嚟愈細。      S_current = S_i;  end    return S_best; // 最後就將 S_best 俾出嚟做輸出。 
最佳化 
模擬退火嘅一個示範;Y 軸係需要最大化嗰個指標,X 軸係參數,隨住溫度值慢慢下降,參數值漸趨穩定。幅圖有好多地區性最大,所以用單純嘅爬山演算法好可能會搞唔掂。

睇埋

參攷文獻

出面網頁

  • "Decision Tree for Optimization Software". Links to optimization source codes
  • "Global optimization".
  • "EE364a: Convex Optimization I". Course from Stanford University.
  • Varoquaux, Gaël. "Mathematical Optimization: Finding Minima of Functions".

Tags:

最佳化 概念最佳化 局部搜尋最佳化 睇埋最佳化 參攷文獻最佳化 出面網頁最佳化OutputWikipedia:粵文拼音函數應用數學英文變數 (科研)

🔥 Trending searches on Wiki 粵語:

馮素波手淫香港特別行政區行政長官盧頌恩麥紫莉隆裕太后東方日報鹹濕檐蛇哈馬斯筲箕灣豆豉日耳曼人謝霆鋒毒舌大狀香港學生自殺問題鄭伊健AVPU龜背竹零 (語言學)粵語流行曲史顏夢雨數學羋月傳許冠文陳慧嫻艇仔粥C蓮花死屍死時四十四大內密探零零發哪吒米露迪李潤祺黃鶴樓秦楚瀅圓周率屙尿第16屆中華民國總統選舉芍藥瓢蟲生態系統劉朝健最後晚餐大戲陳志遠 (商人)俄烏戰爭bw8vt中國共產黨美景宮愛是不保留開心王菲長洲太平清醮Suet E性交中國國民黨陳卓賢地盤科文陳海寧廣東城市一覽容祖兒李克勤黃潔琪唐吉訶德基斯坦奴朗拿度香港再出發大聯盟劉宇寧方祺媛聖家大殿E (數學常數)乾卦亞氏保加症明斯克協議立法院好好制作🡆 More