Mirror Descentアルゴリズム(Matlab実装)


Mirror Descentアルゴリズム(Matlab実装)
主にMirror descentを参照します.フレームを統一したfirst order methods
  • 一般的な場合のMirror Descentアルゴリズム
  • function x = MirrorDescent(x, lr, gradient, Lipschitz, BregmanDiv, BreDivFun)
    % f    ,   L      
    % x:    
    % lr:    
    % gradient:  (     )
    % Lipschitz:        
    % BregmanDiv:Bregman  
    % BreDivFun:Bregman     
    % return x:      
    fun_y = @(y) lr .* gradient .* y + Lipschitz * BregmanDiv(y, x, BreDivFun);
    x = fminbnd(fun_y,  x-10, x+10);
    end
    
  • は、Nesterov加速Mirror Descentアルゴリズム
  • を使用している.
    function x = MDNesterov(x, z, lr, gradient, Lipschitz, BregmanDiv, BreDivFun)
    % f    ,   L      ,    
    % x:    
    % lr:    
    % gradient:  (     )
    % Lipschitz:        
    % BregmanDiv:Bregman  
    % BreDivFun:Bregman     
    % return x:      
    % z = x;
    x_ = (1 - lr) * x + lr * z;
    fun_y = @(y) lr * gradient(x_) .* y + Lipschitz * BregmanDiv(y, z, BreDivFun);
    z = fminbnd(fun_y,  x_ - 10, x_ + 10);
    x = (1 - lr) * x + lr * z;
    end