为什么 L1 正则化能做特征选择而 L2 正则化不能
假设我们的模型只有一个参数 \(w\),损失函数为 \(L(w)\),加入 L1 和 L2 正则化后的损失函数分别记为 \(J_1(w), J_2(w)\):
\[\begin{gathered}
J_1(w) = L(w) + \lambda |w| \\
J_2(w) = L(w) + \lambda w^2
\end{gathered}
\]
原损失函数 \(L\) 在 \(w = 0\) 处的导数记为 \(L'(0)\),那么 \(J_1\) 在 \(w = 0\) 处的左、右导数为:
\[\begin{gathered}
J_{-}'(0) = L'(0) - \lambda \\
J_{+}'(0) = L'(0) + \lambda \\
\end{gathered}
\]
当 \(\lambda > |L'(0)|\) 时,\(w = 0\) 处的左导数 \(L'(0) - \lambda < 0\)、右导数 \(L'(0) + \lambda > 0\),此时 \(w = 0\) 为 \(J_1\) 的一个极小值点。
也就是说,即使 \(L\) 不在 \(w = 0\) 处取得极小值(\(L'(0) \neq 0\)),我们也能够通过调节 \(\lambda\) 将损失函数的极小值点“转移”到 \(w = 0\)。
再来看 L2 正则化时的情况,\(J_2\) 在 \(w = 0\) 处的导数为:
\[J_2'(0) = [L'(w) + 2 \lambda w]_{w = 0} = L'(0)
\]
由此可见,如果 \(L\) 不在 \(w = 0\) 处取得极小值(\(L'(0) \neq 0\)),那么加入 L2 正则项后仍然不可能在 \(w = 0\) 处取得极小值。
总结:L1 正则化能将损失函数的极小值点“转移”到 \(w = 0\) 处,而 L2 正则化无论如何设置 \(\lambda\) 都达不到这样的效果。
相关资料: