陈宝林《最优化理论与算法》超详细学习笔记 (一)————第十章 使用导数的最优化方法(最速下降法、牛顿法、阻尼牛顿法)
写在前面
最优化理论与算法是一个重要的数学分支,顾名思义,这是一门研究在众多解决方案中确定什么样的方案是最优方案以及如何找到最优方案的学科。现如今,随着计算机科学的飞速发展,最优化理论与算法也迅速发展起来,成为了求解的有力工具,发挥着越来越来的作用。于是,为了给机器学习提供有力的理论支撑,现以清华大学出版社出版、 陈宝林编著的《最优化理论与算法》 为教材,开始学习这门课。学习的顺序根据同时在学习的《机器学习》的需要有所调整。
第十章 使用导数的最优化方法
在解决无约束问题的算法中,大致可以分为两类:一类要利用目标函数的导数,另一类只用到目标函数,称为直接方法。本章学习的是前一类使用导数的最优化方法中的最速下降法、牛顿法、阻尼牛顿法。
最速下降法
为了求解目标函数的最小值时,从点 x 0 x_0 x0出发,我们可以自然地想到沿着函数值在 x 0 x_0 x0点下降最快的方向有利于尽快找到极小值点,于是数学家们根据这一思想提出了最速下降法。
对于刚刚说的“下降最快方向”,根据高等数学知识,一般地(指欧式度量意义)在负梯度方向下为最速下降方向,即:
d = − ∇ f ( x ) \textbf{d}=-∇f(\textbf{x}) d=−∇f(x)
回到刚开始的设想,现在我们找到了下降最快的方向来寻找最小值点,显然我们要经过多次寻找来逐渐逼近极小值点,所以要从 x 0 \textbf{x}_0 x0沿最速下降方向搜索多远找到下一个点 x 1 \textbf{x}_1 x1呢?
我们不妨假设变量𝜆,称为一维搜索的步长:
x 1 = x 0 + λ d 0 \textbf{x}_1=\textbf{x}_0+\lambda \textbf{d}_0 x1=x0+λd0
也就是说 x 1 x_1 x1是关于𝜆的变量,那么 f ( x 1 ) f(\textbf{x}_1) f(x1)也是关于𝜆的变量,由于求目标函数的最小值,所以我们在此令 f ( x 1 ) f(\textbf{x}_1) f(x1)取最小值,求此时的𝜆,即:
λ 0 = argmax λ f ( x 1 ) \mathop{\lambda _0=\underset{\lambda}{\operatorname{argmax}} f(x_1)} λ0=λargmaxf(x1)
于是,我们可以得到,以此类推:
x 2 = x 1 + λ 1 d 1 \textbf{x}_2=\textbf{x}_1+\lambda _1 \textbf{d}_1 x2=x1+λ1d1
… … …… ……
当最速下降方向的模足够小时,我们认为已经足够逼近最小值点,即:
∥ d k ∥ < ϵ \| \textbf{d}_k\|<\epsilon ∥dk∥<ϵ
停止迭代,最小值点为 x k \textbf{x}_k xk。
所以,最速下降算法步骤为:
- 给定初始点 x 0 \textbf{x}_0 x0,允许误差 ϵ > 0 \epsilon>0 ϵ>0,置 k = 0 k=0 k=0;
- 计算搜索方向 d k = − ∇ f ( x k ) \textbf{d}_k=-∇f(\textbf{x}_k) dk=−∇f(xk);
- 如果 ∥ d k ∥ < ϵ \| \textbf{d}_k\|<\epsilon ∥dk∥<ϵ,则停止运算;否则,从 x k \textbf{x}_k x