L1正则化优化问题的一种求解方法

所谓的L1正则化优化问题,就是如下带 L 1 L_1 L1正则化的最小化问题:
min ⁡ θ    [ J ( θ ) + λ ∥ θ ∥ 1 ]    ≜    min ⁡ θ    F ( θ ) \min_{\theta}\;[J(\theta)+\lambda\lVert\theta\rVert_1] \;\triangleq\;\min_{\theta}\;F(\theta) θmin[J(θ)+λθ1]θminF(θ)

因为 L 1 L_1 L1正则项的不可微性,使得利用梯度相关方法直接求解上面的优化问题有困难。下面介绍的方法,是把这个 L 1 L_1 L1优化问题,变换为多个 L 2 L_2 L2正则化优化问题逐步迭代求解。

把不等式 ∣ a b ∣ ≤ 1 2 ( a 2 + b 2 ) |ab| \leq \frac12 \left( a^2 + b^2 \right) ab21(a2+b2)应用到 θ \theta θ向量中的每个元素:
∣ θ j ∣ ≤ 1 2 ( θ j 2 c j + c j ) , 其 中 c j > 0 \lvert\theta_j\rvert\le\dfrac{1}{2}\Biggl(\dfrac{\theta_j^2}{c_j}+c_j\Biggr),其中c_j>0 θj21(cjθj2+cj)cj>0
就有:
∥ θ ∥ 1 ≤ 1 2 ( θ T C − 1 θ + C ) \lVert\theta\rVert_1\le\dfrac12(\theta^TC^{-1}\theta+C) θ121(θTC1θ+C)
其中 C ≜ diag ( c ) \mathbf{C}\triangleq\text{diag}(c) Cdiag(c)为对角值为 c j c_j cj的对角矩阵,而 C − 1 \mathbf{C}^{-1} C1表示它的逆矩阵。此不等式在所有的 ∣ θ j ∣ = c j |\theta_j| = c_j θj=cj时成为等式。
记:
F ~ ( θ ; c ) ≜ J ( θ ) + λ 2 ( θ T C − 1 θ + C ) \tilde{F}(\theta;c)\triangleq J(\theta)+\dfrac{\lambda}2(\theta^TC^{-1}\theta+C) F~(θ;c)J(θ)+2λ(θTC1θ+C)
根据前面的不等式,有 F ( θ ) ≤ F ~ ( θ ; c ) F(\theta) \leq \tilde{F}(\theta; c) F(θ)F~(θ;c)。所以可以通过最小化 F ~ ( θ ; c ) \tilde{F}(\theta; c) F~(θ;c)来达到降低 F ( θ ) F(\theta) F(θ)的目的。

总结下,我们可以通过以下的迭代求解方法来最小化 F ( θ ) F(\theta) F(θ)

  1. 选定初始的参数 θ ( 0 ) \theta^{(0)} θ(0)

  2. 对于第 k k k次( k ≥ 1 k \geq 1 k1)迭代,求解下面的 L 2 L_2 L2正则优化问题来获得新的 θ k \theta_k θk
    θ ( k ) = arg ⁡ min ⁡ θ    F ~ ( θ ; ∣ θ ( k − 1 ) ∣ ) = arg ⁡ min ⁡ θ [ J ( θ ) + λ 2 θ T Θ ( k − 1 ) † θ ] \begin{aligned} \theta^{(k)}&=\arg\min_{\theta}\;\tilde{F}(\theta;\lvert\theta^{(k-1)}\rvert)\\ &=\arg\min_{\theta}\Biggl[J(\theta)+\dfrac{\lambda}2\theta^T\Theta^{(k-1)^{\dagger}}\theta\Biggr] \end{aligned} θ(k)=argθminF~(θ;θ(k1))=argθmin[J(θ)+2λθTΘ(k1)θ]
    也就是把前面不等式中的 c c c取为迭代前一步的解的绝对值 ∣ θ ( k − 1 ) ∣ |\theta^{(k-1)}| θ(k1)。因为 θ ( k − 1 ) \theta^{(k-1)} θ(k1)的元素可能为0,所以 F ~ ( θ ; ∣ θ ( k − 1 ) ∣ ) \tilde{F}(\theta; |\theta^{(k-1)}|) F~(θ;θ(k1))中的逆对角矩阵 Θ ( k − 1 ) − 1 \mathbf{\Theta^{(k-1)}}^{-1} Θ(k1)1要替换为 Θ ( k − 1 ) † \mathbf{\Theta^{(k-1)}}^{\dagger} Θ(k1),也即 Θ ( k − 1 ) \mathbf{\Theta^{(k-1)}} Θ(k1)广义逆矩阵1。因为 Θ ( k − 1 ) \mathbf{\Theta^{(k-1)}} Θ(k1)是对角矩阵,所以 Θ ( k − 1 ) † \mathbf{\Theta^{(k-1)}}^{\dagger} Θ(k1)也是对角矩阵,而且它的第 j j j个对角元素为:
    θ ( k − 1 ) j † = { ∣ θ j ( k − 1 ) ∣ − 1 , if θ j ( k − 1 ) ≠ 0 0 , if θ j ( k − 1 ) = 0 \theta^{(k-1)_j^{\dagger}}= \begin{cases}\lvert\theta^{(k-1)}_j\rvert^{-1},&\text{if\quad}\theta^{(k-1)}_j\ne0\\ 0,&\text{if\quad}\theta^{(k-1)}_j=0 \end{cases} θ(k1)j={θj(k1)1,0,ifθj(k1)=0ifθj(k1)=0

  3. 重复上一步迭代过程,直到收敛。
    因为有:
    F ( θ ( k − 1 ) ) = F ~ ( θ ( k − 1 ) ) ; ∣ θ ( k − 1 ) ∣ ) ≥ F ~ ( θ ( k ) ) F(\theta^{(k-1)})=\tilde F(\theta^{(k-1)});\lvert\theta^{(k-1)}\rvert)\ge\tilde F(\theta^{(k)}) F(θ(k1))=F~(θ(k1));θ(k1))F~(θ(k))
    所以上面的迭代算法能保证目标函数 F ( θ ) F(\theta) F(θ)单调下降。下面的图给出了直观理解:
    在这里插入图片描述

当然,因为是迭代求解,整个求解算法可能效率并不高。欢迎有经验的同学给出更详细的说明。

更详细的资料可见参考文献2

References


  1. 广义逆矩阵↩︎

  2. 杉山将,《图解机器学习》第5.2节,2015。 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值