目录
- 全连接神将网络的反响传播算法
- 前向传播
- 反向传播
全连接神经网络的反向传播算法
前向传播
列举论文中的公式,并与上图所示流程一一对应:
代价函数:
EN=12∑n=1N∑k=1c(tnk−ynk)2
为简化分析,只考虑第n
个样本对应的代价函数:
En=12∑k=1c(tnk−ynk)2
公式中符号的意义:
N: 代表训练样本的个数
c: 代表训练样本所对应的类标签的个数
E: 代表代价函数
tnk: 代表第n个样本对应的类标签的第k维
ynk: 代表第n个样本对应的类标签的第k维的预测值
第l
层的输出计算公式:
xl=f(ul),其中,ul=Wlx+bl
计算到最后一层L
层时,也就计算出了神经网络的输出y
,至此,前向传播完成。
反向传播
首先计算代价函数关于偏移量的导数:
∂E∂b=∂E∂u∂u∂b=δ
这里的b
表示偏移量,u
是:
u=Wx+b
文中提到了一个灵敏度的问题,引用zouxy09的解释:
灵敏度的意思就是我们的基b变化多少,误差会变化多少,也就是误差对基的变化率,也就是导数了
根据u
的表达式,可以计算出
∂E∂b=1
,所以有
∂E∂b=∂E∂u=δ
,也就是说bias基的灵敏度
∂E∂b=δ
和误差
E
对一个节点全部输入
由于是反向传播算法,所以我们先计算输出神经元对应的
δL
δL=f′(uL)⊙(yn−tn)
再往回计算时(反向),每一层神经元对应的 δl 为:
δl=(Wl+1)Tδl+1⊙f′(ul)
最后由计算出的 δl 来计算误差函数对于该层权值矩阵的每一个权值的导数。
∂E∂Wl=xl−1(δl)T
给一个更新率 η ,计算出权值矩阵的更新值:
ΔWl=−η∂E∂Wl
使用该值对权值矩阵进行更新。
(Wl)′=W+ΔWl
至此,一轮的反向传播结束。在计算的过程中会发现,图示中的计算步骤与文字说明的计算过程稍有不同。在计算 δ 时,图片中的描述未涉及到 f′(ul) ,实际上,它在最后的计算中是加了进去的,两者的计算结果是一样的。