zoukankan      html  css  js  c++  java
  • liblinear中的信赖域算法

    • 求方程 (H s = -g), H是hessian矩阵, g 为梯度, 残量 (r = -g -Hs)

    • s的初值为0,理论上,共轭梯度每步迭代使得(|s|) 单调增加,共轭梯度的迭代停止条件: $$ | r | < tol, quad or quad |s + delta_s | > Delta $$

    • 给定参数: $ eta_0 = 1e-4, eta_1 = 0.25, eta_2 = 0.75; sigma_1 = 0.25, sigma_2 = 0.5, sigma_3 = 4;$

    • 预期下降 prered: (-q(s)), 这里 (q(s) = frac12 s'Hs+g.s = frac12(g.s - r.s))

    • 实际下降 actred: f(w) - f(w+s)

    • $ ho = prered / actred $, (alpha = -frac{g.s} {2 (f(w+s) - f(w) - g.s)})(f(w + alpha s ))的二次插值函数(phi(alpha))的最小值点。

    • 实际代码做修正:(alpha = max(sigma_1, alpha)) if (f(w+s) -f(w) - g.s>0) else $sigma_3 $。这个修正符合论文观点,信赖域预估太准确效果提升不明显,不如直接选大一点,SimpleTR的策略效果很好。

    • 更新信赖域半径:

    [Delta_{k+1} = egin{cases} min( max(alpha,sigma_1)|s^k|, sigma_2Delta_k ), & ext{if } ho < eta_0\ max(sigma_1Delta_k, min(alpha|s^k|, sigma_2Delta_k) ), & ext{else if } ho < eta_1\ max( sigma_1Delta_k, min(alpha |s^k|, sigma_3Delta_k) ), & ext{else if } ho < eta_2\ max(Delta_k , min(alpha|s^k|, sigma_3Delta_k)), & ext{else if not reach_boundary } \ sigma_3Delta_k , & ext{else } \ end{cases} ]

    • 更新w: if ( ho >eta_0), w = w + s

    参考

  • 相关阅读:
    Python运算符及逻辑运算
    Python编码、流程控制、格式化输出
    Docker私有仓库Harbor部署与使用
    react
    理事会
    关于elementui form表单过长,看不到未填项
    js
    vue 父子传值
    养生
    html知识点
  • 原文地址:https://www.cnblogs.com/bregman/p/6879043.html
Copyright © 2011-2022 走看看