机器学习反向传播梯度推导
在我的前一篇文章中,已经推导出了单层感知机梯度的计算公式
多层感知机梯度推导
φ
E
φ
W
j
k
=
(
0
k
−
t
k
)
0
k
(
1
−
0
k
)
W
j
0
\frac {\varphi_E} {\varphi_{W_{j_k}}} = (0_k - t_k)0_k(1 - 0_k) W_j^0
φWjkφE=(0k−tk)0k(1−0k)Wj0
1. 链式法则:
φ
f
(
x
)
φ
g
(
x
)
=
φ
f
(
x
)
φ
h
(
x
)
φ
h
(
x
)
φ
g
(
x
)
\frac {\varphi f(x)} {\varphi g(x)} = \frac {\varphi f(x)} {\varphi h(x)} \frac {\varphi h(x)} {\varphi g(x)}
φg(x)φf(x)=φh(x)φf(x)φg(x)φh(x)
φ
E
φ
W
j
k
1
=
φ
E
φ
W
j
k
2
φ
W
j
k
2
φ
W
j
k
1
\frac {\varphi_E} {\varphi_{W_{j_k}^1}} = \frac {\varphi_E} {\varphi_{W_{j_k}^2}} \frac {\varphi_{W_{j_k}^2}} {\varphi_{W_{j_k}^1}}
φWjk1φE=φWjk2φEφWjk1φWjk2
2. bpnn推导:
注
:
Σ
,
σ
为
激
活
函
数
,
同
时
O
j
J
=
σ
(
x
j
J
)
注: \Sigma, \sigma为激活函数,同时O_j^J = \sigma(x_j^J)
注:Σ,σ为激活函数,同时OjJ=σ(xjJ)
所
以
:
φ
E
φ
W
j
k
K
=
(
O
k
K
−
t
k
)
O
k
K
(
1
−
O
k
K
)
O
j
J
所以:\frac {\varphi_E} {\varphi_{W_{j_k}^K}} = (O_k^K - t_k)O_k^K(1 - O_k^K) O_j^J
所以:φWjkKφE=(OkK−tk)OkK(1−OkK)OjJ
φ
E
φ
W
j
k
K
=
(
O
k
K
−
t
k
)
δ
k
O
j
J
\frac {\varphi_E} {\varphi_{W_{j_k}^K}} = (O_k^K - t_k)\delta_k O_j^J
φWjkKφE=(OkK−tk)δkOjJ
那
么
现
在
的
关
键
就
是
求
出
φ
E
φ
W
i
j
J
以
及
找
出
下
一
层
权
值
梯
度
与
上
一
层
权
值
梯
度
的
关
系
,
依
次
迭
代
那么现在的关键就是求出\frac {\varphi_E} {\varphi_{W_{i_j}^J}}以及找出下一层\\权值梯度与上一层权值梯度的关系,依次迭代
那么现在的关键就是求出φWijJφE以及找出下一层权值梯度与上一层权值梯度的关系,依次迭代
φ
E
φ
W
i
j
J
=
φ
1
2
Σ
i
=
0
m
(
O
k
K
−
t
k
)
2
φ
W
i
j
J
\frac {\varphi_E} {\varphi_{W_{i_j}^J}} = \frac {\varphi{{\frac 1 2}\Sigma_{i=0}^m(O_k^K - t_k)^2}} {\varphi_{W_{i_j}^J}}
φWijJφE=φWijJφ21Σi=0m(OkK−tk)2
对
W
i
j
J
的
导
数
有
影
响
的
只
有
O
k
K
,
所
以
:
对 {W_{i_j}^J} 的导数有影响的只有O_k^K,所以:
对WijJ的导数有影响的只有OkK,所以:
φ
E
φ
W
i
j
J
=
φ
1
2
(
O
k
K
−
t
k
)
2
φ
W
i
j
J
\frac {\varphi_E} {\varphi_{W_{i_j}^J}} = \frac {\varphi{{\frac 1 2}(O_k^K - t_k)^2}} {\varphi_{W_{i_j}^J}}
φWijJφE=φWijJφ21(OkK−tk)2
φ
E
φ
W
i
j
J
=
(
O
k
K
−
t
k
)
φ
O
k
K
φ
W
i
j
J
\frac {\varphi_E} {\varphi_{W_{i_j}^J}} = (O_k^K - t_k){\frac {\varphi{O_k^K }} {\varphi_{W_{i_j}^J}}}
φWijJφE=(OkK−tk)φWijJφOkK
φ
E
φ
W
i
j
J
=
(
O
k
K
−
t
k
)
φ
σ
(
x
k
K
)
φ
W
i
j
J
\frac {\varphi_E} {\varphi_{W_{i_j}^J}} = (O_k^K - t_k) \frac {\varphi{\sigma(x_k^K)}} {\varphi_{W_{i_j}^J}}
φWijJφE=(OkK−tk)φWijJφσ(xkK)
φ
E
φ
W
i
j
J
=
(
O
k
K
−
t
k
)
O
k
K
(
1
−
O
k
K
)
φ
x
k
K
φ
W
i
j
J
\frac {\varphi_E} {\varphi_{W_{i_j}^J}} = (O_k^K - t_k)O_k^K(1 - O_k^K) \frac {\varphi_{x_k^K}} {\varphi_{W_{i_j}^J}}
φWijJφE=(OkK−tk)OkK(1−OkK)φWijJφxkK
使
用
链
式
法
则
:
φ
E
φ
W
i
j
J
=
(
O
k
K
−
t
k
)
O
k
K
(
1
−
O
k
K
)
φ
x
k
K
φ
O
j
J
φ
O
j
J
φ
W
i
j
J
使用链式法则: \frac {\varphi_E} {\varphi_{W_{i_j}^J}} = (O_k^K - t_k)O_k^K(1 - O_k^K) \frac {\varphi_{x_k^K}} {\varphi_{O_j^J}} \frac {\varphi_{O_j^J}} {\varphi_{W_{i_j}^J}}
使用链式法则:φWijJφE=(OkK−tk)OkK(1−OkK)φOjJφxkKφWijJφOjJ
φ
E
φ
W
i
j
J
=
(
O
k
K
−
t
k
)
δ
k
K
W
j
k
φ
O
j
J
φ
W
i
j
J
\frac {\varphi_E} {\varphi_{W_{i_j}^J}} = (O_k^K - t_k)\delta_k^K W_{j_k}\frac {\varphi_{O_j^J}} {\varphi_{W_{i_j}^J}}
φWijJφE=(OkK−tk)δkKWjkφWijJφOjJ
φ
E
φ
W
i
j
J
=
(
O
k
K
−
t
k
)
δ
k
K
W
j
k
φ
σ
(
x
j
J
)
φ
W
i
j
J
\frac {\varphi_E} {\varphi_{W_{i_j}^J}} = (O_k^K - t_k) \delta_k^K W_{j_k} \frac {\varphi_{\sigma(x_j^J)}} {\varphi_{W_{i_j}^J}}
φWijJφE=(OkK−tk)δkKWjkφWijJφσ(xjJ)
类
似
于
上
一
层
推
导
:
φ
E
φ
W
i
j
J
=
(
O
k
K
−
t
k
)
δ
k
K
W
j
k
δ
j
J
x
j
0
类似于上一层推导:\\ \frac {\varphi_E} {\varphi_{W_{i_j}^J}} =(O_k^K - t_k) \delta_k^K W_{j_k} \delta_j^J x_j^0
类似于上一层推导:φWijJφE=(OkK−tk)δkKWjkδjJxj0
神经网络计算过程:
- 通过前向传播计算出训练结果
- 将训练结果通过反向传播作用于梯度下降