作为刚开始接触机器学习的小白,想把每一次学习的收获都记录在博客里,成为自己的笔记随时复习,以及为日后学习这领域的朋友当成参考的资料。文中若有错误请各位大牛帮忙订正。
(一)什么是BP神经网络?
BP(back propagation)从字面上翻译就是反向传播,传播误差,期望输出值与真实输出值的差异就是误差,因此BP神经网络就是一种算法根据误差反向传播训练的多层前馈神经网络。
在此有个疑问,什么是多层前馈神经网络?
神经网络粗略分有两种类型:前馈网络以及反馈网络
前馈网络:
O=f(w*x+b)
{\textbf{O=f(w*x+b)}}
O=f(w*x+b) 每一层的输出只与前一层输入乘上权重加上偏置项有关
反馈网络:
Ot=f(w*x
+
Ot-1*v+
b)
{\textbf{Ot=f(w*x + Ot-1*v+ b)}}
Ot=f(w*x + Ot-1*v+ b) 每一层的输出与前一次状态输出有关
(二)BP神经网络模型
我假设 X = [ 0.5 , 0.4 , 0.3 ] 为 一组输入,且期望输出值为 Y = 0.8
(三)BP神经网络前向传播
BP神经网络前向传播与感知机模型计算一样,例如隐含层
H
1
H_1
H1 输出是
f
(
w
∗
x
+
b
)
f(w*x+b)
f(w∗x+b),
其中
f
(
)
f( )
f()是激活函数
1
1
+
e
−
x
\frac{1}{1+e^{-x}}
1+e−x1 ,因此
w
∗
x
+
b
w*x+b
w∗x+b =
0.5
∗
0.4
+
0.4
∗
0.5
+
0.3
∗
0.2
+
1
∗
0.2
0.5*0.4 + 0.4*0.5 + 0.3*0.2 + 1*0.2
0.5∗0.4+0.4∗0.5+0.3∗0.2+1∗0.2 =
0.66
0.66
0.66,代入
1
1
+
e
−
(
w
∗
x
+
b
)
\frac{1}{1+e^{-(w*x+b)}}
1+e−(w∗x+b)1 =
1
1
+
e
−
(
0.66
)
\frac{1}{1+e^{-(0.66)}}
1+e−(0.66)1 = 0.659