那么根据泰勒级数可以得出 gk+1 的元素为
其中 m=1,2,…,n 。接下来如果 f(x) 是二次的,那么 f(x) 的二阶导为常数, gkm 的二阶导为令,所以
又因为
因此我们有
其中 m=1,2,…,n ,也就是
其中 H 是 f(x) 的海森矩阵。或者我们可以写成
其中
上面的分析表明,如果 f(x) 在点 xk,xk+1 处的梯度已知,那么可以得到上面的关系,这给出了矩阵 H 的部分信息。因为 H 中有 n2 个未知量(或者如果 H 是实对称矩阵,那么存在 n(n+1)/2 个未知量),而等式2只提供了 n 个等式,不能唯一的确定 H ,然而,如果对连续 n+1 个点的梯度进行估计,也就是点 x0,x1,…,xn ,使得 x 的变化量组成一个线性无关向量的集合,那么我们就有充分的信息来唯一的确定 H ,其中 x 的变化量就是
为了证明这个事实,我们将等式2给出的 n 个等式重新写成
因此
如果 δ0,δ1,…,δn−1 构成一个线性无关向量集,那么解就存在。
利用上面的原则可以构造下面的算法:
上面的算法基本上是牛顿法的实现,唯一的不同是利用数据来得到 H−1 。对于凸二次问题,上面的算法一次迭代就得的问题的解,因此非常有效,然而对于非二次问题,同基于牛顿法的其他一样,它也存在相同的缺点。首先需要矩阵的逆,其次必须检查 Hk 的正定性。
下面介绍一种消除矩阵逆的策略。假设已知正定实对称矩阵 Sk , H−1 的近似值,然后计算拟牛顿方向为
然后求 α ,也就是最小化 f(xk+αdk) 的 α 值。对于凸二次问题,
其中 Sk,H 是正定的。显然,当 xk 不是问题的解 x∗ 时, αk 大于零,然后确定 x 的变化量为
根据等式1得到新点 xk+1 。通过计算 xk,xk+1 处的梯度,利用等式4得到梯度的变化量 γk ,接下里对 Sk 进行修正得到
其中 Ck 是 n×n 修正矩阵,从数据计算得出的。从初始点 x0 ,初始正定矩阵 S0,S0=In 开始,迭代使用上面的过程,得到序列 δ0,δ1,…,δk,γ0,γ1,…,γk,S1,S2,…,Sk+1 。如果
然后对于 k=n−1 ,我们可以写作
或者
根据等式5与11可得
接下来如果 k=n ,等式6到8得到
所以根据等式1可得
上面的过程产生了一族拟牛顿算法,他们有一个基本属性:对于凸二次问题, n+1 次迭代内中止,根据修正矩阵 Cn 的差异从而得出各种各样的算法。
对于任何 Cn , Sk+1 必须满足等式10,并且下面的属性也是我们想要的:
第一个属性确保共轭方向的性质能够应用到拟牛顿法上,第二个属性确保每次迭代中 dk 是下降方向。为了证明这个事实,考虑点 xk+δk 并令
其中
对于 α>0 ,泰勒级数给出
其中 c 是常数, 0≤c≤1 。消除 δk ,我们得到
其中 o(α∥dk∥) 是余项,比 α∥dk∥ 更快接近零。接下来如果 Sk 是正定的,那么对于充分小的 α>0 ,我们有
因为 α>0,gTkSkgk>0,o(α∥dk∥)→0 ,因此
也就是说如果 Sk 是正定的,那么 dk 是下降方向。
从这点来说,属性2的重要性就很明显了。正定矩阵 S0 将产生正定矩阵 S1 ,然后产生正定矩阵 S2 ,如此不断进行,最后方向 d0,d1,d2,… 将都是下降方向,这就确保算法能够收敛。