写在前面
· 最近在学习《机器学习》. 主要是看浙江大学胡浩基老师的网课,结合周志华老师的西瓜书来学. 为了理清思路和推公式就敲了这样一个读书笔记. 初次学习难免会有错漏,欢迎批评指正. 这份笔记主要用途还是用来自己复习回顾. 当然如果对大家有帮助那就更好了hhh
· 注:神经网络这部分的笔记大部分是基于浙大《机器学习》的逻辑进行整理的.
第5章 神经网络(Neural Network)
· 神经网络的诞生是集体的智慧
· 近年发展迅速,是目前机器学习领域最火的方向.
· 上世纪50-60年代即奠定理论基础.
· 大数据+算力迅速提升,神经网络层数得以提升,性能更好.
接下来以人工神经网络发展历程为线索进行介绍.
一、人工神经网络的提出
1. 神经元的数学模型
1943年,心理学家W.S.McCulloch和数理逻辑学家W.Pitts基于神经元的生理特征,建立了单个神经元的数学模型(
M-P
\text{M-P}
M-P模型)
y
k
=
φ
(
∑
i
=
1
m
ω
k
i
x
i
+
b
k
)
=
φ
(
W
k
T
X
+
b
)
y_k=\varphi \left( \sum_{i=1}^m{\omega _{ki}x_i+b_k} \right) =\varphi \left( W_{k}^{\mathrm{T}}X+b \right)
yk=φ(i=1∑mωkixi+bk)=φ(WkTX+b)
2. 感知机算法(Perceptron Algorithm)
1957年,Frank Rosenblatt从纯数学的度重新考察这一模型,指岀能够从一些输入输出对 ( X , y ) (X,y) (X,y)中通过学习算法获得权重 W W W和 b b b.
(1)感知机算法要解决的问题
给定一些输入输出对 ( X , y ) (X,y) (X,y),其中 y = ± 1 y=±1 y=±1,求一个函数,使 f ( X ) = y f(X)=y f(X)=y.
设定 f ( X ) = s i g n ( W T X + b ) f(X)=\mathrm{sign}(W^{\mathrm{T}}X+b) f(X)=sign(WTX+b),从一堆输入输出中自动学习,获得 W W W和 b b b.
(2)算法流程
输入
(
X
i
,
y
i
)
(
i
=
1
,
2
,
⋯
,
n
)
(X_i,y_i)(i=1,2,\cdots,n)
(Xi,yi)(i=1,2,⋯,n)
(1)随机选择
W
W
W和
b
b
b.
(2)取一个训练样本
(
X
i
,
y
i
)
(X_i,y_i)
(Xi,yi)
(i)若
W
T
X
i
+
b
>
0
W^{\mathrm{T}}X_i+b>0
WTXi+b>0且
y
i
=
−
1
y_i=-1
yi=−1,则
W
:
=
W
−
X
,
b
:
=
b
−
1
W:=W-X, b:=b-1
W:=W−X,b:=b−1;
(ii)若
W
T
X
i
+
b
<
0
W^{\mathrm{T}}X_i+b<0
WTXi+b<0且
y
i
=
+
1
y_i=+1
yi=+1,则
W
:
=
W
+
X
,
b
:
=
b
+
1
W:=W+X, b:=b+1
W:=W+X,b:=b+1.
(3)再取另一个
(
X
,
y
)
(X,y)
(X,y)回到(2).
(4)终止条件:直到所有输入输岀对都不满足(2)中(i)和(ii)之一,退出循环.
与 SVM \text{SVM} SVM的本质区别: SVM \text{SVM} SVM以全局的眼光来看训练样本,而感知机算法则着眼单独的个体,在循环中不断调整参数.
(3)感知机的收敛性(Novikoff定理)
在不断的调整中,是否会出现参数不停震荡而不收敛于某一个值的情况?
Rosenblatt给出了参数能够收敛的证明. 在证明之前,先做一些准备工作.
定义一个增广向量 X → \overrightarrow{X} X,使得
{ 若 y = + 1 , 则 X → = [ X 1 ] 若 y = − 1 , 则 X → = [ − X − 1 ] \begin{cases} \text{若}y=+1,\text{则}\overrightarrow{X}=\left[ \begin{array}{c} X\\ 1\\ \end{array} \right]\\\\ \text{若}y=-1,\text{则}\overrightarrow{X}=\left[ \begin{array}{c} -X\\ -1\\ \end{array} \right]\\ \end{cases} ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧若y=+1,则X=[X1]若y=−1,则X=[−X−1]定义增广 W → \overrightarrow{W} W如下:
W → = [ W b ] \overrightarrow{W}=\left[ \begin{array}{c} W\\ b\\ \end{array} \right] W=[Wb]
则算法可改写为:
输入 X → i ( i = 1 , 2 , ⋯ , n ) \overrightarrow{X}_i(i=1,2,\cdots,n) Xi(i=1,2,⋯,n)
(1)随机选择 W → \overrightarrow{W} W.
(2)取一个训练样本 X → i \overrightarrow{X}_i Xi. 若 W → T X → i < 0 \overrightarrow{W}^{\mathrm{T}}\overrightarrow{X}_i<0 WTXi<0,则 W → : = W → + X → i \overrightarrow{W}:=\overrightarrow{W}+\overrightarrow{X}_i W:=W+Xi.
(3)再取另一个 X → i \overrightarrow{X}_i Xi回到(2).
(4)终止条件:直到所有输入输岀对都不满足.(2)中(i)和(ii)之一,退出循环.
感知机算法收敛定理可表述为:
输入
{
X
→
i
}
i
=
1
,
⋯
,
N
\left\{ \overrightarrow{X}_i \right\} _{i=1,\cdots ,N}
{Xi}i=1,⋯,N,若线性可分,即
∃
W
→
o
p
t
,
s
.
t
.
W
→
o
p
t
X
i
→
>
0
(
i
=
1
,
2
,
⋯
,
N
)
\exists \overrightarrow{W}_{\mathrm{opt}},\ \mathrm{s}.\mathrm{t}.\ \overrightarrow{W}_{\mathrm{opt}}\overrightarrow{X_i}>0\left( i=1,2,\cdots ,N \right)
∃Wopt, s.t. WoptXi>0(i=1,2,⋯,N)则利用上述感知机算法,经过有限步后得到一个
W
→
\overrightarrow{W}
W,使得
W
→
T
X
→
i
>
0
(
i
=
1
,
2
,
⋯
,
N
)
.
\overrightarrow{W}^{\mathrm{T}}\overrightarrow{X}_i>0\left( i=1,2,\cdots ,N \right) .
WTXi>0(i=1,2,⋯,N).
下面给出证明.
证明:
不失一般性,设
∥
W
→
o
p
t
∥
=
1
\left\| \overrightarrow{W}_{\mathrm{opt}} \right\| =1
∥∥∥Wopt∥∥∥=1.
假设第
k
k
k步所得的
W
→
\overrightarrow{W}
W是
W
→
(
k
)
\overrightarrow{W}\left( k \right)
W(k),且有一个
X
i
→
\overrightarrow{X_i}
Xi,使得
W
→
T
(
k
)
X
i
→
<
0
\overrightarrow{W}^T\left( k \right) \overrightarrow{X_i}<0
WT(k)Xi<0根据感知机算法,有
W
→
(
k
+
1
)
=
W
→
(
k
)
+
X
i
→
W
→
(
k
+
1
)
−
a
W
→
o
p
t
=
W
→
(
k
)
+
X
i
→
−
a
W
→
o
p
t
\overrightarrow{W}\left( k+1 \right) =\overrightarrow{W}\left( k \right) +\overrightarrow{X_i} \\\\ \overrightarrow{W}\left( k+1 \right) -a\overrightarrow{W}_{\mathrm{opt}}=\overrightarrow{W}\left( k \right) +\overrightarrow{X_i}-a\overrightarrow{W}_{\mathrm{opt}}
W(k+1)=W(k)+XiW(k+1)−aWopt=W(k)+Xi−aWopt
取模的平方
∥
W
→
(
k
+
1
)
−
a
W
→
o
p
t
∥
2
=
∥
W
→
(
k
)
+
X
i
→
−
a
W
→
o
p
t
∥
2
\left\| \overrightarrow{W}\left( k+1 \right) -a\overrightarrow{W}_{\mathrm{opt}} \right\| ^2=\left\| \overrightarrow{W}\left( k \right) +\overrightarrow{X_i}-a\overrightarrow{W}_{\mathrm{opt}} \right\| ^2
∥∥∥W(k+1)−aWopt∥∥∥2=∥∥∥W(k)+Xi−aWopt∥∥∥2
∥
W
→
(
k
+
1
)
−
a
W
→
o
p
t
∥
2
=
∥
W
→
(
k
)
+
X
i
→
−
a
W
→
o
p
t
∥
2
=
∥
(
W
→
(
k
)
−
a
W
→
o
p
t
)
+
X
i
→
∥
2
=
∥
W
→
(
k
)
−
a
W
→
o
p
t
∥
2
+
∥
X
i
→
∥
2
+
2
W
→
T
(
k
)
X
i
→
−
2
a
W
→
o
p
t
T
X
i
→
\begin{aligned} \left\| \overrightarrow{W}\left( k+1 \right) -a\overrightarrow{W}_{\mathrm{opt}} \right\| ^2&=\left\| \overrightarrow{W}\left( k \right) +\overrightarrow{X_i}-a\overrightarrow{W}_{\mathrm{opt}} \right\| ^2 \\ &=\left\| \left( \overrightarrow{W}\left( k \right) -a\overrightarrow{W}_{\mathrm{opt}} \right) +\overrightarrow{X_i} \right\| ^2 \\ &=\left\| \overrightarrow{W}\left( k \right) -a\overrightarrow{W}_{\mathrm{opt}} \right\| ^2+\left\| \overrightarrow{X_i} \right\| ^2+2\overrightarrow{W}^{\mathrm{T}}\left( k \right) \overrightarrow{X_i}-2a\overrightarrow{W}_{\mathrm{opt}}^{\mathrm{T}}\overrightarrow{X_i} \end{aligned}
∥∥∥W(k+1)−aWopt∥∥∥2=∥∥∥W(k)+Xi−aWopt∥∥∥2=∥∥∥(W(k)−aWopt)+Xi∥∥∥2=∥∥∥W(k)−aWopt∥∥∥2+∥∥∥Xi∥∥∥2+2WT(k)Xi−2aWoptTXi注意到最后两项
W
→
T
(
k
)
X
i
→
<
0
,
W
→
o
p
t
T
X
i
→
>
0
\overrightarrow{W}^{\mathrm{T}}\left( k \right) \overrightarrow{X_i}<0, \overrightarrow{W}_{\mathrm{opt}}^{\mathrm{T}}\overrightarrow{X_i}>0
WT(k)Xi<0,WoptTXi>0一定可以找到足够大的
a
a
a,使得
∥
X
i
→
∥
2
+
2
W
→
T
(
k
)
X
i
→
−
2
a
W
→
o
p
t
T
X
i
→
<
0
\left\| \overrightarrow{X_i} \right\| ^2+2\overrightarrow{W}^{\mathrm{T}}\left( k \right) \overrightarrow{X_i}-2a\overrightarrow{W}_{\mathrm{opt}}^{\mathrm{T}}\overrightarrow{X_i}<0
∥∥∥Xi∥∥∥2+2WT(k)Xi−2aWoptTXi<0进而
∥
W
→
(
k
+
1
)
−
a
W
→
o
p
t
∥
2
<
∥
W
→
(
k
)
−
a
W
→
o
p
t
∥
2
\left\| \overrightarrow{W}\left( k+1 \right) -a\overrightarrow{W}_{\mathrm{opt}} \right\| ^2<\left\| \overrightarrow{W}\left( k \right) -a\overrightarrow{W}_{\mathrm{opt}} \right\| ^2
∥∥∥W(k+1)−aWopt∥∥∥2<∥∥∥W(k)−aWopt∥∥∥2
定义
β
=
max
i
=
1
,
.
.
.
,
N
∥
X
i
→
∥
,
γ
=
min
i
=
1
,
.
.
.
,
N
W
→
o
p
t
X
i
→
\beta =\underset{i=1,...,N}{\max}\left\| \overrightarrow{X_i} \right\| , \gamma =\underset{i=1,...,N}{\min}\overrightarrow{W}_{\mathrm{opt}}\overrightarrow{X_i}
β=i=1,...,Nmax∥∥∥Xi∥∥∥,γ=i=1,...,NminWoptXi取
a
=
β
2
+
1
2
γ
a=\frac{\beta ^2+1}{2\gamma}
a=2γβ2+1则
∥
W
→
(
k
+
1
)
−
a
W
→
o
p
t
∥
2
<
∥
W
→
(
k
)
−
a
W
→
o
p
t
∥
2
−
1.
\left\| \overrightarrow{W}\left( k+1 \right) -a\overrightarrow{W}_{\mathrm{opt}} \right\| ^2<\left\| \overrightarrow{W}\left( k \right) -a\overrightarrow{W}_{\mathrm{opt}} \right\| ^2-1.
∥∥∥W(k+1)−aWopt∥∥∥2<∥∥∥W(k)−aWopt∥∥∥2−1.
取
D
=
∥
W
→
(
0
)
−
a
W
→
o
p
t
∥
D=\left\| \overrightarrow{W}\left( 0 \right) -a\overrightarrow{W}_{\mathrm{opt}} \right\|
D=∥∥∥W(0)−aWopt∥∥∥,则至多经过
D
2
D^2
D2步,
W
→
\overrightarrow{W}
W将会收敛于
a
W
→
o
p
t
.
□
a\overrightarrow{W}_{\mathrm{opt}}.\quad \Box
aWopt.□
补充说明: D D D为有限大的证明.
D 2 = ∥ W → ( 0 ) − a W → o p t ∥ 2 = ∥ W → ( 0 ) ∥ 2 + a 2 ∥ W → o p t ∥ 2 − 2 a W → T ( 0 ) W → o p t = ∥ W → ( 0 ) ∥ 2 + a 2 ∥ W → o p t ∥ 2 − 2 a ∥ W → ( 0 ) ∥ ∥ W → o p t ∥ cos θ ⩽ ∥ W → ( 0 ) ∥ 2 + a 2 + 2 a ∥ W → ( 0 ) ∥ \begin{aligned} D^2&=\left\| \overrightarrow{W}\left( 0 \right) -a\overrightarrow{W}_{\mathrm{opt}} \right\| ^2 \\ &=\left\| \overrightarrow{W}\left( 0 \right) \right\| ^2+a^2\left\| \overrightarrow{W}_{\mathrm{opt}} \right\| ^2-2a\overrightarrow{W}^{\mathrm{T}}\left( 0 \right) \overrightarrow{W}_{\mathrm{opt}} \\ &=\left\| \overrightarrow{W}\left( 0 \right) \right\| ^2+a^2\left\| \overrightarrow{W}_{\mathrm{opt}} \right\| ^2-2a\left\| \overrightarrow{W}\left( 0 \right) \right\| \left\| \overrightarrow{W}_{\mathrm{opt}} \right\| \cos \theta \\ &\leqslant \left\| \overrightarrow{W}\left( 0 \right) \right\| ^2+a^2+2a\left\| \overrightarrow{W}\left( 0 \right) \right\| \end{aligned} D2=∥∥∥W(0)−aWopt∥∥∥2=∥∥∥W(0)∥∥∥2+a2∥∥∥Wopt∥∥∥2−2aWT(0)Wopt=∥∥∥W(0)∥∥∥2+a2∥∥∥Wopt∥∥∥2−2a∥∥∥W(0)∥∥∥∥∥∥Wopt∥∥∥cosθ⩽∥∥∥W(0)∥∥∥2+a2+2a∥∥∥W(0)∥∥∥
二、人工智能的第一次寒冬
1. 线性可分概念的提出
Minsky创造了线性可分(不可分)的概念(1969《Perceptron》). 书中提及日常生活中很多事物是非线性可分的.
例子:识别一个二值图是否全连通(下图例子中, class 1 \text{class 1} class 1为全连通, class 2 \text{class 2} class 2不是全连通).
人们认为既然大多事物非线性可分,而感知机只能解决线性可分的问题,用途较为狭隘,研究它的实际意义不大,导致人工智能发展进入了停滞时期.
三、多层神经网络(Multiple Layer Neural Networks)
想法:使用非线性模型来划分非线性的样本.
这样一个神经网络包含两层. 其中 φ ( ⋅ ) \varphi(\cdot) φ(⋅)是一个非线性函数.
1. φ ( ⋅ ) \varphi(\cdot) φ(⋅)的作用
若没有 φ ( ⋅ ) \varphi(\cdot) φ(⋅),会导致输出与输入仍呈线性关系. 具体计算如下:
{ a 1 = w 11 x 1 + w 12 x 2 + b 1 a 2 = w 21 x 1 + w 22 x 2 + b 2 z 1 = φ ( a 1 ) z 2 = φ ( a 2 ) y = w 1 z 1 + w 2 z 2 + b ⇒ y = w 1 φ ( w 11 x 1 + w 12 x 2 + b 1 ) + w 2 φ ( w 21 x 1 + w 22 x 2 + b 2 ) \begin{cases} a_1=w_{11}x_1+w_{12}x_2+b_1\\ a_2=w_{21}x_1+w_{22}x_2+b_2\\ z_1=\varphi \left( a_1 \right)\\ z_2=\varphi \left( a_2 \right)\\ y=w_1z_1+w_2z_2+b\\ \end{cases}\Rightarrow y=w_1\varphi \left( w_{11}x_1+w_{12}x_2+b_1 \right) +w_2\varphi \left( w_{21}x_1+w_{22}x_2+b_2 \right) ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧a1=w11x1+w12x2+b1a2=w21x1+w22x2+b2z1=φ(a1)z2=φ(a2)y=w1z1+w2z2+b⇒y=w1φ(w11x1+w12x2+b1)+w2φ(w21x1+w22x2+b2)如果没有 φ ( ⋅ ) \varphi(\cdot) φ(⋅),显然 y y y是关于 x 1 , x 2 x_1,x_2 x1,x2的线性函数. 虽学习的参数多了,但与单层的神经网络的学习结果没有任何区别. φ ( ⋅ ) \varphi(\cdot) φ(⋅)叫作激活函数.
2.激活函数 φ ( ⋅ ) \varphi(\cdot) φ(⋅)的选取——阶跃函数.
原因:如果非线性函数用阶跃函数,那么三层神经网络可以模拟任意的非线性函数,说明如下.
【例1】 考虑平面上的三角形区域
C
1
C_1
C1与其外部区域
C
2
C_2
C2. 规定直线划分平面包含
C
1
C_1
C1的一侧,直线方程左侧
>
0
>0
>0.
构建如下图所示的两层神经网络:
要使得输出 y = 1 y=1 y=1(表示 ( x 1 , x 1 ) ∈ C 1 (x_1,x_1)\in C_1 (x1,x1)∈C1),则需要 w 1 , w 2 , w 3 w_1,w_2,w_3 w1,w2,w3全为 1 1 1,否则输出 y = 0 y=0 y=0. 那么只需设置参数 b = − 2.5 b=-2.5 b=−2.5即可.
【例2】 若
C
1
C_1
C1为四边形?
构建如下图所示的两层神经网络:
【例3】 若
C
1
C_1
C1为圆形?
考虑用无数条数直线分割区域,那么将会有无穷多个神经元.
【例4】 若
C
1
C_1
C1为不连通的图形?
构建如下图所示的三层神经网络:
接下来还需要解决两个问题:
① 如何只通过数据来获得神经网络的参数?
② 每一层神经元个数,神经网络的层数如何设计?
目前还没有完备的理论来回答这两个问题. 很多时候是依靠不断的实验与经验来解决.
四、后向传播(Back Propagation)算法
核心思想:梯度下降法求局部极值(Gradient Descent Method).
1. 梯度下降法
S
t
e
p
1
:
Step 1:
Step1: 找一个
w
0
w_0
w0.
S
t
e
p
2
:
Step 2:
Step2: 设
k
=
0
k=0
k=0,若
d
f
(
w
)
d
w
∣
w
k
=
0
,
\left. \frac{\mathrm{d}f\left( w \right)}{\mathrm{d}w} \right|_{w_k}=0,
dwdf(w)∣∣∣∣wk=0,则退出循环. 否则
w
k
+
1
=
w
k
−
α
d
f
(
w
)
d
w
∣
w
k
w_{k+1}=w_k-\alpha \left. \frac{\mathrm{d}f\left( w \right)}{\mathrm{d}w} \right|_{w_k}
wk+1=wk−αdwdf(w)∣∣∣∣wk重复
S
t
e
p
2
Step 2
Step2.
其中
α
>
0
\alpha>0
α>0,称作步长或学习率,每步的步长可不同.
附:西瓜书P407对梯度下降法的介绍.
2. BP算法
(1)算法描述
输入
{
(
X
i
,
Y
i
)
}
i
=
1
,
⋯
,
N
\left\{ \left(X_i,Y_i \right) \right\} _{i=1,\cdots ,N}
{(Xi,Yi)}i=1,⋯,N.
针对输入
(
X
,
Y
)
(X,Y)
(X,Y),定义优化函数
E
=
1
2
(
y
−
Y
)
2
.
E=\frac{1}{2}\left( y-Y \right) ^2.
E=21(y−Y)2.
S
t
e
p
1
:
Step1:
Step1: 随机取
(
w
11
w
12
w
21
w
22
b
1
b
2
w
1
w
2
b
)
\left( \begin{matrix} w_{11}& w_{12}& w_{21}& w_{22}& b_1& b_2& w_1& w_2& b\\ \end{matrix} \right)
(w11w12w21w22b1b2w1w2b)
S
t
e
p
2
:
Step2:
Step2: 对所有
w
w
w,求
∂
E
∂
w
\frac{\partial E}{\partial w}
∂w∂E;
对所有
b
b
b,求
∂
E
∂
b
\frac{\partial E}{\partial b}
∂b∂E;
S
t
e
p
3
:
Step3:
Step3: 计算
{
w
(
n
e
w
)
:
=
w
(
o
l
d
)
−
α
∂
E
∂
w
∣
w
(
o
l
d
)
b
(
n
e
w
)
:
=
b
(
o
l
d
)
−
α
∂
E
∂
b
∣
b
(
o
l
d
)
\left\{ \begin{array}{c} w^{\left( \mathrm{new} \right)}:=w^{\left( \mathrm{old} \right)}-\alpha \left. \frac{\partial E}{\partial w} \right|_{w^{\left( \mathrm{old} \right)}}\\ b^{\left( \mathrm{new} \right)}:=b^{\left( \mathrm{old} \right)}-\alpha \left. \frac{\partial E}{\partial b} \right|_{b^{\left( \mathrm{old} \right)}}\\ \end{array} \right.
{w(new):=w(old)−α∂w∂E∣∣w(old)b(new):=b(old)−α∂b∂E∣∣b(old)
S
t
e
p
4
:
Step4:
Step4: 当所有的
∂
E
∂
w
=
∂
E
∂
b
=
0
\frac{\partial E}{\partial w}=\frac{\partial E}{\partial b}=0
∂w∂E=∂b∂E=0时,退出循环.
(2)如何计算 ∂ E ∂ w , ∂ E ∂ b \frac{\partial E}{\partial w},\frac{\partial E}{\partial b} ∂w∂E,∂b∂E?
{ a 1 = w 11 x 1 + w 12 x 2 + b 1 a 2 = w 21 x 1 + w 22 x 2 + b 2 z 1 = φ ( a 1 ) z 2 = φ ( a 2 ) y = w 1 z 1 + w 2 z 2 + b \begin{cases} a_1=w_{11}x_1+w_{12}x_2+b_1\\ a_2=w_{21}x_1+w_{22}x_2+b_2\\ z_1=\varphi \left( a_1 \right)\\ z_2=\varphi \left( a_2 \right)\\ y=w_1z_1+w_2z_2+b\\ \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧a1=w11x1+w12x2+b1a2=w21x1+w22x2+b2z1=φ(a1)z2=φ(a2)y=w1z1+w2z2+b
首先计算
d
E
d
y
\frac{\mathrm{d}E}{\mathrm{d}y}
dydE,即
d
E
d
y
=
y
−
Y
.
\frac{\mathrm{d}E}{\mathrm{d}y}=y-Y.
dydE=y−Y.然后计算
∂
E
∂
a
1
=
d
E
d
y
⋅
∂
y
∂
z
1
⋅
d
z
1
d
a
1
=
(
y
−
Y
)
w
1
φ
′
(
a
1
)
,
∂
E
∂
a
2
=
d
E
d
y
⋅
∂
y
∂
z
2
⋅
d
z
2
d
a
2
=
(
y
−
Y
)
w
2
φ
′
(
a
2
)
.
\frac{\partial E}{\partial a_1}=\frac{\mathrm{d}E}{\mathrm{d}y}\cdot \frac{\partial y}{\partial z_1}\cdot \frac{\mathrm{d}z_1}{\mathrm{d}a_1}=\left( y-Y \right) w_1\varphi '\left( a_1 \right), \\ \\ \frac{\partial E}{\partial a_2}=\frac{\mathrm{d}E}{\mathrm{d}y}\cdot \frac{\partial y}{\partial z_2}\cdot \frac{\mathrm{d}z_2}{\mathrm{d}a_2}=\left( y-Y \right) w_2\varphi '\left( a_2 \right) .
∂a1∂E=dydE⋅∂z1∂y⋅da1dz1=(y−Y)w1φ′(a1),∂a2∂E=dydE⋅∂z2∂y⋅da2dz2=(y−Y)w2φ′(a2).其余偏导数
{
∂
E
∂
b
=
d
E
d
y
⋅
∂
y
∂
b
=
y
−
Y
∂
E
∂
w
1
=
d
E
d
y
⋅
∂
y
∂
w
1
=
(
y
−
Y
)
z
1
∂
E
∂
w
2
=
d
E
d
y
⋅
∂
y
∂
w
2
=
(
y
−
Y
)
z
2
∂
E
∂
w
11
=
d
E
d
a
1
⋅
∂
a
1
∂
w
11
=
(
y
−
Y
)
w
1
φ
′
(
a
1
)
x
1
∂
E
∂
w
12
=
d
E
d
a
1
⋅
∂
a
1
∂
w
12
=
(
y
−
Y
)
w
1
φ
′
(
a
1
)
x
2
∂
E
∂
b
1
=
(
y
−
Y
)
w
1
φ
′
(
a
1
)
∂
E
∂
b
2
=
(
y
−
Y
)
w
2
φ
′
(
a
2
)
∂
E
∂
w
21
=
(
y
−
Y
)
w
2
φ
′
(
a
2
)
x
1
∂
E
∂
w
22
=
(
y
−
Y
)
w
2
φ
′
(
a
2
)
x
2
\begin{cases} \frac{\partial E}{\partial b}=\frac{\mathrm{d}E}{\mathrm{d}y}\cdot \frac{\partial y}{\partial b}=y-Y\\ \frac{\partial E}{\partial w_1}=\frac{\mathrm{d}E}{\mathrm{d}y}\cdot \frac{\partial y}{\partial w_1}=\left( y-Y \right) z_1\\ \frac{\partial E}{\partial w_2}=\frac{\mathrm{d}E}{\mathrm{d}y}\cdot \frac{\partial y}{\partial w_2}=\left( y-Y \right) z_2\\ \frac{\partial E}{\partial w_{11}}=\frac{\mathrm{d}E}{\mathrm{d}a_1}\cdot \frac{\partial a_1}{\partial w_{11}}=\left( y-Y \right) w_1\varphi '\left( a_1 \right) x_1\\ \frac{\partial E}{\partial w_{12}}=\frac{\mathrm{d}E}{\mathrm{d}a_1}\cdot \frac{\partial a_1}{\partial w_{12}}=\left( y-Y \right) w_1\varphi '\left( a_1 \right) x_2\\ \frac{\partial E}{\partial b_1}=\left( y-Y \right) w_1\varphi '\left( a_1 \right)\\ \frac{\partial E}{\partial b_2}=\left( y-Y \right) w_2\varphi '\left( a_2 \right)\\ \frac{\partial E}{\partial w_{21}}=\left( y-Y \right) w_2\varphi '\left( a_2 \right) x_1\\ \frac{\partial E}{\partial w_{22}}=\left( y-Y \right) w_2\varphi '\left( a_2 \right) x_2\\ \end{cases}
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧∂b∂E=dydE⋅∂b∂y=y−Y∂w1∂E=dydE⋅∂w1∂y=(y−Y)z1∂w2∂E=dydE⋅∂w2∂y=(y−Y)z2∂w11∂E=da1dE⋅∂w11∂a1=(y−Y)w1φ′(a1)x1∂w12∂E=da1dE⋅∂w12∂a1=(y−Y)w1φ′(a1)x2∂b1∂E=(y−Y)w1φ′(a1)∂b2∂E=(y−Y)w2φ′(a2)∂w21∂E=(y−Y)w2φ′(a2)x1∂w22∂E=(y−Y)w2φ′(a2)x2
偏导数计算由后到前(包括三个重要节点偏导数,以及其余各点的偏导数),因此叫作“后向传播”.
(3)激活函数 φ ( ⋅ ) \varphi(\cdot) φ(⋅)的选取
若 φ ( x ) \varphi(x) φ(x)仍取阶跃函数,那么其导数除了在 x = 0 x=0 x=0处为无穷大以外,其余皆为 0 0 0,无法应用在BP算法中. 因此需要选取其他的 φ ( ⋅ ) \varphi(\cdot) φ(⋅).
φ ( ⋅ ) \varphi(\cdot) φ(⋅)有以下几种常见的选取方法:
① Sigmoid \text{Sigmoid} Sigmoid函数
φ
(
x
)
=
1
1
+
e
−
x
\varphi \left( x \right) =\frac{1}{1+\mathrm{e}^{-x}}
φ(x)=1+e−x1其导数具有良好性质:
φ
′
(
x
)
=
e
−
x
(
1
+
e
−
x
)
2
=
1
1
+
e
−
x
⋅
e
−
x
1
+
e
−
x
=
φ
(
x
)
[
1
−
φ
(
x
)
]
.
\begin{aligned} \varphi '\left( x \right) &=\frac{\mathrm{e}^{-x}}{\left( 1+\mathrm{e}^{-x} \right) ^2}=\frac{1}{1+\mathrm{e}^{-x}}\cdot \frac{\mathrm{e}^{-x}}{1+\mathrm{e}^{-x}} \\ &=\varphi \left( x \right) \left[ 1-\varphi \left( x \right) \right]. \end{aligned}
φ′(x)=(1+e−x)2e−x=1+e−x1⋅1+e−xe−x=φ(x)[1−φ(x)].
其模拟了阶跃函数的图象特征,并且导数容易计算. 同时,也能证明使用其作为激活函数的三层神经网络能够模拟所有决策面.
② 双曲正切函数 tanh ( x ) \tanh(x) tanh(x)
φ
(
x
)
=
tanh
(
x
)
=
e
x
−
e
−
x
e
x
+
e
−
x
\varphi \left( x \right) =\tanh \left( x \right) =\frac{\mathrm{e}^x-\mathrm{e}^{-x}}{\mathrm{e}^x+\mathrm{e}^{-x}}
φ(x)=tanh(x)=ex+e−xex−e−x并且
φ
′
(
x
)
=
1
cosh
2
(
x
)
=
1
−
[
φ
(
x
)
]
2
\varphi '\left( x \right) =\frac{1}{\cosh ^2\left( x \right)}=1-\left[ \varphi \left( x \right) \right] ^2
φ′(x)=cosh2(x)1=1−[φ(x)]2可以证明使用其作为激活函数的三层神经网络能够模拟所有决策面.
以下是深度学习中常用的激活函数.
③ 线性整流函数(Rectified Linear Unit, ReLU)
φ
(
x
)
=
{
x
,
x
>
0
0
,
x
⩽
0
=
max
{
0
,
x
}
φ
′
(
x
)
=
{
1
,
x
>
0
0
,
x
⩽
0
\begin{aligned} &\varphi \left( x \right) =\left\{ \begin{array}{c} x,x>0\\ 0,x\leqslant 0\\ \end{array}=\max \left\{ 0,x \right\} \right.\\ &\varphi '\left( x \right) =\left\{ \begin{array}{c} 1,x>0\\ 0,x\leqslant 0\\ \end{array} \right. \end{aligned}
φ(x)={x,x>00,x⩽0=max{0,x}φ′(x)={1,x>00,x⩽0
与Sigmoid相比,ReLU的特点
① 避免Sigmoid函数的“梯度消失”;
② 稀疏激活性;
③ 运算速度快;
…
④ Leaky ReLU
(4)用数学形式表示EP算法
神经网络可用矩阵形式表示如下:
X
向量
=
a
(
0
)
⇒
输入
W
(
1
)
M
×
N
a
(
0
)
N
×
1
+
b
(
1
)
M
×
1
=
z
(
1
)
M
×
1
→
φ
a
(
1
)
M
×
1
→
进入第二层神经网络
z
(
2
)
=
W
(
2
)
a
(
1
)
+
b
(
2
)
→
φ
a
(
2
)
→
进入第三层神经网络
z
(
3
)
=
W
(
3
)
a
(
2
)
+
b
(
3
)
→
φ
a
(
3
)
→
进入第四层神经网络
⋯
→
进入第
l
层神经网络
z
(
l
)
=
W
(
l
)
a
(
l
−
1
)
+
b
(
l
)
→
φ
a
(
l
)
⇒
输出
y
=
a
(
l
)
=
φ
(
z
(
l
)
)
\begin{aligned} \underset{\text{向量}}{X}=a^{\left( 0 \right)}&\xRightarrow{\text{输入}}\underset{M\times N}{W^{\left( 1 \right)}}\underset{N\times 1}{a^{\left( 0 \right)}}+\underset{M\times 1}{b^{\left( 1 \right)}}=\underset{M\times 1}{z^{\left( 1 \right)}}\xrightarrow{\varphi}\underset{M\times 1}{a^{\left( 1 \right)}} \\ &\xrightarrow{\text{进入第二层神经网络}}z^{\left( 2 \right)}=W^{\left( 2 \right)}a^{\left( 1 \right)}+b^{\left( 2 \right)}\xrightarrow{\varphi}a^{\left( 2 \right)} \\ &\xrightarrow{\text{进入第三层神经网络}}z^{\left( 3 \right)}=W^{\left( 3 \right)}a^{\left( 2 \right)}+b^{\left( 3 \right)}\xrightarrow{\varphi}a^{\left( 3 \right)} \\ &\xrightarrow{\text{进入第四层神经网络}}\cdots \\ &\xrightarrow{\text{进入第}l\text{层神经网络}}z^{\left( l \right)}=W^{\left( l \right)}a^{\left( l-1 \right)}+b^{\left( l \right)}\xrightarrow{\varphi}a^{\left( l \right)} \\ &\xRightarrow{\text{输出}}y=a^{\left( l \right)}=\varphi \left( z^{\left( l \right)} \right) \end{aligned}
向量X=a(0)输入M×NW(1)N×1a(0)+M×1b(1)=M×1z(1)φM×1a(1)进入第二层神经网络z(2)=W(2)a(1)+b(2)φa(2)进入第三层神经网络z(3)=W(3)a(2)+b(3)φa(3)进入第四层神经网络⋯进入第l层神经网络z(l)=W(l)a(l−1)+b(l)φa(l)输出y=a(l)=φ(z(l))
备注:此处的 z 、 a z、a z、a与(2)中记号相反,以下的推导以此处符号为准.
一些参数说明如下:
① 层数:
l
l
l;
②
z
(
k
)
,
a
(
k
)
,
b
(
k
)
z^{\left( k \right)},a^{\left( k \right)},b^{\left( k \right)}
z(k),a(k),b(k)是第
k
k
k层的列向量,其维数等于第
k
k
k层神经元个数;
③
z
i
(
k
)
,
a
i
(
k
)
,
b
i
(
k
)
z_{i}^{(k)},a_{i}^{(k)},b_{i}^{(k)}
zi(k),ai(k),bi(k)是数,分别表示
z
(
k
)
,
a
(
k
)
,
b
(
k
)
z^{\left( k \right)},a^{\left( k \right)},b^{\left( k \right)}
z(k),a(k),b(k)的第
i
i
i个分量;
④
y
i
y_i
yi表示
y
y
y的第
i
i
i个分量.
BP算法:
S
t
e
p
1
:
Step 1:
Step1: 随机初始化
(
W
,
b
)
(W,b)
(W,b).
S
t
e
p
2
:
Step 2:
Step2: 训练样本
(
X
,
Y
)
(X,Y)
(X,Y),代入网络,可求出所有的
(
z
,
a
,
y
)
(z,a,y)
(z,a,y). (前向传播(Forward Propagation))
S
t
e
p
3
:
Step 3:
Step3: 链式法则求偏导.
定义目标函数
min
E
=
1
2
∥
y
−
Y
∥
2
=
1
2
∑
i
=
1
m
(
y
i
−
Y
i
)
2
\min E=\frac{1}{2}\left\| y-Y \right\| ^2=\frac{1}{2}\sum_{i=1}^m{\left( y_i-Y_i \right) ^2}
minE=21∥y−Y∥2=21i=1∑m(yi−Yi)2求所有的
∂
E
∂
w
,
∂
E
∂
b
.
\frac{\partial E}{\partial w}, \frac{\partial E}{\partial b}.
∂w∂E,∂b∂E.
记关键节点
δ
i
(
m
)
=
∂
E
∂
z
i
(
m
)
\delta _{i}^{\left( m \right)}=\frac{\partial E}{\partial z_{i}^{(m)}}
δi(m)=∂zi(m)∂E那么
①
δ
i
(
l
)
=
∂
E
∂
y
i
⋅
∂
y
i
∂
z
i
(
l
)
=
(
y
i
−
Y
i
)
φ
′
(
z
i
(
l
)
)
(
注
意
该
式
中
所
有
量
已
知
,
可
以
直
接
算
出
值
)
②
递
推
公
式
:
δ
i
(
m
)
=
∑
j
=
1
S
m
+
1
(
δ
j
(
m
+
1
)
w
j
i
(
m
+
1
)
)
⋅
φ
′
(
z
i
(
m
)
)
\begin{aligned} &① \quad \delta _{i}^{\left( l \right)}=\frac{\partial E}{\partial y_i}\cdot \frac{\partial y_i}{\partial z_{i}^{(l)}}=\left( y_i-Y_i \right) \varphi '\left( z_{i}^{\left( l \right)} \right) (注意该式中所有量已知,可以直接算出值) \\ &②\quad 递推公式: \delta _{i}^{\left( m \right)}=\sum_{j=1}^{S_{m+1}}{\left( \delta _{j}^{\left( m+1 \right)}w_{ji}^{(m+1)} \right)}\cdot \varphi '\left( z_{i}^{(m)} \right) \end{aligned}
①δi(l)=∂yi∂E⋅∂zi(l)∂yi=(yi−Yi)φ′(zi(l))(注意该式中所有量已知,可以直接算出值)②递推公式:δi(m)=j=1∑Sm+1(δj(m+1)wji(m+1))⋅φ′(zi(m))
S
t
e
p
4
:
Step 4:
Step4: 更新
{
W
(
n
e
w
)
=
W
(
o
l
d
)
−
α
∂
E
∂
W
∣
W
(
o
l
d
)
b
(
n
e
w
)
=
b
(
o
l
d
)
−
α
∂
E
∂
b
∣
b
(
o
l
d
)
\begin{cases} W^{\left( \mathrm{new} \right)}=W^{\left( \mathrm{old} \right)}-\alpha \left. \frac{\partial E}{\partial W} \right|_{W^{\left( \mathrm{old} \right)}}\\ b^{\left( \mathrm{new} \right)}=b^{\left( \mathrm{old} \right)}-\alpha \left. \frac{\partial E}{\partial b} \right|_{b^{\left( \mathrm{old} \right)}}\\ \end{cases}
{W(new)=W(old)−α∂W∂E∣∣W(old)b(new)=b(old)−α∂b∂E∣∣b(old)
注:以上的②是为了求得 δ i ( m ) \delta _{i}^{\left( m \right)} δi(m)与 δ i ( m + 1 ) \delta _{i}^{\left( m+1 \right)} δi(m+1)的关系,由此可以由后往前计算得到各层的 δ i ( m ) \delta _{i}^{\left( m \right)} δi(m),实现反向传播. 具体推导过程如下.
在 m m m到 m + 1 m+1 m+1层过程中,有以下关系
z ( m ) = W ( m ) a ( m − 1 ) + b ( m ) → φ a ( m ) → 进入第 ( m + 1 ) 层神经网络 z ( m + 1 ) = W ( m + 1 ) a ( m ) + b ( m ) → φ a ( m + 1 ) z^{\left( m \right)}=W^{\left( m \right)}a^{\left( m-1 \right)}+b^{\left( m \right)}\xrightarrow{\varphi}a^{\left( m \right)}\xrightarrow{\text{进入第}\left( m+1 \right) \text{层神经网络}}z^{\left( m+1 \right)}=W^{\left( m+1 \right)}a^{\left( m \right)}+b^{\left( m \right)}\xrightarrow{\varphi}a^{\left( m+1 \right)} z(m)=W(m)a(m−1)+b(m)φa(m)进入第(m+1)层神经网络z(m+1)=W(m+1)a(m)+b(m)φa(m+1)因此
δ i ( m ) = ∂ E ∂ z i ( m ) = ∑ j = 1 S m + 1 ( ∂ E ∂ z j ( m + 1 ) ⋅ ∂ z j ( m + 1 ) ∂ z i ( m ) ) = ∑ j = 1 S m + 1 ( δ j ( m + 1 ) ⋅ ∂ z j ( m + 1 ) ∂ z i ( m ) ) = ∑ j = 1 S m + 1 ( δ j ( m + 1 ) ⋅ ∂ z j ( m + 1 ) ∂ z i ( m ) ) = ∑ j = 1 S m + 1 ( δ j ( m + 1 ) ⋅ ∂ z j ( m + 1 ) ∂ a i ( m ) ⋅ ∂ a j ( m ) ∂ z i ( m ) ) = ∑ j = 1 S m + 1 ( δ j ( m + 1 ) ⋅ ∂ z j ( m + 1 ) ∂ a i ( m ) ⋅ ∂ a i ( m ) ∂ z i ( m ) ) = ∑ j = 1 S m + 1 ( δ j ( m + 1 ) ⋅ w j i ( m + 1 ) ⋅ φ ′ ( z i ( m ) ) ) = ∑ j = 1 S m + 1 ( δ j ( m + 1 ) w j i ( m + 1 ) ) ⋅ φ ′ ( z i ( m ) ) \begin{aligned} \delta _{i}^{\left( m \right)}&=\frac{\partial E}{\partial z_{i}^{(m)}}=\sum_{j=1}^{S_{m+1}}{\left( \frac{\partial E}{\partial z_{j}^{(m+1)}}\cdot \frac{\partial z_{j}^{(m+1)}}{\partial z_{i}^{(m)}} \right)} \\ &=\sum_{j=1}^{S_{m+1}}{\left( \delta _{j}^{\left( m+1 \right)}\cdot \frac{\partial z_{j}^{(m+1)}}{\partial z_{i}^{(m)}} \right)} \\ &=\sum_{j=1}^{S_{m+1}}{\left( \delta _{j}^{\left( m+1 \right)}\cdot \frac{\partial z_{j}^{(m+1)}}{\partial z_{i}^{(m)}} \right)} \\ &=\sum_{j=1}^{S_{m+1}}{\left( \delta _{j}^{\left( m+1 \right)}\cdot \frac{\partial z_{j}^{(m+1)}}{\partial a_{i}^{(m)}}\cdot \frac{\partial a_{j}^{(m)}}{\partial z_{i}^{(m)}} \right)} \\ &=\sum_{j=1}^{S_{m+1}}{\left( \delta _{j}^{\left( m+1 \right)}\cdot \frac{\partial z_{j}^{(m+1)}}{\partial a_{i}^{(m)}}\cdot \frac{\partial a_{i}^{(m)}}{\partial z_{i}^{(m)}} \right)} \\ &=\sum_{j=1}^{S_{m+1}}{\left( \delta _{j}^{\left( m+1 \right)}\cdot w_{ji}^{(m+1)}\cdot \varphi '\left( z_{i}^{(m)} \right) \right)} \\ &=\sum_{j=1}^{S_{m+1}}{\left( \delta _{j}^{\left( m+1 \right)}w_{ji}^{(m+1)} \right)}\cdot \varphi '\left( z_{i}^{(m)} \right) \end{aligned} δi(m)=∂zi(m)∂E=j=1∑Sm+1(∂zj(m+1)∂E⋅∂zi(m)∂zj(m+1))=j=1∑Sm+1(δj(m+1)⋅∂zi(m)∂zj(m+1))=j=1∑Sm+1(δj(m+1)⋅∂zi(m)∂zj(m+1))=j=1∑Sm+1(δj(m+1)⋅∂ai(m)∂zj(m+1)⋅∂zi(m)∂aj(m))=j=1∑Sm+1(δj(m+1)⋅∂ai(m)∂zj(m+1)⋅∂zi(m)∂ai(m))=j=1∑Sm+1(δj(m+1)⋅wji(m+1)⋅φ′(zi(m)))=j=1∑Sm+1(δj(m+1)wji(m+1))⋅φ′(zi(m))
至此,最基本的BP算法构建完成. 但在实际应用中还需对算法的每一个步骤进行优化,才能得到性能较好的神经网络.