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

掌握机器学习数学基础之优化基础(二)

目录:

计算复杂性与NP问题

上溢和下溢

导数,偏导数及两个特殊矩阵

函数导数为零的二三事

方向导数和梯度

梯度下降法

牛顿法

读完估计需要10min,这里主要讲解第二部分,剩下部分期待下期~

函数导数为零的二三事

注意:为了便于理解,下面将详细分析导数为0在低维的情况,而在高维情况下都是类似的。下面先介绍一些概念:

以上都是在一元函数中的定义,如下图所示,而二维或以上可简单推之:

鞍点 (saddle point):目标函数在此点上的梯度(一阶导数)值为 0, 但从改点出发的一个方向是函数的极大值点,而在另一个方向是函数的极小值点。

为什么叫做鞍点?鞍点这词来自于不定二次型的二维图形,它的形状就像马鞍,而鞍点就是中心那个点,图中x轴方向往上曲,在y轴方向往下曲。这样也让我们更容易理解。

判断鞍点的一个充分条件是:函数在鞍点处的Hessian矩阵为不定矩阵。这样为什么在这里不做详细解释,有兴趣可以了解。

图来自《deep learning》

上图列出临界点的类型。在一维情况下,三种临界点的示例。临界点是斜率为零的点。这样的点可以是 局部极小点(local minimum),其值低于相邻点; 局部极大点(local maximum),其值高于相邻点; 或鞍点,同时存在更高和更低的相邻点

使 f(x) 取得绝对的最小值(相对所有其他值)的点是 全局最小点。函数可能有一个全局最小点或存在多个全局最小点,还可能存在不是全局最优的局部极小点。在机器学习和深度学习的背景下,我们要优化的函数可能含有许多不是最优的局部极小点,或者还有很多处于非常平坦的区域内的鞍点。尤其是当输入是多维的时候,所有这些都将使优化变得困难。因此,我们通常寻找使 f非常小的点,但这在任何形式意义下并不一定是最小。方向导数和梯度方向导数和梯度

图来自《deep learning》

上图展示了近似最小化,当存在多个局部极小点或者平坦区域时,优化算法可能无法找到全局最小点,在机器学习和深度学习中,即使找到的解不是真正最小的,但只要它们对应于代价函数显著低的值,我们通常就能接受这样的解。

这些知识点都是基本知识,不做过多解释,低维的我们理解了,高维的就类推就行了,比如高维也临界点也有局部最优或者鞍点的情况。但在深度学习中优化算法比如SGD往往可以避免鞍点,然后使得其效果不错,这也是深度学习为什么可行的一个原因吧。

方向导数和梯度:

方向导数:在之前讲偏导数的时候,相信很多人已经看出,偏导数求的都是沿着坐标轴的变化率,不管多少维也好,都只是求的变化率,那现在问题来了,如果我想求在某个方向而不是沿着坐标轴方向的变化率怎么求呢?那方向导数,简单来说,就是我们指定任意一个方向,函数对对这个任意方向的变化率.

或者说,如下图,我们知道在一维的时候,函数的导数就是在某点对应切线的斜率,那么对于函数f(x,y)的 A点在这个方向上也是有切线的,其切线的斜率就是方向导数。当然,注意这个切线是任意的,这里我们要限定其方向,也就是图中中的矢量y的方向。

梯度:是一个矢量或者说是一个向量,其方向上的方向导数最大,其大小正好是此最大方向导数。

梯度的理解很重要,很重要,很重要!下面解决两个问题,梯度怎么求和梯度有什么用?

怎么算?--(介绍一种比较简单之间的方法)

梯度有什么用?

简单的讲,假如你在一座山上,蒙着眼睛,但是你必须到达山谷中最低点的湖泊,你该怎么办?然后我们想到一个简单的方法,在每走一步时,都是走那个离谷底最近的那个方向,那怎么求才能使得每一步都下降更大的高度,这个时候我们就完全可以用梯度来帮助我们,就可以完成任务啦!

当然了,我们是在写机器学习数学基础呐,你会说下山有什么用,我们看这篇文章又不是为了下山的。Emmm...别急,之后我们就讲会梯度的大用处

这两个概念非常重要,下面的优化算法的前提就是梯度,要重点理解。

AI遇见机器学习

mltoai

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券