导数,偏导数,方向导数,梯度的理解---微积分数学基础
文章目录
- 0 概述
- 1. 导数的概念
- 1.1 导数的定义
- 1.2 导数的本质
- 2. 偏导数的概念
- 2.1 偏导数定义
- 2.2 偏导数的本质
- 3. 方向导数
- 3.1 方向导数定义
- 3.2 方向导数的最大值
- 4. 梯度
- 4.1 梯度定义
- 4.2 梯度生而最快
- 5. 总结
- 参考:
0 概述
我们在ML week 1课程中了解到了单变量线性回归,这里使用了梯度下降法来不断更新θ0,θ1\theta_{0,} \theta_{1}θ0,θ1以求得Cost Function的最优解,从而确定hθ(xi)h_{\theta}\left(x_{i}\right)hθ(xi)。
那这里就产生了一个疑问:为什么使用梯度下降法求解?为什么使用梯度下降法,就能够得到最优解(全局或者局部)?
下边我们将从导数,偏导数,方向导数最后引出梯度,进而讲解为什么梯度下降法能够做到求解最优解。
1. 导数的概念
1.1 导数的定义
增量定义:若f(x)f(x)f(x)在点x0x_{0}x0的某个邻域内有定义,则当自变量 xxx 在x0x_{0}x0处取得增量Δx\Delta xΔx(点x0+Δxx_{0}+\Delta xx0+Δx仍然在邻域内),相应的yyy取得增量Δy=f(x0+Δx)−f(x0)\Delta y=f\left(x_{0}+\Delta x\right)-f\left(x_{0}\right)Δy=f(x0+Δx)−f(x0),如果Δy\Delta yΔy与Δx\Delta xΔx在Δx→0\Delta x \rightarrow 0Δx→0时极限存在,则称y=f(x)y=f(x)y=f(x)在x0x_{0}x0处可导,这个极限就是y=f(x)y=f(x)y=f(x)在x0x_{0}x0的导数,记为f′(x0)f^{\prime}\left(x_{0}\right)f′(x0)。
f′(x0)=limΔx→0ΔyΔx=limΔx→0f(x0+Δx)−f(x0)Δxf^{\prime}\left(x_{0}\right)=\lim _{\Delta x \rightarrow 0} \frac{\Delta y}{\Delta x}=\lim _{\Delta x \rightarrow 0} \frac{f\left(x_{0}+\Delta x\right)-f\left(x_{0}\right)}{\Delta x}f′(x0)=limΔx→0ΔxΔy=limΔx→0Δxf(x0+Δx)−f(x0)
极限定义:在定义域内,当变量xxx趋近于x0x_{0}x0时,f(x)−f(x0)x−x0\frac{f(x)-f\left(x_{0}\right)}{x-x_{0}}x−x0f(x)−f(x0)有极限,则有
f′(x0)=limx→x0f(x)−f(x0)x−x0f^{\prime}\left(x_{0}\right)=\lim _{x \rightarrow x_{0}} \frac{f(x)-f\left(x_{0}\right)}{x-x_{0}}f′(x0)=limx→x0x−x0f(x)−f(x0)
1.2 导数的本质
对于一元函数而言,导数的几何意义是f(x)f(x)f(x)在点x0x_{0}x0切线的斜率。物理角度上来看,路程对时间的导数叫速度,速度对时间的导数叫加速度。
我们可以理解为这是一种线性近似,当一个函数为曲线时,我们对某一点的斜率,就是通过导数这种线性近似求得的。
但是对于多元函数而言,由于其几何图形为一个曲面,这时候导数作为切线斜率的解释似乎不成立了,因此引入了偏导数的概念。
2. 偏导数的概念
2.1 偏导数定义
对于多元函数,求导数其实也是要求一个切线的斜率,但是由于曲面上的点的切线有无数条,那么取那条切线的斜率呢,这时候就引入了偏导数的概念。
偏导数其实就是选取比较特殊的切线,求其斜率而得,以二元函数z=f(x,y)z=f(x, y)z=f(x,y)为例,分为对xxx的偏导数和对yyy的偏导数。
如图所示:
对xxx的偏导数:过点(x0,y0,z0)\left(x_{0}, y_{0},z_{0}\right)(x0,y0,z0)垂直于yyy轴的曲线,在该点切线的斜率。
此时,该曲线可表示为
z=f(x,y)z=f(x, y)z=f(x,y)
x=tx=tx=t
y=a+0×ty=a+0 \times ty=a+0×t
因此,我们求对xxx的偏导数,认为yyy是常量是完全正确的。
用导数定义来表示xxx的偏导数,
fx(x0,y0)=limΔx→0f(x0+Δx,y0)−f(x0,y0)Δxf_{x}\left(x_{0}, y_{0}\right)=\lim _{\Delta x \rightarrow 0} \frac{f\left(x_{0}+\Delta x, y_{0}\right)-f\left(x_{0}, y_{0}\right)}{\Delta x}fx(x0,y0)=limΔx→0Δxf(x0+Δx,y0)−f(x0,y0)
对yyy的偏导数:过点(x0,y0,z0)\left(x_{0}, y_{0},z_{0}\right)(x0,y0,z0)垂直于xxx轴的曲线,在该点切线的斜率。
同上理解。
fy(x0,y0)=limΔy→0f(x0,y0+Δy)−f(x0,y0)Δyf_{y}\left(x_{0}, y_{0}\right)=\lim _{\Delta y \rightarrow 0} \frac{f\left(x_{0}, y_{0}+\Delta y\right)-f\left(x_{0}, y_{0}\right)}{\Delta y}fy(x0,y0)=limΔy→0Δyf(x0,y0+Δy)−f(x0,y0)
2.2 偏导数的本质
偏导数几何意义也是切线斜率, 但是由于曲面上一点的切线有无数条(实际上是个切面),偏导数选取的是垂直于各坐标轴的几条特殊切线的斜率。
偏导数物理意义表示函数沿着某个坐标轴方向上的变化率。
但是如果我们想求任意一条曲线切线斜率怎么办呢?这时候就引入了方向导数,可以求出曲面上某一点沿着任意方向的切线斜率。
3. 方向导数
以z=f(x,y)z=f(x, y)z=f(x,y)为例,过曲面上任意一点(x0,y0,z0)\left(x_{0}, y_{0},z_{0}\right)(x0,y0,z0)的所有切线,组成一个切面。偏导数仅仅选择了垂直于xxx和yyy轴方向的两条切线,计算斜率,方向导数则要求任意切向的斜率。
如下图所示
3.1 方向导数定义
xxx和yyy平面上的一个方向向量,决定了一条过点(x0,y0,z0)\left(x_{0}, y_{0},z_{0}\right)(x0,y0,z0)的唯一曲线,此时曲线函数可表示为:
z=f(x,y)z=f(x, y)z=f(x,y)
x=x0+tcosαt≥0x=x_{0}+t \cos \alpha \quad t \geq 0x=x0+tcosαt≥0
y=y0+tcosβt≥0y=y_{0}+t \cos \beta \quad t \geq 0y=y0+tcosβt≥0
u=i⃗cosα+j⃗cosβ=i⃗cosα+j⃗sinαu=\vec{i} \cos \alpha+\vec{j} \cos \beta=\vec{i} \cos \alpha+\vec{j} \sin \alphau=icosα+jcosβ=icosα+jsinα
其中α\alphaα和β\betaβ分别为该方向向量与xxx轴和yyy轴的夹角。
则该曲线的记为方向u的导数,定义:
Duf(x,y)D_{u} f(x, y)Duf(x,y)=limt→0f(x0+tcosα,y0+tsinα)−f(x0,y0)t\lim _{t \rightarrow 0} \frac{f\left(x_{0}+t \cos \alpha, y_{0}+t \sin \alpha\right)-f\left(x_{0}, y_{0}\right)}{t}limt→0tf(x0+tcosα,y0+tsinα)−f(x0,y0)
通过偏微分简化计算可得(这一步的数学证明,请自行搜索),
Duf(x,y)=fx(x,y)cosα+fy(x,y)sinαD_{u} f(x, y)=f_{x}(x, y) \cos \alpha+f_{y}(x, y) \sin \alphaDuf(x,y)=fx(x,y)cosα+fy(x,y)sinα
3.2 方向导数的最大值
设偏导向量:
A⃗=(fx(x,y),fy(x,y))\vec{A}=\left(f_{x}(x, y), f_{y}(x, y)\right)A=(fx(x,y),fy(x,y))
方向向量:
u⃗=(cosα,sinα)\vec{u}=(\cos \alpha, \sin \alpha)u=(cosα,sinα)
则
Duf(x,y)=A⃗∗u⃗D_{u} f(x, y)=\vec{A} * \vec{u}Duf(x,y)=A∗u=∣A⃗∣∗∣u⃗∣∗cos(θ)|\vec{A}| *|\vec{u}| * \cos (\theta)∣A∣∗∣u∣∗cos(θ)
其中 θ\thetaθ 是偏导向量和方向向量之间的夹角。显而易见,当θ\thetaθ=0时,Duf(x,y)D_{u} f(x, y)Duf(x,y)取得最大值。
换句话说,当方向u⃗\vec{u}u和偏导向量同向时,方向导数取得正最大值,反向时,取得负最大值。
记住这个结论,接下来我们看梯度定义。
4. 梯度
4.1 梯度定义
对于函数z=f(x,y)z=f(x, y)z=f(x,y),在平面区域D内具有一阶连续偏导数,则对于每一点(x0,y0)∈D\left(x_{0}, y_{0}\right) \in D(x0,y0)∈D都可以定义出一个向量:
fx(x0,y0)i⃗+fy(x0,y0)j⃗f_{x}\left(x_{0}, y_{0}\right) \vec{i}+f_{y}\left(x_{0}, y_{0}\right) \vec{j}fx(x0,y0)i+fy(x0,y0)j
这个向量称为函数f(x,y)f(x, y)f(x,y)在(x0,y0)\left(x_{0}, y_{0}\right)(x0,y0)的梯度,记作 gradf(x0,y0)\operatorname{grad} f\left(x_{0}, y_{0}\right)gradf(x0,y0)或者∇f(x0,y0)\nabla f\left(x_{0}, y_{0}\right)∇f(x0,y0)。其中∇=∂∂xi⃗+∂∂yj⃗\nabla=\frac{\partial}{\partial x} \vec{i}+\frac{\partial}{\partial y} \vec{j}∇=∂x∂i+∂y∂j称为向量微分算子或者Nabla算子。
4.2 梯度生而最快
到这里,发现梯度就定义为偏导向量的方向。而方向导数一节已经证明,沿着偏导向量方向的方向导数Duf(x,y)D_{u} f(x, y)Duf(x,y)能够取得最大值。
因此在不断的迭代计算中,每一次沿着负梯度方向进行更新参数,就能够达到最低点。
5. 总结
通过导数,偏导数,方向导数的逐步讲解,最后给出梯度的定义,发现梯度天生定义就是变化最快的方向。
这是未来使用梯度下降法求解优化问题的数学基础。
参考:
https://www.zhihu.com/question/36301367 马同学和忆臻 的回答
https://github.com/halfrost/Halfrost-Field
导数,偏导数,方向导数,梯度的理解---微积分数学基础相关推荐
- 全微分/偏导数/方向导数/梯度/全导数
1.偏导数 参考 :导数.偏导数.方向导数 就是对某一变量求导,把其他变量作为常数 2.方向导数 可以认为偏导数是特殊的方向导数,是在自变量方向上的方向导数. 任意方向导数为: 3.梯度 参考: 导数 ...
- 彻底搞明白梯度下降算法1:方向导数与梯度概念理解
预备知识点:斜率与变化率 方向导数 梯度 总结 1.预备知识点:斜率与变化率 斜率: 数学.几何学名词,是表示一条直线(或曲线的切线)关于横坐标轴倾斜程度的量.它通常用直线(或曲线的切线)与横坐标轴夹 ...
- 高等数学--导数、偏导数、梯度简介
目录 一元函数微积分 一阶导数 定义 数值微分的代码实现 上述代码中存在的问题 数值微分代码改进 导数的意义 多元函数微积分 偏导数 定义 偏导数代码实现 偏导数的意义 梯度 梯度的代码实现 求梯度的 ...
- 导数、偏导数以及梯度
导数 导数的概念和运用可以说是贯穿了我们自初中以来的所有数学知识.当自变量x和因变量y都是一维且定义域和值域都为实数域的情况下,因变量y导数的定义如下: 可以这么理解,对于某一点(自变量),当它改变d ...
- 人工智能-高等数学之偏导数与梯度
高等数学之偏导数与梯度 接着上一篇<人工智能-高等数学之微积分篇>,来学下一篇偏导数与梯度下降,在一元函数中,导数就是函数的变化率.对于二元函数研究它的"变化率",由于 ...
- ML: 导数、方向导数、曲率小结
新手上路,小心晕车 前言 导数.方向导数.梯度这些概念是理解神经网络算法的基础,这里做一个小结. 1.导数 导数(Derivative)是微积分中的重要基础概念,当函数y=f(x)的自变量x在一点x0 ...
- 梯度下降算法的细节补充(凸函数, 导数, 偏导数,梯度, 方向导数以及负梯度下降最快背后的泰勒身影)
1. 写在前面 这篇文章, 再来对梯度下降算法进行一个小的回顾, 梯度下降算法是求解无约束多元函数极值最常用的数值方法, 很多机器学习常用算法和神经网络都是以它作为算法框架进行优化参数. 所以这个算法 ...
- 理解偏导数、梯度、方向导数
偏导数 我们都知道导数是一元函数的变化率,衡量每个x位置处的瞬间变化率. 偏导数是针对多变量函数而言的,它通过将多变量函数退化成一元函数分别求各自的导数.以二元函数为例: Z = F(x,y) 求x的 ...
- 什么是导数、方向导数、偏导数、梯度
最新文章
- Python3之打印出map结果的print(list())用法
- excel可视化图表插件_Axure 教程:利用图表前端插件实现高级可视化图表
- 双拼输入法键位图_谈谈小鹤双拼入门(1)
- 五款帮助创业者迅速熟悉互联网创业的在线学习工具
- linux系统基础优化小结
- Python基础-包
- 1008 数组元素循环右移问题(C语言)
- sparksql对hive操作
- centos 7 下安装haproxy
- 2022英伟达显卡排名天梯图
- Cisco 安全设备管理工具:SDM
- 如何保护自己的机器不受“网络执法官”盗用IP地址及密码
- ALSA子系统(十三)------snd_pcm_hw_refine硬件参数重定义
- Python Decorator的来龙
- android调用微信视频电话,微信视频通话录屏如何操作
- 解决阿里云redis监听6379,配置规则也将6379端口开放,但是外网仍无法连接6379的问题。
- Qt: 窗口的显示和隐藏
- 《30天自制操作系统》从入门到放弃
- C++ 课程作业 类与对象2——构造函数、拷贝构造函数、析构函数(油桶题)
- 详解ORACLE数据库的分区表
热门文章
- 三亚旅游_原水_新浪博客
- windows监听扬声器、麦克风静音、音量事件
- 学生党必备读书笔记app推荐
- 微信小程序vue+nodejs+uniapp家装 装修装饰公司管理系统
- 飞浆领航团AI达人创造营第01课|让人拍案叫绝的创意都是如何诞生的?
- Curent branch is not synced with latest origin/master!
- MANIFEST.MF的文件的作用
- 1010: 求圆的周长和面积 ZZULIOJ
- 批量修改txt内容的某个字符串-多快好省
- django自带模块实现翻页功能