当前位置:文档之家› 多层前馈神经网络算法

多层前馈神经网络算法


为步长, 为梯度方向
神经网络算法总结
到这里神经网络算法的计算部分就结束了,我们进行一下总结: 输入节点将值输入到隐藏层,隐藏层和输出层的每一个节点 进行计算,并输出。计算过程为加权和+偏倚得到净输入,净输入作 为挤压函数的参数进行计算,得到的结果就是每一个节点的输出值。 这样从前到后按层计算就会得到神经网络的结果。 更新操作的方向与计算方向相反。通过输出节点的输出和训 练数据的“正确答案”求出误差,使用梯度下降法对权重和偏倚进 行更新。这样后向前按层更新,从而实现对整个神经网络的更新操 作。
多层前馈神经网络算法
王玉良
目录
1 2
神经网络算法基础知识 多层前馈神经网络
3
4
神经网络例题
神经网络实例演示
多层前馈神经网络结构图
隐藏层和输出层的节点被称作神经节点,神经网络的层 数为隐藏层数+输出层数。神经网络是全链接的,即每一个 节点和它下一层的每一个节点都有链接。
神经网络输入和结构的确定
神经网络可以接受离散型和连续型的数据。若 将输入规范化,使得他们落入0到1这个区间内,会 有较佳的结果。一般对于分类数据,用0和1分别表 示一种状态,若状态多于两种,可以增加输入节点。 关于隐藏层的层数和每一层的数量,没有“最 好的”方案,需要反复调整,从而得到较优解。
神经网络的误差
因为权重和偏倚的初始值是随机得到的,所以 初始状态的神经网络是无法满足我们的要求的。这时 候我们就需要比较计算结果和训练数据的“正确答 案”,得到误差,从而调整神经网络内的权重和偏倚, 来得到较满意的神经网络。
神经网络ቤተ መጻሕፍቲ ባይዱ差的计算
输出层节点误差的计算:
Tj 是训练数据的“答案”。 其中 O j 是输出节点的输出,
隐藏层节点误差的计算:
其中 O j 是隐藏层节点的输出, 重积的和。
是下一层节点误差与权
多层前馈神经网络结构图
可见误差计算是从后往前计算的的
神经网络权重与偏倚的更新操作
权重与偏倚的更新操作都使用的是梯度下降法。
权重的更新:
是节点的误差,l是学习率,取值范围为(0,1)(相当 于梯度下降法的步长)
从而求得节点6的输出:
例题
到此我们就完成了神经网络算法的一次计算,下面对该网络进 行更新操作。
例题
因为更新操作的顺序是从后往前的,首先对输出节点进行更新。先求 输出节点的误差Err6: 因为训练数据的 “正确答案”为1, 所以T6等于1。 权重进行更新操作:
偏倚进行更新操作:
例题
同理,可以对节点4、5进行更新操作,其误差计算方法与节点6不同:
权重和偏倚的更新操作与节点6相同,在这里就不详细计算:
神经网络算法难点
神经网络的计算过程和更新过程还是比较简单的。但神经网 络也存在难点,主要包括两方面: 1、神经网络结构的确定。 2、因为权重和偏移的初始值是随机的,有可能有限次内不能 得到满意解。 3、神经网络算法学习出来的规则难以让人理解。
例题
例题
输入、权重和偏倚的初始值如下:
例题
为了计算每一个节点的输出,我们首先计算净输入(以节点4为例):
这样我们就可以求得节点4和节点5的净输入:
例题
下面将净输入作为参数输入挤压函数就可以求出节点的输出:
例题
此时我们求出了隐藏层的输出,再根据隐藏层的输出计算输出层节点6:
同理,首先求净输出L6:
神经网络算法总结
神经网络算法的停止条件: 1、 迭代。 2、与所有训练数据的平均误差小于一个阈值,代表我们得到了满意 解,从而停止迭代。 3、达到一定的迭代次数,从而停止迭代。 小于某一个阈值,代表已经非常接近于最优值,从而停止
例题
如图是一个多层前馈神经网络,学习率为0.9。设一组训练数据为 输入值为(1,0,1),结果为1
实例演示
下面是我用神经网络算法实现的一个识别(正\负)奇(偶) 数的实例。
Add Your Company Slogan
Thank You!
神经网络节点结构
权重和偏倚的初始值为(-1,1)随机值。输入节点将输入值输出。隐藏 层节点和输出层节点结构如下图所示:
关于挤压函数(激活函数)
挤压函数是将一个较大的数(净输入)映射到0到1区间,常用的 挤压函数主要为logistic函数。对于不同的神经网络应用,还有其 他的挤压函数。
该函数的自 变量是净输 入。
偏倚的更新:
偏倚的更新与权重的更新非常类似。
梯度下降法
梯度下降法又叫最速下降法(steepest descend method), 用来求解函数的最大或者最小值的,属于无约束优化问题。梯度向量为 函数值f对每个变量的导数,该向量的方向就是梯度的方向,向量的大小 也就是梯度的大小。
梯度下降法
梯度下降法的基本原理: 现假设我们要求函数f的 最大(小)值,首先任 取一个初始点,然后下 一个点的产生时是沿着 梯度直线方向(反方向) 进行迭代,迭代公式如 下:
回顾一下,更新操作是从后往前的,更新节点6更新了偏倚 以及 权重w46,w56。同理,更新节点4更新了 以及w14,w24,w34;更 新节点5。。。这样就完成了一次对于神经网络的更新。
关于更新操作的时机
一般训练数据有很多组,将所有训练数据进行一次计算+ 更新操作,叫做一次迭代。 每处理一个样本就进行一次更新叫做实例更新;处理完 所有训练数据后,再进行更新操作叫做周期更新。一般数学计算 中常常使用周期更新,用计算机实现时常常使用实例更新。实例 更新所需要的迭代次数较少,但计算量较大。 周期更新是将权重和偏倚的该变量 和 进行累 计,直到所有训练数据累计完成后,再进行一次更新操作。
相关主题