一、 凸优化基础(Convex Optimization basics)
二、 一阶梯度方法(First-order methods)
对于一个可微的凸函数 f f f,其一阶特性有:
f ( y ) ≥ f ( x ) + ∇ f ( x ) T ( y − x ) f(y)\geq f(x)+\nabla f(x)^T(y-x) f(y)≥f(x)+∇f(x)T(y−x)
而当凸函数 f f f是不可微的,我们也可以根据该性质来定义其次梯度。
一个凸函数 f f f在 x x x的次梯度 g g g定义为:
f ( y ) ≥ f ( x ) + g T ( y − x ) f(y)\geq f(x)+g^T(y-x) f(y)≥f(x)+gT(y−x)
次梯度的一些特性:
例子:考虑函数 f : R → R f: R\rightarrow R f:R→R的形式为 f ( x ) = ∣ x ∣ f(x)=|x| f(x)=∣x∣,其在 x = 0 x=0 x=0处有一个不可微的点。
凸函数 f f f的所有亚梯度组成的集合叫做次微分(subdifferential):
∂ f = { g ∈ R n : g i s a s u b g r a d i e n t o f f a t x } \partial f=\{g\in R^n: g\ {\rm is\ a\ subgradient\ of}\ f\ {\rm at}\ x\} ∂f={g∈Rn:g is a subgradient of f at x}
次微分的一些性质:
对于任意 f f f(无论是不是凸函数)都有,
f ( x ∗ ) = min x f ( x ) ⇔ 0 ∈ ∂ f ( x ∗ ) f(x^*)=\min_x f(x) \Leftrightarrow 0\in \partial f(x^*) f(x∗)=xminf(x)⇔0∈∂f(x∗)
也就是说, x ∗ x^* x∗是最小值点当且仅当0是 f f f在 x ∗ x^* x∗点的一个亚梯度。
例子:软阈值
对于一个lasso问题,令 X = I X=I X=I将问题简化可得到:
min β 1 2 ∥ y − β ∥ 2 2 + λ ∥ β ∥ 1 \min_\beta \frac{1}{2}\|y-\beta\|^2_2+\lambda\|\beta\|_1 βmin21∥y−β∥22+λ∥β∥1
其中, λ > 0 \lambda>0 λ>0。利次梯度最优化条件可得:
0 ∈ ∂ ( 1 2 ∥ y − β ∥ 2 2 + λ ∥ β ∥ 1 ) ⇔ 0 ∈ y − β + λ ∂ ∥ β ∥ 1 ⇔ { y i − β i = λ ⋅ s i g n ( β i ) i f b e t a i ≠ 0 ∣ y i − β i ∣ ≤ λ i f b e t a i = 0 \begin{aligned} 0&\in \partial(\frac{1}{2}\|y-\beta\|^2_2+\lambda\|\beta\|_1) \\ &\Leftrightarrow 0\in y-\beta + \lambda \partial \|\beta\|_1\\ &\Leftrightarrow \left\{ \begin{aligned} &y_i-\beta_i = \lambda\cdot sign(\beta_i) \ & if\ beta_i\neq 0\\ &|y_i-\beta_i| \leq \lambda & if\ beta_i= 0 \end{aligned} \right. \end{aligned} 0∈∂(21∥y−β∥22+λ∥β∥1)⇔0∈y−β+λ∂∥β∥1⇔{yi−βi=λ⋅sign(βi) ∣yi−βi∣≤λif betai=0if betai=0
则最优解可得 β = S λ ( y ) \beta=S_{\lambda}(y) β=Sλ(y),其中 S λ S_{\lambda} Sλ叫做软阈值算子:
[ S λ ( y ) ] i = { y i − λ i f y i > λ 0 i f − λ ≤ y i ≤ λ y i + λ i f y i < − λ [S_\lambda(y)]_i =\left\{ \begin{aligned} &y_i-\lambda \ & if\ y_i>\lambda\\ &0\ & if\ -\lambda\leq y_i\leq \lambda\\ &y_i+\lambda & if\ y_i<-\lambda \end{aligned} \right. [Sλ(y)]i=⎩⎪⎨⎪⎧yi−λ 0 yi+λif yi>λif −λ≤yi≤λif yi<−λ
考虑一个定义域为 d i m ( f ) = R n dim(f)=R^n dim(f)=Rn的凸函数 f f f,但允许其可以是不可微的。类比于梯度下降法,次梯度法只是将其中的梯度替换为次梯度,其他步骤不变: 初始化 x ( 0 ) x^{(0)} x(0),然后重复:
x ( k ) = x ( k − 1 ) − t k ⋅ g ( k − 1 ) , k = 1 , 2 , 3 , . . . x^{(k)}=x^{(k-1)}-t_k\cdot g^{(k-1)},\quad k=1,2,3,... x(k)=x(k−1)−tk⋅g(k−1),k=1,2,3,...
其中 g k − 1 ∈ ∂ f ( x ( k − 1 ) ) g^{k-1}\in \partial f(x^{(k-1)}) gk−1∈∂f(x(k−1)),是 f f f在 x ( k − 1 ) x^{(k-1)} x(k−1)的任意一个次梯度。
值得注意的是,次梯度法并不一定是下降的,因此需要跟踪每次迭代,从中找到最优的迭代次数:
f ( x b e s t ( k ) ) = min i = 0 , . . . , k f ( x ( i ) ) f(x^{(k)}_{best})=\min_{i=0,...,k}f(x^{(i)}) f(xbest(k))=i=0,...,kminf(x(i))
次梯度法可以使用固定的步长,也可以随着迭代减小步长。但与梯度下降不同的是,次梯度法的步长需要提前设定,而不能自适应地计算得到。
次梯度法有 O ( 1 / ϵ 2 ) O(1/\epsilon^2) O(1/ϵ2)的收敛率,其慢于梯度下降的 O ( 1 / ϵ ) O(1/\epsilon) O(1/ϵ)收敛率。
考虑有约束的优化问题,在一个凸集 C C C上优化凸函数 f f f:
min x f ( x ) s u b j e c t t o x ∈ C \min_xf(x)\quad subject\ to\ x\in C xminf(x)subject to x∈C
我们可以使用投影次梯度法(projected subgradient method)。在每次迭代中,首先像处理无约束问题一样,使用次梯度法进行求解,然后将得到的解投影到 C C C上:
x ( k ) = P c ( x ( k − 1 ) − t k ⋅ g ( k − 1 ) ) , k = 1 , 2 , 3 , . . . x^{(k)}=P_c(x^{(k-1)}-t_k\cdot g^{(k-1)}),\quad k=1,2,3,... x(k)=Pc(x(k−1)−tk⋅g(k−1)),k=1,2,3,...
其中, P c P_c Pc是投影算子。假设我们总可以做投影,那么在相同步长下,可以得到与普通次梯度法相同的收敛率。
CMU:Convex Optimization