一、梯度下降法

梯度下降算法的思想,它将按如下操作达到最低点:

  1. 明确自己现在所处的位置。
  2. 找到相对于该位置而言下降最快的方向。
  3. 沿着第二步找到的方向走一小步,到达一个新的位置,此时的位置肯定比原来低。
  4. 回到第一步。
  5. 终止于最低点。

从数学角度来看,多元函数的梯度方向是函数增长最快的方向,那么梯度的反方向就是函数减少最快的方向。

以二元函数为例:

z=f(x,y)z = f(x,y)z=f(x,y)

现在确定一个点 (x0,y0)(x_{0},y_{0})(x0​,y0​),这个点是水平面上的,即在 xoyxoyxoy 平面上,考虑在这个点上,往平面的哪个方向走相同的
一小段距离,对应的函数值 zzz 会是最小。

或者:以 (x0,y0)(x_{0},y_{0})(x0​,y0​) 为圆心,画一个小半圆,圆上哪个点对应的 zzz 值会最小?

了解了梯度,可知在梯度反方向走一小段距离对应的函数值将会最小。这就相当于贪心算法,我每次都走的是局部最小,那走到

最后必然也是局部最小的。当然这样做无法保证全局最优,在不同的位置进行梯度下降,找到的“最小值”都可能会不同。

l=−(∂f∂x,∂f∂y)l = -(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y})l=−(∂x∂f​,∂y∂f​)

我们代入具体的值,即将 x=x0,y=y0x = x_{0},y = y_{0}x=x0​,y=y0​ 代入就会得到一个具体的向量,这个向量以原点为起始点,它的模代表该点在

该方向上的变化率。将这个具体的向量表示成如下形式:

l0=−(∂f∂x0,∂f∂y0)l_{0} = -(\frac{\partial f}{\partial x_{0}},\frac{\partial f}{\partial y_{0}})l0​=−(∂x0​∂f​,∂y0​∂f​)

设 α\alphaα 是移动的距离和向量 l0l_{0}l0​ 模长的一个比例,用它来控制点 (x0,y0)(x_{0},y_{0})(x0​,y0​) 在 l0l_{0}l0​ 上移动的距离,即移动的距离为

d=α⋅∣l0∣,α>0d = \alpha \cdot |l_{0}|, \alpha > 0d=α⋅∣l0​∣,α>0

那么此时 (x0,y0)(x_{0},y_{0})(x0​,y0​) 的坐标会变成这样:

x0=x0−α⋅∂f∂x0y0=y0−α⋅∂f∂y0x_{0} = x_{0} - \alpha \cdot \frac{\partial f}{\partial x_{0}} \\y_{0} = y_{0} - \alpha \cdot \frac{\partial f}{\partial y_{0}}x0​=x0​−α⋅∂x0​∂f​y0​=y0​−α⋅∂y0​∂f​

这很容易理解,我们移动射线上的 ddd 距离,将它进行分解,相当于各个分量也移动相同比例的距离。


那迭代到什么时候停止呢?

可以设置一个精度,当迭代到某一个点时,如果求出的梯度向量的模小于这个精度,就停止迭代,这个模代表的是函数值在该方向的变化率。

当变化率很小的时候,即坡度很平了,就认为达到局部最小。

二、由泰勒公式推导梯度下降法

梯度下降法的背后,其实还是离不开多元函数的一阶泰勒展开以及函数的线性近似的思想。

通过一阶泰勒展开式,利用线性近似和向量相乘最小化的思想搞懂梯度下降算法的数学原理。

一个函数的泰勒展开式为:

f(x)=f(x0)0!+f′(x0)1!(x−x0)+f′′(x0)2!(x−x0)2+f(3)(x0)3!(x−x0)3+⋯+f(n)(x0)n!(x−x0)n+ξ=∑i≥0f(i)(x0)i!(x−x0)i\begin{aligned}f(x) &= \frac{f(x_0)}{0!} + \frac{f^{'}(x_0)}{1!} (x - x_0) + \frac{f^{''}(x_0)}{2!} (x - x_0)^2 + \frac{f^{(3)}(x_0)}{3!} (x - x_0)^3 + \cdots + \frac{f^{(n)}(x_0)}{n!} (x - x_0)^n + \xi= \sum_{i \ge 0} \frac{f^{(i)}(x_0)}{i!}(x - x_0)^i\end{aligned}f(x)​=0!f(x0​)​+1!f′(x0​)​(x−x0​)+2!f′′(x0​)​(x−x0​)2+3!f(3)(x0​)​(x−x0​)3+⋯+n!f(n)(x0​)​(x−x0​)n+ξ=i≥0∑​i!f(i)(x0​)​(x−x0​)i​

现在我们只考虑展开到一阶的情形:

f(x)=f(x0)+f′(x0)(x−x0)f(x) = f(x_{0}) + f^{'}(x_{0})(x - x_{0})f(x)=f(x0​)+f′(x0​)(x−x0​)

因为泰勒公式反映的是函数在展开点处的局部性质,所以这个一阶的泰勒近似是在 x0x_{0}x0​ 的小邻域内近似效果较好,因此迭代的步伐不能

迈得过大,太大的话,x0x_{0}x0​ 处近似的精度就失效了。

现在我们用这个一阶的泰勒展开式来代替函数在 x0x_{0}x0​ 局部区域内的函数,那下一个点该怎么选才能使函数值下降最大呢?

当确定 x0x_{0}x0​ 后,f(x0)f(x_{0})f(x0​) 就是已知的,那么函数值取决于第二项的两个向量点积:

f′(x0)(x−x0)=∣f′(x0)∣∣x−x0∣cos⁡θ=λ⋅∣f′(x0)∣⋅cos⁡θf^{'}(x_{0})(x - x_{0}) = |f^{'}(x_{0})||x - x_{0}|\cos \theta = \lambda \cdot |f^{'}(x_{0})| \cdot \cos \thetaf′(x0​)(x−x0​)=∣f′(x0​)∣∣x−x0​∣cosθ=λ⋅∣f′(x0​)∣⋅cosθ

其中 λ>0\lambda > 0λ>0 是向量 x−x0x - x_{0}x−x0​ 的模,θ\thetaθ 是两向量之间的夹角。

那么对于相同模长 λ\lambdaλ,该怎么选择方向(就是选择 θ\thetaθ),才会使函数值最小呢?

很明显就是当向量x−x0x - x_{0}x−x0​ 和f′(x0)f^{'}(x_{0})f′(x0​) 方向相反时,相同模长 λ\lambdaλ 对应的函数值最小,即:

x−x0=−λ⋅f′(x0)∣f′(x0)∣x - x_{0} = - \lambda \cdot \frac{f^{'}(x_{0})}{|f^{'}(x_{0})|}x−x0​=−λ⋅∣f′(x0​)∣f′(x0​)​

所以:

x=x0−λ⋅f′(x0)∣f′(x0)∣x = x_{0} - \lambda \cdot \frac{f^{'}(x_{0})}{|f^{'}(x_{0})|}x=x0​−λ⋅∣f′(x0​)∣f′(x0​)​

一般地,因为 ∣f′(x0)∣|f^{'}(x_{0})|∣f′(x0​)∣ 是标量,可以并入 λ\lambdaλ 中,简化为:

x=x0−λ⋅f′(x0)x = x_{0} - \lambda \cdot f^{'}(x_{0})x=x0​−λ⋅f′(x0​)

注意:上面这个推导过程是建立在邻域内的,这样泰勒的一阶展开近似才成立,如果 λ\lambdaλ 取太大,近似就不成立了。




参考资料:
[学习笔记] 泰勒展开
浅谈泰勒展开
泰勒展开式
梯度下降法
梯度下降法的推导(非常详细、易懂的推导)
梯度下降法和一阶泰勒展开的关系
梯度下降法背后的原理
泰勒展开式
常用重要20个泰勒展开式
几个函数泰勒展开式及其记忆技巧
转载-怎样更好地理解并记忆泰勒展开式?
怎样更好地理解并记忆泰勒展开式?

人工智能-损失函数-优化算法:梯度下降法的背后原理【一阶泰勒展开】相关推荐

  1. 机器学习最常用的优化算法 — 梯度下降法

    1. 学习目标 每一个机器学习模型都有一个目标函数,而学习的目标,就是最小化目标函数.直观而言,当我们已经获得了一个函数,最小化该函数其实就是,在其自变量取值范围内,找到使得因变量最小的那个自变量取值 ...

  2. 深度学习的优化算法——梯度下降和随机梯度下降

    深度学习的优化算法--梯度下降和随机梯度下降 优化算法在深度学习中存在的问题 优化在深度学习中有很多挑战,下面描述其中两个,局部最小值和鞍点. 1.局部最小值 深度学习模型的目标函数可能存在若干极点- ...

  3. 优化:梯度下降法、牛顿法、共轭梯度法

    1.基本概念 1.1 方向导数 1.2 梯度的概念 如果考虑z=f(x,y)描绘的是一座在点(x,y)的高度为f(x,y)的山.那么,某一点的梯度方向是在该点坡度最陡的方向,而梯度的大小告诉我们坡度到 ...

  4. 人工智能之优化算法1-蚁群优化算法

    原文作者: <蚁群算法原理及其应用>:段海滨,科学出版社. <智能蚁群算法及其应用>:吴启迪,汪镭,上海科技教育出版社. 链接: http://www.nocow.cn/ind ...

  5. 回归与梯度下降法及实现原理

    回归与梯度下降 回归在数学上来说是给定一个点集,能够用一条曲线去拟合之,如果这个曲线是一条直线,那就被称为线性回归,如果曲线是一条二次曲线,就被称为二次回归,回归还有很多的变种,如locally we ...

  6. 几种常用的优化方法梯度下降法、牛顿法、)

                                                                       几种常用的优化方法 1. 前言 熟悉机器学习的童鞋都知道,优化方法 ...

  7. 动手学深度学习——基础优化算法梯度下降,小批量随机梯度下降

    一.梯度下降算法 挑选一个初始值w0: 重复迭代参数t=1,2,3: 在接下来不断的更新w0,使它接近最优解: 具体来说,法则如下: wt等于wt的上一时刻减去η乘以损失函数关于wt的上一时刻的梯度. ...

  8. 梯度下降法的理解以及马鞍点

    一.梯度下降优化算法的进化 1.梯度下降法 梯度下降法是训练神经网络常用的优化算法 梯度下降法基于以下的观察:如果实值函数f(x)在a点处可微且有定义,那么函数f(x)在点a沿着梯度相反的方向−∇f( ...

  9. matlab求nmse,梯度下降法原理与仿真系列(1)

    更多相关内容请关注vx公号 优化与算法 便捷及时阅览 1 引言 梯度下降法(Gradient Descent)也称为最速下降法(Steepest Descent),是法国数学家奥古斯丁·路易·柯西 ( ...

最新文章

  1. 微软洪小文:AI将成为人类未来最好的左脑
  2. samba网络服务的搭建和配置
  3. sping中注解事务的应用
  4. “数据库审计”关键词,重回Google第一位置
  5. WindowsPowerShell常用命令
  6. 用户在购买机器之后不知如何正确保养笔记本电脑
  7. 【今日互联网大事儿】小米净化器出来了呢
  8. Windows内核读写自旋锁EX_SPIN_LOCK
  9. Android ContentProvider实现两个程序间数据共享demo,跨进程通讯
  10. 入门科普:什么时候要用Python?用哪个版本?什么时候不能用?
  11. HTML中的padding和margin
  12. 最详细的JavaScript高级教程(十一)正则表达式
  13. 笔记本电脑进入BIOS设置快捷键大全
  14. 1Cr11Ni2W2MoV
  15. 启发式算法(Heuristic)概述
  16. D3D9学习笔记之字体
  17. 图片扫描文字识别工具:text scanner mac中文版
  18. Android开发经验谈:微信小程序的事件处理,灵魂拷问
  19. c语言学生作业ppt课件怎么做,C语言课件完整版(精华).ppt
  20. 诠释的伤感独特个性日志发布:你是今生最让我伤心的人

热门文章

  1. Mac Pro 1,1 (2006旧款,A1186 EMC) 安装 OS X EI Capitan 图文教程.md
  2. Stata肝论文日志2
  3. 我的学生具有的优势,是保证他们大部分可以成为某个(IT)行业的顶尖人才的基础
  4. 常规应用系统无法抓包解决办法整理
  5. 想象未来人工智能的发展,人工智能构建未来世界
  6. ACM MM会议-latex模板使用
  7. 教育期刊《电脑校园》简介及投稿要求
  8. 阿里云服务器(Ubuntu)--mysql的安装和部署
  9. 机器人系统设计与制作:Python语言实现2.1 服务机器人的设计需求
  10. 易语言教程数组删除成员和删除指定成员