首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机器学习数学补脑汁(七)-最优化方法

机器学习最常用的优化方法是梯度下降法,如下图所示:

它属于 一阶优化算法。

一阶优化算法(first-order optimization algorithms):仅使用梯度信息优化的算法称为一阶优化算法,如梯度下降算法。

一阶导数就是梯度。通俗来说,梯度就是表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在当前位置的导数。局部下降最快的方向就是梯度的负方向。其中的数学知识包括一阶泰勒展开式,线性近似和向量相乘最小化的思想。

另外一种常见的算法,是牛顿法。牛顿法属于二阶优化算法。

二阶优化算法(second-order optimization algorithms):使用海森矩阵优化的算法称为二阶优化算法,如牛顿方法。

那么梯度下降法与牛顿法的差别有哪些?

先看公式: 第一行是 梯度下降法,第二行是牛顿法。

梯度下降算法是将函数在 xn 位置进行一次函数近似,也就是一条直线。计算梯度,从而决定下一步优化的方向是梯度的反方向。(一阶)

牛顿法是将函数在 xn 位置进行二阶函数近似,也就是二次曲线。计算梯度和二阶导数,从而决定下一步的优化方向。(二阶)

如下图所示:

梯度下降法

牛顿法

牛顿法相比梯度下降法有什么优势呢?

a、从公式看 不需要学习率

b、可以利用曲线性质,下降速度更快

但是,总的来说,基于梯度下降的优化算法,在实际应用中更加广泛一些,例如 RMSprop、Adam等。但是,牛顿法的改进算法,例如 BFGS、L-BFGS 也有其各自的特点,也有很强的实用性。

那这是为什么呢?一般说来有以下原因。

1、牛顿法需要计算梯度和Hessian矩阵及其逆,难以求解,特别是深度学习神经网络中;

2、Hessian矩阵维度大,占用内存非常大

3、神经网络是 非凸优化问题,鞍点相对于局部最小值的数量非常多,而二阶优化算法是寻找梯度为0,容易陷入鞍点。

需要了解的概念还有:

雅可比矩阵(Jacobian):有时候我们需要计算输入和输出都为向量的函数的所有偏导数。包含这样偏导数的矩阵称为雅可比矩阵。

海森矩阵(Hessian):一阶导数看单调性,二阶导数看凹凸性。有时候,我们可能会对二阶导数比较感兴趣。当我们的函数具有多维输入,二阶导数也有很多,我们可以对这些导数合并成一个矩阵,就是海森矩阵。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180814G19SZ700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券