迭代硬阈值类算法总结||IHT/NIHT/CGIHT/HTP (2)

上式的最后三项是与 \(\bf{x}\) 无关的项,对优化结果没有影响,那么使 (5) 式最小化等价于下式最小化:
\[G'({\bf{x}},{\bf{z}}) = \sum\limits_i {\left[ {{\bf{x}}_i^2 - 2{{\bf{x}}_i}\left( {{{\bf{z}}_i} + {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{y}} - {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{Az}}} \right)} \right]} ~~~~~~~~~~~~~~~~~~~~(5)\]

对 (5) 式进行配方,可以得到:
\[\eqalign{ & G'({\bf{x}},{\bf{z}}) = \sum\limits_i {\left[ {{\bf{x}}_i^2 - 2{{\bf{x}}_i}\left( {{{\bf{z}}_i} + {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{y}} - {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{Az}}} \right)} \right]} \cr & = \sum\limits_i {\left[ {{\bf{x}}_i^2 - 2{{\bf{x}}_i}\left( {{{\bf{z}}_i} + {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{y}} - {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{Az}}} \right) + \left( {{{\bf{z}}_i} + {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{y}} - {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{Az}}} \right) - \left( {{{\bf{z}}_i} + {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{y}} - {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{Az}}} \right)} \right]} \cr & = \sum\limits_i {\left\{ {{{\left[ {{\bf{x}}_i^2 - \left( {{{\bf{z}}_i} + {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{y}} - {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{Az}}} \right)} \right]}^2} - {{\left( {{{\bf{z}}_i} + {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{y}} - {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{Az}}} \right)}^2}} \right\}} \cr} \]

\({{\bf{x}}^*} = {{\bf{z}}_i} + {\bf{A}}_i^{\mathop{\rm T}\nolimits} \left( {{\bf{y}} - {\bf{Az}}} \right)\),得:
\[\sum\limits_i {\left[ {{\bf{x}}_i^2 - \left( {{{\bf{z}}_i} + {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{y}} - {\bf{A}}_i^{\mathop{\rm T}\nolimits} {\bf{Az}}} \right)} \right]} = \sum\limits_i {\left\{ {{{\left[ {{{\bf{x}}_i} - {{\bf{x}}^*}} \right]}^2} - {{\left( {{{\bf{x}}^*}} \right)}^2}} \right\}} \]

即当 \({{{\bf{x}}_i} = {{\bf{x}}^*}}\) 时, \(G'({\bf{x}},{\bf{z}})\) 取得最小值,且最小值等于 \(\sum\limits_i - {\left( {{{\bf{x}}^*}} \right)^2}\)

结合式 (1) 中的 \({\ell _0}\) 范数约束项,最小化 \(G'({\bf{x}},{\bf{z}})\) 变成如何使得在 \(\bf{x}\) 中非零元素个数小于 \(S\) 的情况下,最小化 \(\sum\limits_i - {\left( {{{\bf{x}}^*}} \right)^2}\)。很容易想到,只需要保留 \(\bf{x}\) 中前 \(S\) 个最大项即可,这可以通过硬阈值函数来进行操作。

1.3 硬阈值函数

硬阈值函数如下所示:
\[{H_S}({{\bf{x}}_i}) = \left\{ {\matrix{ {0{\rm{~~~~~if~~~}}\left| {{{\bf{x}}_i}} \right| < T} \cr {{{\bf{x}}_i}{\rm{~~~if~~~}}\left| {{{\bf{x}}_i}} \right| \ge T} \cr } } \right.\]
其中 \(T\)\(abs\left[ {{{\bf{x}}_k} + {{\bf{A}}^{\mathop{\rm T}\nolimits} }({\bf{y}} - {\bf{A}}{{\bf{x}}_k})} \right]\) 按从大到小排列第 \(S\) 个值的大小。

硬阈值函数如下图所示,这跟前面介绍的软阈值函数类似。

迭代硬阈值类算法总结||IHT/NIHT/CGIHT/HTP

1.4 IHT算法程序 function [hat_x] = cs_iht(y,A,K,itermax,error) % Email: zhangyanfeng527@gmail.com % Reference: Blumensath T, Davies M E. Iterative hard thresholding for compressed sensing[J]. % Applied & Computational Harmonic Analysis, 2009, 27(3):265-274. % y: measurement (observe) vector % A: measurement (sensing) matrix % k: sparsity level % 注意,IHT算法需要norm(A)<1,否则结果很不稳定,甚至不收敛。 u = 1 ; % 默认步长等于1,也可以自己选择 x0 = zeros(size(A,2),1) ; % initialization with the size of original for times = 1 : itermax x_increase = A' * (y - A * x0); hat_x = x0 + u * x_increase ; [~,pos] = sort(abs(hat_x),'descend'); hat_x(pos(K + 1 : end)) = 0 ; % thresholding, keeping the larges s elements if norm(y - A * hat_x) < error || norm(x0-hat_x)/norm(hat_x) < error break ; else x0 = hat_x ; % update end end 2. NIHT算法

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpgpfx.html