經典優化演算法

2022-10-10 23:24:20 字數 973 閱讀 6663

假設求解\(\min l(\theta)\),\(l(\cdot)\)光滑

假設優化問題為\(\begin \delta_t = \mathop_ l(\theta_t+\delta) \end\),其中\(\theta_t\)是引數

一階法由於該近似式只有在\(\delta\)較小時才比較準確,因此在求解\(\delta_t\)時一般加上\(l_2\)正則項

\[\begin \delta_t & = \mathop_ \left( l(\theta_t) + \nabla l(\theta_t)^t\delta + \frac||\delta||^2_2 \right) \\ & = -\alpha \nabla l(\theta_t) \end​

\]一階法的迭代公式為

\[\theta_ = \theta_t - \alpha \nabla l(\theta_t)

\]其中\(\alpha\)為學習率

也稱為梯度下降法,梯度就是目標函式的一階資訊

二階法其中\(\nabla^2 l(\theta_t)\)是函式在\(\theta_t\)處的hessian矩陣。通過求解近似優化問題

\[\begin \delta_t & = \mathop_ \left( l(\theta_t) + \nabla l(\theta_t)^t\delta + \frac\delta^t \nabla ^2 l(\theta^t)\delta \right) \\ & = -\nabla^2 l(\theta_t)^\nabla l(\theta_t) \end

\]二階法的迭代公式為

\(\theta_ = \theta_t - \nabla^2 l(\theta)^ \nabla l(\theta_t)\)

也稱為牛頓法,hessian矩陣就是目標函式的二階資訊

收斂速度快於一階法,但在高維情況下,hessian矩陣求逆計算複雜度很大

而且當目標函式非凸時,可能收斂到鞍點

改進:擬牛頓法,如bfgs演算法

經典演算法之KMP演算法及其優化

kmp演算法的具體分析見 author s email wardseptember gmail.com date 2017.12.18 kmp演算法 include include using namespace std define maxsize 50 void getnext char sub...

經典排序演算法 氣泡排序演算法及其優化(穩定)

氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,我想你是不會再無聊地把他們倆交換一下的 如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,所以氣泡排...

白話經典演算法系列一 冒泡演算法的實現 優化

設陣列長度為n。1 比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個資料交換。2 這樣對陣列的第0個資料到n 1個資料進行一次遍歷後,最大的乙個資料就 沉 到陣列第n 1個位置。3 n n 1,如果n不為0就重複前面二步,否則排序完成。氣泡排序 公升序排列 target排序陣列 n個數需...