对凸优化问题,目标函数存在不可微部分时才使用(绝对值项,l1范数,迹范数),求解想法为对可微部分泰勒展开,求得下降方向作为初步更新方向,然后利用近端映射找到一个可以使不可微部分函数值最小且尽可能接近初步更新方向的新方向,作为迭代更新的方向。
目标函数的形式:f(x)=g(x)+h(x)f(x)=g(x)+h(x)f(x)=g(x)+h(x),其中g(x)g(x)g(x)为凸函数且可微,h(x)h(x)h(x)是不可微的凸函数
例:X∈Rm×nX\in \mathbb{R}^{m\times n}X∈Rm×n, y∈Rmy\in \mathbb{R}^{m}y∈Rm, y=Xwy=Xwy=Xw, w∈Rnw\in \mathbb{R}^{n}w∈Rn表示系数向量,则优化问题目标函数
∣∣y−Xw∣∣22+λ∣∣w∣∣1
||y-Xw||_{2}^{2}+\lambda||w||_{1}
∣∣y−Xw∣∣22+λ∣∣w∣∣1
前一项为可微凸函数,后一项为不可微凸函数,可以使用近端梯度下降法求解
近端映射
对于上述凸优化问题,需定义近端映射算子,近端映射函数的定义:
proxh,t(x)=argminz12t∣∣x−z∣∣22+h(z)
prox_{h,t}(x)=argmin_{z}\frac{1}{2t}||x-z||_{2}^{2}+h(z)
proxh,t(x)=argminz2t1∣∣x−z∣∣22+h(z)
即给定一个x,找到最优点z=proxh,t(x)z=prox_{h,t}(x)z=proxh,t(x),使得12t∣∣x−z∣∣22+h(z)\frac{1}{2t}||x-z||_{2}^{2}+h(z)2t1∣∣x−z∣∣22+h(z)最小,这样的zzz能够使得hhh足够小,且接近原不可微点xxx。
梯度迭代
选择一个初始的x(0)x^{(0)}x(0),然后重复:
x(k)=proxh,tk(x(k−1)−tk∇g(x(k−1)))
x^{(k)}=prox_{h,t_{k}}(x^{(k-1)}-t_{k}\nabla g(x^{(k-1)}))
x(k)=proxh,tk(x(k−1)−tk∇g(x(k−1)))
k=1,2,3...k=1,2,3...k=1,2,3...表示当前为第kkk次迭代。
对于这个迭代算法可以这样理解:给定起点x(k−1)x^{(k-1)}x(k−1),先沿目标函数可微部分凸函数g的负梯度方向,做步长为tkt_ktk的梯度下降得到一个预更新值x~(k−1)\tilde{x}^{(k-1)}x~(k−1),然后使用近端映射寻找一个zzz,这个zzz能使得不可微函数hhh足够小,且接近预更新值,就将这个zzz作为本次迭代的更新值x(k)x^{(k)}x(k)。
不可微凸函数h(x)
实际上,近端算子只和不可微的凸函数h(w)h(w)h(w) 有关.
(1)当不可微的凸函数形式为h(w)=0h(w)=0h(w)=0时,
proxt(x)=argminz12t∣∣x−z∣∣22+0=x
prox_{t}(x)=argmin_{z}\frac{1}{2t}||x-z||_{2}^{2}+0=x
proxt(x)=argminz2t1∣∣x−z∣∣22+0=x
更新策略:
x(k)=x(k−1)−tk∇g(x(k−1))
x^{(k)}=x^{(k-1)}-t_{k}\nabla g(x^{(k-1)})
x(k)=x(k−1)−tk∇g(x(k−1))
此时退化为常规的梯度下降算法。
(2)当不可微的凸函数形式为h(w)=IC(x)h(w)=I_{C}(x)h(w)=IC(x)时,
proxt(x)=argminz12t∣∣x−z∣∣22+IC(x)=argminz∈C12t∣∣x−z∣∣22=PC(x)
prox_{t}(x)=argmin_{z}\frac{1}{2t}||x-z||_{2}^{2}+I_{C}(x)
\\ =argmin_{z\in C}\frac{1}{2t}||x-z||_{2}^{2}
\\=P_{C}(x)
proxt(x)=argminz2t1∣∣x−z∣∣22+IC(x)=argminz∈C2t1∣∣x−z∣∣22=PC(x)
更新策略:
x(k)=PC(x(k−1)−tk∇g(x(k−1)))
x^{(k)}=P_{C}(x^{(k-1)}-t_{k}\nabla g(x^{(k-1)}))
x(k)=PC(x(k−1)−tk∇g(x(k−1)))
其中ICI_{C}IC为集合C的示性函数,PC(x)P_{C}(x)PC(x)为集合C上的投影算子,此时为投影梯度下降法。
(3)当不可微的凸函数形式为h(w)=∣∣x∣∣1h(w)=||x||_{1}h(w)=∣∣x∣∣1时,
proxt(x)=argminz12t∣∣x−z∣∣22+∣∣z∣∣1=argminz∣∣x−z∣∣22+2t∣∣z∣∣1=St(x)
prox_{t}(x)=argmin_{z}\frac{1}{2t}||x-z||_{2}^{2}+||z||_{1}
\\
=argmin_{z}||x-z||_{2}^{2}+2t||z||_{1}
\\
=S_{t}(x)
proxt(x)=argminz2t1∣∣x−z∣∣22+∣∣z∣∣1=argminz∣∣x−z∣∣22+2t∣∣z∣∣1=St(x)
(4)当不可微的凸函数形式为h(w)=λ∣∣x∣∣1h(w)=\lambda||x||_{1}h(w)=λ∣∣x∣∣1时,
(5)若将近端梯度算法展开成一个网络,且h(x)h(x)h(x)的形式不定,则网络可以根据对应问题及数据自行学得复杂的h(x)h(x)h(x)
参考文献
https://www.zhihu.com/tardis/zm/art/82622940?source_id=1005
https://zhuanlan.zhihu.com/p/103161094