什么是反向传播(BP, Back Propagation)算法
B P BP BP算法(即误差反向传播算法)是适合于多层神经元网络的一种学习算法, 它建立在梯度下降法的基础上。 B P BP BP网络的输入输出关系实质上是一种映射关系:一个 n n n输入 m m m输出的 B P BP BP神经网络所完成的功能是从 n n n维欧氏空间向 m m m维欧氏空间中一有限域的连续映射,这一映射具有高度非线性。它的信息处理能力来源于简单非线性函数的多次复合, 因此具有很强的函数复现能力。这是 B P BP BP算法得以应用的基础。
单个神经元的计算过程
如下图所示,
对于每个输入 x i x_i xi,分别乘以权重 w i w_i wi,求和,再经过一个非线性的激活函数( s i g m o d sigmod sigmod等),得到输出 y y y
即
y = f ( e ) e = W T X y = f(e) \\ e = W^TX y=f(e)e=WTX
f ( o ) f(o) f(o)是激活函数, W W W是权重矩阵(此处为行向量), X X X为输入(行向量)。
反向传播算法计算过程
B P BP BP是一种反馈型学习网络,算法的学习过程包括两部分。
首先是信息的前向传播,然后是通过误差进行的反向传播。
通过神经网络的输入层将数据信息输入到神经网络,输入层的各个单元将数据传递给隐含层各个神经元进行。
反向传播算法的第一步是前向传播。
前向传播
{ y 1 = f 1 ( w ( x 1 ) 1 x 1 + w ( x 2 ) 1 x 2 ) y 2 = f 2 ( w ( x 1 ) 2 x 1 + w ( x 2 ) 2 x 2 ) y 3 = f 3 ( w ( x 1 ) 3 x 1 + w ( x 2 ) 3 x 2 ) y 4 = f 4 ( w 14 y 1 + w 24 y 2 + w 34 y 3 ) y 5 = f 5 ( w 15 y 1 + w 25 y 2 + w 35 y 3 ) y 6 = f 6 ( w 46 y 4 + w 56 y 5 ) y _ p r e d i c t = y 6 \left\{ \begin{aligned} y_1 & = & f_1(w_{(x_1)1}x_1+w_{(x_2)1}x_2)\\ y_2 & = & f_2(w_{(x_1)2}x_1+w_{(x_2)2}x_2)\\ y_3 & = & f_3(w_{(x_1)3}x_1+w_{(x_2)3}x_2)\\ y_4 & = & f_4(w_{14}y_1+w_{24}y_2+w_{34}y_3)\\ y_5 & = & f_5(w_{15}y_1+w_{25}y_2+w_{35}y_3)\\ y_6 & = & f_6(w_{46}y_4+w_{56}y_5)\\ y\_predict & = & y_6\\ \end{aligned} \right. ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧y1y2y3y4y5y6y_predict=======f1(w(x1)1x1+w(x2)1x2)f2(w(x1)2x1+w(x2)2x2)f3(w(x1)3x1+w(x2)3x2)f4(w14y1+w24y2+w34y3)f5(w15y1+w25y2+w35y3)f6(w46y4+w