Mirror Descentアルゴリズム(Matlab実装)
971 ワード
Mirror Descentアルゴリズム(Matlab実装)
主にMirror descentを参照します.フレームを統一したfirst order methods一般的な場合のMirror Descentアルゴリズム は、Nesterov加速Mirror Descentアルゴリズム を使用している.
主にMirror descentを参照します.フレームを統一したfirst order methods
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
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