zoukankan      html  css  js  c++  java
  • 矩阵求导与投影梯度相关问题

    参考url{https://www.zhihu.com/question/39523290} 猪猪专业户 77IX7-UPIUE-7PR75-UTBLT


    如果题主学过泛函分析,可能会更容易理解矩阵对矩阵的求导。

    定义:假设$X$和$Y$为赋范向量空间, $F: X ightarrow Y$是一个映射,那么$F$在$x_0 in X$可导的意思是说存在一个有界线性算子$L in mathcal{L}(X, Y)$,使得对于任意的$epsilon > 0$都存在$delta > 0$,对于满足$x in X ackslash {x_0}, |x - x_0| < delta$的$x$都有$frac{|F(x) - F(x_0) - L(x - x_0)|}{|x - x_0|} < epsilon$.我们称$L$为$F$在$x_0$点的导数.

    取一些特殊情况,比如当$X = mathbb R^n$, $Y = mathbb R$的时候$L$就被称作梯度;当$X = mathbb{R}^n, Y = mathbb{R}^m$的时候L被称作雅可比,等等.从这个一般化的定义出发的好处是,我们可以更好的理解矩阵到矩阵映射的"导数",甚至是从一个函数空间到另一个函数空间的“导数".

    以上定义有一个等价的表述,往往计算起来更方便:对于距离$x_0$足够近的点$x$,即[lim_{x ightarrow x_0}frac{o(|x-x_0|)}{|x-x_0|} = 0,]有
    [F(x) = F(x_0) + L(x - x_0) + o(|x - x_0|).]
    (注:此处$L(x-x_0)$应该理解为线性算子$L$在$x - x_0$这个点的值,而不是L乘以$x-x_0$.不过在有限维空间所有线性算子都可以用矩阵表述, $L$在$x - x_0$这个点的值便正好可以表述为矩阵与向量的乘积!这个notation正好巧妙的一致.)

    例子:假设$F(X) = X^TX$是一个$mathbb{R}^{m imes n} ightarrow mathbb{ S}^n$的映射,其中$mathbb{S }^n$为$n$维对称阵的空间.那么$F$的导数$L$就应该是$mathbb{R}^{m imes n} ightarrow mathbb{ S}^n$的一个有界线性算子. $L$究竟是什么样可以从定义出发计算:

    egin{align} &F(X+Delta X) - F(X) \ =& (X+Delta X)^T(X+Delta X) - X^TX\ =& X^TDelta X + Delta X^TX + o(|Delta X|) end{align}

    所以我们有$L(Delta X) = X^TDelta X + Delta X^TX$,这个就是$F$在$X$点的导数. $L$这个函数(有界线性算子)可以用张量来表述,这里就不详细说了.

    例子:最小二乘问题$f(x) = frac{1}{2}|Ax-b|_2^2$, $f$是一个$mathbb R^n ightarrow mathbb R$的映射.

    egin{align} &f(x+Delta x) - f(x) \ =& frac{1}{2}|A(x+Delta x) - b|^2 - frac{1}{2}|Ax - b|^2\ =& frac{1}{2}|Ax - b + ADelta x|^2 - frac{1}{2}|Ax - b|^2\ =& (Ax - b)^TADelta x + o(|Delta x|) end{align}

    所以我们有$L(Delta x) = (Ax - b)^TADelta x$,这个就是$f$在$x$点的导数.在这种情况下, $L$这个有界线性算子可以用梯度来表述(recall Riesz表示定理):
    [L(Delta x) = langle abla f(x), Delta x angle = langle A^T(Ax - b), Delta x angle = (Ax-b)^TADelta x]
    所以梯度$ abla f(x) = A^T(Ax - b)$.


    例子:单层神经网络$f(W) = frac{1}{2}|sigma(Wx) - y|^2_2$, $f$是一个$mathbb{R}^{m imes n } ightarrow mathbb{ R }$的映射,这里$sigma: mathbb{ R}^m ightarrow mathbb{ R}^m$是一个elementwise的logistic function.算起来
    egin{align} & f(W+Delta W) - f(W) \ =& frac{1}{2}|sigma(Wx + Delta Wx) - y|_2^2 - frac{1}{2}|sigma(Wx) - y|_2^2\ =& frac{1}{2}|sigma(Wx) + sigma(Wx)odot (mathbf 1_m - sigma(Wx)) odot Delta W x + o(|Delta W|) - y|_2^2 - frac{1}{2}|sigma(Wx) - y|_2^2\ =& (sigma(Wx) - y)^T(sigma(Wx)odot (mathbf 1_m - sigma(Wx)) odot Delta W x) + o(|Delta W|) end{align}
    其中$odot$为Hadamard乘积(elementwise乘积), $mathbf 1_m$为长度为$m$的元素均为$1$的向量.这里我使用了一维logistic函数的导数公式.所以
    [L(Delta W) = (sigma(Wx) - y)^T(sigma(Wx)odot (mathbf 1_m - sigma(Wx)) odot Delta W x).]
    注:这个例子的倒数第二步到最后一步的计算影射了微积分中的一个重要的思想——链式法则(chain rule).链式法则能够成立的本质是$ao(|x|)+bo(|x|) = o(|x|)$和$o(|x|)o(|x|) = o(|x|^2)$.

    最后,由于$mathbb{R}^{m imes n}$和$mathbb{R}^{mn}$是同构的,所以可以通过vectorization把矩阵映射到$mathbb{R}^{mn}$中再进行计算.

    (逆逆)对于闭凸集$D$, 考虑$D$上的凸集投影
    egin{equation*}
    P(x)=P_D(x)=arg minlimits_{vin D}||x-v||.
    end{equation*}
    egin{tcolorbox}
    {fseries 引理1:}任意$vin D$, 均有$<x-P(x),v-P(x)>le 0$.
    end{tcolorbox}

    egin{proof}
    对于$0le tle 1$, 我们有$(1-t)P(x)+tvin D$, 于是
    egin{equation*}
    ||x-((1-t)P(x)+tv)||^2ge ||x-P(x)||^2,
    end{equation*}
    等价于
    egin{equation*}
    2t<x-P(x),P(x)-v>+t^2||P(x)-v||^2ge 0,
    end{equation*}
    命题显然成立.
    end{proof}

    egin{tcolorbox}
    {fseries 引理2:}任意$x,y$, 均有$||P(x)-P(y)||le ||x-y||$.
    end{tcolorbox}

    egin{proof}
    根据不等式$<x-P(x),P(y)-P(x)>le 0$, $<y-P(y),P(x)-P(y)>le 0$, 可得
    egin{align*}
    & <y-x-(P(y)-P(x)),P(y)-P(x)>ge 0 \
    & Longrightarrow ||P(y)-P(x)||^2le <y-x,P(y)-P(x)>le ||y-x||cdot||P(y)-P(x)|| \
    & Longrightarrow ||P(y)-P(x)||le ||y-x||.
    end{align*}
    故所求不等式成立.
    end{proof}

    egin{tcolorbox}
    {fseries 引理3:}任意$zperp x-P(x)$, $tinmathbb{R}$, 均有$||x+tz-P(x+tz)||^2=||x-P(x)||^2+O(t^2)$.
    end{tcolorbox}

    egin{proof}
    上界估计
    egin{equation*}
    ||x+tz-P(x+tz)||^2le ||x+tz-P(x)||^2=||x-P(x)||^2+t^2||z||^2.
    end{equation*}
    下界估计
    egin{align*}
    ||x+tz-P(x+tz)||^2 & =||(x-P(x))+(tz+P(x)-P(x+tz))||^2 \
    & =||x-P(x)||^2+||tz+P(x)-P(x+tz)||^2 \
    & +<x-P(x),tz+P(x)-P(x+tz)> \
    & =||x-P(x)||^2+||tz+P(x)-P(x+tz)||^2 \
    & +<x-P(x),P(x)-P(x+tz)> \
    & ge ||x-P(x)||^2.
    end{align*}
    于是结论成立.
    end{proof}

    egin{tcolorbox}
    {fseries 引理4:}任意$tge 0$, 均有$P(tx+(1-t)(x-P(x)))=P(x)$.
    end{tcolorbox}

    egin{proof}
    任意$vin D$, 均有
    egin{align*}
    ||tx+(1-t)P(x)-v||^2 & =||t(x-P(x))+(P(x)-v)||^2 \
    & =||t(x-P(x))||^2+2t<x-P(x),P(x)-v>+||P(x)-v||^2 \
    & ge ||t(x-P(x))||^2=||tx+(1-t)P(x)-P(x)||^2,
    end{align*}
    于是$P(tx+(1-t)(x-P(x)))=P(x)$.
    end{proof}

    egin{tcolorbox}
    {fseries 定理:} 函数$frac{1}{2}||x-P(x)||^2$的梯度为$x-P(x)$.
    end{tcolorbox}

    egin{proof}
    任意的$y$可分解为$y=c(x-P(x))+z$, 其中$zperp x-P(x)$. 根据
    egin{equation*}
    x+tc(x-P(x))-P(x+tc(x-P(x)))=x+tc(x-P(x))-P(x)=(1+tc)(x-P(x))perp z,
    end{equation*}
    可得
    egin{align*}
    ||x+ty-P(x+ty)||^2 & =||x+tc(x-P(x))-P(x+tc(x-P(x)))||^2+O(t^2) \
    & =||(1+tc)(x-P(x))||^2+O(t^2) \
    & =||x-P(x)||^2+2t<x-P(x),c(x-P(x))>+O(t^2) \
    & =||x-P(x)||^2+2t<x-P(x),y>+O(t^2),
    end{align*}
    也即
    egin{equation*}
    frac{1}{2}||x+ty-P(x+ty)||^2-frac{1}{2}||x-P(x)||^2=t<x-P(x),y>+O(t^2),
    end{equation*}
    因此结论成立.
    end{proof}

  • 相关阅读:
    pat每日刷题计划--day70
    pat每日刷题计划--day69
    pat每日刷题计划--day68
    pat每日刷题计划--day67
    pat每日刷题计划--day66
    SpringBoot+MyBatis+MySQL读写分离
    SpringMVC源码分析
    ActiveMQ从入门到精通(三)
    ActiveMQ从入门到精通(二)
    ActiveMQ从入门到精通(一)
  • 原文地址:https://www.cnblogs.com/Eufisky/p/10084596.html
Copyright © 2011-2022 走看看