1. 神经网络
这是一个常见的神经网络的图:
这是一个常见的三层神经网络的基本构成,Layer L1是输入层,Layer L2是隐含层,Layer
L3是隐含层,当我们输入x1,x2,x3等数据时,通过隐含层的计算、转换,输出你的期望,当你的输入和输出是一样的时候,成为自编码模型(Auto-Encoder),而当你输入和输出是不一致的时候,也就是我们常说的人工神经网络。
2. 如何计算传播
首先我们先构建一个简单的网络层作为例子:
在这个网络层中有
第一层输入层:里面包含神经元i1,i2,截距:b1,权重:w1,w2,w3,w4
第二层是隐含层:里面包含h1,h2,截距:b2,权重:w5,w6,w7,w8
第三层是输出层:里面包含o1,o2
我们使用sigmoid作为激活函数
假定我们输入数据i1: 0.02 i2: 0.04 截距b1:0.4 b2:0.7 期望的输出数据o1:0.5 o2:0.9
未知的是权重w1,w2,w3,w4,w5,w6,w7,w8
我们的目的是为了能的到o1:0.5 o2:0.9的期望的值,计算出w1,w2,w3....w8的权重值
先假如构造一个权重w1,w2,w3.....w8的值,通过计算获取到最佳的w1,w2,w3....w8的权重
权重的初使值:
w1=0.25
w2=0.25
w3=0.15
w4=0.20
w5=0.30
w6=0.35
w7=0.40
w8=0.35
2.1 前向传播
2.1.1 输入层到隐含层
NET(h1)=w1*i1+w2*i2+b1=0.25*0.02+0.25*0.04+0.4=0.005+0.01+0.4=0.415
神经元h1到输出h1的激活函数是sigmoid
OUT(h1)=1/(1+e^(-NET(h1)))=1/(1+0.660340281)=0.602286177
同理我们也可以获取OUT(h2)的值
NET(h2)=w3*i1+w4*i2+b1=0.15*0.02+0.20*0.04+0.4=0.003+0.008+0.4=0.411
OUT(h2)=1/(1+e^(-NET(h2)))=1/(1+0.662986932)=0.601327636
2.1.2 从隐含层到输出层
计算输出层的神经元o1, o2的值,计算方法和输出层到隐含层类似
NET(o1)=w5*h1+w6*h2+b2=0.3*0.602286177+0.35*0.601327636+0.7=0.180685853+0.210464672+0.7=1.091150525
OUT(o1)=1/(1+e^(-NET(o1)))=1/(1+0.335829891)=0.748598311
同理
NET(o2)=w7*h1+w8*h2+b2=0.4*0.602286177+0.35*0.601327636+0.7=0.240914471+0.210464672+0.7=1.151379143
OUT(o2)=1/(1+e^(-NET(o2)))=1/1.316200383=0.759762733
o1:0.748598311 o2:0.759762733 距离我们期望的o1:0.5 o2:0.9还是有很大的距离
2.2 计算总误差
我们来计算每一个公式的偏导:
,则复合函数的导数为:
数据分析咨询请扫描二维码