李爱国
2008年5月20日更新版
1 BP网络
1.1 BP网络的拓扑结构
BP 网络的拓扑结构如图所示:
图中输入层节点n 个以及一个偏置节点,其输入固定为1;输出层节点q 个;隐层节点m 个以及一个偏置节点,其输入固定为1。
输入向量为:x =(1, x 1, x 2,..., x n ) ;输出向量为:y =(y 1, y 2,..., y q ) 。输入层和隐层之间的连接权为W ∈R (n +1) ?m :
?w 01?W =?w 11...... ??w n 1w 02w 12w n 2... ... ... w 0m ?w 1m ?? w nm ?? (1)
隐层和输出层之间的连接权为V ∈R (m +1) ?q :
?v 01?v V =?11...... ?v ?m 1v 02v 12v m 2... ... ... v 0q ?v 1q ?? (2) v mq ??
设隐层节点的激活函数为f (x ) ,而输出层节点的激活函数为g (x ) 。
第j 个隐层节点的输出值为:
z j =f (x e w j ), j =1, 2,..., m (3)
其中,w j 是W 的第j 列;x e =(1, x 1, x 2,..., x n ) 是增广输入向量。
于是,隐层节点的增广输出向量Z =(1, z 1, z 2,..., z m ) =(1, Z ' ) 为
Z ' =F (x e W ) (4)
第k 个输出层节点的输出值为:
y k =g (Z v k ), k =1, 2,..., q (5)
其中,v k 是V 的第k 列。
输出层节点的输出向量Y =(y 1, y 2,..., y q ) 为
Y =G (ZV ) (6)
1.2 BP网络的建模
给定BP 网络结构如上图所示;并给定一个训练样本集合S ∈R L ?(n +q ) :
?e 11 e S =(E , O )= 21
...... e L 1?e 12e 2e L 2e 1n e 2n e Ln o 11o 21o L 1o 12o 22o L 2o 1q ?o 2q ?? (7) ?o Lq ??
其中,e l =(e l 1, e l 2,..., e ln ) ,o l =(o l 1, o l 2,..., o lq ) ,l =1, 2,..., L 分别是第l 个样本的属性值向量和类别向量。o l 中有且只有一个元素的值等于1,其余的元素值为0。例如,
如果o l 的第2个元素的值为1,则第l 个样本属于第2类,以此类推。
BP 网络的学习目标是:对给定的一个训练样本集合S ∈R L ?(n +q ) ,得到一组权矩阵W 和V ,使如下指标
1L q
J =∑∑(o lk -y lk ) 2
2l =1k =1 (8)
达到最小值。
1.3 BP网络学习算法推导
下面我们用最速下降算法推导BP 网络的在线学习算法。
1.3.1 最速下降算法介绍
给定无约束问题
min f (x ) (9)
即,求解x 使f (x ) 取最小值, x ∈R n 。
最速下降迭代算法的求解公式是:
x (k +1) =x (k ) +λd (k ) (10)
其中
d (k ) ?f (x ) =-?f (x ) =-?x (k )
x =x (k ) (11)
其中,?f (x ) 是f (x ) 的梯度。λ∈(0, 1) 是用户设定的常数;k 表示第k 次迭代。
1.3.2 BP 网络学习算法推导
给定一个训练样本e =(e 1, e 2,..., e n ) ,o =(o 1, o 2,..., o q ) ,并假定已知权矩阵W 和V 的初始值为W (0) 和V (0) 。于是我们可以分别(3)式和(5)式计算出隐层节点的输出向量Z (0) 以及输出层节点的输出向量Y (0) 。因为
1q 1q 2J =∑(o k -y k ) =∑[o k -g (Z v k )]2 (12) 2k =12k =1
故
?J =-[o k -g (Z v k )]g ' (Z v k ) Z T , k =1, 2,..., q (13) ?v k
于是,可以得到权矩阵V 的更新公式:
v (
k 1) =v (k 0) +β?J ?v k v (0) k , Z (0) ,k =1, 2,..., q (14)
其中,β∈(0, 1) ,根据经验设定。
又因为
y k =g (Z v k ) =g [(1, z 1, z 2,..., z m )(v 0k , v 1k ,..., v mk ) T ]
=g (v 0k +∑z j v jk ) =g [v 0k +∑f (x e w j ) v jk ]
, j =1, 2,..., m
故
q ?(z j v jk ) ?J =-∑[o k -g (Z v k )]g ' (Z v k ) ?w j ?w j k =1m m (15) j =1j =1
=-{∑v jk [o k -g (Z v k )]g ' (Z v k )}f ' (x e w j ) x T
e (16)
, j =1, 2,..., m
于是,可以得到权矩阵W 的更新公式:
w (
j 1) =w (j 0) +α?J ?w j w (0) j q k =1, Z (0) ,j =1, 2,..., m (17)
其中,x e =(1, e 1, e 2,..., e n ) ;α∈(0, 1) ,根据经验设定。
1.3.2 隐层和输出层的激活函数
常用的隐层的激活函数f (x ) 如下:
1)f (x ) =1,其一阶导数为f ' (x ) =f (x )[1-f (x )] -x 1+e
e x -e -x
2)f (x ) =th (x ) =x ,其一阶导数为f ' (x ) =[1+f (x )][1-f (x )] -x e +e
3)f (x ) =arctg (x ) ,其一阶导数为f ' (x ) =(1+x 2) -1
常用的输出层的激活函数g (x ) 除了可以用上述3种函数外,还可以用如下函数:
g (x ) =x ,其一阶导数为g ' (x ) =1
2 BP网络学习的迭代算法
根据上述推导,我们可以得出如下的迭代算法:
给定一个训练样本集合S ∈R L ?(n +q ) 。其中,e l =(e l 1, e l 2,..., e ln ) ,o l =(o l 1, o l 2,..., o lq ) ,l =1, 2,..., L 分别是第l 个样本的属性值向量和类别向量。o l 中有且只有一个元素的值等于1,其余的元素值为0。
1)选择输入层节点n +1个,其中一个是偏置节点,其输入固定为1;选择输出层节点q 个;隐层节点数目根据经验选定,这里假设选定m +1个,其中一个是偏置节点,其输入固定为1。
2)根据经验选择常数α, β∈(0, 1) ,和最大允许迭代步数t max 以及停机判据阈值δ。
3) 确定隐层和输出层的激活函数f (x ), g (x ) 。
4)随机产生权矩阵W , V 的初值为(0, 1) 之间的随机数。
5)迭代次数t =1;循环计算6)--8)步。
6)依次选取样本集中的每一个样本,循环进行如下操作:
(1) 根据(3)式计算每一个隐层节点的输出值;
(2) 根据(5)式计算每一个输出层节点的输出值;
(3) 根据(13)和(14)式更新权矩阵V 的值;
(4) 根据(16)和(17)式更新权矩阵W 的值;
7)计算停机判据。停机判据一般可以选择如下的其中一个条件或其组合:
(1)t >t max
(2)J ≤δ
(3)W (t ) -W (t -1) 以及V (t ) -V (t -1) 的平方和不大于δ
8)如果停机判据满足,则退出迭代;否则,t =t +1,转6)步。
9)输出权矩阵W , V ,结束。
3 BP网络学习举例
如果隐层的激活函数f (x ) 和输出层的激活函数g (x ) 均选用4.1.3.2节中的第1种形式,则(13)式变为:
?J =-[o k -y k ]y k (1-y k ) Z T
?v k , k =1, 2,..., q (18)
(16)式变为:
q ?J =-{∑v jk (o k -y k ) y k (1-y k )}z j (1-z j ) x T
e ?w j k =1, j =1, 2,..., m (19)
4 BP网络分类
一旦BP 网络被训练好(即得到了权矩阵W , V ),我们就可以用其进行分类。 假设给定一个未知类别的测试数据e =(e 1, e 2,..., e n ) ,我们要利用训练好的BP 网络对其分类,步骤如下:
1)根据经验选定阈值0. 5≤σ≤1;
2)令x e =(1, e 1, e 2,..., e n ) ,并将其输入BP 网络,根据(5)式计算每一个输出层
节点的输出值y k , k =1, 2,..., q 。
3)找出y k , k =1, 2,..., q 中的最大者y j 。如果y j ≥σ,则测试数据
e =(e 1, e 2,..., e n ) 属于第j 类;否则分类失效。
5粒子群优化算法
5.1 基本PSO 算法
假设在一个D 维的目标搜索空间中,有m 个粒子组成一个群落,其中第i 个粒子表示为一个D 维的向量x i =(x i 1, x i 2,..., x iD ), i =1, 2,..., m ,即第i 个粒子在D 维的搜索空间中的位置是x i 。换言之,每个粒子的位置就是一个潜在的解。将x i 带入一个目标函数就可以计算出其适应值,根据适应值的大小衡量x i 的优劣。第i 个粒子的“飞翔”速度也是一个D 维的向量,记为v i =(v i 1, v i 2,..., v iD ) 。记第i 个粒子迄今为止搜索到的最优位置为p i =(p i 1, p i 2,..., p iD ) ,整个粒子群迄今为止搜索到的最优位置为p g =(p g 1, p g 2,..., p gD ) 。
kennedy 和Eberhart 最早提出的PSO 算法[1]采用下列公式对粒子操作:
v id =v id +c 1r 1(p id -x id ) +c 2r 2(p gd -x id ) (1)
x id =x id +v id (2)
其中,i =1,..., m ,d =1,..., D ;学习因子c 1和c 2是非负常数,根据经验,一般取c 1=c 2∈[1, 2]效果较好;r 1和r 2是介于[0, 1]之间的随机数。v id ∈[-v max , v max ];v max 是常数,由用户设定。
迭代中止条件根据具体问题一般选为最大迭代次数或(和)粒子群迄今为止搜索到的最优位置满足预定最小适应阈值。
因为p g 是整个粒子群的最优位置,因此上述PSO 算法也被称为全局版PSO 。也可以把第i 个粒子的邻居们搜索到的最优位置作为p g ,则上述方法又被称为局部版PSO [2]。全局版PSO 收敛速度快,但有时会陷入局部最优。局部版PSO 收敛速度慢一点,但相对的不易陷入局部最优。
文献[3]对(1)式作了如下的改动:
v id =wv id +c 1r 1(p id -x id ) +c 2r 2(p gd -x id ) (3)
其中w 是非负数,称为惯性因子,根据经验,一般取0. 5≤w ≤1效果较好。
而文献[4]对(2)式作了以下改动:
x id =x id +av id (4)
其中a 称为约束因子,目的是控制速度的权重。
目前,也有许多学者把方程(3),(4)视作基本的PSO 算法。基本PSO 算法需要用户确定的参数并不多,而且操作简单,故使用比较方便。但是它的缺点是易陷入局部极小点,搜索精度不高,因此研究者们对其作了各种各样的改进。
5.2 应用举例
例如,有一个优化问题,其目标函数为
J =∑[100(x i +1-x i 2) 2+(x i -1) 2] (5)
i =15
我们的任务是:寻找输入变量(x 1, x 2,..., x 6) 的一组最优取值,使得目标函数J 最小。
我们用PSO 算法求解这个问题。因为输入变量的个数是6个,故D =6。我们选择粒子数为m 个(一般m >10),第i 个粒子的位置向量为x i =(x i 1, x i 2,..., x iD ), i =1, 2,..., m 。算法伪代码如下:
1)选择参数:D =6;//这个参数由自变量个数决定
2)选择参数:m =50;w =0. 9;c 1=c 2=2。//这些参数可由用户调整
3)设定参数:v max =10;最大迭代次数T max =500。//这些参数可由用户调整
4)设定参数:初始位置向量的取值范围 [5,10]。//由用户根据实际确定
?x 1??x 11?x ??x 2215)随机生成m 个粒子的初始位置向量X =??=?? ?? ????x m ??x m 1x 12x 22 x m 2x 1D ? x 2D ??,因为 ?? x mD ?
初始位置向量的取值范围 [5,10],故要求满足≤5x ij ≤10, (i =1,..., m ; j =1,..., D ) 。
?v 1??0?v ??026)设定m 个粒子的初始位置向量V =??=?? ?? ????v m ??00 0?0 0?? ??0 0?
?p 1??p ?
27)设定m 个粒子的迄今为止搜索到的最优位置向量P =??所对应的的目? ????p m ?
标函数值为J P =J p 1, J p 2,..., J pm =[inf, inf,..., inf ]。inf 表示正的无穷大。
8)设定m 个粒子搜索到的最优位置p g 所对应的目标函数值为J g =inf 。
9)For t =1:1:T max { //t是迭代次数。
10) For i =1:1:m {
11) 将x i 带入(5)式求出J i ;
12) if (J pi
13) if (J g
14) 根据(3)式求v i ;
15) For j =1:1:D { if v ij >v max { v ij =v max ; } }
16) 根据(2)式求x i ;
17)} }
18)输出 J g ;p g 。 // p g 就是所求的最优解 []
5.3.1 自适应PSO 算法
文献[3]研究了惯性因子w 对优化性能的影响,发现较大的w 值有利于跳出局部极小点,而较小的w 值有利于算法收敛,因此提出了自适应调整w 的策略,即随着迭代的进行,线性地减小w 的值。这种方法的进一步发展是用模糊规则动态地修改w 的值[5],即构造一个2输入、1输出的模糊推理机来动态地修改惯性因子w 。模糊推理机的两个输入分别是当前w 值,以及规范化的当前最好性能演化(the normalized current best performance evaluation, NCBPE );而输出是w 的增量。CBPE 是PSO 算法迄今为止发现的最好候选解的性能测度。CBPE 可以有不同的定义方法,但是一般CBPE 可以定义为最好候选解的适应值。NCBPE 用下式计算
NCBPE =CBPE -CBPE min (5) CBPE max -CBPE min
其中CBPE max 和CBPE min 分别是CBPE 可能取值的上下限。
模糊推理机的输入、输出的论域定义为3个模糊集合:LOW, MEDIUM 和HIGH ,相应的模糊隶属度函数分别是leftTriangle, Triangle, rightTriangle (隶属度函数的图形如图1)。模糊推理机定义了9条规则进行模糊推理,决定当前w 的增量。
图1 隶属度函数
类似地,约束因子a 对优化性能的影响也引起了人们的注意,并提出了自适应改变a 的值从而改善优化性能的策略[4]。
这一类自适应PSO 算法对许多问题都能取得满意的结果。通过自适应调整全局系数,兼顾搜索效率和搜索精度,是一类有效的算法。但是对许多复杂的非线性优化问题,试图通过自适应调整一个全局系数提高搜索精度的余地是有限的。
借鉴遗传算法的思想,文献[6]最早提出了混合PSO 算法的概念。文献[7]进一步提出具有繁殖和子群的HPSO 算法。粒子群中的粒子被赋予一个混合概率,这个混合概率是用户确定的,与粒子的适应值无关。在每次迭代中,依据混合概率选取指定数量的粒子放入一个池中。池中的粒子随机地两两混合,产生同样数目的孩子粒子,并用孩子粒子代替父母粒子,以保持种群的粒子数目不变。孩子粒子的位置由父母粒子的位置的算术加权和计算,即
child 1(x ) =p *parent 1(x ) +(1-p ) *parent 2(x ) (7)
child 2(x ) =p *parent 2(x ) +(1-p ) *parent 1(x ) (8)
其中x 是D 维的位置向量,而child k (x ) 和parent k (x ) ,k =1, 2分别指明是孩子粒
p 是D 维均匀分布的随机数向量,p 的每个分量都在 [0,子还是父母粒子的位置;
1]取值。
孩子粒子的速度分别由下面的公式得到
child 1(v ) =parent 1(v ) +parent 2(v ) parent 1(v ) (9) parent 1(v ) +parent 2(v )
child 2(v ) =parent 1(v ) +parent 2(v ) parent 2(v ) (10) parent (v ) +parent (v ) 12
其中v 是D 维的速度向量,而child k (v ) 和parent k (v ) ,k =1, 2分别指明是孩子粒子还是父母粒子的速度。
对局部版的PSO 算法而言,相当于在一个种群中划分了若干个子群,因此,混合操作既可以在同一子群内部进行,也可以选择在不同的子群之间进行。
实验结果显示[6,8],混合PSO 算法的收敛速度比较快,搜索精度也相对比较高,对一类非线性优化问题可以得到满意的结果。不过引入了较多的待调整参数,对使用者的经验有一定要求。
5.3.3协同PSO 算法
文献[8, 9]提出了一种协同PSO 算法,其基本思想是用K 个相互独立的粒子群分别在 D 维的目标搜索空间中的不同维度方向上进行搜索。具体做法是:选定划分因子(split factor)K 和粒子群的粒子数M ,将输入的D 维向量(粒子的位置及速度向量)划分到K 个粒子群。前D mod K 个粒子群,其粒子的位置及速度向量都是D /K 维的;而后K -(D mod K ) 个粒子群,其粒子的位置及速度向量也是D /K 维的。在每一步迭代中,这K 个的粒子群相互独立地进行状态更新,粒子群之间不共享信息。计算适应值时,将每个粒子群中最优粒子的位置向量拼接起来,组成D 维向量并代入适应函数计算适应值。例如,考虑一个有24个自变量的优化问题,即D =24。如果选取M =10,K =5,那么每个粒子的位置及速度向量的维数就是D /K =5。
西安科技大学计算机系 “数据仓库与数据挖掘”研究生课程讲义 这种协同PSO 算法有明显的“启动延迟”(start-up delay)现象[7],在迭代初期,适应值下降缓慢,换言之,收敛速度慢。文献[7]的实验结果显示粒子群数目越大,收敛越慢。不过这种协同PSO 算法因为实际上采用的是局部学习策略,因此比基本的PSO 算法更易跳出局部极小点,达到较高的收敛精度。
5.3.4离散PSO 算法
基本的PSO 算法是在连续域中搜索一个数值函数的最小值的有力工具。文献
[10]对此作了扩展,提出了一种离散二进制版的PSO 算法。而文献[11]推广了这一工作,研究了离散版的PSO 算法,并将其应用于旅行商问题(TSP )的求解,取得了较好的结果。离散PSO 算法扩展了基本PSO 算法的应用领域,尤其是让人看到了在一类组合优化问题中的应用前景。
参考文献
李爱国,覃征,鲍复民,贺升平。粒子群优化算法。计算机工程与应用,2002,38(21): 1-3
回归与神经网络
回归和神经网络
分析目标
零售行业拥有大量消费者特征和行为数据, 通过对数据进行探索挖掘得到的 信息,可以帮助企业针对特定的客户进行营销,用最少的成本取得最佳的收益。 分类决策树模型是一种对实例进行分类的树形结构。 决策树学习算法包含特征选 择、决策树的生成与剪枝过程。开始时,构建根节点,选择最优特征,该特征有 几种值就分割为几个子集, 每个子集分别递归调用此方法, 返回节点, 返回的节 点就是上一层的子节点。直到数据集为空,或者数据集只有一维特征为止。 logistic 回归又称 logistic 回归分析, 是一种广义的线性回归分析模型, 常用于 数据挖掘, 疾病自动诊断, 经济预测等领域。 神经网络是一种模仿动物神经网络 行为特征, 进行分布式并行信息处理的算法数学模型, 这种网络依靠系统的复杂 程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。 本文旨在通过建立决策树模型、逻辑回归模型、神经网络模型对企业的 Organics 数据进行分析, 通过划分训练集和验证集判断模型拟合优劣, 最终选择最优模型 来得到购买 Organics 的消费者的特征,从而为企业提供精准营销的客户。
数据情况
1. 添加数据源
我们发现 AGEGRP1与 AGEGRP2与 Age 内容相似, 只是用不同形式表示年龄, 因此选择拒绝这两组变量;同时, Number of Organic Products Purchased代表购 买的有机产品的数量, 而我们分析的目的是对消费者是否购买有机产品进行预测, 因此该变量相关性较弱,可以拒绝;最后,我们将 Organics Purchased?设为目标 变量进行分析。
2. 数据集右键探索
从图中可以看到,该数据集共有 18个变量, 22223个观测。
从样本统计量中可以看到, 大部分变量缺失值都比较严重, 后面应该进行相 应的补缺处理。
上图显示了数据集的前面 15条数据。
从所有变量的频数统计图中可以看到, 除了已经拒绝的变量, 其余大部分呈 现正态分布,只有变量 BILL 和 LITME 变量呈现偏态分布,因此后期数据预处理 时应该对这两个变量进行转化处理。
3. 统计探索
从目标变量的频数分布图可以看到购买人数占比大概是 25%, 而不购买的人 数占比大概是 75%,说明我们的样本还是有意义的。
数据预处理
1. 数据分区
设置训练集比例 70%, 验证集比例 30%。 经过上次决策树实验得出 70%&30%比例较好,因此本次建模直接这样分区。
分区结果如上
2. 转换变量
根据以上数据探索分析,将 BILL 变量转换为对数,将 LTIME 变量转换为对数。
转换结果如上,将 BILL 和 LTIME 变量转换为对数。
3. 替换变量
分类变量 TV_REG明显有多个重复情况,但是用不同名称表示,因此我们将 部分变量值进行替换,将数据规约成较为简洁的结果。
4. 补缺
模型建立
所有模型的流程图如下:
模型一:默认回归 查看 -结果
从结果看, 默认回归模型选择的变量太多, 并且将 P 值较大的变量也选入了 模型中, 这种模型并不能很好地反映出现实情况, 因此我们将改进算法, 设置回 归属性参数,从而得出更好的回归模型。 模型二:逐步回归 查看 -结果
设 IMP_GENDER_F为 X 1, IMP_GENDER_M为 X 2, IMP_REP_AFFL为 X 3, IMP_REP_AGE为 X 4 则 logistic 方程如下:
()4
3
2
1
4
3
2
1
0537. 02513. 00.0450X -0.8743X 0858. 10537. 02513. 00.0450X -0.8743X 0858. 11X
X X
X e
e Y E -++--++-+=
模型三:自动神经 查看 -权重(最终)
神经网络图如下:
模型四:自动神经(4)
选择只用 Tanh 激活函数
由图中可以看到,模型选择了第 1步迭代的结果
模型五:神经网络
由图中可以看到,模型迭代了 18步,已经在现有的条件下满足停止条件。
由图中可以看到,模型选择了第 6步迭代的结果
模型六:神经网络(2)
在网络中设置隐藏单元数为 13, 在优化中设置最大迭代次数为 200(尝试过 几次,发现一共需要迭代 189次才能满足停止条件) ,并且将模型选择准则改为 “误分类率” 。
模型结果
由图中可以看到,模型迭代了 189步,已经在现有的条件下满足停止条件。 查看 -迭代图 -误分类率
由图中可以看到,模型选择了第 27步迭代的结果
查看 -模型 -权重(最终)
模型七:默认回归 -神经网络(3)
由图中可以看到,模型迭代了 17步,已经在现有的条件下满足停止条件。 查看 -迭代图 -误分类率
由图中可以看到,模型选择了第 1步迭代的结果
查看 -权重(最终)
模型八:默认回归 -自动神经(2)
由图中可以看到,模型选择了第 5步迭代的结果
模型九:逐步回归 -神经网络(4)
本模型的神经网络参数和前面神经网络(2)的设置保持一致 查看 -迭代图 -误分类率
由图中可以看到,模型选择了第 1步迭代的结果
查看 -权重
神经网络图如下:
模型十:逐步回归 -自动神经(3)
查看 -迭代图 -误分类率
由图中可以看到,模型选择了第 18步迭代的结果 查看 -权重
分析结果
1. 训练集和验证集的 ROC 曲线如下:
2. 拟合统计量如下
从拟合统计量中, 我们可以看到模型比较中的选择准则是验证数据集的误分 类率,从误分类率结果看,最后选中了神经网络(4) ,也就是在逐步回归后面再 加上一个神经网络模型,并且在网络中设置隐藏单元数为 13,在优化中设置最 大迭代次数为 200,模型选择准则改为“误分类率” 。对比自动神经,可以知道 在本数据集中,隐藏单元数越多误分类率月低,选择的准则为“误分类率”也会 相应地降低。
同时, 我们可以看到神经网络的效果普遍比回归效果好, 回归效果普遍比决 策树好。神经网络通过自学习不断修正误差,最终得到较好的效果。
结果讨论与建议
通过对十二个模型 (自动决策树、 优化决策树、 回归、 逐步回归, 自动神经、 神经网络、回归 +自动神经、回归加神经网络、逐步回归加自动神经、逐步回归 加神经网络) 的比较, 我们最终选择了逐步回归加神经网络模型。 先通过逐步回 归选择变量, 再通过神经网络优化参数。 接下来对每种类型的模型选择一个结果 较优的进行分析,最后对商家提供建议。
决策树模型中,我们最终选择 40%&60%进行数据分区,设置最大分支数为
3、评估测度为 ASE 的模型。
表 1模型二购买人群特征
AGE
AFFL GENDER <>
(7.5,34.5) F <>
(11.5,34.5) F,M, 缺失 (39.5,44.5)
(9.5,14.5) F >44.5
(18.5,34.5) ALL >44.5 (15.5,34.5) F
我们从图中可以看到购买人群女性居多,其中小于 39.5岁的女性,只要财 富等级大于 7.5就会购买有机产品, 39.5岁到 44.5岁之间的女性只要财富等级达 到 11.5就会购买有机产品, 大于 44.5岁的女性只要财富等级达到 15.5
就会购买
有机产品。 而小于 39.5岁的男性财富等级达到 11.5才会购买有机产品, 大于 44.5岁的男性财富等级达到 18.5岁才会购买有机产品。一些性别情况缺失以顾客购 买有机产品的条件与男性相同。性别为未知的则只有大于 44.5岁的人群,并且 财富值达到 18.5才会购买有机产品。
回归模型中, 与默认设置的模型相比较, 我们最终选择逐步回归模型, 并且 选择准则为“验证误分类率” 。
设 IMP_GENDER_F为 X 1, IMP_GENDER_M为 X 2, IMP_REP_AFFL为 X 3, IMP_REP_AGE为 X 4
则 logistic 方程如下:
()432143210537. 02513. 00.0450X -0.8743X 0858. 10537. 02513. 00.0450X -0.8743X 0858. 11X X X
X e e Y E -++--++-+=
可以看到性别为女对目标的影响最大,女性大部分都会选择购买有机产品; 性别为男对目标的影响呈相反方向, 但是影响程度较小, 部分男性不会选择购买 有机产品; 财富对目标的影响呈正相关, 说明财富越多的人群越会选择购买有机 产品, 但是相比性别对目标的影响力, 财富因素小很多; 年龄对目标的影响呈负 相关关系, 但是影响力极小, 说明年龄较大的人相对于年龄较小的人来说, 比较 不会选择购买有机产品。
神经网络模型中, 我们最终选择逐步回归加神经网络模型。 从结果中可以看 到,最终影响目标的变量有 AGE 、 AFFL 、 GENDERM 、 GENDERF 。后续预测顾客是 否会购买有机产品,只要获取顾客的年龄、收入、性别三个属性,就可以通过已 经建立好的神经网络进行预测该顾客是否会购买有机产品。
通过以上结果分析,我们建议企业:
第一, 数据需求。 企业要进行精准营销所需要获取的数据主要包括性别、 财 富和年龄, 三者的重要性依次降低,
所以如果只能获取前面变量的数据也可以通
过补缺后面变量进行预测, 效果不会太差, 因为性别变量对是否购买有机产品这 个目标的影响力太大。
第二:综合推荐。 成本允许的条件下, 可以大范围对一定年龄范围内的女性 顾客进行推荐。 大部分女性承担着家庭主妇的角色, 针对女性进行推荐效果更显 著。 同时, 随着国家整个经济环境的发展, 越来越多人倾向于花更多的钱来买一 个健康保证,因此财富等级对顾客是否购买的影响已经越来越小了。
第三:精准推荐。首先,有机产品的精准营销可以瞄准小于 39.5岁的年轻 女性顾客,特别是财富值达到一定等级的;同时,也可以针对大于 39.5岁的中 老年女性顾客进行推荐,这部分顾客的财富等级应该高于年轻女性顾客;然后, 在成本允许的情况下,可以针对一些财富值较高的男性顾客进行推荐。
发现与收获
通过本次作业, 我学会了通过 SAS 软件进行数据挖掘的基本过程, 并且从中 学到了某些重要的处理过程,接下来我会简单介绍下每个部分的体会:
1. 确定目标
目标的确定对后续的分析很重要, 明确的目标能够为数据收集以及后续建模 提供正确的方向。 本次作业中没有涉及到目标的确定, 但是经过简单的数据探索, 可以发现数据集中不仅有是否购买, 还有购买量两个变量可以作为目标。 假设企 业有较多的资本来进行该项业务的执行, 那么可以选择是否购买指标, 以覆盖到 更多的顾客群体, 让有可能购买有机产品的顾客都得到推荐信息; 相反, 如果企 业在该业务上的资金紧缺, 则可以选择以购买量作为目标进行分析, 最后进行精 准营销的顾客只选择那些购买量较大的顾客, 这样子能够让所有的推荐有更大的 概率获得顾客,提升了顾客购买产品收益占推荐成本的比例。
2. 数据收集
数据收集对挖掘起着至关重要的影响。 能够收集到的变量种类以及收集的数据质 量对后续分析起着很大的影响。我们看信息质量主要看信息的客观性、正确性、 完整性和及时性。 如果收集的数据能够满足这些特性, 那么相应地也能够提高分 析结果的准确性。 本次作业没有涉及到数据收集, 但是我们看到数据的缺失值严
重,变量名称不统一,数据分布不均匀,种种缺点在后续分析就体现出来,虽然 可以通过数据清理进行弥补,但是仍会导致结果准确性降低。
3. 数据探索
数据探索有几个任务:第一, 探索真个数据集目标变量可行性的占比, 如果比重 太低也就缺乏分析的意义; 第二, 探索变量频数分布, 看后续是否需要对变量进 行转换处理;第三,探索变量名称、含义、格式是否一致,不一致的需要通过变 量替换进行处理,减少歧义;第四,探索变量的缺失情况,对不同类型的变量缺 失应该通过不同方式进行补缺, 尽最大可能还原真实情况; 第五, 探索变量之间 是否具有相关性, 如果有多个变量存在相关关系, 应该采取拒绝, 以免产生多重 共线性。
4. 数据预处理
数据预处理有三大步骤:数据清理、数据集成、数据规约。在本次作业中, 主要体现在 SAS 模块操作中的转换变量、 替换、 补缺三个步骤上, 通过前面数据 探索看到的情况, 对数据进行预处理, 以期最小化数据质量不够优对结果带来的 影响。 数据预处理需要对数据的情况、 变量的含义深入了解, 才能够选择更好的 方法进行弥补。
5. 模型建立
本次作业主要以回归和神经网络模型为主, 包括上次决策树作业, 三个预测 模型做下来, 我们看到了不同种类模型的构建方式不同、 模型原理不同, 导致结 果的呈现方式不一致, 但是结果的大致含义是类似的。 而同一个模型由于参数设 置不同, 也会影响模型结果的质量。 综合本次作业, 我对三个预测模型进行简单 的总结和对比如下:
6. 模型优化
模型优化主要是通过模型参数设置来起到优化效果, 比如决策树中通过最大 分支数、 树的深度; 比如回归模型中通过设置变量选择方法或者选择准则; 比如 神经网络中通过设置不同的激活函数以及隐藏单元数来优化模型, 降低误分类率, 还有很多参数设置需要我们去探索, 通过不同参数设置能够得到不同的模型, 最 终对模型进行比较,能够得到较好结果的模型。
7. 结果与建议
通过上述三种预测模型得出的结果, 我们可以看到决策树模型结果直观简单, 能够清晰的看出分类过后哪些类别的人群购买有机产品的概率有多高, 但是简单 的以这个标准判断较为粗矿, 不能细化到每一个人, 无法进行精准营销。 而回归 模型得到的结果能够对每个人进行判断买或者不买有机产品的概率, 企业可以通 过设定一定的概率阈值来寻找愿意购买有机产品的顾客, 买的概率大于阈值的顾 客则属于企业需要进行营销的顾客, 因此这个阈值的设定也很关键, 可以通过实 践来得出最优阈值。 神经网络模型则是个黑匣子, 无法看出内在原理, 只能是输 入模型需要的顾客数据, 直接得到顾客是否购买的结果。 虽然该模型解释性较差, 但是我们依然可以看到模型比较之下, 神经网络模型的误分类率是最低的, 相应 的结果是最优的。
神经网络与数学建模
人工神经网络与数学建模
曾黄麟
随着人们从研究内容到研究方法经历的发展与变化,在对于高层次智能行为的研究中,大多数研究不仅集中于知识表示和符号推理,而是更加重视知识与大量观察和实验数据的处理、归纳、分类相联系,这就是数据挖掘。
数学建模就是从大量数据中利用某些方法,寻找该系统或事件的内在规律,建立该系统或事件的数据之间的联系,并用一种数学描述其输入与输出之间的关系,这种关系就是数学模型。
一个系统的内在联系是通过数据、图表、图像、图形、公式、方程、网络结构等形式来体现的,所以,在某种程度上可以说,数据、图表、图像、图形、公式、方程、网络结构等都是该系统的模型表达,这种表达就是相似系统的概念。因此,数学建模就是由一种系统的模型表达转换为系统的另一种模型表达。人工神经网络数学建模就是用人工神经网络的结构形式来代替实际物理系统模型。
1
人工神经网络是以工程技术手段模拟人脑神经系统的结构和功能为特征,通过大量的非线性并行处理器来模拟人脑中众多的神经元之间的突触行为,企图在一定程度上实现人脑形象思维、分布式记忆、自学习自组织的功能。
人工神经网络理论(ANN,artificial neural networks)的概念早在40年代就由美国心理学家 McCulloch 和数理逻辑学家Pitts提出了M-P模型。1949 年美国心理学家Hebb根据心理学中条件反射的机理,提出了神经元之间连接变化的规则,即Hebb规则。50年代Rosenblatt提出的感知器模型、60年代Widrow 提出的自适应线性神经网络,以及80年代Hopfield,、Rumelharth等人富有开创性的研究工作,有力地推动了人工神经网络研究的迅速发展。
大脑是由大量的神经细胞和神经元组成的,每个神经元可以当成是一个小的信息处理单元,这些神经元按照某种方式互相连接起来构成一个复杂的大脑神经网络。人工神经网络方法企图模拟人类的形象直觉思维,通过由大量的简单模拟神经元实现一种非线性网络,用神经网络本身结构表达输入与输出关联知识的隐函数编码,并通过学习或自适应使网络利用非线性映射的思想对信息能够并行处理。
2
人工神经网络从数据中挖掘知识的主要特点是:
1. 在信息处理机制上,它具有大规模并行模拟处理,网络全局作用, 信息分布存储,存储区和操作区合二为一等特点。
2. 神经网络可以通过训练、学习,对输入空间产生一个非线性映射; 也可以自适应地、 自组织地对输入数据产生聚类。
3. 神经网络具有较强的鲁棒性和容错能力,它不仅能处理不准确、不完整、不确定信息,而且能够克服网络本身的不精确性,甚至网络具有自身修复缺陷的能力。
首先让我们了解一下人的大脑的神经网络基本特性。
人工神经元基本特性模拟如图8.3所示:
xw11
wxvu22 ,
... wn
xn
图 1 人工神经元基本特性示意图
3
在人工神经网络中, 突触输入信息为矢量 = {, Xx1, ... ,}, 通过突触的联接强度 = {, , ... ,} Wxwwxwnn212的加权, 进行线性求和后, 通过非线性输入?输出函数得到输出
n
u,f(v),f(wx) ,ii,1i
其中输入?输出函数一般为S 型函数。
虚线框内代表一个神经元,在网络中我们常用一个神经元节点表示。
一般输入?输出S 型函数有下列几种形式:
(1) 线性函数: u,kv
,kv,1(2)对数函数: u,(1,e)
,kv1,eu,(3) 双曲正切函数: ,kv1,e
k这里是一个常量。
1v,c2(4)高斯函数: exp(())u,,,2
这里确定函数的中心,确定函数的宽度。 c,
1u,(5)柯西函数: v,c41,||a
这里确定函数的中心,确定函数的宽度。 ca
4
1,v,0,(6)符号函数: u,sgn(v),,,1,v,0,
1,v,0,(7)阶跃函数: u,,0,v,0,
线性函数常用于线性神经元网络;对数函数、双曲正切函数常用于多层或反馈连接非线性神经元网络;高斯函数、柯西函数常用于非线性径向基函数神经元网络;符号函数、阶跃函数是对数函数、双曲正切函数的极限情况,因此,利用它们可把连续神经网络变成为离散神经网络。
根据人脑神经元之间联接的多样性,模拟人脑神经网络的人工神经网络的联接也具有各式各样的结构,但它们大体可以分为两大类,即具有反馈互联的神经网络和无反馈的前向互联神经网络。
1) 反馈互联网络 (
这种网络的神经元与神经元之间通过广泛联接,传递、反馈交换信息,网络结构十分复杂,由于网络由输出端反馈到输入端,所以动态特性丰富,存在网络的全局稳定性问题。
在广泛互联反馈网络中,有把输入信号分别输入到每一个神经元,每一个神经元的输出反馈到其它所有神经元的输入端,这种结构是全互联反馈网络,典型的代表网络就是
[40] Hopfield 神经网络(HNN,Hopfield neural network)。
5
如图1所示:
xu11
www131n12
xu22
www232n21
xu33
www31323n
... ...
xunn
wwwn1n2n3
图2 全互联反馈网络
由于该网络是全互联反馈网络,存在输出反馈,需要考虑网络的全局稳定性问题。对于非线性网络,需要定义一个
EE动力系统的Lyapunov函数,即能量函数。若能量函数是率减的且为有限值,则网络是全局稳定的。
f(.)i.jw,w定理1: 若单调递增且有界,对于所有的,当时,ijji
E那么上述网络稳定收敛至其能量函数的极小值。且稳定平
6
衡点可由下式求出:
nxii,1,2,?,n ,,wu,I,0 ,ijjiRj,1i
Hopfield全互联反馈网络的综合需要考虑下列因素:
f(.)1) 输入-输出函数只要保证单调递增且有界;联接
权满足的要求。 w,wijji
2) 如果该网络设计来实现优化计算,就需要定义优化
计算的目标函数与该网络的能量函数一致,从而确定
网络的联接权w,w;当设计的网络运行到能量函数最ijji
小时,系统求出优化解。
网络联接权的调整方法:
n11,,w1) 上述电路网络的联接权可通过调整,r,ijiRr,1jii
来满足w,w的要求。 ijji
2) 对于无导师学习,即没有训练样本,可按 Hebb 学
w(t,1),w(t),,w,w,,uuw习规则,即按,对进行调ijijijijijij
整。
w对于有导师学习,即有训练样本,可按最陡下降法对进ij
[51]行调整 ,即误差反向传输在线学习算法。
7
(2) 前向互联网络
多层感知器这种网络的神经元与神经元之间通过前向联接的,是一种典型的前馈式多层神经网络,每一层有若干个神经元,每一层内的神经元不互相联接,每一个神经元的输出联到下一层的输入。即把输入信号分别送到第一层的每一个输入节点,第一层的每一个节点的输出加权传送到第二层的神经元的输入端,从第二层开始称为隐元层,隐元层的输出通过加权送到下一层的神经元,等等,这种结构是多层网络相联接的,网络没有输出端反馈到输入端的带来的全局稳定性问题。从隐元层到输出层的神经元一般都采用非线性的输入-输出函数,由于多次非线性函数作用,因此,整个网络能够实现任意非线性映射。
同样,这种网络在学习过程中,首先定义了一组输出要求的模式(一般是用一个输出神经元输出为1,其它输出为0来定义一种模式,这种模式也叫导师),根据输出层的神经元的输出与一个要求的输出之间的误差,确定对隐元层的联接权的修改。通过这种有导师的误差反向传输学习算法,针对整个训练集(每一个输入对应有输出要求的模式,当然可以不同的输入对应相同的结果,即满足前面我们曾在本书的第一部分里讲过的输入数据的协调性),不断自动地调整隐元层的神经元的联接权,通过反复修改联接权,直到
8
整个网络达到要求的响应为止。这里输入端是个神经元,l输出端是个神经元,从输入到输出有多层(下图为4层)m
互联,如图3所示.
X UWUW1122
UWxU3314
xu241
...
u4m
... ... ...
xl
O lmn
图 3 感知器多层互联网络
多层感知器误差反向传输学习算法归纳如下: 1) 以一个小的随机数(一般选取(,0.5~0.5/,是连接mm
到该神经元的突触数目)初始化各神经元的突触联接强度
s()。 wji
2) 从训练集中随机选取一个学习的样本作为网络的输
入,并根据现有的神经元的突触联接强度计算各层神经元
9
(s)(s)p,1的现行输出(第一个样本则)。 u,f(v)jpjp
3) 根据该学习的样本和现行网络的输出,分别对连接到
(s),(t)隐元层、输出层的神经元计算(第一轮则)。 t,1j
4) 根据连接到隐元层、输出层的神经元的突触联接权修
s()j改,w,则第层第神经元的输出加权到第层的第神s,1isji
sss()()()经元的输入联接强度的更新为,,w(t)w(t),w(t,1)jijiji
(第一轮则)。 t,1
5) 从训练集中随机选取下一个学习的样本作为网络的输
入,并重复上述学习过程,这样一轮又一轮不断自动地调
整到隐元层、输出层的神经元的联接权,通过反复修改联
接权,直到整个网络达到所有的要求的响应为止。
利用人工神经网络来建立数学建模,就是用大量观察和实验数据,通过训练,确定人工神经网络中的神经元之间的联结权,最后形成的人工神经网络结构形式来代替实际物理系统模型。
因此,要设计一个实际应用的人工神经网络,首先是要考虑用什么结构形式,因为结构形式确定后,神经元的输入-输出函数特性是容易选择的,其次就是要考虑用什么训练学习方法获得神经元之间的联结权,因为神经元中信息的存储主要取决于神经元的突触相互之间的联接方式和联接强度,
10
不同的信息处理目的将通过不同的联接方式和联接强度来表达。最后就是神经网络的稳定性问题,对于前向式网络,由于没有输出反馈,一般可以不考虑网络的全局稳定性问题;如果用反馈式互联网络,由于存在输出反馈,一般需要考虑网络的全局稳定性问题。
一般利用人工神经网络来建立数学建模,就是用MATLAB工具箱中的人工神经网络工具箱,首先选取一种人工神经网络形式,例如,多层感知器,确定使用几层网络,确定每一层网络的神经元数目,根据问题确定该网络得输入和输出神经元数目,确定训练学习方法,输入实验数据,一般随机选取一半实验数据作为训练学习,训练学习完成时,网络结构不再随输入数据变化,然后将一半实验数据作为测试数据,来证明该网络仿真实际物理系统的正确性。
在利用人工神经网络来建立数学建模时,要写清楚人工神经网络数学建模就是用人工神经网络的结构形式来代替实际物理系统模型原理,选取一种什么人工神经网络形式,神经元的输入-输出函数特性是什么,每一层网络的神经元数目,根据问题确定该网络得输入和输出神经元数目,训练学习方法什么,训练学习完成后,网络测试的结果如何,最后分析人工神经网络来建立数学建模的正确性。
11
12
matlab与神经网络
Matlab辅助神经网络的设计
目 录
第一节 神经网络基本理论
一、人工神经网络概论
二、生物神经元模型
三、Matlab的神经网络工具包
第二节 感知器
一、感知器神经元模型
二、感知器的网络结构
三、感知器神经网络的学习规则
四、感知器神经网络的训练
五、重要的感知器神经网络函数的使用方法
六、感知器神经网络应用举例
第三节 线性神经网络
一、线性神经元模型
二、线性神经网络结构
三、线性神经学习网络的学习规则
四、线性神经网络训练
五、重要线性神经网络函数的使用方法
六、线性神经网络的应用举例
第四节 BP网络
一、BP网络的网络结构
二、BP网络学习规则
三、BP网络的训练
四、重要BP神经网络函数的使用方法
1
五、BP网络的应用举例
第五节 径向基函数网络
一、径向基函数神经网络结构
二、径向基函数的学习算法
三、重要径向基函数的函数使用方法
第六节 反馈网络
一、Hopfield网络的结构与算法
二、Hopfield网络运行规则
三、重要的反馈网络函数
四、重要的自组织网络函数
五、反馈网络应用举例
第七节 自组织网络
一、自组织特征映射的网络结构
二、自组织特征映射网络的学习
三、自组织特征映射网络的训练
四、重要的自组织网络函数
五、自组织网络应用举例
2
第一节 神经网络基本理论
一、人工神经网络概论
近代神经生理学和神经解剖学的研究结果表明,人脑是由约一千多亿个神经元(大脑皮层约140多亿,小脑皮层约1000多亿)交织在一起的、极其复杂的网状结构,能完成智能、思维、情绪等高级精神活动,无论是脑科学还是智能科学的发展都促使人们对人脑(神经网络)的模拟展开了大量的工作,从而产生了人工神经网络这个全新的研究领域。
人工神经网络(ANNS)常常简称为神经网络(NNS),是以计算机网络系统模拟生物神经网络的智能计算系统, 是对人脑或自然神经网络的若干基本特性的抽象和模拟。网络上的每个结点相当于一个神经元,可以记忆(存储)、处理一定的信息,并与其它结点并行工作。
神经网络的研究最早要追述到40年代心理学家Mcculloch和数学家Pitts合作提出的兴奋与抑制型神经元模型和Hebb提出的神经元连接强度的修改规则,其成果至今仍是许多神经网络模型研究的基础。50~60年代的代表性工作主要有Rosenblatt的感知器模型、Widrow的自适应网络元件Adaline。然而在1969年Minsky和Papert合作发表的Perceptron一书中阐述了一种消极悲观的论点,在当时产生了极大的消极影响,加之数字计算机正处于全盛时期并在人工智能领域取得显著成就,这导致了70年代人工神经网络的研究处于空前的低潮阶段。80年代以后,传统的Von Neumann数字计算机在模拟视听觉的人工智能方面遇到了物理上不可逾越的障碍。与此同时Rumelhart、Mcclelland和Hopfield等人在神经网络领域取得了突破性进展,神经网络的热潮再次掀起。目前较为流行的研究工作主要有:前馈网络模型、反馈网络模型、自组织网络模型等方面的理论。人工神经网络是在现代神经科学的基础上提出来的。它虽然反映了人脑功能的基本特征,但远不是自然神经网络的逼真描写,而只是它的某种简化抽象和模拟。
求解一个问题是向人工神网络的某些结点输入信息,各结点处理后向其它结点输出,其它结点接受并处理后再输出,直到整个神经网工作完毕,输出最后结果。如同生物的神经网络,并非所有神经元每次都一样地工作。如
3
视、听、摸、想不同的事件(输入不同),各神经元参与工作的程度不同。当有声音时,处理声音的听觉神经元就要全力工作,视觉、触觉神经元基本不工作,主管思维的神经元部分参与工作;阅读时,听觉神经元基本不工作。在人工神经网络中以加权值控制结点参与工作的程度。正权值相当于神经元突触受到刺激而兴奋,负权值相当于受到抑制而使神经元麻痹直到完全不工作。
如果通过一个样板问题“教会”人工神经网络处理这个问题,即通过“学习”而使各结点的加权值得到肯定,那么,这一类的问题它都可以解。好的学习算法会使它不断积累知识,根据不同的问题自动调整一组加权值,使它具有良好的自适应性。此外,它本来就是一部分结点参与工作。当某结点出故障时,它就让功能相近的其它结点顶替有故障结点参与工作,使系统不致中断。所以,它有很强的容错能力。
人工神经网络通过样板的“学习和培训”,可记忆客观事物在空间、时间方面比较复杂的关系,适合于解决各类预测、分类、评估匹配、识别等问题。例如,将人工神经网络上的各个结点模拟各地气象站,根据某一时刻的采样参数(压强、湿度、风速、温度),同时计算后将结果输出到下一个气象站,则可模拟出未来气候参数的变化,作出准确预报。即使有突变参数(如风暴,寒流)也能正确计算。所以,人工神经网络在经济分析、市场预测、金融趋势、化工最优过程、航空航天器的飞行控制、医学、环境保护等领域都有应用的前景。
人工神经网络的特点和优越性使它近年来引起人们的极大关注,主要表现在三个方面:
第一,具有自学习功能。例如实现图像识别时,只需把许多不同的图像样板和对应的应识别的结果输入人工神经网络,网络就会通过自学习功能,慢慢学会识别类似的图像。自学习功能对于预测有特别重要的意义。人工神经网络计算机将为人类提供经济预测、市场预测、效益预测,其前途是很远大的。
第二,具有联想存储功能。人的大脑是具有联想功能的。如果有人和你提起你幼年的同学张某某,你就会联想起张某某的许多事情。用人工神经网4
络的反馈网络就可以实现这种联想。
第三,具有高速寻找最优解的能力。寻找一个复杂问题的最优解,往往需要很大的计算量,利用一个针对某问题而设计的人工神经网络,发挥计算机的高速运算能力,可能很快找到最优解。
人工神经网络是未来微电子技术应用的新领域,智能计算机的构成就是作为主机的冯·诺依曼计算机与作为智能外围机的人工神经网络的结合。
二、生物神经元模型
神经元是脑组织的基本单元,其结构如图1所示,神经元由三部分构成:细胞体,树突和轴突;每一部分虽具有各自的功能,但相互之间是互补的。
树突是细胞的输入端,通过细胞体间联结的节点“突触”接受四周细胞传出的神经冲动;轴突相当于细胞的输出端,其端部的众多神经未梢为信号的输出端子,用于传出神经冲动。
神经元具有兴奋和抑制的两种工作状态。当传入的神经冲动,使细胞膜电位升高到阀值(约为40mV)时,细胞进入兴奋状态,产生神经冲动,由轴突输出。相反,若传入的神经冲动,使细胞膜电位下降到低于阀值时,细胞进入抑制状态,没有神经冲动输出。
图1 生物神经元结构
二、人工神经元模型
人工神经元模型是以大脑神经细胞的活动规律为原理的,反映了大脑神 5
经细胞的某些基本特征,但不是也不可能是人脑细胞的真实再现,从数学的角度而言,它是对人脑细胞的高度抽象和简化的结构模型。虽然人工神经网络有许多种类型,但其基本单元—人工神经元是基本相同的。如图2是一个典型的人工神经元模型:
图2 人工神经元模型
神经元模型相当于一个多输入单输出的非线性阀值元件,X1,X2,?,Xn表示神经元的n个输入,W1,W2,?,Wn表示神经元之间的连接强度,称为连接权,?WiXi称为神经元的激活值,O表示这个神经元的输出,每个神经元有一个阀值θ,如果神经元输入信号的加权和超过θ,神经元就处于兴奋状态。以数学表达式描述为:
O=f(?WiXi-θ)
三、Matlab的神经网络工具包
由于神经网络自身的特点,计算中经常涉及到大量的训练样本数据、复杂的运算操作、繁琐的程序设计等问题。对此,具有强大功能的数学软件Matlab,为我们提供了神经网络工具箱Neural Netwoks Toolbox (NNT)及丰富的函数命令。NNT是进行神经网络训练和仿真的优良平台。常用来对网络进行初始化、仿真、设计、调整、优化。集成化的处理方式、友好的界面、形象的演示过程、简易的操作,为神经网络应用者节约了大量的不必要的编程时间,使得非专业人士应用神经网络成为了可能。
Matlab是Mathworks公司开发的工程计算软件包,其中有一个神经网络工具包,可以用来方便地创建各种神经网络,对数据进行学习和模拟输出。
Matlab中普遍采用的是物理和工程学中强有力的矩阵描述的语言,简洁优美。
6
第二节 感知器
感知器(Pereceptron)是一种特殊的神经网络模型,是由美国心理学家F.Rosenblatt于1958年提出的,一层为输入层,另一层具有计算单元,感知器特别适合于简单的模式分类问题,也可用于基于模式分类的学习控制和多模态控制中。
一、感知器神经元模型
感知器神经元通过对权值的训练,可以使感知器神经元的输出能代表对输入模式进行的分类,图2.1为感知器神经元模型。
图2.1 感知器神经元模型
感知器神经元的每一个输入都对应于一个合适的权值,所有的输入与其对应权值的加权和作为阀值函数的输入。由于阀值函数的引入,从而使得感知器可以将输入向量分为两个区域,通常阀函数采用双极阶跃函数,如:
?1,x?0f(x)?? (2.1)
?0,x?0而感知器神经元模型的实际输出为
?R?o?f??wixi?b? (2.2) ?i??1?
其中b为阀值
二、感知器的网络结构
图2.2所描述的是一个简单的感知器网络结构,输入层有R个输入,Q个输出,通过权值wij与s个感知器神经元连接组成的感知器神经网络。
7
P
1
S×1 图2.2 感知器神经网络结构
根据网络结构,可以写出感知器处理单元对其输入的加权和操作,即:
R
ni??w
j?1ijpj (2.3)
而其输出ai为
ai=f (ni+bi) (2.4)
由式2.1易知
?1ai???0ni?bi?0ni?bi?0 (2.5)
则当输入ni+bi大于等于0,即有ni≥-bi时,感知器的输出为1;否则输出为0。
上面所述的单层感知器神经网络是不可能解决线性不可分的输入向量分类问题,也不能推广到一般的前向网络中去。为解决这一问题,我们可以设计多层感知器神经网络以实现任意形状的划分。
图2.3描述了一个双层感知器神经网络。其工作方式与单层感知器网络一样,只不过是增加了一层而已,具体的内容这里不做讨论。
1 P 图2.3 感知器神经网络结构
三、感知器神经网络的学习规则
感知器的学习规则主要是通过调整网络层的权值和阀值以便能够地网络的输入向量进行正确的分类。
8
如图2.2所示的输入向量P、输出和量a和目标向量为t的感知器神经网络,感知器的学习规则是根据以下输出矢量a可能出现的几种情况未进行参与调整的:
1)如果第i个神经元的输出是正确的,即有ai=t1,则与第i个神经元联接的权值和阀值保持不变。
2)如果第i个神经元的输出是不正确,应该有两种情况。
i)实际输出为0,而理想输出为1,即有ai=0,而ti=1,则所有的输入j对权值和阀值进行调整,修正值Δw1j=pj,Δbj=1。
ii)实际输出为1,而期望输出为0,即有ai=1,而ti=0,则对所有的输入j进行权值和阀值调整,Δw1j=-pj,Δbi=-1。
基于感知器误差e=t-a,感知器学习规则可望写为:
Δw1j=ei·pj
可以证明当前输入样本来自线性可分的模式时,上述学习算法在有限步同收敛,这时所得的权值能对所有样本正确分类,这一结论被称为感知器收敛定理。
四、感知器神经网络的训练
要使前向神经网络模型实现某种功能,必须对它进行训练,让它逐步学会要做的事情,并把所学到的知识记忆在网络的权值中。感知器神经网络的训练是采用由一组样本组成的集合来进行。在训练期间,将这些样本重复输入,通过调整权值使感知器的输出达到所要求的理想输出。感知器的训练主要是反复对感知器神经网络进行仿真和学习,最终得到最优的网络阀值和权值。
我们可以用以下方法训练网络:
1) 确定我们所解决的问题的输入向量P、目标向量t,并确定各向量的维数,以及网络结构大小、神经元数目。假定我们采用图2.2的网络结构。
2)初始化:权值向量w和阀值向量b分别赋予[-1,+1]之间的随机值,并且给出训练的最大次数。
3)根据输入向量P、最新权值向量w和阀值向量b,计算网络输出向量a。
9
4)检查感知器输出向量与目标向量是否一致,或者是否达到了最大的训练次数,如果是则结束训练,否则转入(5)。
5)根据感知器学习规则调查权向量,并返回3)。
五、重要的感知器神经网络函数的使用方法
对于感知器的初始化、训练、仿真,在MATLABP神经网络工具箱中分别提供了init( ), trainp( )和sim( )函数。
1.初始化函数init( )
感知器初始化函数init( )可得到R个输入,S个神经元数的感知器层的权值和阀值,其调用格式为:
[w,b]=init(R,S)
另外,也可以利用输入向量P和目标向量t来初始化。
[w,b]=init(p,t)
在介绍trainp( )函数前,让我们先介绍一下训练的控制参数tp。
tp=[disp_freq max_epoch]
其中disp_freq指定两次显示间训练次数,缺省值为1;map_epoch指定训练的最大次数,缺省值为100。
调用训练函数trainp( )函数后又得到新的权值矩阵,阀值向量以及误差te。trainp( )函数所需要的输入变量为:输入向量P、目标向量t以及网络的初始权值和阀值,训练的控制参数tp。调用格式为:
[w,b,te]=trainp(w,b,p,t,tp)
由于函数trainp( )并不能保证感知器网络所得到的网络权值和阀值达到要求。因此,在训练完后,要用下列验证语句验证一下。
a=sim(p, w, b);
if all(a= =t),disp( ′It works!′),end
假如网络不能成功运行,就可以继续运用trainp( )函数对网络进行训练。经足够的训练后,网络仍达不到要求,那么就应当认真分析一下,感知器网络是否适合于这个问题。
3.仿真函数sim( )
sim( )函数主要用于计算网络输出。它的调用比较简单。
10
a=sim(p,w,b)
六、感知器神经网络应用举例
为了便于消化与理解感知器神经网络的四只问题,下面将给出一个具体的问题进行分析,问题的描述如下:
两种蠓虫Af和Apf已由生物学家W.L.Grogan与w. w. Wirth(1981)根据它们触角长度和翼长中以区分。见表2.1中9Af蠓和6只Apf蠓的数据。根据给出的触角长度和翼长可识别出一只标本是Af还是Apf。
1.给定一只Af或者Apf族的蒙,你如何正确地区分它属于哪一族? 2.将你的方法用于触角长和翼中分别为(1.24,1.80)、(1.28,1.84)、(1.40,2.04)的三个标本
表2.1
输入向量为:
p=[1.24 1.36 1.38 1.378 1.38 1.40 1.48 1.54 1.56 1.14 1.18 1.20 1.26 1.28 1.30;1.72 1.74 1.64 1.82 1.90 1.70 1.70 1.82 2.08 1.78 1.96 1.86 2.00 2.00 1.96 ]
目标向量为:
t=[1 1 1 1 1 1 1 1 1 0 0 0 0 0 0] 图形显示,目标值1对应的用“+”、目标值0对应的用“o来表示:
plotpv(p,t)
为解决该问题,利用函数newp构造输入量在[0,2.5]之间的感知器神经网络模型:
net=newp([0 2.5;0 2.5],1) 初始化网络: net=init(net)
11
利用函数adapt调整网络的权值和阀值,直到误差为0时训练结束: [net, y, e]=adapt(net, p, t)
训练结束后可得如图2.5的分类方式,可见感知器网络将样本正确地分成两类:
图2.5 网络训练结果
感知器网络训练结束后,可以利用函数sim进行仿真,解决实际的分类问题:
p1=[1.24;1.80] a1=sim(net,p1) p2=[1.28;1.84] a2=sim(net,p2) p3=[1.40;2.04] a3=sim(net,p3) 网络仿真结果为: a1=0 a2=0 a3=0
12
第三节 线性神经网络
线性神经网络是最简单的一种神经元网络,由一个或多个线性神经元构成。1959年,美国工程师B.widrow和M.Hoft提出自适应线性元件(Adaptive linear element,简称Adaline)是线性神经网络的最早典型代表。它是感知器的变化形式,尤其在修正权矢量的方法上进行了改进,不仅提高了训练收敛速度,而且提高了训练精度。线性神经网络与感知器神经网络的主要不同之处在于其每个神经元的传递函数为线性函数,它允许输出任意值,而不是象感知器中只能输出0或1。此外,线性神经网络一般采用Widrow-Hoff(简称W-H)学习规则或者最小场方差(Least mean Square,简称LMS)规则来调整网络的权值和阀值。
线性神经网络的主要用途是线性逼近一个函数表达式,具有联想功能。另外,它还适用于信号处理滤波、预测、模式识别和控制等方面。
一、线性神经元模型
线性神经元可以训练学习一个与之对应的输入/输出函数关系,或线性逼近任意一个非线性函数,但它不能产生任何非线性的计算特性。
图3.1描述了一个具有R个输入的由纯线性函数组成的线性神经元。
图3.1 线性神经元模型
由于线性神经网络中神经元的传递函数为线性函数,其输入与输出之间是简单的比例关系:
a=g(w*p,b)
1
13
其中函数g(x)为线性函数。
二、线性神经网络结构
如图3.2描述了一个由S个神经元相并联形成一层网络,这种网络也称为Madaline网络。
W-H学习规则只能训练单层的线性神经网络,但这并不是什么严重问题。因为对线性神经网络而言,完全可以设计出一个性能完全相当的单层线性神经网络。
P
1 S×1
图3.2 线性神经元网络
三、线性神经学习网络的学习规则
前面我们提到过,线性神经网络采用W-H学习规则。W-H学习规则是Widrow是Hoft提出的用来求得权值和阀值的修正值的学习规则。
首先要定义一个线性网络的输出误差函数:
E(w,b)=
12
(t―a)=
2
12
(t―w*p) 3.1
2
由式3.1可看出,线性网络具有抛物线型误差函数所形成的误差表面。所以只有一个误差最小值。通过W-H学习规则来计算权值和偏差的变化,并使网络的误差平方和最小化,总能够训练一个网络的误差趋于最小值。这可通过沿着相对于误差平方和最速下降方向连续调整网络的权值和阀值来实现。根据梯度下降法,权矢量的修正值正比于当前位置上E(w,b)的梯度,对于第i输出节点为:
?wij???
?E?wij
??(ti?ai)pj 3.2
或表示为:
14
?wij???ipj 3.3
?bi???i 3.4
这里δi定义为第i个输出节点的误差:
δi=ti―ai 3.5
式3.3称为W-H学习规则。W-H学习规则的权值变化量正比于网络的输出误差及网络的输入向量。它不需求导数,所以算法简单,又具有收敛速度快和精度高的优点。
式3.3中的?称为学习率,学习率的选取可以适当防止学习过程中产生振荡,提高收敛速度和精度。
四、线性神经网络训练
首先给线性神经网络提供输入向量P,计算线性网络层的输出向量a,并求得误差e=t―a;
然后比较输出的误差平方和是否小于期望的误差平方和,如果是,则停止训练;否则,采用W-H规则调整权值和阀值,反复进行。
如果经过训练网络不能达到期望目标,可以继续对网络进行训练。经过足够的训练后,网络还是达不到要求。那么就仔细地分析一下, 所要解决的问题,是否适合于线性神经网络。
五、重要线性神经网络函数的使用方法
在MATLAB神经网络工具箱中提供了基于线性神经网络的初始化函数initlin( )、设计函数solvelin( )、仿真函数simulin( )以及训练函数trainwh和adaptwh。下面我们将分别介绍多种函数的使用方法。
1.初始化函数initlin( )
函数initlin( )对线性神经网络初始化时,将权值和阀值取为绝对值很小的数。其使用格式
[w,b]=initlin(R,S)
R为输入数,S为神经元数。
另外,R和S也可用输入向量P和目标向量t来代替,即 [w,b]=initlin(p,t) 2.设计函数solvelin( )
15
与大多数其它神经网络不同,只要已知其输入向量P和目标向量t,就可以直接设计出线性神经网络使得线性神经网络的权值矩阵误差最小。其调用命令如下:
[w,b]=solve lin(p,t); 3.仿真函数simulin( )
函数simulin( )可得到线性网络层的输出 a=simulin(p,w,b)
其中a为输出向量,b为阀值向量 4.训练函数trainwh 和adaptwh( )
线性神经网络的训练函数有两种:trainwh( )和adaptwh( )。其中函数trainwh可以对线性神经网络进行离线训练;而函数adaptwh( ) 可以对线性神经网络进行在线自适应训练。
利用trainwh( )函数可以得到网络的权矩阵w,阀值向量b,实际训练次数te 以及训练过程中网络的误差平方和lr。
[w,b,te,lr]=trainwh(w,b,p,t,tp) 输入变量中训练参数tp为:
·tp(1)指定两次更新显示间的训练次数,其缺省值为25; ·tp(2)指定训练的最大次数,其缺省值为100; ·tp(3)指定误差平方和指标,其缺省值为0.02;
·tp(4)指定学习速率,其缺省值可由maxlinlr( )函数(此函数主要用于计算采用W-H规则训练线性网络的最大的稳定的分辨率)得到。
而利用函数adaptwh( )可以得到网络的输出a、误差e、权值矩阵w和阀值向量b。
[a,e,w,b]=adaptwh(w,b,p,t,lr)
输入变量lr为学习速率,学习速率lr 为可选参数,其缺省值为1.0。 另外,函数maxlinlr( )的调用格式为: lr=maxlinlr(p);
六、线性神经网络的应用举例
为了理解线性神经网络的理论及其应用问题,下面给出一个实际问题进
16
行分析,设计一个线性神经网络,用于信号仿真及信号预测。
首先输入信号样本为: time=1:0.0025:5; p=sin(sin(time)*time*10); 目标信号为: t=p*2+2;
图形显示样本信号的规律为: plot(time, p, time, t, ’---’) title(‘Input and Target Signals’) xlabel(‘Time’)
ylabel(‘Input__ Target__’)
图3.3 样本信号
利用输入样本信号和理想输出进行线性神经网络初始化: [w,b]=initlin(p,t)
然后利用函数adaptwh对构造的网络进行训练, lr=0.01; [a, e, w, b]=adaptwh(w, b, p, t, lr) 其中lr为学习率,a为网络的输出,e为误差。 仿真结果与目标信号对比分析: plot(time, a, time, t, ‘--’) title(‘Output and Target Signals’)
17
xlabel(‘Time’); ylabel(‘Output__ Target__’)
图3.4 仿真结果与目标信号对比分析
误差分析: plot(time,e)
hold on; plot([min(time) max(time)],[0 0],':r') xlabel('Time'); ylabel('Error')
图3.5 误差分析
18
第四节 BP网络
感知器神经网络模型和线性神经网络模型虽然对人工神经网络的发展起了很大的作用,它们的出现也曾掀起了人们研究神经网络的热潮。但它们有许多不足之处。人们也曾因此失去了对神经网络研究的信心,但rumelhart、mcclellard和他们的同事洞悉到网络信息处理的重要性,并致力于研究并行分布信息处理方法,探索人类认知的微结构,于1985年发展了BP网络的学习算法。从而给人工神经网络增添了活力,使其得以全面迅速地恢复发展起来。
BP网络是一种多层前馈神经网络,其神经元的激励函数为S型函数,因此输出量为0到1之间的连续量,它可以实现从输入到输出的任意的非线性映射。由于其权值的调整是利用实际输出与期望输出之差,对网络的各层连接权由后向前逐层进行校正的计算方法,故而称为反向传播(Back-Propogation)学习算法,简称为BP算法。BP算法主要是利用输入、输出样本集进行相应训练,使网络达到给定的输入输出映射函数关系。算法常分为两个阶段:第一阶段(正向计算过程)由样本选取信息从输入层经隐含层逐层计算各单元的输出值;第二阶段(误差反向传播过程)由输出层计算误差并逐层向前算出隐含层各单元的误差,并以此修正前一层权值。BP网络主要用于函数逼近、模式识别、分类以及数据压缩等方面。
一、BP网络的网络结构
BP网络通常至少有一个隐含层,如图4.1所示的是一个具有R个输入
1 P 图4.1 具有一个隐含层的BP网络结构
感知器与线性神经元的主要差别在于激励函数上:前者是二值型的,而
后者是线性的。BP网络除了在多层网络上与已介绍过的模型有不同外,其
19
主要差别也表现在激励函数上。
图4.2所示的两种S型激励函数的图形,可以看到f(· )是连续可微的单调递增函数,这种激励函数的输出特性比较软,其输出状态的取值范围为[0,1]或者[-1,+1],其硬度可以由参数λ来调节。函数的输入输出关系表达式如下所示:
双极型的S型激励函数:f(net)?
2
1?exp(??net)
1
1?exp(??net)
, f(net)∈(-1,1)
单极型的S型激励函数:f(net)?, f(net)∈(0,1)
图4.2 sigmoid型函数图形
对于多层网络,这种激励函数所划分的区域不再是线性划分,而是由一个非线性的超平面组成的区域。
因为S型函数具有非线性的大系数功能。它可以把输入从负无穷到正无穷大的信号变换成-1到+1之间输出,所以采用S型函数可以实现从输入到输出的非线性映射。
二、BP网络学习规则
BP网络最为核心的部分便是网络的学习规则。用BP算法训练网络时有两种方式:一种是每输入一样本修改一次权值;另一种是批处理方式,即使组成一个训练周期的全部样本都依次输入后计算总的平均误差。这里我们主要探讨的是后一种方式。
20
下面我们给出两层网络结构示意简图4.3,并以此探讨BP算法。 BP网络的学习过程主要由以下四部分组成: 1)输入样本顺传播
输入样本传播也就是样本由输入层经中间层向输出层传播计算。这一过程主要是
输入样本求出它所对应的实际输出。
① 隐含层中第i个神经元的输出为
a1i
?R?
??f1?w1ijpj?b1i????j?1?
i?1,2,?,s1 (4.1)
② 输出层中第k个神经元的输出为:
a2k
?S1
?f2???w2kia1i?b2k
?i?1
??,??
i?1,2,?s2 (4.2)
其中f1(·), f2 (·)分别为隐含层的激励函数。 2)输出误差逆传播
在第一步的样本顺传播计算中我们得到了网络的实际输出值,当这些实际的输出值与期望输出值不一样时,或者说其误差大于所限定的数值时,就要对网络进行校正。
首先,定义误差函数
E(w,b)=
其次,给出权值的变化 ① 输出层的权值变化
从第i个输入到第k个输出的权值为:
?w2ki???
?E?w2ki
????ki?a1i (4.4)
1
s2
?2
(tk?a2k) (4.3)
2
k?1
其中:
?ki?ekf2 (4.5)
ek?lk?a2k (4.6)
'
② 隐含层的权值变化
21
从第j个输入到第i个输出的权值为: ?wij???
?E?w1ij
????ij?pj
0???1 (η为学习系数)
(4.7)
其中:
'
?ij?ei?f1 (4.8)
s2
ei?
?
k?1
?ki?w2ki (4.9)
由此可以看出:①调整是与误差成正比,即误差越大调整的幅度就越大。②调整量与输入值大小成比例,在这次学习过程中就显得越活跃,所以与其相连的权值的调整幅度就应该越大,③调整是与学习系数成正比。通常学习系数在0.1~0.8之间,为使整个学习过程加快,又不会引起振荡,可采用变学习率的方法,即在学习初期取较大的学习系数随着学习过程的进行逐渐减小其值。
最后,将输出误差由输出层经中间层传向输入层,逐层进行校正。 3)循环记忆训练
为使网络的输出误差尽可能的小,对于BP网络输入的每一组训练样本,一般要经过数百次甚至上万次的反复循环记忆训练,才能使网络记住这一样本模式。
这种循环记忆训练实际上就是反复重复上面介绍的输入模式正向传播和输出误差逆传播过程。
4)学习结束的检验
当每次循环记忆结束后,都要进行学习是否结束的检验。检验的目的主要是检查输出误差是否已经符合要求。如果小到了允许的程度,就可以结束整个学习过程,否则还要进行循环训练。
三、BP网络的训练
对BP网络进行训练时,首先要提供一组训练样本,其中每个样本由输入样本和输出对组成。当网络的所有实际输出与其理想输出一致时,表明训练结束。否则,通过修正权值,使网络的实际输出与理想输出一致。
22
实际上针对不同具体情况,BP网络的训练有相应的学习规则,即不同的最优化算法,沿减少理想输出与实际输出之间误差的原则,实现BP网络的函数逼近、向量分类和模式识别。以图4.3为例来说明BP网络训练的主要过程。
图4.3 含一个隐含层的BP网络结构
首先:网络初始化,构造合理的网络结构(这里我们采用图4.3的网络结构),取可调参数(权和阀值)为[-1,1]上服从均匀分布随机数,并取定期望误差、最大循环次数和修正权值的学习率的初始值。
其次,利用相应的BP网络学习规则对网络进行训练,求得权值修正后的误差平方和。
最后,检查网络误差平方和是否降低到期望误差之下,若是,训练结束,否则继续。
四、重要BP神经网络函数的使用方法
函数initff( )和simuff可以用来初始化和仿真不超过三层的前馈型网络。函数trainbp( )、trainbpx( )、trainlm( )可用来训练BP网络。其中trainlm( )的训练速度最快,但它需要更大的存储空间,也就是说它是以空间换取了时间;trainbpx( )的训练速度次之;trainlm( )最慢。
1.初始化函数initff( )
函数initff( )的主要功能就是对至多三层的BP网络初始化。其使用格式有多种,现列如下:
[w,b]=initff(p, s, f)
[w1, b1, w2, b2]=initff(p, s1, f1, s2, f2)
[w1, b1, w2, b2, w3, b3]=initff(p, s1, f1, f2, s3, f3)
23
[w, b]=initff(p, s, t)
[w1,b1,w2,b2]=initff(p, s1, f1, s2, t)
[w1, b1, w2, b2, w3, b3]=initff(p, s1, f1, s2, f2, s3, t)
[w, b]=initff(p, s, f)可得到s个神经元的单层神经网络的权值和阀值,其中p为输入向量,f为神经元的激励函数。
BP网络有一个特点很重要,即p中的每一行中必须包含网络期望输入的最大值和最小值,这样才能合理地初始化权值和阀值。
2.仿真函数simuff( )
BP网络是由一系列网络层组成,每一层都从前一层得到输入数据,函数simuff( )可仿真至多三层前馈型网络。对于不同的网络层数,其使用格式为:
a=simuff(p, w1, b1, f1)
a=simuff(p, w1, b1, f1, w2, b2, f2)
a=simuff(p, w1, b1, f1, w2, b2, f2, w3, b3, f3)
以上三式分别为单层、双层和三层网络结构的仿真输出。 3.训练函数
关于前面所提到的几种BP网络训练函数,在这里只介绍其中之一:trainbp( )。
函数trainbp( )利用BP算法训练前馈型网络。trainbp( )函数可以训练单层、双层和三层的前馈型网络,其调用格式分别为:
[w, b, te, tr]=trainbp(w, b, f′,p, t, tp)
[w1, b1, w2, b2, te, tr]=trainbp(w1,b1, f1′,w2, b2, f2′,p, t, tp)
[w1,b1,w2,b2,w3,b3,te,tr]=trainbp(w1, b1, f1′,w2, b2, f2′,w3, b3, f3′,p, t, tp)
可选训练参数tp内的四个参数依次为:
·tp(1)指定两次显示间的训练次数,其缺省值25; ·tp(2)指定训练的最大次数,其缺省值100; ·tp(3)指定误差平方和指标,其缺省值0.02; ·tp(4)指定学习速率,其缺省值0.01;
24
只有网络误差平方和降低到期望误差之下,或者达到了最大训练次数,网络才停止学习。学习速率指定了权值与阀值的更新比例,较小学习速率会导致学习时间较长,但可提高网络权值收敛效果。
五、BP网络的应用举例
BP网络的函数逼近举例:设计一个BP网络,其隐含层神经元的激励函数为双曲正切函数,输出层神经元的激励函数为线性函数,学习样本为21组单输入矢量,理想输出为相应的单输出矢量。
输入矢量为: p=-1:0.1:1; 理想输出矢量为:
t=[-0.96 -0.577 -0.0729 0.377 0.641 0.66 0.461 0.1336 -0.201 -0.434 -0.5 -0.393 -0.1647 0.0988 0.3072 0.396 0.3449 0.1816 -0.0312 -0.2183 -0.3201];
输入输出的函数关系曲线: plot(p,t) xlabel('Input') ylabel('Output')
图4.4 输入输出关系
利用输入和理想输出进行BP神经网络初始化:
[w1,b1,w2,b2]=initff(p,5,'tansig',t,'purelin')
25
利用函数trainbp对构造的BP网络进行训练: df=10 me=8000 eg=0.02 lr=0.01 tp=[df me eg lr]
[w1,b1,w2,b2,ep,tr]=trainbp(w1,b1,'tansig',w2,b2,'purelin',p,t,tp)
其中df指定两次显示间的训练次数,其缺省值25;me指定训练的最大次数,其缺省值100;eg指定误差平方和指标,其缺省值0.02;lr指定学习速率,其缺省值0.01;
训练结果与理想输出对比分析:
图4.5 训练结果与理想输出对比分析
网络的训练过程中,网络收敛效果一定程度上要受网络初始化的初始值的影响,实际输出和理想输出的误差的变化情况可以反映网络学习的效果,这一点可以通过如图4.6反映:
ploterr(tr, eg)
其中tr为网络学习的循环次数。
26
图4.6 误差曲线
27
第五节 径向基函数网络
我们前面所学习的多层前馈型网络模型对于每个输入输出数据对,网络的每一个权值均需要调整,这样的神经网络称之为全局逼近神经网络。全局逼近神经网络学习速度很慢,这对于控制来说常常是不可忽视的。下面我们将介绍一种新的网络:径向基函数(Radial basis Fanction简记为RBF)网络。
径向基函数网络属于局部逼近网络,所谓局部逼近网络就是对于每个输入输出数据对,只有少量的权值需要进行调整,也正是基于这一点才使得局部逼近网络具有学习速度快的优点。另外,BP网络用于函数逼近时,权值的调整是同梯度下降法,存在局部极小和收敛速度慢等缺点。而RBF网络在逼近能力、分类能力和学习速度等方面均优于BP网络。
一、径向基函数神经网络结构
如图5.1所示为径向基函数神经网络结构图。径向基函数网络输出单元是线性求和单元,所以输出是各隐单元输出的加权和。隐单元的作用函数用径向基函数,输入到隐单元间的权值固定为1,只有隐单元到输出单元的权值可调。
Si
pj
wki
ak
输入层 隐含层
输出层
图5.1 RBF网络结构图
28
二、径向基函数的学习算法
径向基函数网络的学习算法常用的有两种:一种是无导师学习,另一种便是有导师学习。这里我们只介绍无导师学习。
无导师学习也称非监督学习,地所有样本的输入进行聚类,求得各隐层节点的RBF的中心Ci。具体的算法步骤如下:
1.给定各隐节点的初始中心Ci( · );
2.计算距离(欧氏距离)并求出最小距离的节点;
di (t) = ‖p (t) ―Ci(t―1)‖, 1≤i≤m
dmin(t)=mindi(t)=dr(t) (5.1)
式中,Ci——第i个隐节点的中心, i=1,2,?,m; ‖·‖——通常为欧氏范数。
3.调整中心
Ci(t)=Ci(t―1), 1≤i≤m, i≠r Cr(t)=Ci(t―1)+η(p(t)-Cr(t―1)) 式中,η——学习速率,0
4.计算节点r的距离
dr(t)=‖p(t)-Cr(t)‖ (5.3)
三、重要径向基函数的函数使用方法
径向基函数网络的仿真是用函数simurb( )来实现的,传递函数是radbas( ),而它的训练可以用两个函数来实现,solverb或solverbe。
1.仿真函数simurb ( )
径向基函数网络只有一个隐含层,隐含层单元采用径向基函数作为其输出特性,输入层到输出层之间的权值均固定为1,输出节点为线性求和单元,隐含层到输出层节点之间的权值可以调节。径向基函数网络能在有限步内以任意精度拟合函数,而且训练时间比较短。
仿真函数simurb( )可得网络层的输出 a=simurb(p,w1,b1,w2,b2)
式中,p为输入矢量,w1,b1为径向基神经元层的权值和阀值,w2,b2为线性神经元的权值和阀值。
29
2.径向基传递函数rodbas( )
径向基传递函数用于径向基网络中,其使用方式多种: radbas(n) radbas(z,b)
其中radbas(n)函数可对网络输入矩阵n中的所有元素如同径向基函数。 radbas(z,b)函数提供成批处理矢量,并且提供阀值的情况,这时阀值b与加权输入矩阵z是分开的,阀值b乘以z 中的每个矢量,以形成网络的输入矢量,然后利用径向基函数网络输入转换成输出。
对于径向基函数的训练可用两个函数来实现。现在我们介绍如下: 1)solverb ( )
径向基函数网络能较好地拟合任意有限值函数,而且可以通过快速的设计来取代漫长的训练。
利用solverb ( )函数可得到径向基函数隐层的权值w1和阀值b1,还得到了线性输出层的权值w2和阀值b2。
[w1, b1, w2, b2]=solverb(p, t, tp) 其中设计参数tp指示如何进行训练。
·tp(1)指定更新显示之间的迭代次数,其缺省值25; ·tp(2)指定最多的神经元数,其缺省值100; ·tp(3)误差平方和门限,缺省值为0.02; ·tp(4)指定径向基层的宽度,缺省值1.0。 2)函数solverbe( )
函数solverbe( )的订功能是精确径向基函数求解。利用solverbe( )也可得到径向基网络隐层的权值w1和阀值b1,以及线性输出层的权值w2和阀值b2。其调用格式如下
[w1, b1, w2, b2]=solverbe(p, t, sc)
式中的可逆变量sc为径向基函数的宽度,即从函数值为1到其值为0.5之间的距离,其缺省值为1。
30
第六节 反馈网络
按照人工神经元网络运行过程中信息的流向分类。现有网络可分为前馈型和反馈型以及它们的结合。从计算的观点看,前馈型神经元网络大部分是学习网络而不具有的力学行为。在反馈式神经网络中,所有单元都是一样的,它们之间可以相互连接,所以反馈式神经网络可以用一个无向完备图来表示。从系统的观点看,反馈网络是一个非线性动力学系统。它必然具有一般非线性动力学系统的许多性质,如网络系统具有若干个稳定状态,当网络从某一初始状态开始运动,网络系统总可以收敛到某一个稳定的平衡状态;还有系统稳定的平衡状态可以通过设计网络的权值而被存储到网络中。在某些情况下,还有随机性和不可预测性等,因此,比前馈网络的内容要广阔和丰富得多。
反馈式的单层网络有多种,本节主要讨论的是美国加洲工学院物理学家J.Hopfield于1982年提出的一种网络,称为Hopfield网络。这种网络分为离散和连续型两种。Hopfield是从物理学磁场理论中受到启发,结合生物神经网络的思维机理而提出的这一网络模型的。并且引用了物理学中有关能量的概念。
Hopfield将“能量函数”的概念引入到对称Hopfield网络的研究中,给出了网络的稳定性判据,并用来进行约束优先问题(如旅行商(简称TSP)问题)的求解,实现A/D转换等。另外,Hopfield网络与电子模拟线路之间存在着明显的对应关系,使得该网络易于理解且便于实现。
一、Hopfield网络的结构与算法
由于Hopfield网络模型是从物理学磁场理论受到启发而提出的,所以我们可以模拟磁场的结构画出图6.1所示的有四个神经元的Hopfield网络模型。
Hopfield网络中的各个神经元是彼此连接的,即每个神经元都将自己的输出通过连接权传送给其它神经元,同时每个神经元又都接收其它神经元传来的信息对于离散型Hopfield网络中每个神经元的输出只能取“1”或“0”(或“-1”)两种状态。
31
图6.1 Hopfield网络模型
对于有几个神经元的网络结构,其各个神经元的状态,可用向量P表示
p=[p1, p2, ?, pn]
这里p取pi=1或0 (i=1,2,?,n)
对于Hopfield网络已有定理证明,当网络满足以下两个条件时,Hopfield学习算法总是收敛的。
① 网络的连接权矩阵元自连接且具有对称性,即
wii=0 (i=1,2,?,n)
wij=wji (i,j=1,2,?,n)
这一假设条件虽然与生物神经网络的实际情况不相符合(生物神经元之间连接强度不对称),但是却与磁场中各磁旋的相互作用情况相一致。
② 网络中各神经元以同步或异步方式,依据运行规则改变其状态,即各神经元按随机选取方式,依据运行规则改变状态,且当某个神经元改变状态时,其它所有神经元保持原状态不变。这一点符合生物神经网络的情况。
二、Hopfield网络运行规则
Hopfield网络运行规则中的神经元模型与前面讲过的神经元基本是相同的,如图6.2所示。
设Hopfield网络由S个这样的神经元构成。时刻t第i个神经元的输出为
ai(t+1)=sign(Hi)
6.1
32
n
Hi=?
j?iwij aj(t)-bi 6.2
式中sign(x)为符号函数
?1sign(x)???0x?0x?0 7.3
图6.2 Hopfield网络神经元结构简图
式6.1表明,当所有其它神经元输出的加权总和超过第i神经元的阀值时,此神经元将处于兴奋状态,否则将处于抑制状态。这里应特别注意的是,按式6.1改变状态的神经元ai,并不是按顺序进行的,而是按随机的方式选取的。下面将Hopfield工作运行规则总结如下:
① 从网络中随机选取一个神经元pi;
② 按式6.2求所选中的神经元ai的所有输入的加权总和:
nHi??wijaj
j?1
j?i?bi
③ 按式6.1计算pi的第t+1时刻的输出值,即:如果Hi(t)不小于零,那么ai(t+1)=1;否则置ai(t+1)=0。
④ ai以外的所有神经元输出保持不变。
aj(t+1)=aj(t) j=1,2,?,n且j≠i
⑤ 返回①。直至网络进入稳定状态,另外值得一提的是,反馈网络的具有一个重要特点——具有稳定状态,也称为吸引子。
三、重要的反馈网络函数
在MATLAB神经网络工具箱中对Hopfield网络的设计和仿真分别提供
33
了函数solvehop( )和函数simuhop( )。
1.设计函数solvehop( )
Hopfield网络神经元的输出通过权值矩阵反馈到神经元的输入,从任何初始输出向量开始,网络不断更新,直至达到稳定的输出向量。Hopfield网络的设计包括权值及对称饱和线性层的阀值,以便使目标向量成为网络的稳定输出向量。调用格式为:
[w,b]=solverhop(t)
通过对solverhop( )函数的调用可迅速得到一个权值矩阵和阀值向量。
2.仿真函数simuhop( )
调用仿真函数simuhop( )又同时得到最终的输出矢量和仿真过程中产生的所有输入向量矩阵X,即
[a,x]=simuhop(a,w,b,t)
上式中输入变量a为初始输出向量w为权值矩阵,b为阀值向量,t为步数。
四、反馈网络应用举例
下面给出一个含有两个神经元的Hopfield网络实例:
figure(gcf)
echo on
t=[1 -1;-1 1]
plot(t(1,:),t(2,:),'r*')
axis([-1.1 1.1 -1.1 1.1])
alabel('a(1)','a(2)','Hopfield Network State Space')
pause
[w,b]=solvehop(t)
pause
a=simuhop(t,w,b)
pause
a=rands(2,1)
[a,aa]=simuhop(a,w,b,50)
34
hold on
plot(aa(1,1),aa(2,1),'wx',aa(1,:),aa(2,:))
pause
hold on
color='rgbmy'
for i=1:25
a=rands(2,1);
[a,aa]=simuhop(a,w,b,20);
plot(aa(1,1),aa(2,1),'wx',aa(1,:),aa(2,:),color(rem(i,5)+1))
drawnow
end
echo off
图6.3 网络训练结果
35
第七节 自组织网络
在人脑的感觉通道上的一个很重要的组织原理是神经元有序地排列着,并且往往可以反应出所感觉到折在刺激的某些物理特性。例如在听觉通道的每一层次上,其神经元与神经纤维在结构上的排列与频率的关系十分密切,对于某个频率,相应的神经元具有最大的响应。这种听觉通道上的神经元的有序排列一直延续到听觉皮层。尽管许多低层次上的神经元是预先排列好的,但高层次上的神经组织则是通过自组织地形成的。
kohonen根据大脑神经系统的这一特征,于1981年提出了自组织特征映射(self-Organizing feature Map)神经网络,简称SOFM网络。自组织特征映射法是一种无教师的聚类方法,与传统的模式聚类方法相比,它的形成的聚类中心能映射到一个曲面或平面上,并且保持拓扑结构不变。
下面我们通过对自组织特征映射网络论述来了解自组织网络。
一、自组织特征映射的网络结构
自组织网络主要有输入层和竞争层两层。输入层用于接收样本,而竞争层完成对输入样本进行分类。这两个层次的神经元进行全互连连接,即一层次的每个神经元与另一层次的每个神经元均连接。有时竞争层各神经元之间还有侧抑制连接。在竞争层中,让竞争获胜的那个神经元g的兴奋程度最高,并使其周围Ng的区域间的神经元在不同程度上都得到兴奋,而在Ng区域以外的神经元都受到不同程度的抑制,即形成图7.1 的墨西哥帽(mexican Hat)函数形状的兴奋区域。
图7.1 自组织网络神经细胞状态分布图
36
这个Ng区域也可以是任何其它形状,但一般是均匀对称的,例如正方形或六角形等。Ng是时间的函数,也可用Ng(t)表示,随t增加,Ng(t)的范围不断减小,最后得到的Ng(t)区域反映了它所对应的输入模式的属性。 自组织特征映射网络的激励函数为二值型函数。在竞争层中,每个神经元都有自己的邻域,图7.2为一个在二维层中的主神经元。主神经元具有在其周围增加直径的邻域。一个直径为1的邻域包括主神经及它的直接周围神经元所组成的区域;直径为2的邻域包括直径为1的神经元以及它们的邻域。图中主神经元的位置是通过从左上端第一列开始顺序从左到右,从上到下找到的。如图中的10×10神经元层,其主神经元位于46。
图7.2 二维神经元展示意图
二、自组织特征映射网络的学习
自组织特征映射网络的竞争层是一个二维平面阵列,由M=m2个神经元组成,图7.3是一种典型的二维竞争层神经元与输入层神经元之间的连接方式。输入是R维,输出是二维。
设网络的信号按某种顺序输入:
p(t)={p,t}, i=1,2,?R} 共N个样本,
R
ai(t)=?wji(t)pi(t) j=1,2,?,M
i?1
则基本的SOFM算法可以归纳为:
① 权值初始化,对各节点的权赋以随机数作为初始值
wji(0),
37
i=1,2,?,R,j=1,2,?,M。
竞争层
M=m2个神经元
图7.3 SOFM网络模型
② 在样本集中随机选采样本p(t)输入。
③ 在输出节点集中寻找最佳匹配的节点C(即其权向量与n值最近的),如用欧氏(Euclid)距离,则C应为
‖p(t)―wc(t)‖=min{‖p(t)―wj(t)‖} (wj为P维向量) j
④ 权值学习:
??wj(t)??(t)h(t)[p(t)?wj(t)]j?Ncwj(i+1)=wj(i?1)?? w(t)j?N?0?j
⑤ t←t+1,转向②。
38
μ(t)为学习步长,h(t)为邻域大小,它们都随迭代次数而变化。
三、自组织特征映射网络的训练
SOFM网络在训练开始时其输入为竞争的胜利者代表某类模式。然后定义获胜节点的邻域节点,即以获胜节点为中心的某一半径内的所有节点,并对与其相似的权矩阵进行调整。随着训练的继续进行,获胜节点C的半径将逐渐变小,直到最后只包含获胜节点C本身。也就是说,在训练的初始阶段,不但对获胜的节点作权值的调整,而且对其周围较大范围内的几何邻接节点,也和相应的调整,而随着训练过程的进行,与获胜输出节点相连的权矩阵就越来越接近,其所代表的模式类,此时,需要对获胜节点进行较细致的权矩阵调整,同时,只对其几何邻接较近的节点进行相应的调整。这样,在训练结束后,几何上相近的输出节点的连接的权矢量既有联系,又相互有区别;保证了对于某一类输入模式获胜节点,能作出最大的响应。而相邻节点作出较小的响应。几何上相邻的节点代表特征上相似的模式类别。 训练设计步骤(适用于输入向量P具有某种概率分布的数组):
1.初始化:由输入向量确定网络结构,设置网络竞争层神经元节点;将输入模式P作归一化处理;归一随机化处理初始权值;设置最大训练次数max-cyde并确定基本学习速率lr以及最大邻层数。
2.学习速率是线性下降的:
n=cycle/max_cycle;
LR=(1-n)·lr;
这使得学习速率随着循环次数的增加,从lr*(maxcycle-1)/max=cycle逐渐降至0。
3.邻层数也是递减
h=max([ceil(max_neighba(1-x*4))1];
4.计算输入向量加权和,并通过竞争求出获胜节点。
A=compet(w*p);
5.根据获胜节点求出相邻层(以二维为例),并进行权值修正。 i=find(A==1);
in=neighbad (i,[x,y],n);
39
dw=learnk(w,p,in,LR);
w=w+dw;
6.检查是否达到最大训练次数max_cycle,如果达到了则输出或显示结果,否则转(2)继续训练。
四、重要的自组织网络函数
函数initc( )、simaC( )和trainc( )可分别用于竞争层的初始化,仿真和训练。函数initsm( )、simusm( )和trainsm( )分别用于自组织映射网络的初始化、仿真和训练。函数nbgrid( )、nbdist( )、nbman( )可生成一系列矩阵,以便用于定义自组织映射中神经元之间的邻域关系。
1.初始化
首先我们介绍一下竞争层初始化函数initc( )。利用函数initc( )可得到S个神经元的竞争层的权值和阀值。另外有一点特别重要,输入向量P的每一行中包含了网络输入的最大值和最小值,这样才能合适地初始化权值和阀值。输入变量为输入向量P和神经元数S,调用格式为
w=initc(p>s).
另外自组织网络初始化函数initc( )也可得到S个神经元的自组织网络的权值。与函数initc( )一样,输入向量P的每一行中包含了网络期望输入的最大值和最小值,这样才能合适地初始化权值和阀值。并且其调用格式也与函数initc( )一样为
w=initsm(p,s);
2.仿真
竞争层的仿真函数simue( )在任何时候只有最大网络输入的神经元的输出为1,其它神经元的输出为0。调用格式为:
a=simuc (p,w);
而自组织网络仿真函数simusm( )可得到自组织映射网络的输出,只有最大网络输入的神经元的输出为1,相邻神经元的输出为0.5,其余神经元的输出为0。调用格式为:
a=simusm(p,w,m,n);
式中m为自组织网络的邻阵,变量n为邻域的大小,其缺省值为1。 40
3.训练
对于竞争层的训练采用trainc( )函数,通过调整初始权值矩阵w和阀值向量b,得到了相应于随机顺序选取的输出向量P的新的权值矩阵,以便对一组输入向量进行分类。
w=trainc(w,p,tp);
输入变量tp为可选的训练参数:
·tp(1) 指定更新显示间的训练次数,其缺省值为25;
·tp(2) 指定训练的最大次数,其缺省值为100;
·tp(3) 指定学习速率,其缺省值为0.01;
·tp(4) 指定跟踪性能(0~1),其缺省值为0.999;
·tp(5) 指定加权性能(0~1)其缺省值为0.1。
tp(4)越接近于1,计算神经元输出均值就越慢;tp(5)越小,高均值或低均值对神经元阀值的影响也就越小,从而获得稳定的结果。
自组织映射网络的训练函数trainsm( )是利用Kohonen规则训练自组织映射网络。自组织映射网络由分布在一维或多维空间中的神经元构成的层组成,在任何时候,只有最大网络输入的神经元的输出为1,相邻的神经元的输出为0.5,其余神经元的输出为0。
w=trainsm(w,b,p,tp);
可选的训练参数tp为:
·tp(1) 指定两次更新显示间的次数,其缺省值为25;
·tp(2) 指定训练的最大次数,其缺省值为100;
·tp(3) 指定初始学习速率,其缺省值为1。
五、自组织网络应用举例
应用自组织网络对输入样本进行分类。
首先利用函数nngenc生成聚类数据点,具体生成过程如下:
x=[0 1;0 1] 聚类数据点的范围;
clusters=8 聚类数;
points=10 每个聚类的数据点个数;
std_dev=0.05 聚类偏差;
41
p=nngenc(x, clusters, points, std_dev)
图形显示聚类数据点:
plot(p(1,:),p(2,:),'+')
再运用函数initc初始化自组织神经网络,得到相应的网络节点和权值的初始值,再运用函数trainc对所构件的网络进行训练:
w=initc(p,8)
df=25
me=1000
lr=0.1
tp=[df me lr]
w=trainc(w,p,tp)
42
对训练成熟的网络,可以利用函数simuc进行仿真: p1=[0.1; 0.4]
a1=simuc(p1, w)
输出仿真结果:
a1 =
(1, 1) 1
p2=[0.6; 0.2]
a2=simuc(p2, w)
输出仿真结果:
a2 =
(7, 1)
1
43
用神经网络求解模糊线性规划问题
用神经网络求解模糊线性规划问题
第18卷第3期
1996年5月
电壬科学学刊
JoURNALoFELECTRONICS
用神经网络求解模糊线性规划问题
事晓慧吴华仁
———_—?一一—————,
(南京动力高等专科学授南京210042)
Vl0I.18N0.3
M丑v1996
捕要本文根据模糊线性规划和神经网络的特点,导出了用神经网络求謦模帽线性规划
的方法;考虑到神经网络电路中的放大器单元和电阻元件客观上存在误差,提出了用谩差补
偿法减小这些误差对神经网络输出精度的髟确.计算机仿真和电路实验都表明了这种方法韵
有效性.
关-词丝旦堑,墨!苎塾兰,苎圭型
中圈号TN一052
l
O}t/
在实际工作中遇到的线性规划问题,其约束条件和目标函数大多是模糊的【lJ.对这
种模糊线性规划问题的研究非常活跃,已发表了不少研究成果.求解模糊线性规划问题通
常是将模糊线性规划转化为普通线性规划,然后用单纯形法求解.但是这种求解过程一般
只能在计算机上完成,而且需要较长的求解时间.为了缩短求解时间,本文提出了用神经
网络求解模糊线性规划问题的方法.用神经网络解模糊线性规划,仍是先将模糊线性规划
转化为普通线性规划,根据所得到的普通线性规划问题列出神经网络的微分方程,按此微
分方程构造神经网络电路神经网络中的放大器单元和电阻元件的误差对神经网络输
出精度可能有较大影响,为此本文提出了用误差补偿法减小这种不利影响的措施.
2模糊线性规划
普通线性规划数学模型的一般形式为I求x,满足约束条件AXSb,xo.使目
标函数s=口x达到最大值,式中x=(z1,啦,…,)?,A=()?”
b=(bl,,---,k)r?Rm,口=(Q1,Q2,?一,Q)t?R.
模糊线性规划教学模型为[11求x’,满足
使
模糊约束条件毛b’}(1)和普通约束条件x?0J
1994-07-18收刊,l9g每02-08定稿
QTx暑So,
,
f
3期李晓慧等:用神经网络求解模糊线性规划问题271
式中舌和毛为模糊不等号.
第{个模糊约束条件对应的模糊子集用觑表示,则A的隶属函数为
()=
?n
b<E.tbi+di
EB>+
j=l
式中也是人为主观确定的伸缩性指标,且d0,=1,2,…,m.
把满足约束条件AXSb+d和X?0的目标函数s=QTx的最大值记作s.,式
中d:(dl,d2,?t,d).
模糊目标函数(2)式对应的模糊子集用磊表示,则户0的隶属函数为
(z)=
?岛;
j=l
So(E岛+do;(4)
i=1
E>So+do;
式中do一一一岛.
为了使(4)式与(3)式的书写格式统一,令d+l=+l:一sm暑,B+1.j:一
嘛.):庇(z)t
取模糊约束集与模糊目标集的交集为模糊判决集,用西表示,即
D:尸解模糊线性规划问题273
訾—一m+1等G试一+1c喜n一训+Gz,cz
dA
一
G…+去c…?
式中k=l,2,…,
根据(12),(13)式的微分方程可用电子电路构成神经网络.这种神经网络的主要元件
是变量放大器约束放大器和电阻.变量放大器的输出电压值就是模糊线性规划问题的解
x和.当约束条件满足时,对应的约束放大器的输出应该是0,但实际上不为0,即
约束放大器存在误差.神经网络中的连接电阻的阻值应该与微分方程中所要求的一样,由
于所选择的电阻的实际值不可能都达到所要求的值,所以连接电阻的阻值存在误差.约束
放大器的误差和连接电阻的误差将使变量放大器的实际输入电流与希望的输入电流值不
等,从而使变量放大器的输出电压出现误差.为了减小这种误差,可以在每个变量放大器
和约束放大器的输入端增加一个补偿电流.补偿电流的值由约束放大器误差连接电阻误
差和神经网络结构确定.
Hopfield神经网络是非线性网络,存在局部极值问题,可参阅有关文献的论述[4].
4实验研究
计算机仿真和电路实验所采用的实例为约束条件:l舌50,一20的误差小于
2%.
274电子科学学刊l8卷
T’—01I.
0拉050o
1’02
,
I-2
I
6I一86.一20T’
J5
{si2t.5一O’2
.
一
50士I6.67一O.
2
?上一10—02
1-ic.0.马.
.
一
l710
丫尹7
图1模糊线性规划神经网络实例
(a)变量放大器(b)约束放大器
图2放大器电路图和符号
变量放大器输入端补偿电流的作甩比约束放大器输入端补偿电流
的作用明显,因此图
1所示的神经网络只在变量放大器的输入端加补偿电流进行误差补
偿当卢=30Mfl,
=2.8Mfl时,不同值所得到的变量放大器的输出如表1所示.由表1可见,当=2.32kfl
时,变量放大器的输出误差小于2%.,
表1变量放大器输出
罄:
3期李晓慧等:用神经网络求解模糊线性规划问题275
5结论
神经网络可用于求解(1),(2)式描述的模糊线性规划问题.在放大器输入端加补偿
电筛进行误差补偿,可减小神经网络中放大器单元的误差和电阻元件的误差所引起的不利
影响,用神经网络电路解模糊线性规划的求解时间短,精度高容易实现
参考文献
f1]张跃,普.模糊数学方挂及其应用北京:煤炭工业出版社,1992452-475.
【2】TankDWHopfieMJJ.IEEETrans0?CAS,1986CAS-33(5):533-541
【3】管梅谷,郑汉鼎.线性规划.济南:山东科学技术出版社.1983,7-9.
KennedyMP1ChuaL0.IEEETrans0nCAS,1988,CAS一35(5):554—562.
SO【?INGFUZZYLINEARPROGRAMMINGPROBLEM
WITHNEURALNETWORK
,
LiXiaohuiWuHuaren
(NanjinyPowerCollege,?d哪210042)
Abstract?Alllethodforsolvingfuzzy~nearpregrammingwithneuralnetworkisdescribedand
someexperimentalresultsaven.Themethodforerrorcompensationispresentedtominimize
theeffectoferrorsofamplifiersandconnectingresistors.
KeywordsNeuralnetwork,F,lzzmathematics,Linearprogramming
李跷慧:女,1960年生,讲师,研究兴趣为神经网络,自动控制和电力系
统.
吴华仁:男,1965年生,副教授,从事电力系统及其自动化,计算机应用,
神经网络等研究工作