机器学习萌新必备的三种优化算法(牛顿法、梯度下降法、最速下降法)

找到一个合理的优化算法是机器学习的重要问题,本文从理论角度来选择优化算法

推荐斯坦福大学凸优化课程:https://study.163.com/course/introduction.htm?courseId=1006397029#/courseDetail?tab=1

对待优化函数的基本假设:一般假设我们处理的函数的导数是连续的。对于牛顿法,函数的二阶导数必须也是连续的,我们假设函数是凸函数,从而保证局部最优解也是全局最优解。

  • 1.牛顿法:

           单变量:x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)}

           多变量:对于单变量的情况,牛顿法比较可靠。x_{n+1}=x_n-H^T *g(x_n)

                         由于矩阵转换的算法复杂度是非常高的,因此牛顿法并不适用

  • 2.梯度下降:机器学习中最常见的优化算法,在每次迭代中像梯度方向走一小步,同时包括学习率learning_rate.

x_{n+1}=x_n- lr * gradient(x_n)

           在这里,lr是每次迭代中更新x_n时都需要使用的super parameter, 过大可能会越过最优点,并离最优点越来越远,过小则需            要多次迭代才能达到最优点。

  • 3.最速下降法:与梯度下降法相似,要求每次迭代时步长的值为最优。

          g(\alpha_k)=min g(\alpha)=f(x_n-\alpha*\bigtriangledown f(x_n))

          x_{n+1}=x_n-\alpha_k*gradient(x_n)

          因此,在对原始函数进行优化时,我们需要在每一次迭代中对一个内部函数进行优化。这样做的优点是,这个内部优化函             数是一个单变量函数,它的优化不会非常复杂(例如,我们可以使用牛顿法来作为这里的函数)。但是在更多情形下,在             每一步中优化这个函数都会带来比较昂贵的花销。

          二次式函数的特殊情形:

 

          最速下降法算法远远满足了超参数调优的需求,并且保证能找到局部最小值。但是为什么该算法应用不多呢?最速下降法             的问题在于,每一步都需要对 aplha_k 进行优化,这样做的成本相对高昂。

 

          例如,对于二次函数,每次迭代都需要计算多次矩阵乘法以及向量点乘。但对于梯度下降,每一步只需要计算导数并更新             值就可以了,这样做的成本远远低于最速下降算法。

 

          最速下降算法的另一个问题是对于非凸函数的优化存在困难。对于非凸函数,aplha_k 可能没有固定的值。

       梯度下降与最速下降的比较:

  • 时间花销:梯度下降法的速度比最速下降法略快(几秒或几分钟)。但更重要的是,最速下降法采取的步长比梯度下降法更加合理,尽管梯度下降法的α的值并非最优。在此情形中,我们在每次迭代使用更少的步数就能逼近最优值。事实上,如果你的目标是估计最优值,最速下降法会比梯度下降法更合适。对于低维度的函数,10步的最速下降法就会比经过1000次迭代的梯度下降法更接近最优值。

 

 

 

你可能感兴趣的:(机器学习萌新必备的三种优化算法(牛顿法、梯度下降法、最速下降法))