sigmoid 函数导数如何用于反向传播

问题描述 投票:0回答:1

我试图理解反向传播背后的公式。 所以如果我们的最后一层是 sigmoid 我们可以计算

dZ = A−Y
但如果我们在神经网络中间有一层,它的计算方式就像
dZ = dA⋅A⋅(1−A)

我们的通用公式是

dZi​ = dAi​⋅Ai​⋅(1−Ai​)

然后我们有

dA = A−Y
。这样我们就可以得到
 dZ = dA⋅A⋅(1−A) = (A−Y)⋅A⋅(1−A) 
以及
dZ = A−Y
。 现在这让我很困惑。 任何人都可以帮忙吗?我需要一个解释。

PS:我从chatgpt获得了公式,我问过它这是什么意思,但没有得到一个可以理解的答案。

math deep-learning neural-network artificial-intelligence linear-algebra
1个回答
0
投票

似乎有一些符号交叉。

A
似乎总是表示该层的输出。
Z
是层内线性变换的结果,因此
A = sigmoid(Z)
dA
dZ
这里是梯度,这作为符号是不幸的,因为通常微分或方向导数都是这样表示的。替代方案是
bA
gA

在最后一层之后,应用误差函数,这里是与真实值之差的范数平方的 0.5 倍

Y
。该函数的梯度是
gA = A-Y
。进入最后一层,激活函数贡献
gZ = gA * diff_sigmoid(Z)
。这是一般公式。但常用作激活的logistic sigmoid函数满足一个自治微分方程
dA/dZ = A*(1-A)
,因此导数可以用
gZ = gA * (A*(1-A))
代替。对于其他激活函数,此类快捷方式可能不适用,则必须将导数实现为
Z
的函数。

© www.soinside.com 2019 - 2024. All rights reserved.