反向传播算法详解with very simple example

本文给出了一个非常小的神经网络。在这个网络上,把反向传播算法的核心逻辑给讲清楚(这是相当不得了的,是作者的得意之作)。

1,网络结构

整个网络结构只有两个神经元,一个是输入层的神经元,也就是输入层只有一个神经元,一个输出层的神经元,也就是输出层只有一个神经元。如图所示。

    输入神经元记为i1,输出神经元记为o1,输出神经元的total net input记为net o1,它的输出记为out o1。

    连接i1和o1的连接的权重为w,初始值为3。

O1的传导(激活)函数为f(x) = x。

为了尽快说明问题,我们没有使用非线性函数,而是使用一个线性函数。

 

2,训练数据

训练数据如下:

训练数据

x

y

 

0

0

 

1

2

 

2

4

 

3

6

 

4

8

 

5

10

训练数据体现了数据的2倍数关系。即真实的数据体现的关系是f(x)=2x。

但是现在w=3,我们来看看,反向传播算法如何把3修正到2。

备注:实际训练的时候,我们只用了一个训练样本,即<1,2>

 

3,前向传播

前向传播过程为:

(1)加权和:net o1 = w * i1;

(2)激活函数:out o1 = f(net o1) = net o1;

 

4,误差、反向传播、迭代

假设现在输出out o1,但是真实的输出是target o1,那么误差为Error= (target o1 – out o1)2。求Error对w的导数,它体现的是,w的变化如何引起Error的变化,这个变化量,将用来调整w。

备注:根据Error= (target o1 – out o1)2,out o1 = f(net o1) = net o1,net o1 = w * i1等三个式子、以及链式法则,求导数。

W的该变量w+ =

修改权重的公式,为 w = w – w+。为学习率,表现了学习的激进程度。

我们造一个excel表,进行多轮次迭代,每次都用input =1, output=2来进行训练,看看w权重的两次迭代的修正结果,发现它确实不断地逼近2。

请读者打开压缩包中的excel表格查看一下。

(提示:请读者注意excel表格中迭代表的编号为1的行对应的各个单元格的公式,就是对上述推导过程的具体实现,从w改变到w’后,继续进行后续的迭代,迭代20次,w已经非常接近2.0)

迭代

w

input(i1)

net o1

out o1

target o1

Error

导数

学习率

w'

1

3.0000

1.0000

3.0000

3.0000

2.0000

1.0000

2.0000

0.1000

2.8000

2

2.8000

1.0000

2.8000

2.8000

2.0000

0.6400

1.6000

0.1000

2.6400

3

2.6400

1.0000

2.6400

2.6400

2.0000

0.4096

1.2800

0.1000

2.5120

4

2.5120

1.0000

2.5120

2.5120

2.0000

0.2621

1.0240

0.1000

2.4096

5

2.4096

1.0000

2.4096

2.4096

2.0000

0.1678

0.8192

0.1000

2.3277

6

2.3277

1.0000

2.3277

2.3277

2.0000

0.1074

0.6554

0.1000

2.2621

7

2.2621

1.0000

2.2621

2.2621

2.0000

0.0687

0.5243

0.1000

2.2097

8

2.2097

1.0000

2.2097

2.2097

2.0000

0.0440

0.4194

0.1000

2.1678

9

2.1678

1.0000

2.1678

2.1678

2.0000

0.0281

0.3355

0.1000

2.1342

10

2.1342

1.0000

2.1342

2.1342

2.0000

0.0180

0.2684

0.1000

2.1074

11

2.1074

1.0000

2.1074

2.1074

2.0000

0.0115

0.2147

0.1000

2.0859

12

2.0859

1.0000

2.0859

2.0859

2.0000

0.0074

0.1718

0.1000

2.0687

13

2.0687

1.0000

2.0687

2.0687

2.0000

0.0047

0.1374

0.1000

2.0550

14

2.0550

1.0000

2.0550

2.0550

2.0000

0.0030

0.1100

0.1000

2.0440

15

2.0440

1.0000

2.0440

2.0440

2.0000

0.0019

0.0880

0.1000

2.0352

17

2.0352

1.0000

2.0352

2.0352

2.0000

0.0012

0.0704

0.1000

2.0281

18

2.0281

1.0000

2.0281

2.0281

2.0000

0.0008

0.0563

0.1000

2.0225

19

2.0225

1.0000

2.0225

2.0225

2.0000

0.0005

0.0450

0.1000

2.0180

20

2.0180

1.0000

2.0180

2.0180

2.0000

0.0003

0.0360

0.1000

2.0144

特别提示:如果初始化的w小于2,那么它将从另外一个方向逼近2.0

 

本文和excel文件下载

数据科学概论网上资源

https://blog.csdn.net/xiongpai1971/article/details/89364071

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值