共轭梯度算法(CG算法)

采用以下计算步骤

给定函数 $f(x)$, 去求该函数的极小值点. 这里面假设了 $f(x)$ 是一个二次偏导数存在的函数. 首先我们计算 $\nabla f$ 和 $H(f)$, 其中 $H(f)$ 是 $f$ 的 Hessen 矩阵

  1. 取定初始点 $x_0$, 计算 $d_0 = -\nabla f(x_0)$ . (这里的负号很关键!!!)
  2. $\nabla f(x_0 + t d_0) \cdot d_0 = 0$ 计算 $t$, 或者当 $f$ 为正定二次函数时采用公式 $$t = \frac{\nabla f(x_0) \cdot \nabla f(x_0)}{d_0 H(f) d_0 }$$
  3. 得到 $x_1 = x_0 + t d_0$, 并计算 $\nabla f(x_1)$, 我们想去求下一次的搜索方向 $d_1 = – \nabla f(x_1) + \alpha d_0$ (这里的负号很关键!!!)
  4. 这里的 $\alpha$ 应该这么计算 $$\alpha = \frac{\nabla f(x_1) \cdot \nabla f(x_1)}{\nabla f(x_0)\cdot \nabla f(x_0)}$$ (这个称为 FR 公式, 是计算 $\alpha$ 的最简单的公式)
  5. 下面计算 $t$ 和 $x_2$ 就是类似的去做
  6. 当 $\nabla f(x_k) = 0$ 时终止, $x_k$ 就是要找的极值点.
0 Shares:
发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

You May Also Like