关闭

近邻算子的方法应用和比较——优化算法

标签: 优化近邻算子Proximal Gradient MeADMM
1184人阅读 评论(0) 收藏 举报
分类:

I use three methodsto solve the problem to contrast.

1.      ProximalGradient Method

2.      AlternatingDirection Method of Multipliers(ADMM)

3.      CVX

 

the problem:

(1). Proximal Gradient Method

introduction: Proximal gradientmethods are a generalized form of projection used to solve non-differentiableconvex optimization problems. Many interesting problems can be formulated asconvex optimization problems of form


(2). ADMM


(3).CVX

 I use the toolbox of matlab to solve theproblem as one of the reference solution. In the decrementof objective function w.r.t. iteration, I use CVX as the True solution and drawit a horizon line.

the algorithon:

 

cvx_begin quiet

        cvx_precision low

        variable x(n)

        minimize(0.5*x.'*A*x + b.'*x + c +gamma*norm(x,1))

cvx_end

 

result of picture:

the 2D contour plot of objective functionand the trajectory of the value update:



decrement of objective function w.r.t.iteration:


CVXtime elapsed: 0.19 seconds.

Proximalgradient time elapsed: 0.00 seconds.

ADMMtime elapsed: 0.02 seconds.

 

 

附件:

1.Proximal Gradient Method(proximalGradient.m)

function[x,h]=proximalGradient(A,b,c,gamma)

%%解决 1/2*X'AX+b'X+c+gamma(normx,1)

%% A:n*n   X:n*1

MAX_ITER =400;

ABSTOL   = 1e-6;

RELTOL   = 1e-2;

 

f = @(x)0.5*(x'*A*x)+b'*x+c;%%为了确定线搜索步长

lambda = 1;

beta = 0.5;

[~,n]=size(A);

tic;

x = zeros(n,1);

xprev = x;

for k = 1:MAX_ITER

     while 1

        grad_x = 0.5*(A+A')*x+b;

        z = soft_threshold(x - lambda*grad_x,lambda*gamma);%%迭代更新x

        if f(z) <= f(x) + grad_x'*(z - x) +(1/(2*lambda))*(norm(z - x))^2

            break;

        end

        lambda = beta*lambda;

    end

    xprev = x;

    x = z;

    h.x_iter(k,:) = x;

    h.prox_optval(k) = objective(A, b,c, gamma,x, x);

    if k > 1 && abs(h.prox_optval(k)- h.prox_optval(k-1)) < ABSTOL

        break;

    end

end

 

h.x_prox = x;

h.p_prox =h.prox_optval(end);

h.prox_iter =length(h.prox_optval);

h.prox_grad_toc =toc;

 

end

 

2.ADMM (ADMM.m)

function[x,h]=ADMM(A,b,c,gamma)

%%解决 1/2*X'AX+b'X+c+gamma(normx,1)

%% A:n*n   X:n*1

MAX_ITER =400;

ABSTOL   = 1e-4;

RELTOL   = 1e-2;

 

%f = @(x)0.5*(x'*A*x)+b'*x+c;%%为了确定线搜索步长

lambda = 1;

beta = 0.5;

[~,n]=size(A);

tic

x = zeros(n,1);

z = zeros(n,1);

u = zeros(n,1);

rho = 1/lambda;

for k = 1:MAX_ITER

    while 1

        x = inv(A + rho.*eye(n))*(rho*(z-u)-b);

        z_old = z;

        z = soft_threshold(x+u,lambda*gamma);

        u = u+x-z;

        h.admm_optval(k) = objective(A, b,c,gamma, x, x);

        h.r_norm(k)   = norm(x - z);

        h.s_norm(k)   = norm(-rho*(z - z_old));

        h.eps_pri(k)  = sqrt(n)*ABSTOL + RELTOL*max(norm(x),norm(-z));

        h.eps_dual(k) = sqrt(n)*ABSTOL +RELTOL*norm(rho*u);

        h.x_iter(k,:) = z;

        ifh.r_norm(k)<h.eps_pri(k)&&h.s_norm(k)<h.eps_dual(k)

            break;

        end

       

    end

end

h.x_admm = z;

h.admm_iter =length(h.admm_optval);

h.p_admm =h.admm_optval(end);

h.admm_toc = toc;

end

 

3.CVX(cvx_optimal.m)

function [x,h] =cvx_optimal(A,b,c,gamma)

    [~,n]=size(A);

    tic

    cvx_begin quiet

        cvx_precision low

        variable x(n)

        minimize(0.5*x.'*A*x + b.'*x + c +gamma*norm(x,1))

    cvx_end

    h.x_cvx = x

    h.p_cvx = cvx_optval

    %h.p_cvx = objective(A, b,c, gamma, x, x)

    h.cvx_toc = toc

end

 

4.objective function(objective.m)

function p =objective(A, b,c, gamma, x, z)

%UNTITLED5 Summaryof this function goes here

%   Detailed explanation goes here

    p=0.5*(x'*A*x)+b'*x+c+ gamma*norm(z,1);

end

 

5. soft-threshold (soft_threshold.m)

function[X]=soft_threshold(b,lambda)

%UNTITLED4 Summaryof this function goes here

%   Detailed explanation goes here

    X=sign(b).*max(abs(b) - lambda,0);

end

 

0
0
查看评论

Moreau-Yosida 正则化和近似算子(proximal operator)

强凸函数(strongly convex):ff 凸函数且存在常数c>0c>0,使得 f(λx+(1−λ)y)≤λf(x)+(1−λ)f(y)−12λ(1−λ)||x−y||2f(\lambda x+(1-\lambda)y)\leq \lambda f(x)+(1-\lambda)f...
  • Liang_Ling
  • Liang_Ling
  • 2017-10-01 15:59
  • 412

基于近邻算子的凸优化

  • 2016-08-02 14:32
  • 2KB
  • 下载

近邻算子的方法应用和比较——优化算法

I use three methodsto solve the problem to contrast. 1.      ProximalGradient Method 2.      Alter...
  • liuheng0111
  • liuheng0111
  • 2016-08-28 23:21
  • 1184

目标识别

1.研究意义 众所周知,当前是信息时代,信息的获得、加工、处理以及应用都有了飞跃发展。人们认识世界的重要知识来源就是图像信息,在很多场合,图像所传送的信息比其他形式的信息更丰富、真切和具体。人眼与大脑的协作使得人们可以获取、处理以及理解视觉信息,人类利用视觉感知外界环境信息的效率很高。事实上,据一...
  • liuheng0111
  • liuheng0111
  • 2016-08-28 23:15
  • 7943

深度学习中常见的优化算法比较

SGD Basic SGD the baisc sgd is: # Vanilla update x += - learning_rate * dx Momentum Update Momentum update&#...
  • lanyu_sola
  • lanyu_sola
  • 2017-05-05 13:29
  • 599

几种图像边缘检测算子的比较

不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界。有可能有边缘的地方并非边界,也有可能边界的地方并无边缘,因为现实世界中的物体是三维的,而图像只具有...
  • sinat_32974931
  • sinat_32974931
  • 2016-04-11 21:02
  • 2467

概率图模型在图像处理中的应用

1.概率图模型简介: 概率图模型是图灵奖获得者Pearl开发出来的用图来表示变量概率依赖关系的理论。概率图模型理论分为概率图模型表示理论,概率图模型推理理论和概率图模型学习理论。        概率图理论共分为三个部分,分别为概率图模型...
  • liuheng0111
  • liuheng0111
  • 2016-08-28 23:32
  • 1994

最近邻点比次近邻点

sift特征点直接运用BruteForce方法进行匹配会出现很多错误,因此我们运用最近邻点比次近邻点进行限制,可大大提高特征点匹配的正确率。  即:bestmatch BFMatcher matcher(NORM_L2, false);//定义一个匹配对象 vectorvect...
  • m0_37598482
  • m0_37598482
  • 2017-12-27 20:51
  • 27

智能优化算法总结

优化算法有很多,经典算法包括:有线性规划,动态规划等;改进型局部搜索算法包括爬山法,最速下降法等,模拟退火、遗传算法以及禁忌搜索称作指导性搜索法。而神经网络,混沌搜索则属于系统动态演化方法。梯度为基础的传统优化算法具有较高的计算效率、较强的可靠性、比较成熟等优点,是一类最重要的、应用最广泛的优化算法...
  • Sinde1992
  • Sinde1992
  • 2015-12-15 21:56
  • 13335
    个人资料
    • 访问:133695次
    • 积分:1802
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:184篇
    • 译文:0篇
    • 评论:15条
    最新评论