梅科尔工作室-李庆浩 深度学习-BP神经网络

学习神经网络前要先知道感知机的相关知识,所以先对感知机进行一个简单的介绍。感知机是作为神经网络(深度学习) 的起源的算法。 因此, 学习感知机的构造也就 是学习通向神经网络和深度学习的一种重要思想。

1.感知机

感知机算法全称是Perceptron Linear Algorithm,即PLA算法.感知机是一个具有输入输出的算法,给定一个输入,输出一个既定的值。原理:感知机接收多个输入信号,输出一个信号。

例子:

 x1,x2是输入信号,y是输出信号,w1、w2是权重,O是“神经元”或者叫节点,输入信号被送往神经元时,会被分别乘以固定的权重,也叫加权求和,神经元会计算传送过来的信号的总和,即weighted sum等于传过来的信号的总和,step function是激活函数,对加权就和的值进行一个激活函数的计算。

2.BP神经网络介绍

BP(BackPropagation) 算法是神经网络深度学习中最重要的算法之一,是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络模型之一 。

BP神经网络算法的核心是信号的正向传播反向传播

正向传播:即输入层的神经元负责接受外界发来的各种信息,并将信息传递给中间层 神经元,中间隐含层神经元负责将接收到的信息进行处理变换,根据需求处理信息, 实际应用中可将中间隐含层设置为一层或者多层隐含层结构,并通过最后一层的隐含 层将信息传递到输出层,这个过程就是BP神经网络的正向传播过程。

反向传播:当实际输出与理想输出之间的误差超过期望时,就需要进入误差的反向 传播过程。它首先从输出层开始,误差按照梯度下降的方法对各层权值进行修正,并 依次向隐含层、输入层传播。通过不断的信息正向传播和误差反向传播,各层权值会 不断进行调整,这就是神经网络的学习训练。当输出的误差减小到期望程度或者预先设定的学习迭代次数时,训练结束,BP神经网络完成学习。

一个简单的神经网络包含输入层,隐含层(隐含层可以是多层)、输出层。

如图:

           输出层                                         隐含层                                       输出层

 对于隐含层的注意:

如果隐含层中的神经元节点设置过少,结果可能造成神经网络的训练过程收敛变慢或者不收敛。如果隐层中节点过多,模型的预测精度会提高,但同时网络拓扑结构过大,收敛速度慢,普遍性会减弱。

隐藏层神经元的设置方法:

如果 BP 神经网络中输入层节点数为 m 个,输出层节点是为 n 个,则由下式式 可推出隐藏层节点数为 s 个。 其中 b 一般为 1-9 的整数。

 2.BP神经网络实例推导

 以波士顿房价预测为例

2.1设计神经网络

此次示例我们设计了一个简单的神经网络进行演示。

首先设计输入层和输出层的节点个数,有几个输入或输出就写几个节点,隐含层节点根据公式及逆行计算,如图

设计的神经网络图如图所示

 

第一层是输入层,包含两个神经元il,i2,和截距项bl;第二层是隐含层,包含两个神经元h1,h2和截距项(偏置系数〉b2,用于控制神经元被激活的容易程度,第三层是输出o1,o2,每条线上标的wi是层与层之间连接的权重。

接下来我们对各个数据赋上初值。权重是随机取值的。

 2.2前向计算

在前向计算的过程中,要搞清楚计算的关系,同时还有一个激活函数。将神经网络计算过程图详细展开则如图所示。

                                    加权求和              激活函数                 加权求和                激活函数

 计算隐含层时其实分两步,先进行加权求和,即将前面的节点分别乘以权重然后将和相加最后将值赋给neth,然后outh再用激活函数对neth进行运算跳出隐含层。激活函数我们默认为 sigmoid函数。即

 具体计算过程为

输入层--->隐含层

 

 同理,可计算出神经元h2的outh2值。

隐含层--->输出层

同理可计算出神经元O2的outo2的值。

这样前向传播的过程就结束了,我们得到输出值为[0.75136079 , 0.772928465],与实际值[0.01 , 0.99]相差还很远,现在我们对误差进行反向传 播,更新权值,重新计算输出。

2.3反向计算

首先通过损失函数计算我们的总误差

 计算过程为

 隐含层---->输出层的权值更新

以W5为例。

首先将损失函数对W5求偏导。

 

 

 每个部分的偏导都计算出来了,然后相乘得出损失函数对W5的偏导值。

 然后就是更新W5的值。

 

 

 同理,可更新其他参数W6、W7、W8等权重。

隐含层---->隐含层的权值更新:

方法其实与上面说的差不多,但是有个地方需要变一下,在上文计算总误差对 w5的偏导时,是从out(o1)---->net(o1)---->w5,但是在隐含层之间的权值更新 时,是out(h1)---->net(h1)---->w1,而out(h1)会接受E(o1)和E(o2)两个地方传来的 误差,所以这个地方两个都要计算。

 

 

 至此,所有权值可更新完毕,,然后继续按照前向计算更新损失函数的值,这样一个前向计算加后向计算成为一次迭代,我们的目的是让损失函数达到最低,找到理想的权重值。

2.4训练结束

一般通过设计停止迭代的期望值或设置迭代次数来停止迭代。不过,我们喜欢选择第二种,设置迭代次数来停止迭代,这样时间不会花费很多,要不然为了达到理想之,我们可能要跑模型跑一整天或者更长。

设置最大迭代次数,比如使用数据集迭代100次后停止训练

计算训练集在网络上的预测准确率,达到一定门限值后停止训练

3.计算整体步骤

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值