赞
踩
如上图所示,每个圆代表一个神经元,对来自其他神经元的信号输入 x = [ x 1 , x 2 , . . . , x k ] x=[x_1,x_2,...,x_k] x=[x1,x2,...,xk]
经过神经元处理 f = ∑ i = 1 k w i x i + b i a s f=\sum_{i=1}^kw_ix_i+bias f=∑i=1kwixi+bias得到 f f f,类似于神经元细胞对来自其他神经元细胞的传递的刺激脉冲的累加
再对使用阶跃函数处理 f f f,即根据累加脉冲是否达到阈值判断神经元是否有输出
事实上,感知机是一个线性二分类模型,也可以表示为 f ( x ) = s i g n ( w T x + b ) f(x)=sign(w^Tx+b) f(x)=sign(wTx+b),与寻找超平面将线性可分样本分开等价
多层感知机(全连接神经网络)
全连接神经网络,可以视作是由多个感知机构成的
中间层称作隐藏层,可以有多个
激活函数
神经元累加脉冲的步骤可以用矩阵乘 W ⋅ x W·x W⋅x表示,将多层直接联系起来有 f ( x ) = W m W m − 1 . . . W 1 x f(x)=W_mW_{m-1}...W_1x f(x)=WmWm−1...W1x,其仍然是一个仿射变换
因此为了实现对非线性映射的拟合,可以选择在每一层输出处引入一个非线性变换,即激活函数
常用的激活函数有:
Relu
R
e
l
u
(
x
)
=
{
0
x
≤
0
x
x
>
0
Relu(x)={0 x≤0x x>0
sigmoid函数
s
i
g
m
o
i
d
(
x
)
=
1
1
+
e
−
x
sigmoid(x)=\frac1{1+e^{-x}}
sigmoid(x)=1+e−x1
tanh函数
t
a
n
h
(
x
)
=
1
−
e
−
2
x
1
+
e
−
2
x
tanh(x)=\frac{1-e^{-2x}}{1+e^{-2x}}
tanh(x)=1+e−2x1−e−2x
反向传播
如图,是 l l l层全连接网络
令:第 l − 1 l-1 l−1层与第 l l l层之间的权重向量为 w l w^l wl,偏置向量为 b l b^l bl,第 l l l层未激活的累加信号向量 Z l Z^l Zl,第 l l l层激活后的累加信号向量 α l \alpha^l αl
前向传播的过程可以用迭代的方式表示为:
α
l
=
σ
(
Z
l
)
=
σ
(
W
l
α
l
−
1
+
b
l
)
(
l
=
2
,
3
,
.
.
.
,
L
)
α
1
=
x
\alpha^l=\sigma(Z^l)=\sigma(W^l\alpha^{l-1}+b^l) \ \ \ \ \ \ (l=2,3,...,L)\\ \alpha^1=x
αl=σ(Zl)=σ(Wlαl−1+bl) (l=2,3,...,L)α1=x
定义损失函数为平方损失函数:
J
(
W
,
b
,
x
,
y
)
=
1
2
∣
∣
α
L
−
y
∣
∣
2
2
=
1
2
∣
∣
σ
(
W
L
α
L
−
1
+
b
L
)
−
y
∣
∣
2
J(W,b,x,y)=\frac12||\alpha^L-y||_2^2=\frac12||\sigma(W^L\alpha^{L-1}+b^L)-y||^2
J(W,b,x,y)=21∣∣αL−y∣∣22=21∣∣σ(WLαL−1+bL)−y∣∣2
求解损失函数梯度:
∂
J
(
W
,
b
,
x
,
y
)
∂
W
L
=
[
(
α
L
−
y
)
⋅
σ
′
(
Z
L
)
]
(
α
L
−
1
)
T
∂
J
(
W
,
b
,
x
,
y
)
∂
b
L
=
(
α
L
−
y
)
⋅
σ
′
(
Z
L
)
∂
J
(
W
,
b
,
x
,
y
)
∂
Z
L
=
(
α
L
−
y
)
⋅
σ
′
(
Z
L
)
此
处
(
α
L
−
y
)
⋅
σ
′
(
Z
L
)
为
相
应
位
置
元
素
相
乘
∂J(W,b,x,y)∂WL=[(αL−y)·σ′(ZL)](αL−1)T∂J(W,b,x,y)∂bL=(αL−y)·σ′(ZL)∂J(W,b,x,y)∂ZL=(αL−y)·σ′(ZL)
记 : δ L = ∂ J ( W , b , x , y ) ∂ Z L = ( α L − y ) ⋅ σ ′ ( Z L ) 记:\delta^L=\frac{\partial J(W,b,x,y)}{\partial{Z^L}}=(\alpha^L-y)·\sigma'(Z^L) 记:δL=∂ZL∂J(W,b,x,y)=(αL−y)⋅σ′(ZL)
由
Z
l
=
W
l
α
l
−
1
+
b
l
Z^l=W^l\alpha^{l-1}+b^l
Zl=Wlαl−1+bl
∂
J
(
W
,
b
,
x
,
y
)
∂
W
l
=
∂
J
(
W
,
b
,
x
,
y
)
∂
Z
l
∂
Z
l
∂
W
l
=
δ
l
(
α
l
−
1
)
T
∂
J
(
W
,
b
,
x
,
y
)
∂
b
l
=
∂
J
(
W
,
b
,
x
,
y
)
∂
Z
l
∂
Z
l
∂
b
l
=
δ
l
∂J(W,b,x,y)∂Wl=∂J(W,b,x,y)∂Zl∂Zl∂Wl=δl(αl−1)T∂J(W,b,x,y)∂bl=∂J(W,b,x,y)∂Zl∂Zl∂bl=δl
由
δ
l
=
∂
J
(
W
,
b
,
x
,
y
)
∂
Z
l
=
(
∂
Z
l
+
1
∂
Z
l
)
T
δ
l
+
1
\delta^l=\frac{\partial J(W,b,x,y)}{\partial{Z^l}}=(\frac{\partial Z^{l+1}}{\partial{Z^l}})^T\delta^{l+1}
δl=∂Zl∂J(W,b,x,y)=(∂Zl∂Zl+1)Tδl+1
Z l + 1 = W l + 1 α l + b l + 1 = W l + 1 σ ( Z l ) + b l + 1 ∂ Z l + 1 ∂ Z l = W l + 1 σ ′ ( Z l ) Z^{l+1}=W^{l+1}\alpha^l+b^{l+1}=W^{l+1}\sigma(Z^l)+b^{l+1}\\ \frac{\partial Z^{l+1}}{\partial{Z^l}}=W^{l+1}\sigma'(Z^l) Zl+1=Wl+1αl+bl+1=Wl+1σ(Zl)+bl+1∂Zl∂Zl+1=Wl+1σ′(Zl)
即可以从第L层开始,计算 δ L \delta^L δL,一层层向前计算 δ l \delta^l δl,进而求得损失函数对第l层 W l W^l Wl与 b l b^l bl的偏导
初始化每一层 W , b W,b W,b
输入 α 1 = x \alpha^1=x α1=x
前向传播
α
i
,
l
=
σ
(
W
l
α
i
,
l
−
1
+
b
l
)
\alpha^{i,l}=\sigma(W^{l}\alpha^{i,l-1}+b^{l})
αi,l=σ(Wlαi,l−1+bl)
计算:
δ
L
=
(
α
L
−
y
)
⋅
σ
′
(
Z
L
)
\delta^L=(\alpha^L-y)·\sigma'(Z^L)
δL=(αL−y)⋅σ′(ZL)
从
l
=
L
−
1
l=L-1
l=L−1到
l
=
2
l=2
l=2,反向逐层计算:
δ
i
,
l
=
W
l
+
1
δ
i
,
l
+
1
⋅
σ
′
(
z
i
,
l
)
\delta^{i,l}=W^{l+1}\delta^{i,l+1}·\sigma'(z^{i,l})
δi,l=Wl+1δi,l+1⋅σ′(zi,l)
更新:
W
l
=
W
l
−
η
∑
i
=
1
m
δ
i
,
l
(
α
i
,
l
−
1
)
T
b
l
=
b
l
−
η
∑
i
=
1
m
δ
i
,
l
W^l=W^l-\eta\sum_{i=1}^m\delta^{i,l}(\alpha^{i,l-1})^T\\ b^l=b^l-\eta\sum_{i=1}^m\delta^{i,l}
Wl=Wl−ηi=1∑mδi,l(αi,l−1)Tbl=bl−ηi=1∑mδi,l
满足误差条件后结束,否则返回第三步
得到所有的 W , b W,b W,b,对新样本前向传播求解
【1】[神经网络反向传播矩阵求导][https://zhuanlan.zhihu.com/p/83859554?from_voters_page=true]
【2】[矩阵求导术(上)][https://zhuanlan.zhihu.com/p/24709748]
【3】[BP算法的矩阵推导][https://blog.csdn.net/qq_35269774/article/details/88585053]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。