zoukankan      html  css  js  c++  java
  • Proximal Algorithms 6 Evaluating Proximal Operators

    Proximal Algorithms

    需要注意的一点是,本节所介绍的例子可以通过第二节的性质进行延展.

    一般方法

    一般情况下proximal需要解决下面的问题:
    在这里插入图片描述
    其中(x in mathbb{R}^n), (mathcal{C} = mathbf{dom} f).

    我们可以使用梯度方法(或次梯度)方法来求解, 还有一些投影方法, 内点法等等.

    二次函数

    如果(f(x) = (1/2) x^TAx + b^Tx + c), 其中(A in mathbb{S}^n_+),于是:

    [mathbf{prox}_{lambda f}(v) = (I+lambda A)^{-1}(v-lambda b) ]

    证:
    (varphi(x) = (1/2)x^TAx), 根据第二节介绍的仿射性质可得:

    [mathbf{prox}_{lambda f}(v) = mathbf{prox}_{lambda varphi}(v-lambda b) ]

    (partial varphi=A), 故得证.

    特别的(f(x) = b^Tx + c)(mathbf{prox}_{lambda f}(v)=v-lambda b), (f(x)=c), (mathbf{prox}_{lambda f}(v)=v), 而当(f(x)=(1/2)|cdot|_2^2)时:

    [mathbf{prox}_{lambda f}(v) = (frac{1}{1+lambda})v ]

    这玩意儿有时候被称为压缩算子.

    估计proximal operator的时候,需要求解一个线性方程组:

    [(I + lambda A) x = v - lambda b ]

    线性方程组怎么求解这里就不讨论了吧.

    不过,这个应该多数用在(f(x) + g(x))这种情况吧,因为如果单纯想要最小化(f(x)),直接可以求出显示解,所以可能是(f(x) + |x|)这种类型的?

    平滑函数

    文章里介绍了如何用梯度方法和牛顿方法,不提了.

    标量函数

    (f: mathbb{R} ightarrow mathbb{R} cup {+infty}), 通过之前几节的介绍,这个情况还是蛮有意义的,因为通过proximal operator的可分性质等,有很好的扩展.
    显然,此时,最优条件为:

    [v in lambda partial f(x) + x ]

    比如:

    [f(x) = - log x \ Rightarrow mathbf{prox}_{lambda f}(v) = frac{v+sqrt{v^2 + 4lambda}}{2} ]

    又比如当(f(x) = |x|):
    在这里插入图片描述

    一般的标量函数

    如果对于(f),其次梯度是可获得的,那么我们可以利用localization method来有效估计(mathbf{prox}_{lambda f}), 这种方法有点类似于二分法.

    我们从([l, u] in mathbf{dom} f)开始, 如果(v)在区间之外,返回最靠近(v)的点?(应该就是挑(mathbf{dom} f)中最靠经(v)的点作为边界吧) 算法会在(u-l < epsilon)的时候终止.

    在这里插入图片描述
    注:上面的第一步的意思应该是如果(v)在区间里面就取(v),否则取中间的点.
    如果(g>0),那么(varphi(z) ge varphi(x) + g(z-x)), 显然,当(z>x)不是最优的,而(z = x-lambda g)是一个下界. 为了说明这一点,假设(h_z in partial f(z)). 因为(g>0, lambda >0), 所以(z < x),则(h_z le h)(因为凸函数的次梯度是单调的), 令:

    [g_z = h_z + (1 / lambda) (z - v) in partial varphi (z) ]

    于是

    [h_z + (1 / lambda)(z-v) = h_z + (1/lambda) (x-lambda(h+(1/lambda)(x-v))-v) ]

    等式右边是(h_z-hle0), 所以新的([l, u])就是一端小于0,一端大于0, 不过这对一开始的(l, u)有要求吧.

    如果(f)是二阶连续可微的,那么,可以用guarded Newton方法来找(x^*),不理解曲中的缘由,贴个图吧.
    在这里插入图片描述

    多边形

    这一小节,考虑投影至多边形的问题,多边形可以用 一系列线性方程和不等式描述:

    [mathcal{C} = {x in mathbb{R}^n| Ax=b, Cxle d} ]

    其中(A in mathbb{R}^{m imes n}, C = mathbb{R}^{p imes n}).

    投影问题可以表示为(计算(mathbf{prox})便会遇到此问题):
    在这里插入图片描述

    对偶

    (m, p)都远小于(n)的时候,利用对偶方法是方便的.

    (6.4)的对偶问题是:
    在这里插入图片描述
    其中(v in mathbb{R}^m, eta in mathbb{R}^p)为对偶变量(上面的式子不难推出,这里不证了).

    对偶问题是:

    [egin{array} {lc} max & g(v, eta) \ s.t. & eta ge 0 end{array} ]

    这是一个(m+p)个变量的二阶规划(QP)问题,且:

    [x^* = v - A^T lambda^* - C^Tv^* ]

    这个最优解的恢复是由KKT条件得来的.上面的问题,似乎可以用内点法有效解决,下次找机会再看看. 文章还提到了如何使得QP问题能够简单并行,这里便不多赘述了.

    仿射集合

    [mathcal{C} = {x in mathbb{R}^n| Ax=b} ]

    则:

    [Pi_{mathcal{C}} (v) = v - A^{dagger}(Av - b) ]

    其中(A^{dagger})是伪逆.
    如果(m<n, A)满秩,那么:

    [Pi_{mathcal{C}}(v) = v-A^T(AA^T)^{-1}(Av-b) ]

    这个我可以用一种比较麻烦的方法证明.
    假设最优解为:(v-A^T(AA^T)^{-1}(Av-b)+u),因为

    [A(v-A^T(AA^T)^{-1}(Av-b))=b ]

    所以,根据线性方程组解的理论可知:

    [Au=0 ]

    那么问题可以转换为:

    [egin{array}{lc} min & |A^T(AA^T)^{-1}(Av-b)-u|_2^2 \ s.t. & Au=0 end{array} ]

    再根据线性方程组的理论可知,(u)属于(A)的核,设:

    [A = UDV^T ]

    其中(U in mathbb{R}^{m imes k }, D in mathbb{R}^{k imes k}, V in mathbb{R}^{n imes k}).
    我们只要找出(A^T(AA^T)^{-1}(Av-b))在核空间的投影即可:

    [(I-VV^T)A^T(AA^T)^{-1}(Av-b)=0 ]

    即投影为0,也就是说(x=0), 这也就证明了

    [Pi_{mathcal{C}}(v) = v-A^T(AA^T)^{-1}(Av-b) ]

    半平面

    此时(mathcal{C} = {x | a^Tx le b}), 而:

    [Pi_{mathcal{C}}(v) = v- frac{(a^Tv-b)_+}{|a|_2^2} ]

    其中((u)_+=max {u, 0}).

    这个可以画个图来证明,注意到(frac{(a^Tv-b)_+}{|a|_2^2})和点到直线距离的联系.

    Box

    box为如下形式(mathcal{C} = {x | l le x le u}), 及:
    在这里插入图片描述
    如果(mathcal{C}= mathbb{R}^n_+)则:

    [Pi_{mathcal{C}}(v)=v_+ ]

    这个感觉是显然的.

    Simplex

    Simplex 为如下形式(mathcal{C} = {z| zge 0, 1^Tz=1}), 及

    [Pi_{mathcal{C}}(v) = (v - u mathbf{1})_+ ]

    对于某些( u in mathbb{R}).
    满足

    [mathbf{1}^T(v- u mathbf{1})_+=1 ]

    利用二分法可以求解.

    Cones

    (mathcal{K})为锥,以及(mathcal{K}^*)为其对偶锥. 那么问题为:

    [egin{array}{lc} min & |x-v|_2^2 \ s.t. & x in mathcal{K} end{array} ]

    对偶锥的定义:

    [mathcal{K}^* ={y| x^Ty ge 0, forall x in mathcal{K}} ]

    对偶最优条件为:
    在这里插入图片描述
    (v=x-lambda)这个条件我是存疑的,这样子原问题应该是(frac{1}{2}|x-v|_2^2),当然,这应该无伤大雅.

    二阶锥

    [mathcal{C} = {(x, t) in mathbb{R}^{n+1} | |x|_2 le t} ]

    在这里插入图片描述
    上面的东西,通过考虑下面的问题:

    [egin{array}{lc} min_{x,t} & |v-x|_2^2+(s-t)^2 \ s.t. & |x|_2 le t end{array} ]

    可以获得, 第二种情况是不需讨论的, 那么先来看第一种情况。
    (tle |v|)的情况下,(x=tfrac{v}{|v|}), 不妨令(u=frac{v}{|v|}).则,原问题为:

    [min quad (|v|-t)^2+(s-t)^2 ]

    (t=frac{|v|+s}{2})处取得极值,但是(|v|le-s), 所以此时(tle0), 所以(t=0). (t >|v|)的时候,(x=v),于是原问题为:

    [min quad (s-t)^2 ]

    那么(t=|v|),显然没有0的时候小.

    第三种情况的分析是类似的.

    半正定锥

    (mathcal{C} = mathbb{S}^n_+), 此时

    [Pi_{mathcal{C}}(V) = sum_{i=1}^n (lambda_i)_+ u_iu_i^T ]

    其中(sum_{i=1}^n lambda_i u_iu_i^T)为特征分解.

    指数锥

    不了解,截个图吧
    在这里插入图片描述
    在这里插入图片描述

    Pointwise maximum and supremum

    max

    如果(f(x) = max_{i} x_i), 根据其上镜图,我们有等价形式:

    [egin{array}{lc} min & t + (1/2lambda) |x-v|_2^2 \ s.t. & x_i le t, : i=1,ldots, n end{array} ]

    其拉格朗日对偶形式为:

    [L(x, t, mu) = t + (1/2lambda) |x-v|_2^2 + mu^T(x-t mathbf{1}) ]

    KKT条件为:
    在这里插入图片描述
    如果(x_i^* < t^*),则表示(通过第三个条件)(mu_i^*=0), 如果(x^*=t^*),则表示(u_i^*=(1/lambda)(v_i-t^*)), 又(mu_i^* ge 0), 总结为:

    [mu_i^* = (1/lambda) (v_i - t^*)_+ ]

    再根据第五个条件可得:

    [sum_{i=1}^n (1/lambda) (v_i - t^*)_+=1 ]

    这个可以用半分法求解,初始的区间为([min_i v_i -(1/n), max_i v_i]).

    最后

    [x^* = min {t^*, v_i}. ]

    support function

    (mathcal{C})是一个凸集,其support function为:

    [S_{mathcal{C}} (x) = sup_{y in mathcal{C}} y^Tx. ]

    support function的共轭是指示函数.

    [S_{mathcal{C}}^*(z)=sup_x (z^Tx - f(x)) = I_{mathcal{C}}. ]

    通过Moreau 分解我们知道:

    [mathbf{prox}_{lambda S_{mathcal{C}}} (v) = v - lambda Pi_{mathcal{C}} (v / lambda) ]

    一个例子是(f(x) = x_{[1]}+x_{[2]}+ldots + x_{[k]}), 表(x)的前k个最大的和,可以用以下凸集的support function来表示:

    [mathcal{C} = {y | 0 preceq y preceq 1, 1^Ty=k}. ]

    Norms and norm balls

    (f=|cdot|)为一般的定义在(mathbb{R}^n)上的范数,则(f^*=I_{mathcal{B}}), 其中(mathcal{B})为对偶范数的单位球.

    我们知道(f(x)=sup_y {y^Tx||y|_*le 1}), 此为(mathcal{B}={y | |y|_*le 1})的支撑函数,故(f^*=I_{mathcal{B}}).

    对偶不是共轭的特例?

    于是根据Moreau分解,有以下式子成立:
    在这里插入图片描述

    Euclidean 范数

    (f = |cdot|_2)的时候:
    在这里插入图片描述
    以及:
    在这里插入图片描述

    (ell_1) and (ell_{infty}) norms

    (ell_{infty})(mathcal{B})是box,所以根据之前讨论过的:
    在这里插入图片描述
    引文(ell_1)(ell_{infty})互为对偶,所以当(f=|cdot|_1)的时候:
    在这里插入图片描述
    可以用更为紧凑的形式表示:

    [mathbf{prox}_{lambda f}(v) = (v-lambda)_+ - (-v-lambda)_+. ]

    欲计算(ell_{infty})的proximal operator并不容易,因为投影到(ell_1)的单位球比较麻烦.
    我们需要计算一个(lambda),满足:

    [sum_{i=1}^n (|v_i| - lambda)_+=1. ]

    可以用类似半分法的方法求解.

    Elastic net

    (f(x) = |x|_1 + (gamma/2) |x|_2^2), (gamma > 0).
    此时

    [mathbf{prox}_{lambda f}(v) = (frac{1}{1+lambda gamma}) mathbf{prox}_{lambda |cdot|_1}(v). ]

    范数和

    [f(x) = sum_{g in mathcal{G}} |x_g|_2 ]

    其中(mathcal{G})([n])的一个分割, 则:

    [(mathbf{prox}_{lambda f}(v))_g = (1-frac{lambda}{|v_g|_2})_+ v_g ]

    sublevel set and epigradph

    下水平集

    (f)(t-)下水平集合为:

    [mathcal{S} = {x in mathbb{R}^n| f(x) le t} ]

    假设(v ot in mathcal{S}) , 否则(Pi_{mathcal{S}}(v)=v).
    此时(Pi_{mathcal{S}}(v))可以转化为下列问题:

    [egin{array}{lc} min & frac{1}{2}|x-v|_2^2 \ s.t. & f(x) le t. end{array} ]

    通过KKT条件可得最优条件为:

    [0 in x - v + lambda partial f(x), quad f(x)=t, quad lambda > 0 ]

    第一个条件,表示(Pi_{mathcal{S}}(v) = mathbf{prox}_{lambda f}(v)), 再根据第二个条件可得:

    [f(mathbf{prox}_{lambda f}(v)) = t ]

    我们可以通过二分法来寻找(lambda).

    上镜图

    函数(f)的上镜图为:

    [mathbf{epi}f={(x, t)| x in mathbf{dom} f, f(x) le t}. ]

    针对(Pi_{mathbf{epi} f}(v, s)):

    [egin{array}{lc} min & frac{1}{2} |x-v|_2^2 + frac{1}{2}(t-s)^2 \ s.t. & f(x) le t. end{array} ]

    同样假设(f(v) > s)KKT条件为:

    [f(x) = t \ 0 in x-v + lambda partial f(x) \ t-s=lambda \ lambda > 0. ]

    所以

    [v in x+ (f(x)-s) partial f(x). ]

    论文说这个问题比较难成立,有另外一种表示方法:
    在这里插入图片描述
    不知道怎么推的.

    Matrix functions

    Elementwise functions

    这里将矩阵(A in mathbb{R}^{m imes n})视为(mathbb{R}^{mn})的向量,就能利用之前的方法了,比如(ell_1)的方法:

    [|A|_1 = sum_{i=1}^m sum_{j=1}^n |a_{ij}| ]

    正交不变

    函数(F: mathbb{R}^{m imes n} ightarrow mathbb{R}),正交不变是指:

    [F(VXU)=F(X). ]

    其中(U in mathbb{R}^{n imes n}, V in mathbb{R}^{m imes m})为正交矩阵, 这也意味着:

    [F(x) = F(mathbf{diag}(sigma_s(X))). ]

    其中(sigma_s:mathbb{R}^{m imes n } ightarrow mathbb{R}^{min{m, n}})是奇异值映射.
    正交不变算子(F)可以表示为:(f circ sigma_s), 而

    [partial F(X) = {Vmathbf{diag}(mu) U| mu in partial f(sigma_s(X)}, ]

    其中(X= Vmathbf{diag}(sigma_s(X))U). 这个的推导见之前关于矩阵次梯度的介绍.

    这意味着:

    [mathbf{prox}_{lambda F}( A) = Vmathbf{diag}(mathbf{prox}_{lambda f}(sigma_s (A)))U. ]

    这个没依照论文来,论文似乎有更加直接的证明方法,我来讲一下我的:

    [egin{array}{ll} mathbf{prox}_{lambda F}(A) &= mathrm{argmin} quad lambda F(X) + frac{1}{2} |X-A|_F^2 \ end{array} ]

    最优条件为:

    [lambda partial F(X) +X=A. ]

    假设(X= Vmathbf{diag}(sigma_s(X))U), 则:

    [V(lambda mathbf{diag}(mu)+mathbf{diag}(sigma_s(X))U=A. ]

    显然(A)的奇异值分解也为:

    [A =Vmathbf{diag}(sigma_s(A))U \ Rightarrow lambda mathbf{diag}(mu)+mathbf{diag}(sigma_s(X))=mathbf{diag}(sigma_s(A)) ]

    [egin{array}{ll} mathbf{prox}_{lambda f}(sigma_s(A)) &= mathrm{argmin}_{sigma_s(X)} quad lambda f(sigma_s(X)) + frac{1}{2} |sigma_s(X)-sigma_s(A)|_2^2. \ end{array} ]

    其最优条件为:

    [lambda u+sigma_s(X)-sigma_s(A)=0. ]

    显然二者的最有条件是一样的,所以成立.
    (F: mathbb{S}^n ightarrow mathbb{R}), 且(F(UXU^T)=F(X)):

    [mathbf{prox}_{lambda F}(A) = Umathbf{diag}(mathbf{prox}_{lambda f}(sigma(A)))U^T ]

    其中(A=Umathbf{diag}(sigma(A))U^T).

    后面还有一些关于矩阵范数,一些特殊集合的投影,以及如何求解对数障碍问题.
    在这里插入图片描述

  • 相关阅读:
    MQTT:前端js客户端库MQTT.js
    MQTT:java客户端库Paho
    EMQ X:认证
    EMQ X:初体验
    MQTT协议
    连接Mysql时报javax.net.ssl.SSLHandshakeException No appropriate protocol (protocol is disabled or cipher suites are inappropriate)错误
    微星11代gp76 3070解锁140w功率
    Jenkins:使用ssh方式拉取gitlab代码
    juc:AQS
    juc:LockSupport
  • 原文地址:https://www.cnblogs.com/MTandHJ/p/11043805.html
Copyright © 2011-2022 走看看