反向传播的原文是:
1986年的《Learning representations by back-propagating errors》
x
j
=
∑
i
y
i
w
j
i
(
1
)
x_j=\sum_iy_iw_{ji}(1)
xj=i∑yiwji(1)
y
j
=
1
1
+
e
−
x
i
(
2
)
y_j=\frac{1}{1+e^{-x_i}}(2)
yj=1+e−xi1(2)
这个就是Sigmoid函数
E = 1 2 ∑ c ∑ j ( y j , c − d j , c ) 2 ( 3 ) E=\frac{1}{2}\sum_c\sum_j(y_{j,c}-d_{j,c})^2(3) E=21c∑j∑(yj,c−dj,c)2(3)
∂
E
∂
y
j
=
y
j
−
d
j
(
4
)
\frac{∂E}{∂y_j}=y_j-d_j(4)
∂yj∂E=yj−dj(4)
∂
E
∂
x
j
=
∂
E
∂
y
j
y
j
(
1
−
y
j
)
(
5
)
\frac{∂E}{∂x_j}=\frac{∂E}{∂y_j}y_j(1-y_j)(5)
∂xj∂E=∂yj∂Eyj(1−yj)(5)
∂ E ∂ w j i = ∂ E ∂ x j ⋅ ∂ x j ∂ w j i = ∂ E ∂ x j y i ( 6 ) \frac{∂E}{∂w_{ji}}=\frac{∂E}{∂x_j}·\frac{∂x_j}{∂w_{ji}}=\frac{∂E}{∂x_j}y_i(6) ∂wji∂E=∂xj∂E⋅∂wji∂xj=∂xj∂Eyi(6)
∂ E ∂ y i = ∑ j ∂ E ∂ x j ⋅ w j i ( 7 ) \frac{∂E}{∂y_i}=\sum_j\frac{∂E}{∂x_j}·w_{ji}(7) ∂yi∂E=j∑∂xj∂E⋅wji(7)
Δ
w
=
−
ε
∂
E
∂
w
(
8
)
\Delta w=-\varepsilon\frac{∂E}{∂w}(8)
Δw=−ε∂w∂E(8)
Δ
w
(
t
)
=
−
ε
∂
E
∂
w
(
t
)
+
α
Δ
w
(
t
−
1
)
(
9
)
\Delta w(t)=-\varepsilon\frac{∂E}{∂w(t)}+\alpha\Delta w(t-1)(9)
Δw(t)=−ε∂w(t)∂E+αΔw(t−1)(9)
原文没有提及b是怎么变化的,另外参考了下文献:
https://blog.csdn.net/qq_29762941/article/details/80343185
Δ
b
=
−
ε
∂
E
∂
b
\Delta b=-\varepsilon\frac{∂E}{∂b}
Δb=−ε∂b∂E
##########如何记忆######################
首先记住这个神经元:
然后就是下面的一大堆
∂
E
∂
w
j
i
=
∂
E
∂
y
j
⋅
∂
y
j
∂
x
j
⋅
∂
x
j
∂
w
j
i
\frac{∂E}{∂w_{ji}}=\frac{∂E}{∂y_j}·\frac{∂y_j}{∂x_j}·\frac{∂x_j}{∂w_{ji}}
∂wji∂E=∂yj∂E⋅∂xj∂yj⋅∂wji∂xj
上面三个因子怎么计算呢?
∂
E
∂
y
j
的
计
算
:
1
2
(
d
j
−
y
j
)
2
,
d
j
是
实
际
的
类
别
标
签
,
y
j
是
预
测
结
果
\frac{∂E}{∂y_j}的计算:\frac{1}{2}(d_j-y_j)^2,d_j是实际的类别标签,y_j是预测结果
∂yj∂E的计算:21(dj−yj)2,dj是实际的类别标签,yj是预测结果剩下就是求导操作。
∂ y j ∂ x j 的 计 算 : 就 是 对 式 ( 2 ) 进 行 求 导 \frac{∂y_j}{∂x_j}的计算:就是对式(2)进行求导 ∂xj∂yj的计算:就是对式(2)进行求导
∂ x j ∂ w j i 的 计 算 : 这 里 的 x j 不 要 误 解 成 是 整 个 神 经 元 的 输 入 端 , 而 是 激 活 函 数 的 输 入 端 , 所 以 这 个 的 结 果 就 是 y i \frac{∂x_j}{∂w_{ji}}的计算:这里的x_j不要误解成是整个神经元的输入端,而是激活函数的输入端,所以这个的结果就是y_i ∂wji∂xj的计算:这里的xj不要误解成是整个神经元的输入端,而是激活函数的输入端,所以这个的结果就是yi
hidden unit 就是放激活函数的。
也就是后期论文中常见的隐藏层。
怎么个传播法呢?
最后就是
w
j
i
=
−
ε
△
w
+
w
j
i
w_{ji}=-\varepsilon\triangle w+w_{ji}
wji=−ε△w+wji