python - 如何解释反向传播的计算图?

标签 python backpropagation derivative calculus

我正在使用 Python 学习 Chollet 的深度学习,但一直停留在计算图应用程序上。我之前浏览过这本书,但意识到我需要多学一点数学,所以我刚刚完成了《数据科学实用数学》,学习了线性代数和微积分的一些基础知识。回到 Chollet 的书,我被计算图困住了。

向前传球非常有意义:

x * w + b = 7,实际 y 值为 4,这意味着我们的损失为 3。我陷入了反向传播部分。

在基本层面上,我知道通过这个简单网络的向后传递使用链式法则(和偏导数)来揭示输出如何受到前一层的影响,就像嵌套函数一样。一旦我们知道 W 和 B 以及 x1 和 x2 如何影响最终输出,我们就可以使用学习率来改变这些参数以降低 loss_val,一次一步(随机梯度下降)。但是,我很难理解偏导数是如何得到 1* 1 * 1 和 1 * 1 * 2 的。

grad(loss_val, x2) = 1 -> 我将其解读为 loss_val 相对于 x2 的梯度。 x2 = 7,所以我的印象应该是3,而不是1,但显然我错了。我问过几个人,他们说计算偏导数,但我正在寻找更具体的解释,以便我可以遵循数学。有人可以帮忙吗?

enter image description here

最佳答案

可以使用基本微积分找到损失值相对于 x2 的梯度。

loss_val = x2 - y_true
# taking derivatives, note that y_true here is considered a constant value, so its derivative is 0.
d(loss_val) / d(x2) = 1 - 0 = 1

同样,

x2 = x1 + b
# taking derivatives, again b here is a constant, so its derivative is 0.
d(x2) / d(x1) = 1 + 0 = 1

关于python - 如何解释反向传播的计算图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74858284/

相关文章:

Python:导入 * 只从包中导入某些东西?

python - 错误 2006 : "MySQL server has gone away" using Python, Bottle Microframework 和 Apache

machine-learning - 神经网络中的单位是什么(反向传播算法)

python - 如果有 2 个 keras 模型共享层,设置 trainable=False 后要编译哪个模型?

c - 如何计算c中的微分系数

python - dataframe.sort_values() 是如何修改索引的

python - select() 可以在 Windows 下使用 Python 中的文件吗?

batch-file - 反向传播和批量训练

Java估计一个点的导数

c - 在 FFTW3 中进行二阶导数