优化
問題: 受多種變量影響, 希望成本函數最小
?
1? 隨機搜索
每次隨機為每種變量設值, 計算成本函數; 取其中成本最小的賦值作為結果
缺點: 效果不太好
?
2? 爬山法
以一個隨機解開始, 然后在該隨機解臨近的解中選擇一個最優解; 迭代直至不能找到更更優的
缺點: 容易陷入局部最優解
-----: 可以隨機選定不同的點進行爬山,得到更優解
?
3 模擬退火
初始階段會接受更優的解或者以較大的概率接受較差的解; 隨著退火過程的進行, 后續接受的解將只會是更優的。
?
指定溫度T, 退火系數cool, step是變量步長
vec是初始隨機選定的解, vecb是在vec的基礎上隨機選擇一個變量隨機變化[-step, step]
計算vec, vecb的cost分別為 ea, eb
如果eb < ea,將使用更優解; 或者以pow(math.e, -(eb-ea)/T)的概率接受差解
降低溫度T = T * cool? 直至T?<= 0.1 時結束
?
開始階段T大, pow值將接近于1, 將有較大的意愿接受較差的解; 后續這種意愿越來越小, 將會趨向于更優解。
缺點: 仍然可能不是最優解
-----: 隨機選定不同的初始點、不同的step來進行模擬退火
?
4 遺傳算法
a) 隨機生成一組解, 這一過程稱之為種群
b) 從種群中選擇(多個)最優解, 加入到新的種群中, 這一過程稱之為精英選拔法; 新種群中余下的部分是由修改最優解后形成的全新解組成的。 有兩種修改方法:變異(mutation) , 交叉(crossover)/配對(breeding)
b.1) 變異:通常做法是對一個既有解進行微小的、簡單的、隨機的改變。 如,隨機選擇一個解得一個變量進行隨機的遞增或遞減
b.2) 交叉:選取最優解中的兩個解,然后將它們按某種方式進行結合。 實現交叉的一種簡單方式是: 選擇兩個解,各取前一半與后一半合并成一個新解
c) 通過b步驟構造得到新種群; 新種群與舊種群通常大小相同; 回到步驟b重復迭代, 直到達到指定的迭代次數或經過數代后解都沒有得到改善,過程就over
其中, mutprob是變異的概率(變異或者交叉); elite舊種群中有多少最優解可以傳入下一代; maxiter最多迭代多少代
總結
- 上一篇: em 流程示例解释
- 下一篇: NMF 非负矩阵分解