基于梯度的优化方法浅析
(最近上课,老师具体讲了下梯度下降的相关内容。课下自己整理一下,以备后来参考。)
一、优化的定义
-
优化是指改变x以最小化或最大化某个函数**f(x)的任务。通常以最小化f(x)指代大多数最优化问题。最大化可经由最小化算法最小化-f(x)**来实现。
-
使得f(x)取到绝对的最大值(相对于所有其他值)的点是全局最小点。但往往在深度学习中,我们要优化的函数可能含有许多不是最优的局部极小点,当存在多个局部极小点或平坦区域时候,优化算法可能无法找到全局最小点。我们只需要找到其对应于代价函数显著低的值,通常我们接受这样的解(即近似最小化)。
二、最速下降法
- 当我们面临具有多维输入的函数最小化问题时:f:R^n => R.为了使“最小化”有意义,输出必须是一维的向量。
1.偏导数
针对具有多为输入的函,我们需要用到偏导数。
我们所说的偏导数就是指的是多元函数沿坐标轴的变化率.
-
Fx(x,y)指的是函数在y方向不变,函数值沿着x轴方向的变化率。
-
Fy(x,y* 指的是函数在x方向不变,函数值沿着y轴方向的变化率。
如下图:
注意:偏导数是具有其局限性的,局限在其只对曲线被平面所截的曲面中对x或y轴的斜率。
2.方向导数
- 方向导数其范围就大很多了,远远超于偏导数。我们可以用对x方向的偏微分和对y方向的偏微分来得到任意方向上的斜率。
- 假设我们要求出在曲面z=f(x,y)上某处u方向上的斜率:
用上述公式即可表达,其中角度为此向量与x轴正向夹角。
接下来就可以写出该方向导数的定义:此方向导数为: - 当然还可以用偏微分来表示:
- 接下来就让我们来求在平面上,函数沿着那个方向变化率最大。
那么此时如果方向导数要取得最大值,也就是当α为0度的时候,也就是向量I这个方向是一直在变,在寻找一个函数变化最快的方向)与向量A(这个方向当点固定下来的时候,它就是固定的)平行的时候,方向导数最大。
3.计算
-
梯度:f的导数是包含所有偏导数的向量,记为
-
在 u (单位向量)方向的方向导数 (directional derivative)是函数f在 u 方向的斜率。换句话说,方向导数是函数 关于α的导数(在α=0时取得)。
使用链式法则,我们可以看到当α=0时,那么此时如果要取得最大值,也就是当α为0度的时候
为了最小化f,我们希望找到使f下降得最快的方向。计算方向导数:
其中θ是 u 与梯度的夹角。将 代入,并忽略与 u 无关的项,就能简化得到 这在 u 与梯度方向相反时取得最小。换句话说,梯度向量指向上坡,负梯度向量指向下坡。我们在负梯度方向上移动可以减小f。这被称为最速下降法 (method of steepest descent)或梯度下降 (gradient descent)。
最速下降建议新的点为
4.参考:1.【DEEPLEARNING】4.3 基于梯度的优化方法
2.https://www.zhihu.com/question/36301367【侵权则删】
(如有不正,请指正 2021/3/30)
标签:函数,导数,梯度,最小化,方向,优化,浅析,向量 来源: https://blog.csdn.net/weixin_45759682/article/details/115321732
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。