浙江大学《机器学习》笔记——神经网络(Neural Network)【上】

写在前面
· 最近在学习《机器学习》. 主要是看浙江大学胡浩基老师的网课,结合周志华老师的西瓜书来学. 为了理清思路和推公式就敲了这样一个读书笔记. 初次学习难免会有错漏,欢迎批评指正. 这份笔记主要用途还是用来自己复习回顾. 当然如果对大家有帮助那就更好了hhh
· 注:神经网络这部分的笔记大部分是基于浙大《机器学习》的逻辑进行整理的.

第5章 神经网络(Neural Network)

· 神经网络的诞生是集体的智慧
· 近年发展迅速,是目前机器学习领域最火的方向.
· 上世纪50-60年代即奠定理论基础.
· 大数据+算力迅速提升,神经网络层数得以提升,性能更好.

接下来以人工神经网络发展历程为线索进行介绍.

一、人工神经网络的提出

1. 神经元的数学模型

1943年,心理学家W.S.McCulloch和数理逻辑学家W.Pitts基于神经元的生理特征,建立了单个神经元的数学模型( M-P \text{M-P} M-P模型)
浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第1张图片

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=1mωkixi+bk)=φ(WkTX+b)
浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第2张图片

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:=WX,b:=b1;
(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 =[X1]定义增广 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) X i(i=1,2,,n)
(1)随机选择 W → \overrightarrow{W} W .
(2)取一个训练样本 X → i \overrightarrow{X}_i X i. 若 W → T X → i < 0 \overrightarrow{W}^{\mathrm{T}}\overrightarrow{X}_i<0 W TX i<0,则 W → : = W → + X → i \overrightarrow{W}:=\overrightarrow{W}+\overrightarrow{X}_i W :=W +X i.
(3)再取另一个 X → i \overrightarrow{X}_i X i回到(2).
(4)终止条件:直到所有输入输岀对都不满足.(2)中(i)和(ii)之一,退出循环.

感知机算法收敛定理可表述为:
输入 { X → i } i = 1 , ⋯   , N \left\{ \overrightarrow{X}_i \right\} _{i=1,\cdots ,N} {X i}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) W opt, s.t. W optXi >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) . W TX i>0(i=1,2,,N).

下面给出证明.
证明:
不失一般性,设 ∥ W → o p t ∥ = 1 \left\| \overrightarrow{W}_{\mathrm{opt}} \right\| =1 W opt=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 W T(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)+Xi W (k+1)aW opt=W (k)+Xi aW opt
取模的平方
∥ 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)aW opt2=W (k)+Xi aW opt2 ∥ 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)aW opt2=W (k)+Xi aW opt2=(W (k)aW opt)+Xi 2=W (k)aW opt2+Xi 2+2W T(k)Xi 2aW optTXi 注意到最后两项
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 W T(k)Xi <0,W optTXi >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+2W T(k)Xi 2aW optTXi <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)aW opt2<W (k)aW opt2
定义
β = 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,...,NmaxXi ,γ=i=1,...,NminW optXi
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)aW opt2<W (k)aW opt21.
D = ∥ W → ( 0 ) − a W → o p t ∥ D=\left\| \overrightarrow{W}\left( 0 \right) -a\overrightarrow{W}_{\mathrm{opt}} \right\| D=W (0)aW opt,则至多经过 D 2 D^2 D2步, W → \overrightarrow{W} W 将会收敛于 a W → o p t . □ a\overrightarrow{W}_{\mathrm{opt}}.\quad \Box aW opt.

补充说明 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)aW opt2=W (0)2+a2W opt22aW T(0)W opt=W (0)2+a2W opt22aW (0)W optcosθW (0)2+a2+2aW (0)

二、人工智能的第一次寒冬

1. 线性可分概念的提出

Minsky创造了线性可分(不可分)的概念(1969《Perceptron》). 书中提及日常生活中很多事物是非线性可分的.

例子:识别一个二值图是否全连通(下图例子中, class 1 \text{class 1} class 1为全连通, class 2 \text{class 2} class 2不是全连通).
在这里插入图片描述浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第3张图片浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第4张图片

人们认为既然大多事物非线性可分,而感知机只能解决线性可分的问题,用途较为狭隘,研究它的实际意义不大,导致人工智能发展进入了停滞时期.

三、多层神经网络(Multiple Layer Neural Networks)

想法:使用非线性模型来划分非线性的样本.

浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第5张图片

这样一个神经网络包含两层. 其中 φ ( ⋅ ) \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+by=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.
浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第6张图片

构建如下图所示的两层神经网络:
浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第7张图片

要使得输出 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为四边形?
浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第8张图片

构建如下图所示的两层神经网络:
浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第9张图片

【例3】 C 1 C_1 C1为圆形?
考虑用无数条数直线分割区域,那么将会有无穷多个神经元.

【例4】 C 1 C_1 C1为不连通的图形?
浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第10张图片
构建如下图所示的三层神经网络:
浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第11张图片

接下来还需要解决两个问题:
① 如何只通过数据来获得神经网络的参数?
② 每一层神经元个数,神经网络的层数如何设计?
目前还没有完备的理论来回答这两个问题. 很多时候是依靠不断的实验与经验来解决.

四、后向传播(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对梯度下降法的介绍.
浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第12张图片

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(yY)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} wE;
对所有 b b b,求 ∂ E ∂ b \frac{\partial E}{\partial b} bE;

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)αwEw(old)b(new):=b(old)αbEb(old)

S t e p 4 : Step4: Step4: 当所有的
∂ E ∂ w = ∂ E ∂ b = 0 \frac{\partial E}{\partial w}=\frac{\partial E}{\partial b}=0 wE=bE=0时,退出循环.

(2)如何计算 ∂ E ∂ w , ∂ E ∂ b \frac{\partial E}{\partial w},\frac{\partial E}{\partial b} wE,bE

{ 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=yY.然后计算
∂ 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) . a1E=dydEz1yda1dz1=(yY)w1φ(a1),a2E=dydEz2yda2dz2=(yY)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} bE=dydEby=yYw1E=dydEw1y=(yY)z1w2E=dydEw2y=(yY)z2w11E=da1dEw11a1=(yY)w1φ(a1)x1w12E=da1dEw12a1=(yY)w1φ(a1)x2b1E=(yY)w1φ(a1)b2E=(yY)w2φ(a2)w21E=(yY)w2φ(a2)x1w22E=(yY)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+ex1其导数具有良好性质:
φ ′ ( 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+ex)2ex=1+ex11+exex=φ(x)[1φ(x)].
浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第13张图片

其模拟了阶跃函数的图象特征,并且导数容易计算. 同时,也能证明使用其作为激活函数的三层神经网络能够模拟所有决策面.

② 双曲正切函数 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+exexex并且
φ ′ ( 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可以证明使用其作为激活函数的三层神经网络能够模拟所有决策面.
浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第14张图片

以下是深度学习中常用的激活函数.

③ 线性整流函数(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,x0=max{0,x}φ(x)={1,x>00,x0
浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第15张图片

与Sigmoid相比,ReLU的特点
① 避免Sigmoid函数的“梯度消失”;
② 稀疏激活性;
③ 运算速度快;

④ Leaky ReLU

浙江大学《机器学习》笔记——神经网络(Neural Network)【上】_第16张图片

(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(l1)+b(l)φ a(l)输出 y=a(l)=φ(z(l))

备注:此处的 z 、 a z、a za与(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=21yY2=21i=1m(yiYi)2求所有的
∂ E ∂ w , ∂ E ∂ b . \frac{\partial E}{\partial w}, \frac{\partial E}{\partial b}. wE,bE.
记关键节点
δ 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)=yiEzi(l)yi=(yiYi)φ(zi(l)):δi(m)=j=1Sm+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)αWEW(old)b(new)=b(old)αbEb(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(m1)+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=1Sm+1(zj(m+1)Ezi(m)zj(m+1))=j=1Sm+1(δj(m+1)zi(m)zj(m+1))=j=1Sm+1(δj(m+1)zi(m)zj(m+1))=j=1Sm+1(δj(m+1)ai(m)zj(m+1)zi(m)aj(m))=j=1Sm+1(δj(m+1)ai(m)zj(m+1)zi(m)ai(m))=j=1Sm+1(δj(m+1)wji(m+1)φ(zi(m)))=j=1Sm+1(δj(m+1)wji(m+1))φ(zi(m))

至此,最基本的BP算法构建完成. 但在实际应用中还需对算法的每一个步骤进行优化,才能得到性能较好的神经网络.

你可能感兴趣的:(机器学习笔记,神经网络,机器学习,人工智能)