微分导数解决问题,微分问题

隐微分求导法xy的微分求导过程為什么是将x乘以(dy/dx)呢?例题如图... 隐微分求导法 xy的微分求导过程为什么是将x乘以(dy/dx)呢?例题如图

    此题是等式两边同时对x求导在对-4xy^3求导时,可視为-4x·y^3求导那么两式乘积求导就是你图中红线部分。不知你能理解否如若不能,那么

    如果再不能看明白,那么你的微分导数解决问題部分要重修一遍

    你对这个回答的评价是

}

在初学微分和微分导数解决问题時虽然感觉概念不复杂,但是我对两者的关系有点模糊比如以下问题就觉得模棱两可:

  • du,所以等式相等但假如有 ?F,我们是否可以嶊出

  • ab?dxdy?dx?ab?dy?yab?这里实实在在地消去了

  • dudv太小了,所以忽略掉得到微分的乘法法则:

我当时脑子一片混乱,到底 dv是什么东西為什么有的地方可以消去,有的地方不可以消去

其实在各个历史时期,微分导数解决问题和微分的定义是不一样的要想解答上面的疑問,还得从微积分的发展历史中寻找答案

我尝试讲一下微积分发展的历史和数学思想,主要针对 y=f(x)这样的一元函数

牛顿和莱布尼兹各自獨立发明了微积分,下面我采用莱布尼兹的微积分符号进行说明(要了解各种微积分符号可以参看。

1.1 为什么会出现微分导数解决问题

微分导数解决问题不是牛顿和莱布尼兹发明的,他们之前的数学家已经对曲线的切线进行了研究在解决曲面(一维函数是曲线,即一维曲面)下面积时牛顿和莱布尼兹确定了微分导数解决问题的定义。

在微积分出现之前曲线下的面积是一个很复杂的问题,微积分求解嘚主要思想是把曲线下的面积划分成无数个矩形面积之和

n越大,则这个近似越准确:

Δx是把曲线底分成n份的间隔长度)出现了无穷小量 dx是建立微积分的基础,莱布尼兹介绍微积分的论文就叫做《论深度隐藏的几何学及无穷小与无穷大的分析》

在当时的观点下,无穷小量 dx到底是什么也是有争论的有数学家打比喻:“无穷小量就好比山上的灰尘,去掉和增加都没有什么影响”很显然有人认为无穷小量

茬具体计算曲面下面积,即我们现在所说的定积分的时候必然会遇到微分导数解决问题的问题,所以很自然的开始了对微分导数解决问題的定义和讨论

1.2 微分导数解决问题的古典定义

在曲线上取两点,连接起来就称为曲线的割线:

割线可以反应曲线的平均变化率,也就昰说这一段大概的趋势是上升还是下降上升了多少,但是并不精确

有了切线之后,我们进一步定义微分导数解决问题:

从这张图得出微分导数解决问题的定义: y 的微分都是无穷小量,所以微分导数解决问题也被莱布尼兹称为微商(微分之商)

1.3 无穷小量导致的麻烦

上节嘚图实际上是矛盾的:

所以就切线的定义而言,微积分的基础就是不牢固的

无穷小量的麻烦还远远不止这一些, x2的微分导数解决问题是這样计算的:

仔细看运算过程 无穷小量$dx 先是在约分中被约掉,然后又在加法中被忽略也就是说 dx$先被当作非0的量,又被当作了0这就是大主教贝克莱(就是在高中政治书被嘲笑的唯心主义的代表)攻击的像幽灵一样嘚数,一会是0一会又不是0

无穷小量和无穷小量相除为什么可以得到不一样的值?难道不应该都是1吗

无穷小量还违反了,这个才是更严偅的缺陷康托尔证明过,如果阿基米德公理被违背的话会出大问题

一边是看起来没有错的微积分,一边是有严重缺陷的无穷小量这僦是。数学的严格性受到了挑战“对于数学,严格性不是一切但是没有了严格性就没有了一切”。

1.4 对于古典微积分的总结

  • 切线:通过割线和无穷小量定义了切线

  • 微分导数解决问题:通过切线和无穷小量定义了微分导数解决问题,微分导数解决问题是曲线在某点处切线嘚斜率微分导数解决问题的值等于微商。

  • 微分:微分是微小的增量即无穷小量。

2. 基于极限重建微积分

莱布尼兹、欧拉等都认识到了无窮小量导致的麻烦一直想要拼命修补,但是这个问题到200年后19世纪极限概念的清晰之后,才得到解决解决办法是,完全摈弃无穷小量基于极限的概念重新建立微积分。

??δ 语言描述极限:

可以看到极限的描述并没有用到无穷小量

2.2 微分导数解决问题的极限定义

用极限重新严格定义,微分导数解决问题已经脱离了微商的概念此时,微分导数解决问题应该被看成一个整体

不过我们仍然可以去定义什麼是微分。说到这里真是有点剧情反转,古典微积分是先定义微分再有的微分导数解决问题极限微积分却是先定义微分导数解决问题洅有的微分。

0 Δy由两部分组成通过图来观察一下几何意义:

y=x(用线性函数去逼近原函数),

2.3 对于极限微积分的总结

  • 微分导数解决问题:微分导数解决问题被定义为一个极限其几何意义是曲线变化率。微分导数解决问题值是一个常数是一个常量。开区间内的微分导数解決问题值集合起来就成为导函数。

  • 微分:微分是函数的局部线性近似就是一个线性函数,局部看起来很接近原函数微分导数解决问題是这个线性函数的系数。其意义是变化的具体数值是一个变量。

  • 切线:有了微分导数解决问题之后就可以确定切线。

微积分实际上被发明了两次古典微积分和极限微积分可以说是两个东西。我们再来比较一下古典微积分和极限微积分

3.1 古典微积分与极限微积分的对仳

  • 古典微积分是先定义微分再定义微分导数解决问题,极限微积分是先定义微分导数解决问题再定义微分

  • 古典微积分的微分导数解决问題是基于无穷小量定义的,极限微积分的微分导数解决问题是基于极限定义的

  • 古典微积分的微分是无穷小量,极限微积分的微分是一个線性函数

  • 古典微积分的定积分是求无穷小矩形面积的和,极限微积分的定积分是求黎曼和

  • 古典微积分的切线是可以画出来的,极限微積分的切线是算出来的

  • 古典微积分的建立过程很直观,极限微积分的建立过程更抽象

古典微积分最大的好处就是很直观,不过也是因為太直观了所以我们一直都无法忘记它带来的印象,也对我们理解极限微积分造成了障碍也让我们在实际应用中造成了错误的理解。

の前的疑惑主要是由于古典微积分带来的

  • ,在古典微积分中可以理解为消去但是在极限微积分中我们应该认识到,这两个 du 实际上是不哃的函数

  • ab?dxdy?dx古典微积分中, dx确实表明是无穷多个矩形的底边消去也是合理的,而极限微积分中 ab?dx是求黎曼和,我们可以把 dx当莋右括号就好比 ,计算完毕之后括号自然就消失了。

  • dudv 的消去也是不严谨的而极限微积分中应该重新用极限的方法进行证明,这里不洅列出

实际上,古典微积分已经被摒弃了我们应该重新从极限的角度去认识微积分。

3.3 古典微积分的用处

我们应该从古典微积分以直玳曲、化整为零的数学思想出发去开始认识微积分。

并且莱布尼兹一直认为数学符号应该具有启发性,他设计的微积分符号确实很符合矗觉我们可以继续借用他的符号来描述微积分。


}

神经网络的训练算法目前基本仩是以Backpropagation (BP) 反向传播为主(加上一些变化),NN的训练是在1986年被提出但实际上,BP 已经在不同领域中被重复发明了数十次了(参见 Griewank (2010)[1])更加一般性且与应用场景独立的名称叫做:反向微分 (reverse-mode differentiation)。本文是看了资料[2]中的介绍写的蛮好,自己记录一下方便理解。

从本质上看BP 是一种快速求导的技术,可以作为一种不单单用在深度学习中并且可以胜任大量数值计算场景的基本的工具

整张图可看成三部分:输入结点、输出结点、从输入到输出的计算函数。上图很容易理解就是output=sin(a*x+b) * x

有向无环图在计算机科学领域到处可见,特別是在函数式程序中他们与依赖图(dependency graph)或者调用图(call graph)紧密相关。同样他们也是大部分非常流行的深度学习框架背后的核心抽象

下文鉯下面简单的例子来描述:

为了计算在这幅图中的偏微分导数解决问题,我们需要 和式法则(sum rule )和 乘式法则(product rule):

下面在图中每条边上嘟有对应的微分导数解决问题了:

那如果我们想知道哪些没有直接相连的节点之间的影响关系呢?假设就看看 e 如何被 a 影响的如果我们以 1 嘚速度改变 a,那么 c 也是以 1 的速度在改变导致 e 发生了 2 的速度在改变。因此 e 是以 1 * 2 的关于 a 变化的速度在变化
而一般的规则就是对一个点到另┅个点的所有的可能的路径进行求和,每条路径对应于该路径中的所有边的微分导数解决问题之积因此,为了获得 e 关于 b 的微分导数解决問题就采用路径求和:

这个值就代表着 b 改变的速度通过 c 和 d 影响到 e 的速度。聪明的你应该可以想到事情没有那么简单吧?是的上面例孓比较简单,在稍微复杂例子中路径求和法很容易产生路径爆炸:

在上面的图中,从 X 到 Y 有三条路径从 Y 到 Z 也有三条。如果我们希望计算 dZ/dX那么就要对 3 * 3 = 9 条路径进行求和了:

该图有 9 条路径,但是在图更加复杂的时候路径数量会指数级地增长。相比于粗暴地对所有的路径进行求和更好的方式是进行因式分解:

有了这个因式分解,就出现了高效计算微分导数解决问题的可能——通过在每个节点上反向合并路径洏非显式地对所有的路径求和来大幅提升计算的速度实际上,两个算法对每条边的访问都只有一次!

前向微分从图嘚输入开始一步一步到达终点。在每个节点处对输入的路径进行求和。每个这样的路径都表示输入影响该节点的一个部分通过将这些影响加起来,我们就得到了输入影响该节点的全部也就是关于输入的微分导数解决问题。

相对的反向微分是从图的输出开始,反向┅步一步抵达最开始输入处在每个节点处,会合了所有源于该节点的路径

前向微分 跟踪了输入如何改变每个节点的情况。反向微分 则哏踪了每个节点如何影响输出的情况也就是说,前向微分应用操作 d/dX 到每个节点而反向微分应用操作 dZ/d 到每个节点。

让我们重新看看刚开始的例子:

我们可以从 b 往上使用前向微分这样获得了每个节点关于 b 的微分导数解决问题。(写在边上的微分导数解决问题我们已经提前算高了这些相对比较容易,只和一条边的输入输出关系有关)

我们已经计算得到了 de/db输出关于一个输入 b 的微分导数解决问题。但是如果峩们从 e 往回计算反向微分呢这会得到 e 关于每个节点的微分导数解决问题:

反向微分给出了 e 关于每个节点的微分导数解决问题,这里的确昰每一个节点我们得到了 de/da 和 de/db,e 关于输入 a 和 b 的微分导数解决问题(当然中间节点都是包括的),前向微分给了我们输出关于某一个输入嘚微分导数解决问题而反向微分则给出了所有的微分导数解决问题。

想象一个拥有百万个输入和一个输出的函数前向微分需要百万次遍历计算图才能得到最终的微分导数解决问题,而反向微分仅仅需要遍历一次就能得到所有的微分导数解决问题!速度极快!

训练神经网絡时我们将衡量神经网络表现的代价函数看做是神经网络参数的函数。我们希望计算出代价函数关于所有参数的偏微分导数解决问题從而进行梯度下降(gradient descent)。现在常常会遇到百万甚至千万级的参数的神经网络。所以反向微分,也就是 BP在神经网络中发挥了关键作用!所以,其实BP的本质就是链式法则

(有使用前向微分更加合理的场景么?当然!因为反向微分得到一个输出关于所有输入的微分导数解決问题前向微分得到了所有输出关于一个输入的微分导数解决问题。如果遇到了一个有多个输出的函数前向微分肯定更加快速)

BP 也是┅种理解微分导数解决问题在模型中如何流动的工具。在推断为何某些模型优化非常困难的过程中BP 也是特别重要的。典型的例子就是在 Recurrent Neural Network Φ理解 vanishing gradient 的原因


有的时候,越是有效的算法原理往往越是简单。


}

我要回帖

更多关于 微分导数解决问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信