神经网络算法推演---------神经网络中的反向传播算法公式推导及迭代演示
Posted 岳飞传
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神经网络算法推演---------神经网络中的反向传播算法公式推导及迭代演示相关的知识,希望对你有一定的参考价值。
神经网络算法推演——神经网络中反向传播算法代码实现
1. 算法背景
如下图来自charlotte77的博文
看完charlotte77大神的博文,终于弄明白了神经网络中的前向传播及反向传播算法,自己也搜索各种资料,文档,总结了其算法推导的过程,再加上本篇文章,跟着charlotte77大神,以示例推演+代码实现,以进一步理解神经网络的梯度下降算法。
- 神经网络算法推演——-前馈神经网络Feedforward Neural network
- 神经网络算法推演———-反向传播算法 Backpropagation Algorithm
- 神经网络算法推演———神经网络中的反向传播算法代码实现
如下图中的神经网络示例,跟随charlotte77大神开始推演示例中的计算过程,并以python代码实现;
网络描述:一个典型的三层神经网络,其中:
第一层是输入层,包含两个神经元i1,i2,和截距项b1;
第二层是隐含层,包含两个神经元h1,h2和截距项b2;
第三层是输出o1,o2,每条线上标的wi是层与层之间连接的权重,激活函数我们默认为sigmoid函数。
网络赋上初值,
输入数据 i1=0.05,i2=0.10;
输出数据 o1=0.01,o2=0.99;
初始权重 w1=0.15,w2=0.20,w3=0.25,w4=0.30;
w5=0.40,w6=0.45,w7=0.50,w8=0.55
b1 = 0.35 b2 = 0.60
目标:给出输入数据i1,i2(0.05和0.10),使输出尽可能与原始输出o1,o2(0.01和0.99)接近。
2 前向传播
依据前向传播算法计算每个节点的输出。
以下即单个“神经元”的图示:图片来源
这个“神经元”是一个以
x1,x2,x3
x
1
,
x
2
,
x
3
及截距
+1
+
1
为输入值的运算单元,其输出为
hW,b(x)=f(WTx)=f(∑3i=1Wixi+b)
h
W
,
b
(
x
)
=
f
(
W
T
x
)
=
f
(
∑
i
=
1
3
W
i
x
i
+
b
)
,其中函数
f:R↦R
f
:
ℜ
↦
ℜ
被称为“激活函数”。在本教程中,我们选用sigmoid函数作为”’激活函数”’
f(⋅)
f
(
⋅
)
2.1 输入层—->隐含层:
计算神经元h1的输入加权和 Neth1 N e t h 1 :
Neth1=w1∗i1+w2∗i2+b1
N
e
t
h
1
=
w
1
∗
i
1
+
w
2
∗
i
2
+
b
1
带入数值得:
Neth1=0.15∗0.05+0.20∗0.10+0.35=0.3775
N
e
t
h
1
=
0.15
∗
0.05
+
0.20
∗
0.10
+
0.35
=
0.3775
神经元h1的输出 Outh1 O u t h 1 :(此处用到激活函数为sigmoid函数:
Outh1=f(Neth1)=f(w1∗i1+w2∗i2+b1)
O
u
t
h
1
=
f
(
N
e
t
h
1
)
=
f
(
w
1
∗
i
1
+
w
2
∗
i
2
+
b
1
)
=11+exp(−Neth1)=11+exp(−0.3775)=0.5933
=
1
1
+
exp
(
−
N
e
t
h
1
)
=
1
1
+
e
x
p
(
−
0.3775
)
=
0.5933
同理神经元h1的输入加权和:
Neth2=w3∗i1+w4∗i2+b1
N
e
t
h
2
=
w
3
∗
i
1
+
w
4
∗
i
2
+
b
1
Outh2=f(Neth2)=f(w3∗i1神经网络算法推演-------前馈神经网络(feedforward neural network )