最优化算法个人总结(二)
三、深度学习中的梯度下降
1、随机梯度下降SGD
一般指mini-batch gradient descent
迭代的梯度完全依赖于当前batch的梯度,所以学习率可理解为允许当前batch的梯度多大程度影响参数更新。
- 缺点:
1、选择合适的learning rate比较困难:所有参数使用一样的学习率;
2、SGD容易收敛到局部最优,并且在某些情况下可能被困在鞍点。 - 令
g
t
g_t
gt表示函数f在
θ
t
−
1
\theta_{t-1}
θt−1处的导数值,
g
t
=
∇
θ
t
−
1
f
(
θ
t
−
1
)
g_t = \nabla_{\theta_{t-1}}f(\theta_{t-1})
gt=∇θt−1f(θt−1),则迭代表达式为:
Δ θ t = − η g t \Delta \theta_{t} = - \eta g_t Δθt=−ηgt
2、动量
- 思想:直观上讲就是,要是当前时刻的梯度与历史时刻梯度方向相似,这种趋势在当前时刻则会加强;要是不同,则当前时刻减弱。 一个已经完成的梯度+步长的组合不会立刻消失,只是会以一定的形式衰减,剩下的能量将继续发挥余热。
- 令
g
t
g_t
gt表示函数f在
θ
t
−
1
\theta_{t-1}
θt−1处的导数值,
g
t
=
∇
θ
t
−
1
f
(
θ
t
−
1
)
g_t = \nabla_{\theta_{t-1}}f(\theta_{t-1})
gt=∇θt−1f(θt−1),则迭代表达式为:
m t = μ m t − 1 + g t Δ θ t = − η m t m_t = \mu m_{t-1} + g_t \\ \Delta \theta_{t} = - \eta m_t mt=μmt−1+gtΔθt=−ηmt - 好处:
1、下降初期时,使用上一次参数更新,下降方向一致,乘上较大的 μ \mu μ能够进行很好的加速
2、下降中后期时,在局部最小值来回震荡的时候,gradient -> 0时, μ \mu μ使得更新幅度增大,跳出陷阱
3、在梯度改变方向的时候, μ \mu μ能够减少更新
总而言之,momentum项能够在相关方向加速SGD,抑制振荡,从而加快收敛
3、牛顿动量
- 思想:改进Momentum不直接对当前梯度作用的问题
- 令
g
t
g_t
gt表示函数f在
θ
t
−
1
\theta_{t-1}
θt−1处的导数值,
g
t
=
∇
θ
t
−
1
f
(
θ
t
−
1
−
η
m
t
−
1
)
g_t = \nabla_{\theta_{t-1}}f(\theta_{t-1}-\eta m_{t-1})
gt=∇θt−1f(θt−1−ηmt−1),则迭代表达式为:
m t = μ m t − 1 + g t Δ θ t = − η m t m_t = \mu m_{t-1} + g_t \\ \Delta \theta_{t} = - \eta m_t mt=μmt−1+gtΔθt=−ηmt - 好处:nesterov项在梯度更新时做一个校正,避免前进太快,同时提高灵敏度。
momentum项和nesterov项都是为了使梯度更新更加灵活,对不同情况有针对性。
针对学习率的其他自适应方法
4、adagrad
- 思想:对学习率进行递推约束,使得每次迭代的学习率不同
- 令
g
i
g_i
gi表示函数f在
θ
i
\theta_{i}
θi处的导数值,学习率的变化率为:
−
1
∑
i
g
i
2
+
ϵ
- \frac 1 {\sqrt {\sum_i g_i^2 + \epsilon}}
−∑igi2+ϵ1,则迭代表达式为:
Δ θ t = − η ∑ i g i 2 + ϵ m t \Delta \theta_{t} = -\frac \eta {\sqrt {\sum_i g_i^2 + \epsilon}} m_t Δθt=−∑igi2+ϵηmt - 好处:
1、前期g较小的时候, regularizer较大,能够放大梯度
2、后期g较大的时候,regularizer较小,能够约束梯度
3、适合处理稀疏梯度 - 问题:
1、没有完全避免人工设置学习率
2、学习率设置过大时,会对regularizer敏感
3、中后期可能因为regularizer过大提前使得梯度为0,提前结束迭代
6、adadelta
- 思想:对Adagrad的扩展,最初方案依然是对学习率进行自适应约束,但是进行了计算上的简化。 Adagrad会累加之前所有的梯度平方,而Adadelta只累加固定大小的项,并且也不直接存储这些项,仅仅是近似计算对应的平均值,分母是梯度的均方根 root mean squared (RMS)。此外,还将全局学习率 η 换成了 RMS[Δθ],这样的话,我们甚至都不需要提前设定学习率了。
- 迭代表达式为:
Δ θ t = − E [ Δ θ 2 ] t − 1 + ϵ E [ g 2 ] t + ϵ g t \Delta \theta_{t} = -\frac {\sqrt {E [\Delta \theta^2]_{t-1} + \epsilon}} {\sqrt {E [g^2]_t + \epsilon}} g_t Δθt=−E[g2]t+ϵE[Δθ2]t−1+ϵgt - 好处:
1、不依赖全局学习率
2、前期速度较快
7、RMSprop
- 思想:算作Adadelta的一个特例:将 ρ = 0.5 \rho=0.5 ρ=0.5, E ∣ g 2 ∣ E|g^2| E∣g2∣就变成了求梯度平方和的平均数。鉴于神经网络都是非凸条件下的,RMSProp在非凸条件下结果更好,改变梯度累积为指数衰减的移动平均以丢弃遥远的过去历史。RMSprop 和 Adadelta 都是为了解决 Adagrad 学习率急剧下降问题的.
- 迭代表达式为:
Δ θ t = − η E [ g 2 ] t + ϵ g t \Delta \theta_{t} = -\frac \eta {\sqrt {E [g^2]_t + \epsilon}} g_t Δθt=−E[g2]t+ϵηgt - 好处:
1、RMSprop算是Adagrad的一种发展,和Adadelta的变体,效果趋于二者之间
2、适合处理非平稳目标 - 对于RNN效果很好 - 问题:依然依赖全局学习率
- Hinton 建议设定 γ 为 0.9, 学习率 η 为 0.001。
8、adam
- 思想:
1、Adam算法可以看做是修正后的Momentum+RMSProp算法
2、动量直接并入梯度一阶矩估计中(指数加权)
3、Adam通常被认为对超参数的选择相当鲁棒
4、学习率建议为0.001 - 迭代表达式为:
m t = μ m t − 1 + ( 1 − μ ) g t n t = ν n t − 1 + ( 1 − ν ) g t 2 m ^ t = m t 1 − μ t n ^ t = n t 1 − ν t Δ θ t = − m ^ t n ^ t + ϵ g t m_t = \mu m_{t-1} + (1-\mu)g_t \\ n_t = \nu n_{t-1} + (1-\nu)g^2_t \\ \hat m_t = {m_t \over {1-\mu_t}} \\ \hat n_t = {n_t \over {1-\nu_t}} \\ \Delta \theta_{t} = -\frac {\hat m_t} {\sqrt{\hat n_t} + \epsilon} g_t mt=μmt−1+(1−μ)gtnt=νnt−1+(1−ν)gt2m^t=1−μtmtn^t=1−νtntΔθt=−n^t+ϵm^tgt - 好处:
Adam的优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。
1、结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点
2、对内存需求较小
3、为不同的参数计算不同的自适应学习率
4、也适用于大多非凸优化 - 适用于大数据集和高维空间
9、adamax
- 思想:Adamax是Adam的一种变体,此方法对学习率的上限提供了一个更简单的范围。
- 迭代表达式为:
n t = m a x ( ν n t − 1 , ∣ g t ∣ ) Δ θ t = − m ^ t n t + ϵ g t n_t = max (\nu n_{t-1} ,|g_t|) \\ \Delta \theta_{t} = -\frac {\hat m_t} {{n_t} + \epsilon} g_t nt=max(νnt−1,∣gt∣)Δθt=−nt+ϵm^tgt
10、Nadam
- 思想:Nadam类似于带有Nesterov动量项的Adam。
- 迭代表达式为:
g ^ t = g t 1 − ∏ i μ i m t = μ m t − 1 + ( 1 − μ ) g t n t = ν n t − 1 + ( 1 − ν ) g t 2 m ^ t = m t 1 − μ t n ^ t = n t 1 − ν t m ˉ t = ( 1 − μ t ) g ^ t + μ t m ^ t Δ θ t = − m ˉ t n ^ t + ϵ g t \hat g_t = {g_t \over 1-\prod_i\mu_i} \\ m_t = \mu m_{t-1} + (1-\mu)g_t \\ n_t = \nu n_{t-1} + (1-\nu)g^2_t \\ \hat m_t = {m_t \over {1-\mu_t}} \\ \hat n_t = {n_t \over {1-\nu_t}} \\ \bar m_t = (1-\mu_t)\hat g_t + \mu_t \hat m_t \\ \Delta \theta_{t} = -\frac {\bar m_t} {\sqrt{\hat n_t} + \epsilon} g_t g^t=1−∏iμigtmt=μmt−1+(1−μ)gtnt=νnt−1+(1−ν)gt2m^t=1−μtmtn^t=1−νtntmˉt=(1−μt)g^t+μtm^tΔθt=−n^t+ϵmˉtgt
四、二阶最优化算法及其他
我们知道,对于 ∀ f ( x ) \forall f(x) ∀f(x),可以在某个点 x 0 x_0 x0处采用taylor级数展开,进而得到附近其他点取值。因此,要求解方程 f ( x ) = 0 f(x)=0 f(x)=0就可以利用其在任意点 x 0 x_0 x0的taylor展式,令其为0得到方程解析解的近似值。
- Taylor展开公式:
一元函数情况:
f ( x ) = f ( x 0 ) 0 ! + ( x − x 0 ) f ′ ( x 0 ) 1 ! + ( x − x 0 ) 2 f ′ ′ ( x 0 ) 2 ! + . . . + ( x − x 0 ) n f ( n ) ( x 0 ) n ! + R n ( x ) f(x)={f(x_0)\over0!} + (x-x_0){f'(x_0)\over 1!} + (x-x_0)^2{f''(x_0)\over 2!} + ...+(x-x_0)^n{f^{(n)}(x_0)\over n!}+R_n(x) f(x)=0!f(x0)+(x−x0)1!f′(x0)+(x−x0)22!f′′(x0)+...+(x−x0)nn!f(n)(x0)+Rn(x)
二元函数,二阶情况:
f ( x , y ) = f ( x 0 , y 0 ) 0 ! + ( x − x 0 ) f x ′ ( x 0 , y 0 ) 1 ! + ( y − y 0 ) f y ′ ( x 0 , y 0 ) 1 ! + ( x − x 0 ) 2 f x ′ ′ ( x 0 , y 0 ) 2 ! + ( y − y 0 ) 2 f y ′ ′ ( x 0 , y 0 ) 2 ! + o n f(x,y)={f(x_0,y_0)\over0!} + (x-x_0){f_x'(x_0,y_0)\over 1!} + (y-y_0){f_y'(x_0,y_0)\over 1!} + (x-x_0)^2{f_x''(x_0,y_0)\over 2!} + (y-y_0)^2{f_y''(x_0,y_0)\over 2!} +o_n f(x,y)=0!f(x0,y0)+(x−x0)1!fx′(x0,y0)+(y−y0)1!fy′(x0,y0)+(x−x0)22!fx′′(x0,y0)+(y−y0)22!fy′′(x0,y0)+on
推广到多元函数二阶泰勒展示的矩阵表达式为:
f ( X ) = f ( X k ) + ∇ f ( X k ) T ( X − X k ) + 1 2 ! ( X − X k ) T H ( x k ) ( X − X k ) + o n f(X)=f(X_k)+\nabla f(X_k)^T(X-X_k)+{1\over 2!}(X-X_k)^TH(x_k)(X-X_k)+o^n f(X)=f(Xk)+∇f(Xk)T(X−Xk)+2!1(X−Xk)TH(xk)(X−Xk)+on
其中H(X)为Hessian矩阵:
H ( x k ) = [ ∂ 2 ∂ x 1 2 f ( x k ) ∂ 2 ∂ x 1 ∂ x 2 f ( x k ) ⋯ ∂ 2 ∂ x 1 ∂ x n f ( x k ) ∂ 2 ∂ x 2 ∂ x 1 f ( x k ) ∂ 2 ∂ x 2 2 f ( x k ) ⋯ ∂ 2 ∂ x 2 ∂ x n f ( x k ) ⋮ ⋱ ⋮ ∂ 2 ∂ x n ∂ x 1 f ( x k ) ∂ 2 ∂ x n ∂ x 2 f ( x k ) ⋯ ∂ 2 ∂ x n ∂ x n f ( x k ) ] H(x_k)=\begin{bmatrix} \frac {\partial^2} {\partial x_1^2}f(x_k) & \frac {\partial^2} {\partial x_1\partial x_2}f(x_k) & \cdots & \frac {\partial^2} {\partial x_1 \partial x_n}f(x_k) \\ \frac {\partial^2} {\partial x_2 \partial x_1}f(x_k) & \frac {\partial^2} {\partial x_2^2}f(x_k) & \cdots & \frac {\partial^2} {\partial x_2 \partial x_n}f(x_k) \\ \vdots & \ddots & \vdots \\ \frac {\partial^2} {\partial x_n \partial x_1}f(x_k) & \frac {\partial^2} {\partial x_n \partial x_2}f(x_k) & \cdots & \frac {\partial^2} {\partial x_n \partial x_n}f(x_k) \end{bmatrix} H(xk)=⎣⎢⎢⎢⎢⎢⎡∂x12∂2f(xk)∂x2∂x1∂2f(xk)⋮∂xn∂x1∂2f(xk)∂x1∂x2∂2f(xk)∂x22∂2f(xk)⋱∂xn∂x2∂2f(xk)⋯⋯⋮⋯∂x1∂xn∂2f(xk)∂x2∂xn∂2f(xk)∂xn∂xn∂2f(xk)⎦⎥⎥⎥⎥⎥⎤
泰勒展式
可以看出,二阶方法最重要的步骤就是计算Hessian矩阵,根据计算方法和存储空间的不同大致可以分为两种:牛顿法和拟牛顿法。
深度学习最全优化方法总结比较
几种常用Gradient descent optimization算法详解
1、牛顿法
- 思想:从本质上去看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法最大的特点就在于收敛更快。
函数 f ( x ) f(x) f(x)在 x k x_k xk点附近的二阶Taylor展式为:
f ( x k + Δ x ) = f ( x k ) + Δ x f ′ ( x k ) + 1 2 ! Δ x f ′ ′ ( x k ) Δ x + o ( x 3 ) f(x_k +\Delta x) = f(x_k) + \Delta xf'(x_k)+{1\over 2!}\Delta xf''(x_k)\Delta x + o(x^3) f(xk+Δx)=f(xk)+Δxf′(xk)+2!1Δxf′′(xk)Δx+o(x3)
梯度下降用到一阶部分,因此表达式为:
f ( X ) = f ( X k ) + g k T ( X − X k ) f(X)=f(X_k)+g_k^T(X-X_k) f(X)=f(Xk)+gkT(X−Xk)
牛顿法用到二阶部分,因此表达式为:
f ( X ) = f ( X k ) + g k T ( X − X k ) + 1 2 ( X − X k ) T H k ( X − X k ) f(X)=f(X_k)+g_k^T(X-X_k)+{1\over 2}(X-X_k)^TH_k(X-X_k) f(X)=f(Xk)+gkT(X−Xk)+21(X−Xk)THk(X−Xk) - 牛顿法每次迭代都需要计算Hessian矩阵。
2、 拟牛顿法
- 思想:采用一定的方法来构造与Hessian矩阵相似的正定矩阵,模拟牛顿法中的搜索方向(可以叫作“牛顿方向”),而这个构造方法计算量比牛顿法小。在自变量维数非常大的时候,对空间和时间的优化较为明显。
- 拟牛顿条件:用两个矩阵做近似: B ~ H , D ~ H − 1 B~H,D~H^{-1} B~H,D~H−1
- 约束条件: y k ~ H k + 1 ⋅ s k y_k ~ H_{k+1}·s_k yk~Hk+1⋅sk 或者 s k ~ H k + 1 − 1 ⋅ y k s_k ~H_{k+1}^{-1}·y_k sk~Hk+1−1⋅yk,其中 s k = x k + 1 − x k , y k = g k + 1 − g k s_k = x_{k+1} - x_k, y_k = g_{k+1}-g_k sk=xk+1−xk,yk=gk+1−gk
- 构造方法:使用了目标函数的梯度(一阶导数)信息和两个点的“位移” ( x k − x k − 1 ) (x_k-x_{k-1}) (xk−xk−1)来实现。
- DFP算法(Davidon、Fletcher、Powell)
方法:设 H i + 1 = H i + E i H_{i+1} = H_i + E_i Hi+1=Hi+Ei,然后分解 E i = m v v T + n w w T E_i=mvv^T+nww^T Ei=mvvT+nwwT - BFGS算法(Broyden,Fletcher,Goldfarb,Shanno)
方法:与DFP类似,只是调换了s,y的位置,使得 E i E_i Ei的迭代表达式不同。 - LBFGS算法(Limited-memory BFGS)
方法:近似BFGS算法中的 E i E_i Ei,不再存储 E i E_i Ei,存储 s i , y i s_i,y_i si,yi,并且仅存储最近产生的m个。
拟牛顿法
3、拉格朗日乘子
- 思想:通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有
(
n
+
k
)
(n+k)
(n+k)个变量的无约束优化问题。拉格朗日乘子背后的数学意义是其为约束方程梯度线性组合中每个向量的系数
用以解决带约束的优化问题。 - 解决的问题模型为约束优化问题:
m i n f ( x , y , z ) s . t . g ( x , y , z ) = 0 min f(x,y,z) \\ s.t. \ \ g(x,y,z)=0 minf(x,y,z)s.t. g(x,y,z)=0
转化为:
m i n f ( x , y , z ) + λ g ( x , y , z ) min f(x,y,z)+\lambda g(x,y,z) minf(x,y,z)+λg(x,y,z) - 不等式约束:KTT条件
KTT条件是指在满足一些有规则的条件下, 一个非线性规划(Nonlinear Programming)问题能有最优化解法的一个必要和充分条件:
1、 约束条件满足 g i ( x ∗ ) ≤ 0 , i = 1 , . . . , p , h j ( x ∗ ) = 0 , j = 1 , . . . , q g_i(x^*)\le0,i=1,...,p,h_j(x^*)=0,j=1,...,q gi(x∗)≤0,i=1,...,p,hj(x∗)=0,j=1,...,q
2、 ∇ f ( x ∗ ) + ∑ i μ i ∇ g i ( x ∗ ) + ∑ j λ i ∇ h i ( x ∗ ) = 0 \nabla f(x^*)+\sum_i\mu_i \nabla g_i(x^*)+\sum_j\lambda_i\nabla h_i(x^*) =0 ∇f(x∗)+∑iμi∇gi(x∗)+∑jλi∇hi(x∗)=0
3、 λ i ≠ 0 \lambda_i\ne0 λi=0且不等式约束条件满足 μ i ≥ 0 , μ i g i ( x ∗ ) = 0 \mu_i\ge0,\mu_ig_i(x^*)=0 μi≥0,μigi(x∗)=0
KKT条件第一项是说最优点 X ∗ X^* X∗必须满足所有等式及不等式限制条件, 也就是说最优点必须是一个可行解, 这一点自然是毋庸置疑的.
第二项表明在最优点 X ∗ X^* X∗, ∇ f \nabla f ∇f必须是 ∇ g i \nabla g_i ∇gi和 ∇ h j \nabla h_j ∇hj的线性組合, μ i \mu_i μi和 λ j \lambda_j λj都叫作拉格朗日乘子。
所不同的是不等式限制条件有方向性, 所以每一个 μ i \mu_i μi都必须大于或等于零, 而等式限制条件没有方向性,所以 λ j \lambda_j λj没有符号的限制,其符号要视等式限制条件的写法而定。
拉格朗日乘子法
4、共轭梯度
to be completed…
5、最小二乘法
- 解析解: β = ( X T X ) − 1 X T Y \beta = (X^TX)^{-1}X^TY β=(XTX)−1XTY
- 在正态假设下,最小二乘和极大似然方法得到的参数估计结果一致
- 思想:利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。
6、EM
- 思想:“损有余而补不足”。求参数极大似然估计的一种方法,它可以从非完整数据集中对参数进行 MLE 估计,是一种非常简单实用的学习算法。这种方法可以广泛地应用于处理缺损数据,截尾数据,带有噪声等所谓的不完全数据。
- 流程:
- 初始化分布参数 Θ \Theta Θ
- 重复直到收敛:
E步骤:根据参数初始值或上一次迭代的模型参数来计算出隐性变量的后验概率,其实就是隐性变量的期望。作为隐藏变量的现估计值:
Q i ( z i ) : = P ( z i ∣ x i , Θ ) Q_i(z^{i}) := P(z^{i}|x^i,\Theta) Qi(zi):=P(zi∣xi,Θ)
M步骤:重新估计分布参数,以使得数据的似然性最大,给出未知变量的期望估计。
Θ : = a r g m a x θ ∑ i ∑ z i l o g P ( x i , z i ; Θ ) Q ( z i ) \Theta := arg max_{\theta} \sum_i \sum_{z^{i}}log{P(x^i,z^{i};\Theta)\over Q(z^{i})} Θ:=argmaxθi∑zi∑logQ(zi)P(xi,zi;Θ)
最大期望法
7、坐标上升法
- 思想:EM算法的一种实现方式。(SVM算法中应用)坐标上升法(Coordinate Ascent)每次通过更新函数中的一维,通过多次的迭代以达到优化函数的目的。
- 优化问题:
m
a
x
α
W
(
α
1
,
α
2
,
…
,
α
n
)
max_\alpha W(\alpha_1,\alpha_2,\dots,\alpha_n)
maxαW(α1,α2,…,αn),更新过程为每次固定除
α
i
\alpha_i
αi以外的参数,求得满足条件的
α
i
\alpha_i
αi,直到算法收敛。
五、搜索最优化算法
1、回溯法
2、分支定界法
to be completed…
六、在线最优化算法
传统在线学习使用sgd,但由于在线数据的流式属性,无法完成特征选择,L1正则不生效。
1、 简单截断法
- 思想:每k步进行一次截断:以k为窗口,当t/k不为整数时采用标准SGD,当t/k为整数时,将绝对值过小的系数置0。这里阈值定为
θ
\theta
θ,则有:
w t + 1 = T 0 ( W t − η t g t , θ ) T 0 ( ν i , θ ) = { 0 , i f ∣ ν i ∣ ≤ θ ν i , o t h e r w i s e w^{t+1} = T_0 (W^{t} - \eta^t g^t,\theta) \\ T_0(\nu_i,\theta) = \begin{cases} 0, & if |\nu_i| \le \theta \\ \nu_i, & otherwise \end{cases} wt+1=T0(Wt−ηtgt,θ)T0(νi,θ)={0,νi,if∣νi∣≤θotherwise
2、Truncated Gradient截断梯度法
- 思想:每k步进行一次截断:以k为窗口,当t/k不为整数时采用标准SGD;当t/k为整数时,将绝对值过小的系数重置
w t + 1 = T 0 ( W t − η t g t , θ , η t λ t ) T 0 ( ν i , θ , α ) = { m a x ( 0 , ν i − α ) , i f ∣ ν i ∣ ∈ [ 0 , θ ] m i n ( 0 , ν i + α ) , i f ∣ ν i ∣ ∈ [ − θ , 0 ] ν i , o t h e r w i s e w^{t+1} = T_0 (W^{t} - \eta^t g^t,\theta,\eta^t\lambda^t) \\ T_0(\nu_i,\theta,\alpha ) = \begin{cases} max(0,\nu_i-\alpha), & if |\nu_i| \in [0,\theta] \\ min(0,\nu_i+\alpha), & if |\nu_i| \in [-\theta,0] \\ \nu_i, & otherwise \end{cases} wt+1=T0(Wt−ηtgt,θ,ηtλt)T0(νi,θ,α)=⎩⎪⎨⎪⎧max(0,νi−α),min(0,νi+α),νi,if∣νi∣∈[0,θ]if∣νi∣∈[−θ,0]otherwise
+弊端:会将一些本来系数比较小(因为训练不足)的特征给干掉。
3、FOBOS
- 思想:前向后向切分(forward backward splitting)。权重变化过小,则置0。其迭代公式包含两部分,第一部分是一般的梯度下降,第二部分是对梯度下降的结果进行调整,抽象成求解一个最优化问题。其中最优化问题有两项:第一项L2范数表示不能离loss迭代结果太远,第二项L1范数用来限定模型复杂度、抑制过拟合和做稀疏化等。
W t + 1 2 = W t − η t g t W t + 1 = a r g m i n W { 1 2 ∣ ∣ W − W t + 1 2 ∣ ∣ 2 + η t + 1 2 Ψ ( W ) } W^{t+{1\over 2}} = W^{t} - \eta^t g^t \\ W^{t+1} = argmin_W\{{1\over 2}||W-W^{t+{1\over 2}} ||^2 + \eta ^{t+{1\over 2} }\Psi(W)\} Wt+21=Wt−ηtgtWt+1=argminW{21∣∣W−Wt+21∣∣2+ηt+21Ψ(W)} - 另一种迭代表达式:将两个公式合并,并对最优化问题求W偏导数,在最小值点
W
t
+
1
W^{t+1}
Wt+1有
W − W t + η t g t + η t + 1 2 ∂ ∂ W Ψ ( W ) ∣ W = W t + 1 = 0 W-W^t + \eta ^tg^t + \eta ^{t+{1\over 2} }{\partial \over \partial W}\Psi(W)|_{W=W^{t+1}}= 0 W−Wt+ηtgt+ηt+21∂W∂Ψ(W)∣W=Wt+1=0
因此得到 W t + 1 W^{t+1} Wt+1的迭代公式为:
W t + 1 = W t − η t g t − η t + 1 2 ∂ ∂ W Ψ ( W ) W^{t+1} = W^t - \eta ^tg^t - \eta ^{t+{1\over 2} }{\partial \over \partial W}\Psi(W) Wt+1=Wt−ηtgt−ηt+21∂W∂Ψ(W) - L1正则下,最优化中的
Ψ
(
W
)
=
λ
∣
∣
W
∣
∣
1
\Psi(W)=\lambda ||W||_1
Ψ(W)=λ∣∣W∣∣1。FOBOS是TG的一种特殊形式,截断条件为:1
w i t + 1 = T 0 ( w i t − η t g t , θ ) T 0 ( w i t − η t g t , θ ) = { 0 , i f ∣ w i t − η t g i t ∣ ≤ η t + 1 2 λ w i t − η t g i t − η t + 1 2 λ s i g n ( w i t − η t g i t ) , o t h e r w i s e w_i^{t+1} = T_0 (w_i^{t} - \eta^t g^t,\theta) \\ T_0(w_i^{t} - \eta^t g^t,\theta) = \begin{cases} 0, & if |w_i^{t}-\eta^tg_i^t| \le \eta ^{t+{1\over 2} }\lambda \\ w_i^{t}-\eta^tg_i^t - \eta ^{t+{1\over 2} }\lambda sign(w_i^{t}-\eta^tg_i^t ), & otherwise \end{cases} wit+1=T0(wit−ηtgt,θ)T0(wit−ηtgt,θ)={0,wit−ηtgit−ηt+21λsign(wit−ηtgit),if∣wit−ηtgit∣≤ηt+21λotherwise
FOBOS原论文
FOBOS讲解很好
4、RDA正则对偶平均
- 思想:不是基于SGD,不属于梯度方法。
- 构造了一种辅助的强凸函数,并确保正则项的极值点与该强凸函数同解。
- 构造平均次梯度代替梯度3
g ˉ ( 1 : t ) = t − 1 t g ˉ ( 1 : t − 1 ) + 1 t g t 即 g ˉ ( 1 : t ) = 1 t ∑ s = 1 t g s , \bar g^{(1:t)} = {{t-1}\over t} \bar g^{(1:t-1)}+ {1\over t} g_t \\ 即\bar g^{(1:t)} = {1\over t} \sum_{s=1}^t g^s, gˉ(1:t)=tt−1gˉ(1:t−1)+t1gt即gˉ(1:t)=t1s=1∑tgs,梯度的累加,避免了训练不足的问题。 - 表达式: W t + 1 = a r g m i n W { g ˉ ( 1 : t ) W + Ψ ( W ) + β ( t ) t h ( W ) } W^{t+1} = argmin_W\{\bar g^{(1:t)}W+ \Psi(W) + {\beta^{(t)} \over t}h(W)\} Wt+1=argminW{gˉ(1:t)W+Ψ(W)+tβ(t)h(W)}其中, Ψ ( W ) \Psi(W) Ψ(W)是正则项, h ( W ) h(W) h(W)是一个严格的凸函数, β ( t ) \beta^{(t)} β(t)是一个关于t的非负递增序列。
- L1正则下,最优化中的
Ψ
(
W
)
=
λ
∣
∣
W
∣
∣
1
\Psi(W)=\lambda ||W||_1
Ψ(W)=λ∣∣W∣∣1。令
h
(
W
)
=
1
2
∥
W
∥
2
2
h(W)=\frac{1}{2}\Vert W \Vert^2_2
h(W)=21∥W∥22,令
β
(
t
)
=
γ
t
\beta^{(t)}=\gamma\sqrt{t}
β(t)=γt,其中
λ
>
0
,
γ
>
0
\lambda>0,\gamma>0
λ>0,γ>0,并且各项同时乘以t,得:
W t + 1 = a r g m i n W { g ˉ ( 1 : t ) W + λ ∥ W ∥ 1 + γ 2 t ∥ W ∥ 2 2 } W^{t+1}=argmin_W\{ \bar g^{(1:t)}W + \lambda \Vert W \Vert_1 + \frac{\gamma}{2\sqrt{t}}\Vert W \Vert^2_2\} Wt+1=argminW{gˉ(1:t)W+λ∥W∥1+2tγ∥W∥22}
截断条件为:
w i t + 1 = { 0 , i f ∣ g ˉ i ( 1 : t ) ∣ < λ − t γ ( g ˉ ( 1 : t ) − λ s g n ( g ˉ ( 1 : t ) ) ) , o t h e r w i s e w^{t+1}_i= \begin{cases} 0, & if\ \vert \bar g^{(1:t)}_i\vert<\lambda\\ -\frac{\sqrt t}{\gamma}(\bar g^{(1:t)}-\lambda sgn(\bar g^{(1:t)})), & otherwise \end{cases} wit+1={0,−γt(gˉ(1:t)−λsgn(gˉ(1:t))),if ∣gˉi(1:t)∣<λotherwise - 好处:从截断方式来看,在 RDA 的算法中,只要梯度的累加平均值小于参数 λ \lambda λ就直接进行截断,更容易产生稀疏解,且RDA 中截断的条件是考虑梯度的累加平均值,避免因为某些维度训练不足而导致截断的问题。
- 为什么h(W)是一个严格的凸函数?因为凸函数+凸函数=凸函数,可以保证整体的凸性,argmin的部分如果不保证凸性,极值就不存在,则无法更新权重。
- 为什么 β ( t ) \beta^{(t)} β(t)是一个关于t的非负递增序列?可以认为学习率 η t = 1 γ t \eta^t=\frac{1}{\gamma\sqrt{t}} ηt=γt1, β ( t ) \beta^{(t)} β(t)可以看作是学习率的倒数,因为学习率设置为随着迭代次数增加而减小的正数,所以 β ( t ) \beta^{(t)} β(t)是一个关于 t t t的非负递增序列。
5、FTRL
- 思想:综合FOBOS的精度优点和RDA的稀疏性优点,其中累积梯度为:
g
(
1
:
t
)
=
∑
r
=
1
t
g
r
g^{(1:t)}=\sum_{r=1}^t g_r
g(1:t)=∑r=1tgr,
σ
s
=
1
η
s
−
1
η
s
−
1
\sigma^s=\frac{1}{\eta^s}-\frac{1}{\eta^{s-1}}
σs=ηs1−ηs−11,
σ
(
1
:
t
)
=
1
η
t
=
∑
s
=
1
t
σ
s
\sigma^{(1:t)}=\frac{1}{\eta_t}=\sum_{s=1}^t \sigma^s
σ(1:t)=ηt1=∑s=1tσs,
λ
1
>
0
,
λ
2
>
0
\lambda_1>0,\lambda_2>0
λ1>0,λ2>0,更新公式是:
W t + 1 = a r g m i n w { G t W + λ 1 ∥ W ∥ 1 + λ 2 2 ∥ W ∥ 2 2 + 1 2 ∑ s = 1 t σ s ∥ W − W s ∥ 2 2 } W^{t+1}=argmin_w\{ G_tW + \lambda_1 \Vert W \Vert_1 + \frac{\lambda_2}{2}\Vert W \Vert^2_2 + \frac{1}{2}\sum_{s=1}^t\sigma^s\Vert W-W^s\Vert^2_2 \} Wt+1=argminw{GtW+λ1∥W∥1+2λ2∥W∥22+21s=1∑tσs∥W−Ws∥22}
维度 i i i的学习率设置为 η i t = α β + ∑ s = 1 t ( g ( s ) ) 2 \eta^t_i=\frac{\alpha}{\beta+\sqrt{\sum_{s=1}^t (g^{(s)})^2}} ηit=β+∑s=1t(g(s))2α,随着迭代次数增加而减小, β \beta β主要作用是保证分母不为0。 - 截断条件为:
w i t + 1 = { 0 , i f ∣ z i t ∣ < λ 1 − ( β + ∑ s = 1 t ( g ( s ) ) 2 α + λ 2 ) − 1 ( z i t − s g n ( z i t ) λ 1 ) , otherwise w^{t+1}_i= \begin{cases} 0, & if \ \vert z^t_i\vert<\lambda_1 \\ -(\frac{\beta+\sqrt{\sum_{s=1}^t (g^{(s)})^2}}{\alpha}+\lambda_2)^{-1}(z^t_i-sgn(z^t_i)\lambda_1), & \text{otherwise} \end{cases} wit+1={0,−(αβ+∑s=1t(g(s))2+λ2)−1(zit−sgn(zit)λ1),if ∣zit∣<λ1otherwise
- 使用
σ
\sigma
σ替换学习率,可将L1-FOBOS、L1-RDA、FTRL写成类似的形式,如下:
W ( L 1 − F O B O S ) t + 1 = a r g m i n W { G t W + λ ∥ W ∥ 1 + 1 2 σ ( 1 : t ) ∥ W − W t ∥ 2 2 } W ( L 1 − R D A ) t + 1 = a r g m i n W { G ( 1 : t ) W + t λ ∥ W ∥ 1 + 1 2 σ ( 1 : t ) ∥ W − 0 ∥ 2 2 } W ( F T R L ) t + 1 = a r g m i n W { G ( 1 : t ) W + λ 1 ∥ W ∥ 1 + λ 2 2 ∥ W ∥ 2 2 + 1 2 ∑ s = 1 t σ s ∥ W − W s ∥ 2 2 } W^{t+1}_{(L1-FOBOS)}=argmin_W\{ G^t W + \lambda \Vert W \Vert_1 + \frac{1}{2}\sigma^{(1:t)}\Vert W-W^t\Vert^2_2 \} \\ W^{t+1}_{(L1-RDA)}=argmin_W\{ G^{(1:t)}W + t\lambda \Vert W \Vert_1 + \frac{1}{2}\sigma^{(1:t)}\Vert W-0 \Vert^2_2\} \\ W^{t+1}_{(FTRL)}=argmin_W\{ G^{(1:t)}W + \lambda_1 \Vert W \Vert_1 + \frac{\lambda_2}{2}\Vert W \Vert^2_2 + \frac{1}{2}\sum_{s=1}^t\sigma^s\Vert W-W^s\Vert^2_2 \} W(L1−FOBOS)t+1=argminW{GtW+λ∥W∥1+21σ(1:t)∥W−Wt∥22}W(L1−RDA)t+1=argminW{G(1:t)W+tλ∥W∥1+21σ(1:t)∥W−0∥22}W(FTRL)t+1=argminW{G(1:t)W+λ1∥W∥1+2λ2∥W∥22+21s=1∑tσs∥W−Ws∥22}
后面可能有疏漏,拖拖拉拉写太久了……后面想起来再修改完善吧!
具体推导过程为:
W t + 1 = a r g m i n W { 1 2 ∣ ∣ W − W t + 1 2 ∣ ∣ 2 + η t + 1 2 λ ∣ ∣ W ∣ ∣ 1 } = a r g m i n W ∑ i { 1 2 ( w i − w i t + 1 2 ) 2 + η t + 1 2 λ ∣ w i ∣ } W^{t+1}=argmin_W\{{1\over 2}||W-W^{t+{1\over 2}} ||^2 + \eta ^{t+{1\over 2} }\lambda ||W||_1\} \\ =argmin_W\sum_i\{{1\over 2}(w_i-w_i^{t+{1\over 2}} )^2 + \eta ^{t+{1\over 2} }\lambda |w_i|\} Wt+1=argminW{21∣∣W−Wt+21∣∣2+ηt+21λ∣∣W∣∣1}=argminWi∑{21(wi−wit+21)2+ηt+21λ∣wi∣}
等价于对每个分量单独求最小:
w i t + 1 = a r g m i n w i 1 2 ( w i − w i t + 1 2 ) 2 + η t + 1 2 λ ∣ w i ∣ w_i^{t+1}= argmin_{w_i}{1\over 2}(w_i-w_i^{t+{1\over 2}} )^2 + \eta ^{t+{1\over 2} }\lambda |w_i| wit+1=argminwi21(wi−wit+21)2+ηt+21λ∣wi∣
假设 w i ∗ w_i^* wi∗是上式子的解,则有 w i ∗ w i t + 1 2 ≥ 0 w_i^*w_i^{t+{1\over 2}}\ge 0 wi∗wit+21≥02
a) 当 w i t + 1 2 ≥ 0 w_i^{t+{1\over 2}}\ge 0 wit+21≥0时,有 w i ∗ ≥ 0 w_i^*\ge 0 wi∗≥0,即 − w i ∗ ≤ 0 -w_i^*\le 0 −wi∗≤0,用拉格朗日乘子法,松弛系数为 β \beta β,得到 w i ∗ = w i t + 1 2 − η t + 1 2 λ + β w_i^* = w_i^{t+{1\over 2}} - \eta ^{t+{1\over 2} }\lambda + \beta wi∗=wit+21−ηt+21λ+β
i) 当 w i ∗ > 0 w_i^*\gt 0 wi∗>0,则有 β = 0 , w i ∗ = w i t + 1 2 − η t + 1 2 λ > 0 \beta =0, w_i^*=w_i^{t+{1\over 2}} - \eta ^{t+{1\over 2} }\lambda \gt 0 β=0,wi∗=wit+21−ηt+21λ>0
ii) 当 w i ∗ = 0 w_i^*= 0 wi∗=0,则有 β ≥ 0 , w i t + 1 2 − η t + 1 2 λ ≤ 0 \beta \ge 0, w_i^{t+{1\over 2}} - \eta ^{t+{1\over 2} }\lambda \le 0 β≥0,wit+21−ηt+21λ≤0
综上,当 w i t + 1 2 ≥ 0 w_i^{t+{1\over 2}}\ge 0 wit+21≥0时, w i ∗ = m a x ( 0 , w i t + 1 2 − η t + 1 2 λ ) w_i^*= max(0,w_i^{t+{1\over 2}} - \eta ^{t+{1\over 2} }\lambda) wi∗=max(0,wit+21−ηt+21λ)
b) 同理,当 w i t + 1 2 < 0 w_i^{t+{1\over 2}}\lt 0 wit+21<0时, w i ∗ = − m a x ( 0 , − w i t + 1 2 − η t + 1 2 λ ) w_i^*= -max(0,-w_i^{t+{1\over 2}} - \eta ^{t+{1\over 2} }\lambda) wi∗=−max(0,−wit+21−ηt+21λ)
综上, w i t + 1 = s i g ( w i t + 1 2 ) m a x ( 0 , ∣ w i t + 1 2 ∣ − η t + 1 2 λ ) w_i^{t+1} = sig(w_i^{t+{1\over 2}})max(0,|w_i^{t+{1\over 2}}|- \eta ^{t+{1\over 2} }\lambda) wit+1=sig(wit+21)max(0,∣wit+21∣−ηt+21λ) ↩︎
反证法。假设 w i ∗ w i t + 1 2 < 0 w_i^*w_i^{t+{1\over 2}}\lt 0 wi∗wit+21<0,则有
1 2 ( w i ∗ − w i t + 1 2 ) 2 + η t + 1 2 λ ∣ w i ∣ = 1 2 [ w i ∗ 2 − 2 w i ∗ w i t + 1 2 + w i t + 1 2 2 ] + η t + 1 2 λ ∣ w i ∣ > 1 2 w i t + 1 2 2 {1\over 2}({w_i^*}-{w_i^{t+{1\over 2}}})^2+ \eta ^{t+{1\over 2} }\lambda |w_i|\\ ={1\over 2}[{w_i^*}^2-2w_i^*w_i^{t+{1\over 2}} +{w_i^{t+{1\over 2}}}^2] + \eta ^{t+{1\over 2} }\lambda |w_i|\gt {1\over 2}{w_i^{t+{1\over 2}}}^2 21(wi∗−wit+21)2+ηt+21λ∣wi∣=21[wi∗2−2wi∗wit+21+wit+212]+ηt+21λ∣wi∣>21wit+212 这与 w i ∗ w_i^* wi∗是最小值的解矛盾。 ↩︎次梯度:设 f : I → R f:I→R f:I→R是一个实变量凸函数,定义在实数轴上的开区间内。这种函数不一定是处处可导的,例如最经典的例子就是 f ( x ) = ∣ x ∣ f(x) = |x| f(x)=∣x∣,在x=0处不可导。对于定义域内的任何 x 0 x_0 x0,我们总可以作出一条直线,它通过点 ( x 0 , f ( x 0 ) ) (x_0, f(x_0)) (x0,f(x0)),并且要么接触 f f f的图像,要么在它的下方。这条直线的斜率称为函数的次导数。 ↩︎