softthresholdingandhardthresholding soft link hard link

今天在看Michael Elad 大牛的论文《Onthe Role of Sparse and Redundant Representations in ImageProcessing》中,看到了soft thresholding 和hard thresholding这两个概念,很是不明白,所以上网查了一些资料,先把网上查的东西贴出来讨论下。

网上资料大体是说这是指两类的函数,分别是软阈值函数和硬阈值函数,在matlab中soft thresholding function的形式是 ,其中x代表的的输入向量或矩阵,T表示阈值,ifx<0, ifx>=0; hard thresholding function 的形式是两者的shrinkage curves为下图:


这两个thresholding有什么用处完全不知道,欢迎知道的朋友告知下,在网上到,好像小波变 换的时候有用到它们哥俩,还有什么去噪什么的,而我看的Michael的论文提到它们哥俩的时候是在解决优化问题的时候,论文中是这样的,在解决优化问题

的时候,由于上式加号两边的两项是可分离的(separable)(为什么??),the optimizationdecouples into a set ofindependent scalar problems of the form ,which have particularly simple closed-form solutions in the twonotable cases p=0 and p=1, called hard- and soft-thresholding,respectively. 上面是论文上的原话,就是说当p=1的时候,上述优化问题称为软阈值问题,论文中还有个结论就是对于softthresholding, 阈值应该为λ,而对于hardthresholding,阈值应该是2倍λ的开根号(不是λ开根号的2倍),到目前为止完全不懂。在网上又看到了一个叫SimonLucey的主页,他里面讲了一些soft thresholding的东西,也弄过来看看,我就不翻译了,直接上英文:Softthresholding is becoming a very popular tool in computer vision andmachine learning. Essentially it allows one to add to take thefollowing objective:,(和上面的p=1相比,那个0.5可有可无吗???)and solve in a very fast fashion using anapproach referred to as soft thresholding. Since L1 penalties arebeing used nearly everywhere at the moment, the property of softthresholding to efficiently find the solution to the above formbecomes very useful。
这个叫Simon的家伙分别使用matlab的凸优化包CVX中的interior point methods 与刚才讲的softthresholding去解决上面提到的优化问题进行了对比,代码如下,先使用CVX工具箱,

% Function to solve soft thresholding problem using CVX
%
% arg min_{x} ||x - b||_{2}^{2} + lambda*||x||_{1}
%
% Usage:- x = soft_thresh_cvx
%
% where:- <in>
%b = bias vector
%lambda = weighting on the l1 penalty
%<out>
%x =solution
%
% Written by Simon Lucey 2012

% 不得不佩服老外做事的认真严谨,随便写个函数看上面的注释就看出来了
function x = soft_thresh_cvx(b,lambda)

M = length(b);
cvx_begin
cvx_quiet(true);
variablex(M,1);
minimize(sum_square(x - b) + lambda*norm(x,1));
cvx_end

根据作者说上述方法很费时,下面贴上使用了soft thresholding方法的code。

先定义soft thresholding operator。



其实就是本文最开始的时候的soft thresholding function中x=b,T=0.5λ的分段形式,但是这里的阈值取的却是0.5λ,这和上文Michael论文中结论说softthresholding 阈值应该取λ不符,难道是因为这里的2范数之前没有那个1/2的原因吗??函数代码如下:

% Function to solve softthresholding problem
%
% arg min_{x} ||x - b||_{2}^{2} + lambda*||x||_{1}
%
% Usage:- x = soft_thresh
%
% where:- <in>
%b = bias vector
%lambda = weighting on the l1 penalty
%<out>
%x =solution
%
% Written by Simon Lucey 2012
function x = soft_thresh(b,lambda)

% Set the threshold
th = lambda/2;

% First find elements that are larger than the threshold
k = find(b > th);
x(k) = b(k) - th;

% Next find elements that are less than abs
k = find(abs(b) <= th);
x(k) = 0;

% Finally find elements that are less than -th
k = find(b < -th);
x(k) = b(k) + th;
x = x(:);

或者上述函数也可以更简洁的用一句matlab代码表示:

soft_thresh = @(b,lambda) sign(b).*max(abs(b) - lambda/2,0);%对matlab比较精通的同学可以解释下。
下面进行对比:

b = [-0.8487-0.33490.55281.0391 -1.1176]';
lambda=2;

soft_thresh(b, lambda)

ans =

0
0
0
0.0391
-0.1176

soft_thresh_cvx(b, lambda)

ans =

-0.0000
-0.0000
0.0000
0.0391
-0.1176

可以看到,两者产生的结果完全一样,我自己也在自己的电脑上试验了一下,前提是需要安装斯坦福大学的凸优化解决包CVX,试验结果和simon的完全一样,CVX的解决时间为0.263894秒,而softthresholding的时间仅仅为0.002016秒,快了130倍!!!

作者Simon在最后提醒说soft thresholding不能简单的用来解决下面形式的问题,
我看Michael的那篇论文中也说了不能上面形式的问题,Michael只是简单的说由于A的存在,加号两边不具有可分离性了,所以不能使用softthresholding了,而Simon说由于A将x进行了一个空间旋转,我们不得不使用更慢的CVX来解决上面的问题,但是好消息是最近被证明AugmentedLagragian Methods(不知道什么东东)可用于避免这一问题,并允许继续使用高效的softthresholding。具体的我就不清楚了。。。哎,数学不好害死人啊,什么时候才能达到大牛们的高度啊。

暂时先写到这吧,

  

爱华网本文地址 » http://www.413yy.cn/a/25101016/287118.html

更多阅读

tp-link无线路由器如何安装 tplink无线路由器桥接

tp-link无线路由器如何安装——简介下面介绍TP-Link路由器安装方法。这里使用TL-R406型路由器做示范。tp-link无线路由器如何安装——工具/原料TP-Link路由器一台计算机一台网线数根tp-link无线路由器如何安装——方法/步骤tp-l

路由器TP-LINK 使用设置方法说明 tp link路由器设置

路由器(TP-LINK)使用设置方法说明——简介通过简单几步,快速设置TP-LINK一类的路由器,实现多台电脑同时上网,免了用猫只能一台电脑上网的烦恼路由器(TP-LINK)使用设置方法说明——工具/原料无需任何辅助工具路由器(TP-LINK)使用设置方法说

如何配置TP-Link TL-R402 路由器 tp link r402

如何配置TP-Link TL-R402 路由器——简介家庭里需要共享网络,不得不利用路由器来实现家庭网络的共享,然而有很多人并对路由器的配置却知之甚少,现在我们就从简单的有线路由配置来讲解吧,举一反三,一通百通。如何配置TP-Link TL-R402 路

TP-LINK无线路由器如何设置安装 tp link无线路由器

TP-LINK无线路由器如何设置安装——简介随着家里数码产品的不断增加及WIFI无线网的普及,现在每个家庭都会配备一台无线路由器,由于路由器在初次使用时需要进行相关的设置,对于没有设置过路由器的朋友可能还会有点困难。本文就以TP-LINK

TP-LINK无线路由器怎么设置密码-通用教程 tplink无线路由器重置

TP-LINK无线路由器怎么设置密码-通用教程——简介虽然每一款无线路由器的设置方法可能有点不一样,当然设置都差不多的,只要稍微了解一点关于设置的语术,就都可以轻松搞定了。同时此片教程也适用于如下问题:路由器密码修改?如何修改路由

声明:《softthresholdingandhardthresholding soft link hard link》为网友傻不拉几萌萌哒分享!如侵犯到您的合法权益请联系我们删除