梯度下降为什么用偏微分而不是全微分?

来源:2-5 实战分类模型之数据归一化

慕神4535282

2021-04-23

老师,你好,

https://coding.imooc.com/learn/questiondetail/gDANwYNlLb56K120.html
中,根据
根据 https://www.zhihu.com/question/272499712,求解代价函数的梯度,应该是求 “偏微分”呀?
因为正如文中所说: “当我们考察的函数“邻域”足够小的时候,我们可以把曲面当成平面。这就是所谓线性近似的几何解释。”
得到全微分的定义(二元):
图片描述

可以看到,使用全微分才更接近线性逼近的几何解释吗?
这样的话,应该使用全微分才对呀,是不是如图所示:
图片描述

写回答

2回答

慕神4535282

提问者

2021-05-06

我又重新整理了一遍,又翻查了资料,我觉得我上面的理解是正确的。

现在放假了几天,再次回头来看,我现在明白了。可能我之前一下子接触来太多的概念,头脑混淆了。

现在再来整理一遍。

上图2是正确的, alpha * grad J( theta ) = dz ,就是全微分。

上面的解释是正确的,全微分的几何解释就是“把曲面当成平面”的线性逼近,因此,此平面(此全微分dz)就是 https://coding.imooc.com/learn/questiondetail/gDANwYNlLb56K120.html  中所说的“给定点下降最快的方向”, 所以,文中才有 上图2 中所写的 theta 1 = theta 0 - alpha  * grad J(theta 0), 式中的 alpha  * grad J(theta 0) 就是 全微分 dz,即 “把曲面当成平面”的线性逼近,所以,theta 1 才是给定点 theta 0 沿下降最快的方向  下降 了 全微分 dz ( dz = alpha  * grad J(theta 0)  ) 距离后得到的新坐标。全文就是用这种方法找到函数的最低点的。

所以说,是通过全微分来得到最低点,只不过,为了求全微分,就是先求出各个自变量的偏导(也就是梯度)才可以。

因此,一句话,梯度下降法其实使用的是全微分,但是,要算出梯度(也就是算出偏导)才可以求出全微分。

见 https://www.zhihu.com/question/29151564/answer/1607285093  比特曼 的回答

看了他的回答,我才理解我上图2的理解是正确的。

0
0

正十七

2021-04-29

同学你好,当你的参数只有一个时,自然就是全导。但是当你有多个参数时,且这些参数相互有关系,比如多层神经网络,那么这个时候你只能用偏导,即保持其他参数不变的情况下,计算当前参数的导数。

比如,两层网络, f1(x) = relu(w1 * x), f2(x) = relu(w2 * x)。 y = f1(f2(x)), x, w1, w2都是向量。此时你在看看全导是否可以?

0
0

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程