本文主要討論在優化模型求解中用到的高階優化演算法,這些演算法基於常見的優化演算法思想,採用一些非常巧妙的技巧,而使得演算法到達更快的收斂等特點。這些高階優化演算法也只限定於特定的模型求解,下面將對其進行簡單總結。
1. surrogate方法
首先我們考慮一些簡單的優化問題mi
nx12
∥x−x
0∥22
+λ∥x
∥1,事實上我們只需要對
x 向量中的每乙個元素進行展開求解即可,它的優化解的表示式如下: x∗
=sλ(
x0)=
。取j^=
max 。則最後
x 的優化解形式如下: x∗
i=si
gn(x
0,i)
min(
vi,(
∑r=1
j^vr
−λ)/
j^)i
=1,⋯
,m下面我們繼續考慮矩陣ℓ∗
核範數正則化約束問題,該問題可以形式化為mi
na12
∥x−a
∥2f+
∥a∥∗
,這類問題的求解一般採用矩陣的svd分解,x=
usvt
;再使用surrogate策略。一般優化解的形式如下: a=
u∗s^
∗vt
其中s^ 的表示式如下: s^
=t(s
)=⎧⎩
⎨s−ϵ
s>ϵs
+ϵs<−ϵ
0oth
erwi
se2. accelerated gradient algorithm
我們考慮乙個常見的優化問題,形式化為mi
nwf(
w)+λ
ψ(w)
,函式的具體形式視情況而定。比如在機器學習領域,f(
w)一般為總體訓練樣本的損失函式,f(
w)=1
n∑nℓ
(χn,
w),χn=
為訓練樣本,而
ℓ 為具體的損失函式,比如平方損失,logistic 損失,hinge損失等;ψ(
w)一般為待訓練引數
w 的正則化約束,這裡我們考慮混合約束ψ(
w)=∥
w∥1,
∞或ψ(
w)=∥
w∥1,
2 。該類混合約束在機器學習模型構建中經常用到,比如多工建模中(f(
w)則為總體任務下總體訓練樣本的損失,w=
k ,wk
為第k 個任務下待訓練權重),所以有必要討論其優化解。
一般而言,上式問題的求解可以採用子梯度下降法優化
w,但遺憾的是收斂速度較慢。因此在優化目標問題中,對f(
w)在w=w
t 處進行二階泰勒近似展開,優化目標函式為: mi
nwf(
wt)+
wt,∇
f(wt
)>+l
2∥w−
wt∥2
f+λψ
(w)
其中b>=tr
(atb
) m
inw1
2∥w−
(wt−
1l∇f
(wt)
)∥2f
+λl∥
w∥1,
∞ 其中
∥w∥1
,∞=∑
j∥wj
∥∞,即為每一行元素絕對值的最大值累加。為了簡化上式,我們令 v
=wt−
1l∇f
(wt)
和 λ^
=λl ,則 m
inw1
2∥w−
v∥2f
+λ^∥
w∥1,
∞
同樣,上式問題可以各個維度上的子問題求解,下面我們僅考慮矩陣 w
,v的第 i
行,記著w,
v。那麼子問題簡化為: m
inw1
2∥w−
v∥22
+λ^∥
w∥∞
如果原始問題為 ψ
(w)=
∥w∥1
,2混合範數約束,則此時的優化子問題為: m
inw1
2∥w−
v∥22
+λ^∥
w∥2
因此上述問題求解。可知,該方法對優化目標函式採用泰勒近似展開達到對原問題的簡化,從而加快演算法的收斂速度。
優化演算法高階筆記
adagrad演算法會使用乙個小批量隨機梯度 gt 按元素平方的累加變數 st 在時間步0,adagrad將 s0 中每個元素初始化為0。在時間步 t 首先將小批量隨機梯度 gt 按元素平方後累加到變數 st st st 1 gt gt,其中 是按元素相乘。接著,我們將目標函式自變數中每個元素的學習...
Mysql高階高階(sql優化)
目錄 一 mysql高階有哪些東西?1 mysql的架構 2 索引優化分析 3 查詢擷取分析 4 mysql鎖機制 5 主從複製 架構這裡我們主要說的是引擎 看你的mysql現在已提供什麼儲存引擎 看你的mysql當前預設的儲存引擎 show variables like storage engin...
演算法 高階演算法
三數之和 3sum 第十一章 33 給出乙個有 n 個整數的陣列 s,在 s 中找到三個整數 a,b,c,找到所有使得 a b c 0 的三元組。注意事項 在三元組 a,b,c 要求 a b c,結果不能包含重複的三元組。樣例 如 s 你需要返回的三元組集合的是 1,0,1 1,1,2 an hig...