社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
由于有些人实在太蠢,没办法只能加上这一段。首先,这里面什么看成变量,什么看成常量。
变量:网络的权值W(偏置b默认在W内。)以及输入X。
常量:就是target
你可能会说呃呃呃,不是输入都是有值得吗,不都是数吗,怎么会是变量啊。。我还能说什么呢?一般来说网络的反向传播就是两种类型。一种是更新网络权值W,这是属于常规的,一种是更新输入X。 不管哪种情况,我们都要把W和X看成变量,才能有反向传播。
推导过程中,W和X都是变量,输出是W和X的函数。
W(l)ij :第 l 层到第 l+1 层的权值,并且是 l 层的第 j 个单元到 l+1 层的第 i 个单元的权值。
Z(l)i
:第
l
层的第
i
个结点的输入和。
显然
Z(l)i=∑s(l−1)j=0Wl−1ijxj
, 其中
sl−1
代表
l−1
层的结点个数(不计算偏置单元)。可以这样说,第0个单元是偏置,1~
s(n−1)
是权重项。
a(l)i :表示第 l 层的第 i 个结点的激活值,就是下面说的out的输出,或是说 a=f(net) ,写成 a=f(z) 也是一样的。
δ(l)i
: 叫做“残差”,这里表示第
l
层的第
i
个节点的残差。这个非常重要,残差的定义就是——总的代价函数对于某个节点的“net”的偏导。注意的是这里的“net”指的是W*x+b这样的函数结构。可以这样看网络:
现在只需要看每个结点是如何处理数据的。不要看箭头,可以看到,h1和h2再加上“1”共三个结点输入,构成输入
x⃗
, 而相应的权值
W⃗
是
w5
,
w6
,
b2
, 也就是说
W⃗ ∗x⃗
就是这里的“net”,然后“out”是指激活后的值,就是
f(net)
.残差就是
∂E∂net
,*不是
∂E∂out
哦!
参数说明:假设有n层。J表示代价函数,和上面的E是同样的意思,只不过用不同的字母写而已。
1: 首先当然是正向计算咯,分别求出
L2,L3,...
直至最后一层
Ln
的激活值。我们这里把输入当做第一层。下面是真正的反向传播。
2: 对于第n层(最后一层是特殊的,必须单独拿出来)每个输出单元 i ,下面的 l 的值为 n , 计算每个结点的残差:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!