BB方法 ,即Barzilai-Borwein (BB) method 是梯度下降方法的一种,他主要是通过近似牛顿方法来实现更快的收敛速度,同时避免计算二阶导数带来的计算复杂度:
经典牛顿法:
首先,设$f(x)$二阶连续可微,则在迭代算法中第$k$步,$x_k$处泰勒展开:
$$f(x_k+d_k)=f(x_k)+\nabla f(x_k)^Td_k+\frac{1}{2}(d_k)^T\nabla^2f(x_k)d_k+o(\Vert d_k \Vert^2)$$
如果忽略高阶项,并将上面看成$d_k$的函数再丘其稳定点,则
$$\nabla^2f(x_k)d_k=-\nabla f(x_k)$$
于是,迭代的更新方法为:
$$x_{k+1}=x_k-\nabla^2f(x_k)^{-1}\nabla f(x_k)$$
这种方式称为牛顿法(经典).
拟牛顿法:
然而上述更新方法中国,每一次迭代都需要求解一次逆矩阵,这给计算带来了很大的复杂度。于是可以构造近似矩阵来替换迭代格式中的逆矩阵。
实际上:
$$\nabla f(x_{k-1}) = \nabla f(x_k)+\nabla^2f(x_k)(x_{k-1}-x_k)+o(\Vert x_{k-1}-x_k \Vert^2)$$
令$s_{k-1}=x_k-x_{k-1},y_{k-1}=\nabla f(x_k)-\nabla f(x_{k-1})$,再忽略上式高阶项,得:
$$\nabla^2f(x_k)s_{k-1}=y_{k-1}\text{或}s_{k-1}=\nabla^2f(x_k)^{-1}y_{k-1}$$
于是,此时需要构造一个近似矩阵$H_k$来近似$\nabla^2f(x_k)^{-1}$,且近似地满足:
$$H_k^{-1}s_{k-1}=y_{k-1}\text{或}s_{k-1}=H_ky_{k-1}$$
BB方法:
BB方法的思想就是基于拟牛顿法,实际上是将拟牛顿法中的近似矩阵$H_k$构造成$\alpha_kI$的形式(其中$I$为单位矩阵),那么近似地有:
$$\alpha_k^{-1}s_{k-1}=y_{k-1}\text{或}s_{k-1}=\alpha_ky_{k-1}$$
由于是近似,对于这两种情况,$\alpha_k$可以分别有如下求解形式:
$$\alpha_k^{-1}=\mathop{argmin}_{\beta}\frac{1}{2}\Vert \beta s_{k-1}-y_{k-1} \Vert^2 \Rightarrow \alpha_k^1=\frac{s_{k-1}^Ts_{k-1}}{s_{k-1}^Ty_{k-1}}$$
$$\alpha_k=\mathop{argmin}_{\alpha}\frac{1}{2}\Vert s_{k-1}-\alpha y_{k-1} \Vert^2 \Rightarrow \alpha_k^2=\frac{s_{k-1}^Ty_{k-1}}{y_{k-1}^Ty_{k-1}}$$
这就得到了BB方法的迭代格式:
$$x_{k+1}=x_k-\alpha_k\nabla f(x_k)$$
其中$\alpha_k$有两种选择$\alpha_k^1=\frac{s_{k-1}^Ts_{k-1}}{s_{k-1}^Ty_{k-1}}$和$\alpha_k^2=\frac{s_{k-1}^Ty_{k-1}}{y_{k-1}^Ty_{k-1}}$.
$(s_{k-1}=x_k-x_{k-1},y_{k-1}=\nabla f(x_k)-\nabla f(x_{k-1}))$