BP神经网络原理简单介绍以及公式推导

标签(空格分隔): 神经网络


\def\net(#1){net^{(#1)}} \def\Y(#1){Y^{(#1)}} \def\part(#1){\partial #1} \def\f(#1){f^{(#1)}} \def\ff(#1){f^{'(#1)}} \def\W(#1){W^{(#1)}} \def\S(#1){S^{(#1)}} \def\the(#1){\theta^{(#1)}} \def\pEpN(#1){\frac{\part(E)}{\part(\net(#1))}} \def\pEpY(#1){\frac{\part(E)}{\part(\Y(#1))}} \def\pEpW(#1){\frac{\part(E)}{\part(\W(#1))}} \def\pEpT(#1){\frac{\part(E)}{\part(\the(#1))}}

BP神经网络简单介绍

在60年代提出了神经网络概念之后,由于感知机等神经网络无法处理线性不可分问题(比如异或问题)导致人们对神经网络的兴趣大减,认为神经网络的能力有限,只能处理线性可分问题。之后,有人提出了多层神经网络的想法,用于解决异或问题。下面就是用一个两层的神经网络解决异或问题具体方法:

y=ψ(−2v1+v2−0.5)v1=ψ(x1+x2−1.5)v2=ψ(x1+x2−0.5)ψ(x)={1,0,x>0x≤0

y=\psi(-2v_1+v_2-0.5) \\ v_1 = \psi(x_1+x_2-1.5) \\ v_2 = \psi(x_1+x_2-0.5) \\ \psi(x) = \begin{cases} 1, & x>0 \\ 0, & x \le 0 \end{cases}
yy是网络的输出,v1v_1和 v2v_2是隐藏层的两个神经元, x1x_1和 x2x_2是输入。下面的表格验证了这个两层的网络可以处理异或问题。

x1x_1 x2x_2 v1v_1 v2v_2 yy
0 0 0 0 0
1 0 0 1 1
0 1 0 1 1
1 1 1 1 0

虽然这个两层网络能够处理异或问题,但是当时并没有引起太大的关注,直到80年代, Back Propagation(BP)神经网络的提出,才使得神经网络又重新回到了人们的视线中。

这里,主要想通过一个三层的BP神经网络来说明其原理和公式推导。

公式推导

我们首先需要对整个网络进行数学建模,然后进行学习算法的描述,我们列举分量和矩阵两种不同形式的求导方式,分量形式刚开始看比较繁琐但是比较简单,矩阵形式结构简单但是涉及到矩阵求导,求导的相关知识需要比较熟悉。

网络的数学描述

首先我们先说一说激活函数的选择,在感知机中,选择的是非线性的带阈值的激活函数,在BP网络中,通常选择的是Sigmoid函数,这类函数的导数有一个很好的性质:自身相关。比如常见的

f(x)=11+e−x

f(x) = \frac{1}{1+e^{-x}}
其导数为f′(x)=f(x)(1−f(x))f'(x) = f(x)(1-f(x)),证明也不难,就是求导,然后进行拼凑就可以了。
接下来我们对这个三层的网络进行数学抽象,可以的话请一个一个的手写一遍,这样能够加深理解它们之间的关系。先是各层的输入和输出变量的定义

input vector:hiden vector:output vector:Y(0)=[x1,x2,⋯,x6]T=[a1(0),a2(0),a3(0),a4(0),a5(0),a6(0)]TY(1)=[a1(1),a2(1),a3(1),a4(1)]TY(2)=[a1(2),a2(2),a3(2)]TY(3)=[a1(3),a2(3)]T

\begin{array}{l} &\text{input vector}: &Y^{(0)} = [x_1,x_2,\cdots,x_6]^T =[a_1(0),a_2(0),a_3(0),a_4(0),a_5(0),a_6(0)]^T\\ &\text{hiden vector}: &Y^{(1)} = [a_1(1),a_2(1),a_3(1),a_4(1)]^T \\ & &Y^{(2)} = [a_1(2),a_2(2),a_3(2)]^T \\ &\text{output vector}: &Y^{(3)} = [a_1(3),a_2(3)]^T \end{array}
然后,我们一层一层的进行数学描述。

First hiden layernet(1)l=∑k=16W1lky(0)k,(1≤l≤4)net(1)=W(1)Y(0)net(1)=[net(1)1,net(1)2,net(1)3,net(1)4]TW(1)=⎡⎣⎢⎢⎢W(1)11⋮W(1)41⋯⋯⋯W(1)16⋮W(1)46⎤⎦⎥⎥⎥output:Y(1)=[Y(1)1,⋯,Y(1)4]T,where Y(1)=f(1)(net(1))

\text{First hiden layer}\\ \begin{array}{l} net_l^{(1)} = \sum_{k=1}^{6}W_{lk}^{1}y_k^{(0)}, (1 \le l \le 4) \\ net^{(1)} = W^{(1)}Y^{(0)} \\ net^{(1)} =[net_1^{(1)}, net_2^{(1)}, net_3^{(1)}, net_4^{(1)}]^T\\ W^{(1)}=\begin{bmatrix} W_{11}^{(1)} & \cdots & W_{16}^{(1)} \\ \vdots & \cdots & \vdots \\ W_{41}^{(1)}& \cdots & W_{46}^{(1)} \end{bmatrix} \\ \text{output:}\\ Y^{(1)} = [Y_1^{(1)},\cdots,Y_4^{(1)} ]^T, \text{where } Y^{(1)}=f^{(1)}(net^{(1)}) \end{array}
net(1)net^{(1)}的输入是Y(0)Y^{(0)},利用W(1)W^{(1)}得到输出Y(1)Y^{(1)}。在第一层中,k=6k=6是因为输入层Y(0)Y^{(0)}有六个输入,1≤l≤41\le l \le 4是因为第一层中有4个神经元,同理第二层和第三层。请注意net(1)net^{(1)}的和W(1)W^{(1)}的维数,想一想为什么会这样,你这么聪明一定能想清楚的(输入和输出的个数)。接下来两层与第一层类似,重点在思考清楚W(n)W^{(n)}和net(n)net^{(n)}的维数,就能对BP网络结构有一个大致的认识。还是希望各位能手抄一遍。

Second hiden layernet(2)l=∑k=14W2lky(1)k,(1≤l≤3)net(2)=W(2)Y(1)net(2)=[net(2)1,net(2)2,net(2)3]TW(2)=⎡⎣⎢⎢⎢W(2)11⋮W(2)31⋯⋯⋯W(2)14⋮W(2)44⎤⎦⎥⎥⎥output:Y(2)=[Y(2)1,⋯,Y(2)3]T,where Y(2)=f(2)(net(2))

\text{Second hiden layer}\\ \begin{array}{l} net_l^{(2)} = \sum_{k=1}^{4}W_{lk}^{2}y_k^{(1)}, (1 \le l \le 3) \\ net^{(2)} = W^{(2)}Y^{(1)} \\ net^{(2)} =[net_1^{(2)}, net_2^{(2)}, net_3^{(2)}]^T\\ W^{(2)}=\begin{bmatrix} W_{11}^{(2)} & \cdots & W_{14}^{(2)} \\ \vdots & \cdots & \vdots \\ W_{31}^{(2)}& \cdots & W_{44}^{(2)} \end{bmatrix} \text{output:}\\ Y^{(2)} = [Y_1^{(2)},\cdots,Y_3^{(2)} ]^T, \text{where } Y^{(2)}=f^{(2)}(net^{(2)}) \end{array}

Third hiden layernet(3)l=∑k=13W3lky(2)k,(1≤l≤2)net(3)=W(3)Y(2)net(3)=[net(3)1,net(3)2]TW(3)=⎡⎣⎢⎢⎢W(3)11⋮W(3)21⋯⋯⋯W(3)13⋮W(3)23⎤⎦⎥⎥⎥output:Y(3)=[Y(3)1,Y(3)2]T,where Y(3)=f(3)(net(3))

\text{Third hiden layer}\\ \begin{array}{l} net_l^{(3)} = \sum_{k=1}^{3}W_{lk}^{3}y_k^{(2)}, (1 \le l \le 2) \\ net^{(3)} = W^{(3)}Y^{(2)} \\ net^{(3)} =[net_1^{(3)}, net_2^{(3)}]^T\\ W^{(3)}=\begin{bmatrix} W_{11}^{(3)} & \cdots & W_{13}^{(3)} \\ \vdots & \cdots & \vdots \\ W_{21}^{(3)}& \cdots & W_{23}^{(3)} \end{bmatrix} \text{output:}\\ Y^{(3)} = [Y_1^{(3)},Y_2^{(3)} ]^T, \text{where } Y^{(3)}=f^{(3)}(net^{(3)}) \end{array}
我们总结一下:
1. 一个netnet包含了一组输入,一组权重,一组输出。对于net(n)net^{(n)},它的输入是Y(n−1)Y^{(n-1)},利用权重W(n)W^{(n)}得到输出Y(n)Y^{(n)},即 net(n)=W(n)Y(n−1)\net(n) = \W(n)\Y(n-1)
2. W(n)∈Rq×p\W(n)\in \Bbb{R}^{q\times p},q是第n层神经元的个数,p是n-1层神经元的个数也就是当前层的输入个数。

公式推导(分量形式)

我们的目标是希望通过调整WW使得输出和目标有最小的误差,也就是最小二乘的思想

Least-Squared Error: E=12∑l=12(Tl−Y(3)l)2=12∑l=12(δ(3)l)2

\text{Least-Squared Error: } E = \frac{1}{2}\sum_{l=1}^2(T_l-Y_l^{(3)})^2 = \frac{1}{2}\sum_{l=1}^2(\delta_l^{(3)})^2
其中,δl=(Tl−Y(3)l)\delta_l = (T_l-Y_l^{(3)})。因为BP网络是反馈式网络,所以在更新权值时是从后向前更新的,所以首先更新的是第三层的权值。
那么EE和W(3)W^{(3)}有什么关系呢?通过上面的对网络的数学描述,我们知道

Y(3)=f(3)(net(3))=W(3)Y(2)分量:Y(3)1Y(3)2=f(3)(net(3)1)=f(3)(net(3)2)=∑k=13W31kY(2)k=∑k=13W32kY(2)k

Y^{(3)} = f^{(3)}(net^{(3)}) = W^{(3)}Y^{(2)}\\ \begin{array}{l} \text{分量:} &Y_1^{(3)} &= f^{(3)}(net_1^{(3)}) &= \sum_{k=1}^{3}W_{1k}^{3}Y_k^{(2)} \\ &Y_2^{(3)} &=f^{(3)}(net_2^{(3)}) &= \sum_{k=1}^{3}W_{2k}^{3}Y_k^{(2)}\\ \end{array}
所以有:

E=12∑l=12(Tl−Y(3)l)2=12∑l=12(Tl−f(3)(net(3)l))2=12∑l=12(Tl−∑k=13W3lkY(2)k)2

\begin{array}{l} E &= \frac{1}{2}\sum_{l=1}^2(T_l-Y_l^{(3)})^2 \\ &= \frac{1}{2}\sum_{l=1}^2(T_l-f^{(3)}(net_l^{(3)}) )^2 \\ &= \frac{1}{2}\sum_{l=1}^2(T_l-\sum_{k=1}^{3}W_{lk}^{3}Y_k^{(2)})^2 \end{array}
因此EE和WW求导关系为:

∂E∂W(3)lk=∂E∂Y(3)l∂Y(3)l∂net(3)l∂net(3)l∂W(3)lk

\frac{\partial E}{\partial W_{lk}^{(3)}} = \frac{\partial E}{\partial Y_l^{(3)}}\frac{\partial Y_l^{(3)}}{\partial net_l^{(3)}}\frac{\partial net_l^{(3)}}{\partial W_{lk}^{(3)}}
其中:

∂E∂Y(3)l=(Yl−Tl)=−δl(1)

\frac{\partial E}{\partial Y_l^{(3)}} = (Y_l-T_l) = -\delta_l \tag{1}

∂Y(3)l∂net(3)l=f′(3)(net(3)l)(2)

\frac{\partial Y_l^{(3)}}{\partial net_l^{(3)}} = f^{'(3)}(net_l^{(3)})\tag{2}

∂net(3)l∂W(3)lk=Y(2)k(3)

\frac{\partial net_l^{(3)}}{\partial W_{lk}^{(3)}} = Y_k^{(2)} \tag{3}
根据(1)、(2)、(3)可得

∂E∂W(3)lk=−δlf′(3)(net(3)l)Y(2)k

\frac{\partial E}{\partial W_{lk}^{(3)}}=-\delta_l f^{'(3)}(net_l^{(3)}) Y_k^{(2)}
我们已经求出单个分量的求导结果,那么对于整个W(3)W^{(3)}

∂EW(3)=⎡⎣⎢⎢⎢⎢⎢∂EW(3)11∂EW(3)21∂EW(3)12∂EW(3)22∂EW(3)13∂EW(3)23⎤⎦⎥⎥⎥⎥⎥=−⎡⎣δ1f′(3)(net(3)1)δ2f′(3)(net(3)2)⎤⎦[Y(2)1Y(2)2Y(2)3]=−S(3)Y(2)T

\begin{array}{l} \frac{\partial E}{W^{(3)}} &= \begin{bmatrix} \frac{\partial E}{W_{11}^{(3)}} & \frac{\partial E}{W_{12}^{(3)}} & \frac{\partial E}{W_{13}^{(3)}} \\ \frac{\partial E}{W_{21}^{(3)}} & \frac{\partial E}{W_{22}^{(3)}} & \frac{\partial E}{W_{23}^{(3)}} \end{bmatrix} \\ &= -\begin{bmatrix} \delta_1 f^{'(3)}(net_1^{(3)}) \\ \delta_2 f^{'(3)}(net_2^{(3)}) \end{bmatrix} \begin{bmatrix} Y_1^{(2)} & Y_2^{(2)} &Y_3^{(2)} \end{bmatrix} \\ &= -S^{(3)}Y^{(2)^T} \end{array}
其中

S(3)=−⎡⎣f′(3)(net(3)l)00f′(3)(net(3)2)⎤⎦⎡⎣δ(3)1δ(3)2⎤⎦=F′(3)(net(3))δ=−∂E∂net(3)

\begin{array}{l} S^{(3)}& = -\begin{bmatrix}f^{'(3)}(net_l^{(3)}) & 0 \\ 0 & f^{'(3)}(net_2^{(3)}) \end{bmatrix} \begin{bmatrix} \delta_1^{(3)} \\ \delta_2^{(3)} \end{bmatrix} \\ & = F^{'(3)}(net^{(3)})\delta \\ & = -\frac{\partial E}{\partial net^{(3)}} \end{array}
至于∂E∂net(3)\frac{\partial E}{\partial net^{(3)}}怎么求,在后面的矩阵形式分析部分将会说明。
上面已经说明对第三层权值的更新过程,对于第二层权值的更新,最重要的还是理解EE和W(2)W^{(2)}之间的关系。
上面只给出第三层的详细求导,第二层和第一层请看老师给的课件(公式编辑太费时间了)下面给出老师课件里的求导,从第三层到第一层,有些地方有点小错误,不过不影响理解。





公式求导(矩阵形式)

下面我们用矩阵的形式进行求导,涉及到矩阵求导的相关知识,这里有一些参考资料,希望能够帮到大家:
1. 矩阵求导术(上)
2. 闲话矩阵求导
3. 矩阵求导与迹
4. 向量內积、矩阵內积
首先能量函数改写成:

Least-Squared Error: E=12∥T−Y∥22

\text{Least-Squared Error: } E = \frac{1}{2}\Vert T - Y\Vert^2_2
第三层更新:
先算∂E∂Y(3)\frac{\partial E}{\partial Y^{(3)}}

EdE所以: =12(T−Y)T(T−Y)=12(TTT−2TTY+YTY)=12tr(−2TTdY+dYTY+YTdY)=12tr(−2TTdY)+tr(dYTY)+tr(YTdY)=12tr(−2TTdY)+tr(YTdY)+tr(YTdY)=12(−2TT+2YT)dX=tr((Y−T)TdY)∂E∂Y(3)=Y−T=−δ

\begin{array}{l} &E &= \frac{1}{2} (T-Y)^T(T-Y) = \frac{1}{2}(T^TT-2T^TY+Y^TY)\\ &dE & = \frac{1}{2}tr(-2T^TdY + dY^TY + Y^TdY) \\ && = \frac{1}{2}tr(-2T^TdY) + tr(dY^TY) + tr(Y^TdY) \\ &&= \frac{1}{2}tr(-2T^TdY) + tr(Y^TdY) + tr(Y^TdY) \\ &&= \frac{1}{2}(-2T^T + 2Y^T)dX \\ &&= tr((Y-T)^TdY)\\ &\text{所以: } &\frac{\partial E}{\partial Y^{(3)}} = Y-T = -\delta \end{array}
再算∂E∂net(3)\frac{\partial E}{\partial net^{(3)}}

dE所以: 设: =tr((∂E∂Y)TdY)=tr((∂E∂Y)Tdf(3)(net(3)))=tr((∂E∂Y)Tf′(3)(net(3))⊙d(net(3)))=tr((∂E∂Y⊙f′(3)(net(3)))Td(net(3)))=tr((−δ⊙f′(3)(net(3)))Td(net(3)))∂E∂net(3)=−δ⊙f′(3)(net(3))S(3)=δ⊙f′(3)(net(3))=−∂E∂net(3)

\begin{array}{l} &dE &= tr((\frac{\partial E}{\partial Y})^TdY) \\ &&= tr((\frac{\partial E}{\partial Y})^Tdf^{(3)}(net^{(3)})) \\ &&= tr((\frac{\partial E}{\partial Y})^T f^{'(3)}(net^{(3)}) \odot d(net^{(3)})) \\ &&= tr((\frac{\partial E}{\partial Y} \odot f^{'(3)}(net^{(3)}))^T d(net^{(3)})) \\ &&= tr((-\delta\odot f^{'(3)}(net^{(3)}))^T d(net^{(3)})) \\ &\text{所以: } & \frac{\partial E}{\partial net^{(3)}}=-\delta\odot f^{'(3)}(net^{(3)}) \\ &\text{设: } & S^{(3)} = \delta\odot f^{'(3)}(net^{(3)}) = -\frac{\partial E}{\partial net^{(3)}} \end{array}
最后算∂E∂W(3)\frac{\partial E}{\partial W^{(3)}}

dE所以: ∂E∂W(3)=tr((∂E∂net(3))Td(net(3)))=tr((∂E∂net(3))Td(W(3)Y(2)))=tr(Y(2)(∂E∂net(3))Td(W(3)))=∂E∂net(3)Y(2)T=−δ⊙f′(3)(net(3))Y(2)T=−S(3)Y(2)T

\begin{array}{l} &dE &= tr((\frac{\partial E}{\partial net^{(3)}})^T d(net^{(3)}) ) \\ && = tr((\frac{\partial E}{\partial net^{(3)}})^Td(W^{(3)}Y^{(2)})) \\ && = tr(Y^{(2)}(\frac{\partial E}{\partial net^{(3)}})^Td(W^{(3)})) \\ &\text{所以: } \frac{\partial E}{\partial W^{(3)}} &= \frac{\partial E}{\partial net^{(3)}}Y^{(2)^T} \\ &&= -\delta\odot f^{'(3)}(net^{(3)})Y^{(2)^T} \\ &&= -S^{(3)}Y^{(2)^T} \end{array}
第二层更新:
先求∂E∂Y(2)\frac{\partial E}{\partial Y^{(2)}}

dE所以: =tr((∂E∂net(3))Td(net(3)))=tr((∂E∂net(3))Td(W(3)Y(2)))=tr((∂E∂net(3))TW(3)d(Y(2)))∂E∂Y(2)=W(3)T∂E∂net(3)

\begin{array}{l} &dE &= tr((\frac{\partial E}{\partial net^{(3)}})^T d(net^{(3)}) ) \\ && = tr((\frac{\partial E}{\partial net^{(3)}})^Td(W^{(3)}Y^{(2)})) \\ && = tr((\frac{\partial E}{\partial net^{(3)}})^T W^{(3)} d(Y^{(2)})) \\ &\text{所以: } & \frac{\partial E}{\partial Y^{(2)}} = W^{(3)^T}\frac{\partial E}{\partial net^{(3)}} \end{array}
再求∂E∂net(2)\frac{\partial E}{\partial net^{(2)}}

dE所以: 设: =tr((∂E∂Y(2))TdY(2))=tr((∂E∂Y(2))Tf′(2)(net(2))⊙d(net(2)))=tr((∂E∂Y(2)⊙f′(2)(net(2)))Td(net(2)))∂E∂net(2)=∂E∂Y(2)⊙f′(2)(net(2))=W(3)T∂E∂net(3)⊙f′(2)(net(2))=−W(3)TS(3)⊙f′(2)(net(2))S(2)=W(3)TS(3)⊙f′(2)(net(2))=−∂E∂net(2)

\begin{array}{l} &dE &= tr((\frac{\partial E}{\partial Y^{(2)}})^T dY^{(2)}) \\ &&= tr((\frac{\partial E}{\partial Y^{(2)}})^T f^{'(2)}(net^{(2)})\odot d(net^{(2)})) \\ &&= tr((\frac{\partial E}{\partial Y^{(2)}}\odot f^{'(2)}(net^{(2)}))^T d(net^{(2)})) \\ &\text{所以: } & \frac{\partial E}{\partial net^{(2)}} = \frac{\partial E}{\partial Y^{(2)}}\odot f^{'(2)}(net^{(2)}) \\ &&= W^{(3)^T}\frac{\partial E}{\partial net^{(3)}}\odot f^{'(2)}(net^{(2)}) = -W^{(3)^T}S^{(3)}\odot f^{'(2)}(net^{(2)}) \\ &\text{设: } & S^{(2)} = W^{(3)^T}S^{(3)}\odot f^{'(2)}(net^{(2)}) = -\frac{\partial E}{\partial net^{(2)}} \end{array}
最后求∂E∂W(2)\frac{\partial E}{\partial W^{(2)}}

dE所以: =tr((∂E∂net(2))Td(net(2)))=tr((∂E∂net(2))Td(W(2)Y(1)))=tr(Y(1)(∂E∂net(2))Td(W(2)))∂E∂W(2)=∂E∂net(2)Y(1)T=−S(2)Y(1)T

\begin{array}{} &dE &= tr((\frac{\partial E}{\partial net^{(2)}})^T d(net^{(2)})) \\ &&= tr((\frac{\partial E}{\partial net^{(2)}})^T d(W^{(2)}Y^{(1)})) \\ &&= tr(Y^{(1)}(\frac{\partial E}{\partial net^{(2)}})^Td(W^{(2)})) \\ &\text{所以: } &\frac{\partial E}{\partial W^{(2)}} = \frac{\partial E}{\partial net^{(2)}}Y^{(1)^T} = -S^{(2)}Y^{(1)^T} \end{array}

第一层更新:

dE所以: ∂E∂Y(1)=tr(∂E∂net(2)Td(W(2)Y(1)))=tr(∂E∂net(2)TW(2)dY(1))=(W(2))T∂E∂net(2)=−(W(2))TS(2)

\begin{array}{l} &dE &= tr(\pEpN(2)^Td(\W(2)\Y(1))) \\ && = tr(\pEpN(2)^T\W(2)d\Y(1)) \\ &\text{所以: } \pEpY(1) &= (\W(2))^T\pEpN(2) = -(\W(2))^T\S(2)\\ \end{array}

dE所以: ∂E∂net(1)=tr(∂E∂Y(1)TdY(1))=tr(∂E∂Y(1)Tdf(1)(net(1)))=tr(∂E∂Y(1)⊙f′(1)(net(1))Td(net(1)))=∂E∂Y(1)⊙f′(1)(net(1))=−(W(2))TS(2)⊙f′(1)(net(1))=−S(1)

\begin{array}{l} &dE &= tr(\pEpY(1)^Td\Y(1)) \\ && = tr(\pEpY(1)^Td\f(1)(\net(1))) \\ && = tr(\pEpY(1)\odot \ff(1)(\net(1))^Td(\net(1))) \\ &\text{所以: } \pEpN(1) &= \pEpY(1)\odot \ff(1)(\net(1)) \\ && =-(\W(2))^T\S(2)\odot \ff(1)(\net(1)) \\ && = -\S(1) \end{array}

dE所以: ∂E∂W(1)=tr(∂E∂net(1)Td(W(1)Y(0)))=tr(Y(0)∂E∂net(1)TdW(1))=∂E∂net(1)(Y(0))T=−S(1)(Y(0))T

\begin{array}{l} &dE &= tr(\pEpN(1)^Td(\W(1)\Y(0))) \\ && = tr(\Y(0)\pEpN(1)^Td\W(1)) \\ &\text{所以: } \pEpW(1) &= \pEpN(1)(\Y(0))^T \\ && = -\S(1)(\Y(0))^T \end{array}
以上就是对各层权值W(i)\W(i)的梯度的公式推导了。下面对θ(i)\the(i)推导,因为比较简单,我们就以第三层为例简单说明下。

dE所以: ∂E∂θ(3)=tr(∂E∂net(3)Td(W(3)Y(2)+θ(3)))=tr(∂E∂net(3)Tdθ(3))=∂E∂net(3)=−S(3)

\begin{array}{l} &dE &= tr(\pEpN(3)^Td(\W(3)\Y(2) + \the(3))) \\ && = tr(\pEpN(3)^Td\the(3)) \\ &\text{所以: } \pEpT(3) &= \pEpN(3) = -\S(3) \end{array}

总结

至此,可以对以整个学习算法进行总结了。

下一篇博文将会用MATLAB实现以上算法。

BP神经网络原理简单介绍以及公式推导(矩阵形式和分量形式)相关推荐

  1. BP神经网络原理及其应用,bp神经网络的工作原理

    1.BP神经网络的工作原理 人工神经网络就是模拟人思维的第二种方式.这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理.虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系 ...

  2. BP神经网络原理分析及c++代码实现(下)

    本部分主要是BP神经网络的C++代码部分,在这里简单的介绍下代码的头文件,具体代码的实现以及测试数据,请在csdn资源里下载:http://download.csdn.net/detail/hjkhj ...

  3. bp神经网络原理 实现过程,BP神经网络的基本思想

    BP神经网络原理 人工神经网络有很多模型,但是日前应用最广.基本思想最直观.最容易被理解的是多层前馈神经网络及误差逆传播学习算法(ErrorBack-Prooaeation),简称为BP网络. 在19 ...

  4. 深度学习(神经网络) —— BP神经网络原理推导及python实现

    深度学习(神经网络) -- BP神经网络原理推导及python实现 摘要 (一)BP神经网络简介 1.神经网络权值调整的一般形式为: 2.BP神经网络中关于学习信号的求取方法: (二)BP神经网络原理 ...

  5. bp神经网络原理 实现过程,BP神经网络的实现包括

    1.BP神经网络原理 人工神经网络有很多模型,但是日前应用最广.基本思想最直观.最容易被理解的是多层前馈神经网络及误差逆传播学习算法(Error Back-Prooaeation),简称为BP网络. ...

  6. BP神经网络原理与异或实例分析

    文章目录 BP神经网络原理介绍 一.BP神经网络算法原理是什么? 二.激活函数 1.激活函数作用 三.BP神经网络异或实例分析 1.问题: 2.分析: 3.代码 总结 BP神经网络原理介绍 BP神经网 ...

  7. BP神经网络原理及实现

    BP神经网络原理 经典的BP神经网络通常由三层组成: 输入层, 隐含层与输出层.通常输入层神经元的个数与特征数相关,输出层的个数与类别数相同, 隐含层的层数与神经元数均可以自定义. 每个神经元代表对数 ...

  8. BP神经网络原理及Matlab实现(Back Propagation Neural Networks,BPNN)

    BP神经网络原理及matlab实现 一.简介 1.BP 神经网络的信息处理方式的特点 2.BP神经网络的主要功能 二.神经网络的训练 1.神经网络拓扑结构(隐含层)的确定 2.网络的初始连接权值 3. ...

  9. 用BP神经网络解决简单的分类问题

    有关于BP神经网络原理前人之述备矣,这里就暂且略过.从一年前第一次接触机器学习到现在,已经学习很多类似的智能学习算法,无论是遗传算法.群算法.模拟退火算法还是神经网络算法,在有监督的学习算法中,无非就 ...

最新文章

  1. ViewPager 详解(五)-----使用Fragment实现ViewPager滑动
  2. 知识点1: 进度条随数据变化,并添加渐变样式
  3. rpm包安装mysql数据库
  4. Linux卸载MariaDB
  5. java并发编程并发容器_Java并发编程:同步容器
  6. 使用XAMPP轻松建站(上)
  7. ICLR2021有什么值得关注的投稿?这些高赞论文先睹为快
  8. LINUX查找所有文件,按照时间排序
  9. 不想再被鄙视?那就看进来! 一文搞懂Python2字符编码
  10. Dynamics AX2012 标准权限控制工作原理
  11. 获取西刺代理IP构建代理池
  12. java 安卓 html文件_使用WebView加载本地html网页文件示例
  13. 计算机网络的最大优点,什么是计算机网络最突出的优点
  14. linux 安装xz,在Ubuntu 18.04 LTS下安装linux-5.0.8.tar.xz的方法
  15. pdf转换html器 免费版,pdf转换成html转换器
  16. gartner数据治理_Gartner:2019年「数据管理解决方案」魔力象限
  17. java——OOA,OOD,OOP
  18. springboot整合jsp模板
  19. 南大科院大数据Hadoop工程实训
  20. doraemon的python 协程

热门文章

  1. 实现点击不同的按钮显示不同的内容【同一页面】web
  2. Android 短信验证码倒计时60s实现步骤
  3. websocket默认心跳等待300秒
  4. webpack优化系列七:首屏加载优化
  5. CTF.show-mx密码2
  6. cuter(cuter)
  7. Nsca安装简单步骤
  8. Flutter 中的应用内购买
  9. A. Anti Light‘s Cell Guessing
  10. 【电子通识】为什么IC需要自己的去耦电容?