• [ML]FFCSC数学原理与算法简述(与代码对应)


    本文档对FFCSC_raw代码的核心算法进行简单叙述, 推导过程省略, 符号均与代码中的变量名相匹配.

    目标函数

    [mathop{ ext{arg min}}limits_{d,z}frac{lambda_{r}}{2}||b-Dz||_2^2+lambda_{p}||z||_1+ind_C(d) ]

    使用 ADMM 方法进行优化, 对滤波器 d 和特征图 z 交替进行.

    滤波器 d 的优化

    关于滤波器的优化问题可以表示为

    [mathop{ ext{min}}limits_dfrac{lambda_{r}}{2}||b-MZd||_2^2+ind_C(d) ]

    [left[ egin{array}{} v^{(1)}\ v^{(2)} end{array} ight] = left[ egin{array}{} Zd\d end{array} ight] ]

    [left[egin{array}{}u_k^{(1)}\u_k^{(2)}end{array} ight]=left[egin{array}{}v_{k+1}^{(1)}\v_{k+1}^{(2)}end{array} ight] ]

    可转化为增广拉格朗日问题

    [L_gamma(d,v^{(cdot)},d^{(cdot)})=frac{lambda_{r}}{2}||b-Mv^{(1)}||_2^2+gamma_1[d^{(1)}]^T(v^{(1)}-Zd)+frac{gamma_1}{2}||v^{(1)}-Zd||_2^2+ind_C(v^{(2)})+gamma_2[d^{(2)}]^T(v^{(2)}-d)+frac{gamma_2}{2}||v^{(2)}-d||_2^2 ]

    上述增广拉格朗日问题可划分为若干个子问题:

    [d=left[Z^TZ+frac{gamma_2}{gamma_1}I ight]^{-1}left[Z^T(v^{(1)}+d^{(1)})+frac{gamma_2}{gamma_1}(v^{(2)}+d^{(2)}) ight] ]

    [u^{(1)}=left[M^TM+frac{gamma_1}{lambda_r}I ight]^{-1}left[M^Tb+frac{gamma_1}{lambda_r}(v^{(1)}-d^{(1)}) ight] ]

    [u^{(2)}=egin{cases}frac{v^{(2)}-d^{(2)}}{||v^{(2)}-d^{(2)}||_2} &:||v^{(2)}-d^{(2)}||_2^2ge1\v^{(2)}-d^{(2)} &: ext{else}end{cases} ]

    [d^{(1)}=d^{(1)}+u^{(1)}-v^{(1)}\ d^{(2)}=d^{(2)}+u^{(2)}-v^{(2)} ]

    其中d的更新可以通过矩阵逆引理简化为

    [d=underbrace{frac{gamma_1}{gamma_2}left[I-Z^T(frac{gamma_2}{gamma_1}I+ZZ^T)^{-1}Z ight]}_{ ext{Matrix inversion lemma}}left[Z^Tunderbrace{(v^{(1)}+d^{(1)})}_{x^{(1)}}+frac{gamma_2}{gamma_1}underbrace{(v^{(2)}+d^{(2)})}_{x^{(2)}} ight] ]

    特征图 z 的优化

    关于特征图的优化问题可以表示为

    [mathop{ ext{min}}limits_zfrac{lambda_r}{2}||b-MDz||_2^2+lambda_p||z||_1 ]

    [left[ egin{array}{} v^{(1)}\ v^{(2)} end{array} ight]= left[ egin{array}{} Dz\z end{array} ight] ]

    [left[egin{array}{}u_k^{(1)}\u_k^{(2)}end{array} ight]=left[egin{array}{}v_{k+1}^{(1)}\v_{k+1}^{(2)}end{array} ight] ]

    可转化为增广拉格朗日问题

    [L_gamma(z,v^{(cdot)},d^{(cdot)})=frac{lambda_r}{2}||b-MDz||_2^2+gamma_1[d^{(1)}]^T(v^{(1)}-Dz)+frac{gamma_1}{2}||v^{(1)}-Dz||_2^2+...\ lambda_p||v^{(2)}||_1+gamma_2[d^{(2)}]^T(u^{(2)}-z)+frac{gamma_2}{2}||u^{(2)}-z||_2^2 ]

    上述增广拉格朗日问题可划分为若干个子问题:

    [z=left[D^TD+frac{gamma_2}{gamma_1}I ight]^{-1}left[D^T(v^{(1)}+d^{(1)})+frac{gamma_2}{gamma_1}(v^{(2)}+d^{(2)}) ight] ]

    [u^{(1)}=left[M^TM+frac{gamma_1}{lambda_r}I ight]^{-1}left[M^Tb+frac{gamma_1}{lambda_r}(v^{(1)}-d^{(1)}) ight] ]

    [u^{(2)}= ext{max}left(1-frac{gamma_2/lambda_p}{|v^{(2)}-d^{(2)}|},0 ight)odot (v^{(2)}-d^{(2)}) ]

    [d^{(1)}=d^{(1)}+u^{(1)}-v^{(1)}\ d^{(2)}=d^{(2)}+u^{(2)}-v^{(2)} ]

    其中z的更新可以通过矩阵逆引理简化为

    [z=underbrace{frac{gamma_1}{gamma_2}left[I-D^T(frac{gamma_2}{gamma_1}I+DD^T)^{-1}D ight]}_{ ext{Matrix inversion lemma}}left[D^Tunderbrace{(v^{(1)}+d^{(1)})}_{x^{(1)}}+frac{gamma_2}{gamma_1}underbrace{(v^{(2)}+d^{(2)})}_{x^{(2)}} ight] ]

    近端算子

    Quadratic prox for masked data:

    [ extbf{prox}_{f/lambda}(u)=(M^TM+lambdamathbb{I})^{-1}(M^Tb+lambda u) ]

    Shrinkage prox for sparsity:

    [ extbf{prox}_{f/lambda}(u)= ext{max}(1-frac{1}{lambda|u|},0)odot u ]

    Projection prox for kernel constrains:

    [ extbf{prox}_{f/lambda}(u)=egin{cases}frac{u}{||u||_2} &:||u||_2^2ge1\u &: ext{else}end{cases} ]

  • 相关阅读:
    flask 源码专题(七):threading.local和高级
    flask 源码专题(六):session处理机制
    flask 源码专题(五):SqlAlchemy 中操作数据库时session和scoped_session的区别
    flask 源码专题(四):wtforms Form实例化流程以及csrf验证
    flask 源码专题(三):请求上下文和应用上下文入栈与出栈
    python 追踪函数调用
    flask 源码专题(一):app.run()的背后
    flask 源码专题(二):请求上下文与全文上下文
    边框间距 | border-spacing (Miscellaneous Level 2)
    边框样式属性 | border-top-style (Backgrounds & Borders)
  • 原文地址:https://www.cnblogs.com/Clouds42/p/13439092.html
Copyright © 2020-2023  润新知