Python手写神经网络实现3层感知机

本文介绍了如何用Python手写一个3层感知机,包括BP神经网络的结构模型、学习算法,特别是加动量法的改进。文章详细阐述了神经网络的训练方式,如输入输出数据的预处理、网络结构设计,以及梯度下降法的原理和动量法的引入,以提高训练速度和避免震荡。
摘要由CSDN通过智能技术生成

一、BP神经网络结构模型       

        BP算法的基本思想是,学习过程由信号的正向传播和误差的反向传播俩个过程组成,输入从输入层输入,经隐层处理以后,传向输出层。如果输出层的实际输出和期望输出不符合,就进入误差的反向传播阶段。误差反向传播是将输出误差以某种形式通过隐层向输入层反向传播,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,这个误差信号就作为修正个单元权值的依据。知道输出的误差满足一定条件或者迭代次数达到一定次数。

层与层之间为全连接,同一层之间没有连接。结构模型如下图所示。

        使用的传递函数sigmoid可微的特性使他可以使用梯度下降法。所以,在隐层函数中使用sigmoid函数作为传递函数,在输出层采用线性函数作为传递函数。

输入向量、隐层输出向量、最终输出向量、期望输出向量:

X=(x1,x2,x3……xn),其中图中x0是为隐层神经元引入阈值设置的;

Y=(y1,y2,y3……ym),其中图中y0是为输出神经元引入阈值设置的;

O=(o1,o2,o3……ol)

D=(d1,d2,d3……dl)

输出层的输入是隐层的输出,隐层的输入是输入层的输出,计算方法和单层感知器的计算方法一样。

单极性Sigmoid函数:

双极性sigmoid函数:

二、BP神经网络的学习算法

        标准BP神经网络沿着误差性能函数梯度的反方向修改权值,原理与LMS算法比较类似,属于最速下降法。此外还有以下改进算法,如动量最速下降法,拟牛顿法等。

    最速下降法又称为梯度下降法。LMS算法就是最小均方误差算法。LMS算法体现了纠错原则,与梯度下降法本质上没有区别,梯度下降法可以求目标函数的极小值,如果将目标函数取为均方误差,就得到了LMS算法。

       梯度下降法原理:对于实值函数F(x),如果函数在某点x0处有定义且可微,则函数在该点处沿着梯度相反的方向下降最快,因此,使用梯度下降法时,应首先计算函数在某点处的梯度,再沿着梯度的反方向以一定的步长调整自变量的值。其中实值函数指的是传递函数,自变量x指的是上一层权值和输入值的点积作为的输出值。

        网络误差定义:

   

   

三层BP网络算法推导:

1、变量定义

网络的实际输出:

  1. 信号正向传播

  1. 误差信号反向传播

首先误差反向传播首先经过输出层,所以首先调整隐含层和输出层之间的权值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青年夏日科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值