BP神经网络中net.iw{1,1} 两个1分别代表什么意思??

BP神经网络中net.iw{1,1} 两个1分别代表什么意思??,第1张

第一个1是指网络层数(netnumLayers);

第二个1是指网络输入个数(netnumInputs);

从第j个输入到到第i层的权重的权重矩阵(或null matrix [])位于netiw {i,j};

神经网络对象IW属性:该属性定义了网络输入和各输入层神经元之间的网络权值,属性值为NxNi维的单元数组,其中,N为网络的层数,Ni为网络的输入个数。

如果netinputConnect(i,j)为1,即第i层上的各神经元接收网络的第j个输入,那么在单元netiw {i,j}中将存储它们之间的网络权值矩阵。

该矩阵的行数为第i层神经元的个数(netlayers{i}size),列数为第j个输入的维数(netinputs{j}size)与输入延退拍数(net inputWeights{i,j}delays)的乘积。

扩展资料:

netIW{i,j}的作用

通过访问netIW{i,j},可以获得第i 个网络层来自第j 个输入向量的权值向量值。 所以一般情况下net,iw{1,1}就是输入层和隐含层之间的权值。

netIW{i,j}各个属性的含义:

(1)、delays:该属性定义了网络输入的各延迟拍数,其属性值是由0或正整数构成的行矢量,各输入层实际接收的是由网络输入的各个延迟构成的混合输入。

(2)、initFcn:该属性定义了输入权值的初始化函数,其属性值为表示权值初始化函数名称的字符串。

(3)、learn:该属性定义了输入权值在训练过程中是否进行调整,其属性值为0或1。

(4)、learnFcn:该属性定义了输入权值的学习函数,其属性值为表示权值学习函数名称的字符串。

1)局部极小化问题:从数学角度看,传统的BP神经网络为一种局部搜索的优化方法,它要解决的是一个复杂非线性化问题,网络的权值是通过沿局部改善的方向逐渐进行调整的,这样会使算法陷入局部极值,权值收敛到局部极小点,从而导致网络训练失败。加上BP神经网络对初始网络权重非常敏感,以不同的权重初始化网络,其往往会收敛于不同的局部极小,这也是很多学者每次训练得到不同结果的根本原因。

2)BP神经网络算法的收敛速度慢:由于BP神经网络算法本质上为梯度下降法,它所要优化的目标函数是非常复杂的,因此,必然会出现“锯齿形现象”,这使得BP算法低效;又由于优化的目标函数很复杂,它必然会在神经元输出接近0或1的情况下,出现一些平坦区,在这些区域内,权值误差改变很小,使训练过程几乎停顿。

3)BP神经网络结构选择不一:BP神经网络结构的选择至今尚无一种统一而完整的理论指导,一般只能由经验选定。网络结构选择过大,训练中效率不高,可能出现过拟合现象,造成网络性能低,容错性下降,若选择过小,则又会造成网络可能不收敛。而网络的结构直接影响网络的逼近能力及推广性质。因此,应用中如何选择合适的网络结构是一个重要的问题。

4)应用实例与网络规模的矛盾问题:BP神经网络难以解决应用问题的实例规模和网络规模间的矛盾问题,其涉及到网络容量的可能性与可行性的关系问题,即学习复杂性问题。

5)BP神经网络预测能力和训练能力的矛盾问题:预测能力也称泛化能力或者推广能力,而训练能力也称逼近能力或者学习能力。一般情况下,训练能力差时,预测能力也差。

正是因为每次权值和阈值的初值都不一样,所以使用相同的权值修正公式,计算出来的结果都不一样。当然这个初值也可以自己设置,方法如下:

netIW{1,1}=W1;

netLW{2,1}=W2;

netb{1}=B1;

netb{2}=B2;

一般就用newff函数建立网络即可。newff函数的格式为:

net=newff(PR,[S1 S2 SN],{TF1 TF2TFN},BTF,BLF,PF),函数newff建立一个可训练的前馈网络。输入参数说明:

PR:Rx2的矩阵以定义R个输入向量的最小值和最大值;

Si:第i层神经元个数;

TFi:第i层的传递函数,默认函数为tansig函数;

BTF:训练函数,默认函数为trainlm函数;

BLF:权值/阀值学习函数,默认函数为learngdm函数;

PF:性能函数,默认函数为mse函数。

BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。

BP神经网络算法是在BP神经网络现有算法的基础上提出的,是通过任意选定一组权值,将给定的目标输出直接作为线性方程的代数和来建立线性方程组,解得待求权,不存在传统方法的局部极小及收敛速度慢的问题,且更易理解。

1 传统的BP算法简述

  BP算法是一种有监督式的学习算法,其主要思想是:输入学习样本,使用反向传播算法对网络的权值和偏差进行反复的调整训练,使输出的向量与期望向量尽可能地接近,当网络输出层的误差平方和小于指定的误差时训练完成,保存网络的权值和偏差。具体步骤如下: (1)初始化,随机给定各连接权[w],[v]及阀值θi,rt。 (2)由给定的输入输出模式对计算隐层、输出层各单元输出 bj=f(■wijai-θj) ct=f(■vjtbj-rt) 式中:bj为隐层第j个神经元实际输出;ct为输出层第t个神经元的实际输出;wij为输入层至隐层的连接权;vjt为隐层至输出层的连接权。 dtk=(ytk-ct)ct(1-ct) ejk=[■dtvjt] bj(1-bj) 式中:dtk为输出层的校正误差;ejk为隐层的校正误差。 (3)计算新的连接权及阀值,计算公式如下: vjt(n+1)=vjt(n)+琢dtkbj wij(n+1)=wij(n)+茁ejkaik rt(n+1)=rt(n)+琢dtk θj(n+1)=θj(n)+茁ejk 式中:琢,茁为学习系数(0<琢<1,0<茁<1)。 (4)选取下一个输入模式对返回第2步反复训练直到网络设输出误差达到要求结束训练。 传统的BP算法,实质上是把一组样本输入/输出问题转化为一个非线性优化问题,并通过负梯度下降算法,利用迭代运算求解权值问题的一种学习方法,但其收敛速度慢且容易陷入局部极小,为此提出了一种新的算法,即高斯消元法。

2 改进的BP网络算法

  2.1 改进算法概述 此前有人提出:任意选定一组自由权,通过对传递函数建立线性方程组,解得待求权。本文在此基础上将给定的目标输出直接作为线性方程等式代数和来建立线性方程组,不再通过对传递函数求逆来计算神经元的净输出,简化了运算步骤。没有采用误差反馈原理,因此用此法训练出来的神经网络结果与传统算法是等效的。其基本思想是:由所给的输入、输出模式对通过作用于神经网络来建立线性方程组,运用高斯消元法解线性方程组来求得未知权值,而未采用传统BP网络的非线性函数误差反馈寻优的思想。 2.2 改进算法的具体步骤 对给定的样本模式对,随机选定一组自由权,作为输出层和隐含层之间固定权值,通过传递函数计算隐层的实际输出,再将输出层与隐层间的权值作为待求量,直接将目标输出作为等式的右边建立方程组来求解。 现定义如下符号(见图1):x (p)输入层的输入矢量;y (p)输入层输入为x (p)时输出层的实际输出矢量;t (p)目标输出矢量;n,m,r分别为输入层、隐层和输出层神经元个数;W为隐层与输入层间的权矩阵;V为输出层与隐层间的权矩阵。具体步骤如下: (1)随机给定隐层和输入层间神经元的初始权值wij。 (2)由给定的样本输入xi(p)计算出隐层的实际输出aj(p)。为方便起见将图1网络中的阀值写入连接权中去,令:隐层阀值θj=wnj,x(n)=-1,则: aj(p)=f(■wijxi(p)) (j=1,2…m-1)。 (3)计算输出层与隐层间的权值vjr。以输出层的第r个神经元为对象,由给定的输出目标值tr(p)作为等式的多项式值建立方程,用线性方程组表示为: a0(1)v1r+a1(1)v2r+…+am(1)vmr=tr(1)a0(2)v1r+a1(2)v2r+…+am(2)vmr=tr(2) ……a0(p)v1r+a1(p)v2r+…+am(p)vmr=tr(p) 简写为: Av=T 为了使该方程组有唯一解,方程矩阵A为非奇异矩阵,其秩等于其增广矩阵的秩,即:r(A)=r(A┊B),且方程的个数等于未知数的个数,故取m=p,此时方程组的唯一解为: Vr=[v0r,v2r,…vmr](r=0,1,2…m-1) (4)重复第三步就可以求出输出层m个神经元的权值,以求的输出层的权矩阵加上随机固定的隐层与输入层的权值就等于神经网络最后训练的权矩阵。

3 计算机运算实例

  现以神经网络最简单的XOR问题用VC编程运算进行比较(取神经网络结构为2-4-1型),传统算法和改进BP算法的误差(取动量因子α=0.001 5,步长η=1.653)

神经网络能很好地解决不同的机器学习问题。神经网络模型是许多逻辑单元按照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量。

上图显示了人工神经网络是一个分层模型,逻辑上可以分为三层:

输入层 :输入层接收特征向量 x

输出层 :输出层产出最终的预测 h

隐含层 :隐含层介于输入层与输出层之间,之所以称之为隐含层,是因为当中产生的值并不像输入层使用的样本矩阵 X或者输出层用到的标签矩阵 y 那样直接可见。

下面引入一些标记法来帮助描述模型:

!$ a^{(j)}_{i} $ 代表第j层的第i个激活单元。 !$ \theta^{(j)} $ 代表从第 j 层映射到第 j+1 层时的权重的矩阵,例如 !$ \theta^{(1)} $ 代表从第一层映射到第二层的权重的矩阵。其尺寸为:以第 j+1层的激活单元数量为行数,以第 j 层的激活单元数加一为列数的矩阵。例如:上图所示的神经网络中 !$ \theta^{(1)} $ 的尺寸为 34。

对于上图所示的模型,激活单元和输出分别表达为:

!$ a^{(2)}_{1} = g( \theta^{(1)}_{10}x_0 + \theta^{(1)}_{11}x_1 + \theta^{(1)}_{12}x_2 + \theta^{(1)}_{13}x_3 ) $

!$a^{(2)}_{2} = g( \theta^{(1)}_{20}x_0 + \theta^{(1)}_{21}x_1 + \theta^{(1)}_{22}x_2 + \theta^{(1)}_{23}x_3 ) $

!$a^{(2)}_{3} = g( \theta^{(1)}_{30}x_0 + \theta^{(1)}_{31}x_1 + \theta^{(1)}_{32}x_2 + \theta^{(1)}_{33}x_3 ) $

!$h_{\theta}{(x)} = g( \theta^{(2)}_{10}a^{2}_{0} + \theta^{(2)}_{11}a^{2}_{1} + \theta^{(2)}_{12}a^{2}_{2} + \theta^{(2)}_{13}a^{2}_{3} ) $

下面用向量化的方法以上面的神经网络为例,试着计算第二层的值:

对于多类分类问题来说:

我们可将神经网络的分类定义为两种情况:二类分类和多类分类。

二类分类: !$ S_{L} = 0,y = 0,y = 1$

多类分类: !$ S_{L} = k, y_{i} = 1表示分到第i类;(k>2)$

在神经网络中,我们可以有很多输出变量,我们的 !$h_{\theta}{(x)} $ 是一个维度为K的向量,并且我们训练集中的因变量也是同样维度的一个向量,因此我们的代价函数会比逻辑回归更加复杂一些,为: !$ h_{\theta}{(x)} \in R^{K}(h_{\theta}{(x)})_{i} = i^{th} output$

我们希望通过代价函数来观察算法预测的结果与真实情况的误差有多大,唯一不同的是,对于每一行特征,我们都会给出K个预测,基本上我们可以利用循环,对每一行特征都预测K个不同结果,然后在利用循环在K个预测中选择可能性最高的一个,将其与y中的实际数据进行比较。

正则化的那一项只是排除了每一层 !$\theta_0$ 后,每一层的 矩阵的和。最里层的循环j循环所有的行(由 +1 层的激活单元数决定),循环i则循环所有的列,由该层( !$ s_l$ 层)的激活单元数所决定。即: !$h_{\theta}{(x)}$ 与真实值之间的距离为每个样本-每个类输出的加和,对参数进行 regularization bias 项处理所有参数的平方和。

由于神经网络允许多个隐含层,即各层的神经元都会产出预测,因此,就不能直接利用传统回归问题的梯度下降法来最小化 !$J(\theta)$ ,而需要逐层考虑预测误差,并且逐层优化。为此,在多层神经网络中,使用反向传播算法(Backpropagation Algorithm)来优化预测,首先定义各层的预测误差为向量 !$ δ^{(l)} $

训练过程:

当我们对一个较为复杂的模型(例如神经网络)使用梯度下降算法时,可能会存在一些不容易察觉的错误,意味着,虽然代价看上去在不断减小,但最终的结果可能并不是最优解。

为了避免这样的问题,我们采取一种叫做梯度的数值检验( Numerical Gradient Checking )方法。这种方法的思想是通过估计梯度值来检验我们计算的导数值是否真的是我们要求的。

对梯度的估计采用的方法是在代价函数上沿着切线的方向选择离两个非常近的点然后计算两个点的平均值用以估计梯度。即对于某个特定的 ,我们计算出在 !$\theta - \epsilon$ 处和 !$\theta + \epsilon$ 的代价值(是一个非常小的值,通常选取 0001),然后求两个代价的平均,用以估计在 !$\theta$ 处的代价值。

当 !$\theta$ 是一个向量时,我们则需要对偏导数进行检验。因为代价函数的偏导数检验只针对一个参数的改变进行检验,下面是一个只针对 !$\theta_1$ 进行检验的示例:

如果上式成立,则证明网络中BP算法有效,此时关闭梯度校验算法(因为梯度的近似计算效率很慢),继续网络的训练过程。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/12178080.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存