所谓的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)
∣ab∣≤21(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
∣θj∣≤21(cjθj2+cj),其中cj>0
就有:
∥
θ
∥
1
≤
1
2
(
θ
T
C
−
1
θ
+
C
)
\lVert\theta\rVert_1\le\dfrac12(\theta^TC^{-1}\theta+C)
∥θ∥1≤21(θTC−1θ+C)
其中
C
≜
diag
(
c
)
\mathbf{C}\triangleq\text{diag}(c)
C≜diag(c)为对角值为
c
j
c_j
cj的对角矩阵,而
C
−
1
\mathbf{C}^{-1}
C−1表示它的逆矩阵。此不等式在所有的
∣
θ
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λ(θTC−1θ+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(θ):
-
选定初始的参数 θ ( 0 ) \theta^{(0)} θ(0);
-
对于第 k k k次( k ≥ 1 k \geq 1 k≥1)迭代,求解下面的 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~(θ;∣θ(k−1)∣)=argθmin[J(θ)+2λθTΘ(k−1)†θ]
也就是把前面不等式中的 c c c取为迭代前一步的解的绝对值 ∣ θ ( k − 1 ) ∣ |\theta^{(k-1)}| ∣θ(k−1)∣。因为 θ ( k − 1 ) \theta^{(k-1)} θ(k−1)的元素可能为0,所以 F ~ ( θ ; ∣ θ ( k − 1 ) ∣ ) \tilde{F}(\theta; |\theta^{(k-1)}|) F~(θ;∣θ(k−1)∣)中的逆对角矩阵 Θ ( k − 1 ) − 1 \mathbf{\Theta^{(k-1)}}^{-1} Θ(k−1)−1要替换为 Θ ( k − 1 ) † \mathbf{\Theta^{(k-1)}}^{\dagger} Θ(k−1)†,也即 Θ ( k − 1 ) \mathbf{\Theta^{(k-1)}} Θ(k−1)的广义逆矩阵1。因为 Θ ( k − 1 ) \mathbf{\Theta^{(k-1)}} Θ(k−1)是对角矩阵,所以 Θ ( k − 1 ) † \mathbf{\Theta^{(k-1)}}^{\dagger} Θ(k−1)†也是对角矩阵,而且它的第 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} θ(k−1)j†={∣θj(k−1)∣−1,0,ifθj(k−1)=0ifθj(k−1)=0 -
重复上一步迭代过程,直到收敛。
因为有:
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(θ(k−1))=F~(θ(k−1));∣θ(k−1)∣)≥F~(θ(k))
所以上面的迭代算法能保证目标函数 F ( θ ) F(\theta) F(θ)单调下降。下面的图给出了直观理解:
当然,因为是迭代求解,整个求解算法可能效率并不高。欢迎有经验的同学给出更详细的说明。
更详细的资料可见参考文献2。