文章首发于慕课网原文地址,因csdn对数学公式支持更好故重新编辑整理发表于此,方便需要的读者阅读理解。

吴恩达的深度学习课程五门里已经学了四门,课后的编程练习也都跟着做了,在学习的过程中,时常忍不住去探究背后的数学原理,毕竟大学里也学过高等数学,概率论和线性代数这几门机器学习的必备数学课程,又考过研。虽然不是数学天才,但自认为对数学还是蛮感兴趣的,而吴恩达的这门课恰好相对弱化了数学理论,我就自己去翻书+Google学习了。最近偶然翻自己以前的笔记,看到写的关于梯度的概念的部分,感觉还是有些不清晰和遗忘的地方,梯度是梯度下降算法的基础,而梯度下降算法又是神经网络最基本的算法,于是我又花了一天的时间复习了一下。为了防止自己以后再遗忘,也希望对其他在初学的小伙伴们有帮助,我决定总结一下相关数学知识,这篇手记会从导数的概念开始,一步步引出梯度下降算法。

导数的定义

函数y=f(x)y=f(x)y=f(x)在点x0x_0x0​处的导数:

f′(x0)=limΔx→0f(x0+Δx)−f(x0)Δxf'(x_0)=lim_{\Delta x \to 0}\frac{f(x_0+\Delta x)-f(x_0)}{\Delta x}f′(x0​)=limΔx→0​Δxf(x0​+Δx)−f(x0​)​

自变量xxx在x0x_0x0​处取得增量Δx\Delta xΔx时,相应的因变量取得增量Δy=f(x0+Δx)−f(x0)Δy=f(x_0+Δx)-f(x_0)Δy=f(x0​+Δx)−f(x0​),函数在x0处的导数就是ΔyΔyΔy与ΔxΔxΔx之比在Δx0Δx_0Δx0​时的极限,导数其实就是因变量y在点x0处的变化率,它反映了因变量随自变量的变化而变化的快慢程度。另一方面,从几何意义上来说,函数在一点的导数值就是过这一点的切线的斜率

根据导数的定义可以知道,当f′(x)&gt;0f'(x)\gt0f′(x)>0时,f(x)f(x)f(x)单调递增,减小xxx可以减小f(x)f(x)f(x),当f′(x)&lt;0f'(x)\lt0f′(x)<0时,f(x)f(x)f(x)单调递减,增大xxx可以减小f(x)f(x)f(x)。由此可知f(x−αf′(x))&lt;f(x)(其中α&gt;0)f(x-αf'(x)) \lt f(x)(其中α&gt;0)f(x−αf′(x))<f(x)(其中α>0),因此我们可以将x往导数的反方向移动一小步来减小f(x),即x:=x-αf’(x)。这就是梯度下降法

方向导数与神经网络中的梯度下降

在训练神经网络时,我们都是通过定义一个代价函数cost function),然后通过反向传播更新参数来最小化代价函数,深度神经网络可能有大量参数,因此代价函数是一个多元函数,多元函数与一元函数的一个不同点在于,过多元函数的一点,可能有无数个方向都会使函数减小。这样说可能不太直观,我们以日常生活中登山运动为例,当你下山的时候,可以走从山顶到山脚的一条直道,也可以走环山的路或者S型的路,显然环山的路和S型的路要绕着山走,花费的时间更长,路更平缓,而直道则更陡峭,下山的速度更快,花费的时间更短。引申到数学上,我们可以把山这样的曲面看作一个二元函数z=f(x,y),二元函数是多元函数里最简单的情形,也是易于可视化直观理解的。前面提到一元函数导数的几何意义是切线的斜率,对于二元函数,曲面上的某一点(x0,y0,z0)会有一个切平面,切平面上的无数条直线都是过这一点的切线,这些切线的斜率实际上就是过这一点的无数个方向导数的值,和一元函数一样,方向导数的值实际反映了多元函数在这一点沿某个方向的变化率。正如下山必然有一条最陡峭、最快的路径,方向导数也有一个最小值,在最小值对应的方向上,函数下降最快,而这个方向其实就是梯度的反方向。对于神经网络,在方向导数最小的方向更新参数可以使代价函数减小最快,因此梯度下降法也叫最速下降法。

偏导数的定义

上面对方向导数和梯度下降的解释偏感性,下面为了从数学上明确方向导数和梯度的概念,加深理解,我们先来看看偏导数的定义。

在一元函数中,导数表示了函数的变化率。对于多元函数,自变量不止一个,因变量与自变量的关系比一元函数复杂,我们先考虑多元函数关于其中一个自变量的变化率,这就引出了偏导数的概念。

还是以二元函数z=f(x,y)z=f(x,y)z=f(x,y)为例,当yyy固定为y0y_0y0​,xxx在x0x_0x0​处有增量ΔxΔxΔx时,相应的函数有增量f(x0+Δx,y0)−f(x0,y0)f(x_0+Δx,y_0)-f(x_0,y_0)f(x0​+Δx,y0​)−f(x0​,y0​),那么:

limΔx→0f(x0+Δx,y0)−f(x0,y0)Δxlim_{\Delta x\to0}\frac{f(x_0+Δx,y_0)-f(x_0,y_0)}{Δx}limΔx→0​Δxf(x0​+Δx,y0​)−f(x0​,y0​)​

即为z=f(x,y)z=f(x,y)z=f(x,y)在点(x0,y0)(x_0,y_0)(x0​,y0​)处对xxx的偏导数,记为fx(x0,y0)f_x(x_0,y_0)fx​(x0​,y0​),对y的偏导数定义与之类似,记为fy(x0,y0)f_y(x_0,y_0)fy​(x0​,y0​)。

方向导数与梯度

偏导数实际上反映了多元函数沿坐标轴方向的变化率,那么函数沿某一非坐标轴方向的指定方向的变化率如何衡量呢?

设lll是xOyxOyxOy平面上以点P0(x0,y0)P_0(x_0,y_0)P0​(x0​,y0​)为起始点的一条射线,el=(cosα,sinα)e_l=(cosα,sinα)el​=(cosα,sinα)是与l同方向的单位向量,则射线l的参数方程为:
x=x0+tcosα,y=y0+tsinα(t≥0)x=x_0+tcosα,\\ y=y_0+tsinα (t≥0)x=x0​+tcosα,y=y0​+tsinα(t≥0)

P(x0+tcosα,y0+tsinα)P(x_0+tcosα,y_0+tsinα)P(x0​+tcosα,y0​+tsinα)为lll上另一点,那么:

limt→0+f(x0+tcosα,y0+tsinα)−f(x0,y0)tlim_{t \to0^+}\frac{f(x_0+tcosα,y_0+tsinα)-f(x_0,y_0)}{t}limt→0+​tf(x0​+tcosα,y0​+tsinα)−f(x0​,y0​)​

为f(x,y)f(x,y)f(x,y)在点P0P_0P0​沿方向lll的方向导数,不难发现,函数f(x,y)f(x,y)f(x,y)在xxx和yyy坐标轴方向的方向导数分别就是其关于x和y的偏导数,可以证明,函数f(x,y)的方向导数就等于:

fx(x0,y0)cosα+fy(x0,y0)sinαf_x(x_0,y_0)cosα+f_y(x_0,y_0)sinαfx​(x0​,y0​)cosα+fy​(x0​,y0​)sinα

这个式子其实可以看成是两个向量(fx(x0,y0),fy(x0,y0))(f_x(x_0,y_0),f_y(x_0,y_0))(fx​(x0​,y0​),fy​(x0​,y0​))和(cosα,sinα)(cosα,sinα)(cosα,sinα)的点积,根据点积的计算公式,假设上述两个向量的夹角为θ,上式可化为:

∣∣(fx(x0,y0),fy(x0,y0))∣∣cosθ||(f_x(x_0,y_0),f_y(x_0,y_0))||cosθ∣∣(fx​(x0​,y0​),fy​(x0​,y0​))∣∣cosθ

向量(fx(x0,y0),fy(x0,y0))(f_x(x_0,y_0),f_y(x_0,y_0))(fx​(x0​,y0​),fy​(x0​,y0​))就是函数f(x,y)f(x,y)f(x,y)在点P0(x0,y0)P_0(x_0,y_0)P0​(x0​,y0​)的梯度,由此引出梯度的概念,梯度就是一个向量,这个向量的每个元素分别是多元函数关于每个自变量的偏导数。从上式可以看出,当θ=0时,方向导数的值最大,多元函数增加最快,也就是说梯度的方向就是函数增加最快的方向,当θ=π时,方向导数的值最小,多元函数减小最快,也就是在梯度相反的方向上,方向导数最小。

总结

  1. 导数、偏导数和方向导数衡量的都是函数的变化率;
  2. 梯度是以多元函数的所有偏导数为元素的向量,代表了函数增加最快的方向;
  3. 在梯度反方向上,多元函数的方向导数最小,函数减小最快,在神经网络中,在梯度反方向更新参数能最快使代价函数最小化,所以梯度下降法也叫最速下降法。

参考资料

  1. 高等数学 第六版 上下册 —— 同济大学数学系编 高等教育出版社
  2. 深度学习(花书)—— Ian GoodFellow
  3. 如何直观形象的理解方向导数与梯度以及它们之间的关系? —— 知乎

本作品采用知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。要查看该许可协议,可访问 http://creativecommons.org/licenses/by-nc-sa/4.0/ 或者写信到 Creative Commons, PO Box 1866, Mountain View, CA 94042, USA。

从导数到方向导数和梯度,一步步理解深度学习中的梯度下降算法相关推荐

  1. 深度学习中的梯度消失、梯度爆炸问题

    写在前面: 有些博主对这个问题的解释很好,这里参考了: 详解机器学习中的梯度消失.爆炸原因及其解决方法 我在这方面的工作经验和知识面还不够,还需要积累后再做出更为专业的解答. 参考我之前转发过的一篇文 ...

  2. 深度学习中的梯度下降算法

    深度学习中的梯度下降算法 梯度下降算法-----致力于找到函数极值点的算法,深度学习中的核心算法. 所谓的学习便是改进模型参数,以便通过大量训练步骤将损失最小化. 有了这个概念,将梯度下降法应用于寻找 ...

  3. ICLR 2020 Spotlight!从梯度信噪比来理解深度学习泛化性能 | AI TIME PhD

    AI TIME欢迎每一位AI爱好者的加入! 深度学习在诸多应用领域取得了巨大的成功,但是其背后的基础理论确相对有些滞后.与传统浅层学习模型不同,深度学习所得到的深度神经网络(DNNs)层次更为复杂,然 ...

  4. 深度学习中的梯度下降优化算法综述

    1 简介 梯度下降算法是最常用的神经网络优化算法.常见的深度学习库也都包含了多种算法进行梯度下降的优化.但是,一般情况下,大家都是把梯度下降系列算法当作是一个用于进行优化的黑盒子,不了解它们的优势和劣 ...

  5. 关于深度学习中的梯度下降,了解一下

    原文 一篇让你很容易理解什么是梯度下降的博客 0 什么是梯度下降 梯度下降法的基本思想可以类比为一个下山的过程.假设这样一个场景:一个人被困在山上,需要从山上下来(i.e. 找到山的最低点,也就是山谷 ...

  6. 深度学习中的梯度消失与梯度爆炸及解决方案

    1.梯度消失与梯度爆炸 反向传播算法在神经网络中非常常见,可以说是整个深度学习的基石.在反向传播中,经常会出现梯度消失与梯度爆炸的问题.梯度消失产生的原因一般有两种情况:一是结构较深的网络,二是采用了 ...

  7. 深度学习相关概念:梯度下降

    深度学习相关概念:梯度下降法.动量法与自适应梯度 1. 梯度下降概念 2. 梯度下降的目的 3. 梯度下降的原理 4. 梯度计算 5. 梯度下降算法的类别及计算效率 5.1 批量梯度下降(BGD) 5 ...

  8. cnn 反向传播推导_深度学习中的参数梯度推导(三)下篇

    前言 在深度学习中的参数梯度推导(三)中篇里,我们总结了CNN的BP推导第一步:BP通过池化层时梯度的计算公式.本篇(下篇)则继续推导CNN相关的其他梯度计算公式. 注意:本文默认读者已具备深度学习上 ...

  9. nfa确定化 dfa最小化_深度学习中的优化:梯度下降,确定全局最优值或与之接近的局部最优值...

    深度学习中的优化是一项极度复杂的任务,本文是一份基础指南,旨在从数学的角度深入解读优化器. 一般而言,神经网络的整体性能取决于几个因素.通常最受关注的是网络架构,但这只是众多重要元素之一.还有一个常常 ...

  10. eta 深度学习 参数_深度学习中的参数梯度推导(一)

    必备的数学知识 矩阵微分与求导 前言 深度学习向来被很多人认为是"黑盒",因为似乎很多人都不清楚深度学习的运作方式,本系列<深度学习中的数学>的连载文章主要目的就是向大 ...

最新文章

  1. FD_READ FD_WRITE触发时机
  2. ppt格式刷快捷键_高效地制作PPT
  3. 【Linux】10_存储管理EXT4文件系统详解
  4. 微信跳一跳python全部代码_微信跳一跳python代码
  5. python-socket
  6. NS3可视化问题及解决办法
  7. Java反射 field
  8. oracle 数据库bak文件怎么打开,Oracle数据库的参数文件备份与恢复
  9. 阿里云服务器ECS选型
  10. PancakeBunny获160万美元战略融资,Binance Labs领投
  11. [LibTorch Win] 各版本 LibTorch 下载
  12. 谈360下拉词360下拉框的优势及360搜索推广方法有哪些?
  13. python怎么读取excel-python怎么读取excel中的数值
  14. rapidxml对unicode的支持
  15. UOJRoundPLUS+
  16. The Code is successfully generatd...使用stm32cude生成工程时报错
  17. python学习方法总结(内附python全套学习资料)
  18. 华硕路由搭建php网站,华硕路由器操作模式
  19. C#画布的创建和圆的画法
  20. Mysql语句计算文本字数_使用SQL确定文本字段的字数统计

热门文章

  1. react-ative安装expo-linking后运行报错
  2. 飞桨AI Studio之加州房价预测——机器学习的Hello world
  3. 苹果手机有护眼模式吗_玩手机还能护眼?用这 2 款 App,可能比开深色模式更有效...
  4. 淘宝直通车新功能智能推广 智能推广计划设置 智能推广优化 智能推广优化原则
  5. java pfx 和cer_pfx证书和CER证书
  6. 网络基础之交换机原理及4大功能
  7. rockchip RGMII+mv88e6390 管理型交换机功能调试及vlan定制+Mac绑定
  8. 几何分布的众数为什么是1
  9. windows安装mmdetection
  10. QT C++ Luhn算法验证银行卡号合法性