多层前馈神经网络–BP神经网络
模型结构
-
多层结构,L层( L ≥ 2 L\geq2 L≥2)
-
信息前向传播
-
输入层不包含在总层数中,为第0层( L 0 L_0 L0)
-
输入层的输入样本数为 N 0 N_0 N0: x 1 ( t ) , x 2 ( t ) , . . . , x N 0 ( t ) x_1(t),x_2(t),...,x_{N_0}(t) x1(t),x2(t),...,xN0(t)
每个输入都要分别输入给第一层的所有单元 -
第一层 L 1 L_1 L1的 N 1 N_1 N1个单元各自又有输出,为: y 1 1 ( t ) , y 2 1 ( t ) , . . . , y N 1 1 ( t ) y_1^1(t),y_2^1(t),...,y_{N_1}^1(t) y11(t),y21(t),...,yN11(t)
第一层的所有输出继续作为第二层的输入
-
第二层继续如此
. . . ... ...
-
最后一层L层有 N L N_L NL个单元,输出为: y 1 ( t ) , y 2 ( t ) , . . . , y N L ( t ) y_1(t),y_2(t),...,y_{N_L}(t) y1(t),y2(t),...,yNL(t)
各层的权值可分别表示为: w 11 1 , w 11 2 , . . . , w 11 L w_{11}^1,w_{11}^2,...,w_{11}^L w111,w112,...,w11L(下标表示由前一层的哪个单元传到这一层的哪个单元, w j i w_{ji} wji, j j j代表后一层的节点编号, i i i为前一层的节点编号)
每层的每个单元同时都有门限值 θ \theta θ,分别表示为: θ 1 1 , θ 1 2 , . . . , θ 1 L \theta_1^1,\theta_1^2,...,\theta_1^L θ11,θ12,...,θ1L
-
每个单元都有非线性激活函数 φ ( ) \varphi() φ(),输出为: y i l ( t ) = φ ( s j l ( t ) ) y_i^l(t)=\varphi(s_j^l(t)) yil(t)=φ(sjl(t))
s j l ( t ) = ∑ i = 1 N l − 1 w j i l y i l − 1 ( t ) − θ j l = ∑ i = 0 N l − 1 w j i l y i l − 1 ( t ) = ( W l ) T Y l − 1 ( t ) s_j^l(t)=\sum_{i=1}^{N_{l-1}}{w_{ji}^ly_i^{l-1}(t)-\theta_j^l}=\sum_{i=0}^{N_{l-1}}{w_{ji}^ly_i^{l-1}(t)}=(W^l)^TY^{l-1}(t) sjl(t)=∑i=1Nl−1wjilyil−1(t)−θjl=∑i=0Nl−1wjilyil−1(t)=(Wl)TYl−1(t)
-
非线性激活函数: φ ( s ) = 1 1 + e − s \varphi(s)=\frac{1}{1+e^{-s}} φ(s)=1+e−s1——Sigmoid 函数
d φ ( s ) d s = φ ( s ) ( 1 − φ ( s ) ) \frac{d\varphi(s)}{ds}=\varphi(s)(1-\varphi(s)) dsdφ(s)=φ(s)(1−φ(s))
Sigmoid函数最小值为0,最大值为0,连续光滑可导
或 φ ( s ) = t a n h ( s / 2 ) = e s / 2 − e − s / 2 e s / 2 + e − s / 2 \varphi(s)=tanh(s/2)=\frac{e^{s/2}-e^{-s/2}}{e^{s/2}+e^{-s/2}} φ(s)=tanh(s/2)=es/2+e−s/2es/2−e−s/2和Sigmoid函数图像差不多,但最小值为-1,最大值为1,关于原点奇对称
-
BP算法(误差反向传播算法,Error Back Propagation Algorithm)
权值学习同样是通过迭代的办法得到: w j i l ← w j i l + Δ w j i l w_{ji}^l\larr w_{ji}^l+\Delta w_{ji}^l wjil←wjil+Δwjil
关键问题:如何求 Δ w j i l \Delta w_{ji}^l Δwjil
-
主要思路:
条件:要给一定的输入矢量和他们的理想输出矢量K个: X ( k ) = [ x 1 ( k ) , . . . , x n ( k ) ] T , ( k = 1 , 2 , . . . , K ) X(k)=[x_1(k),...,x_n(k)]^T,(k=1,2,...,K) X(k)=[x1(k),...,xn(k)]T,(k=1,2,...,K)
形成输入输出样本对: { X ( k ) , D ( k ) } , ( k = 1 , 2 , . . . , K ) \{X(k),D(k)\},(k=1,2,...,K) { X(k),D(k)},(k=1,2,...,K)
通过训练达到最终目标 Y ( k ) → W D ( k ) Y(k)\xrightarrow{W}D(k) Y(k)WD(k)
-
问题的本质: X ( k ) X(k) X(k)和 D ( k ) D(k) D(k)存在某种未知的函数关系,如 D ( K ) = f ( X ( k ) ) D(K)=f(X(k)) D(K)=f(X(k)),现在要用神经网络来逼近这个函数,要先收集和这个函数有关的输入输出,来训练该神经网络,使得给相同的输入后,输出能逼近理想结果。
-
如何能达到 Y ( k ) → D ( k ) Y(k)\rarr D(k) Y(k)→D(k)
- 思路:构造目标函数 E ( W ) = 1 2 ∑ k ∑ j ( d j ( k ) − y j ( k ) ) 2 → W m i n E(W)=\frac{1}{2}\sum_k\sum_j(d_j(k)-y_j(k))^2\xrightarrow{W}min E(W)=21∑k∑j(dj(k)−yj(k))2Wmin
- 通过计算 W W W,使得误差平方和(误差能量) E ( W ) E(W) E(W)最小化
BP算法的推导
-
初始化网络的权值,门限值,非线性激活函数
-
信息前向传播过程:利用给出的样本对输入神经网络,经过每一层得到的输入再输入下一层,最后得到每个节点输出 Y l ( k ) Y^l(k) Yl(k)
X ( k ) → Y 1 ( k ) → Y 2 ( k ) → . . . → Y L ( k ) ( = Y ( k ) ) X(k)\rarr Y^1(k)\rarr Y^2(k)\rarr...\rarr Y^L(k)(=Y(k)) X(k)→Y1