一种模糊神经网络算法的案例教学探讨

作者: 刘金琨

一种模糊神经网络算法的案例教学探讨0

[摘 要]为了满足人工智能教学发展需要,在教学方面需要加强对相关课程案例建设的研究。文章以模糊神经网络的教学为例,介绍模糊神经网络的算法和设计步骤,并通过Matlab仿真分析与模式识别问题相结合来开展教学,深化学生对模糊神经网络算法的理解,提升神经网络课程教学案例建设水平,使学生具备一定的分析和解决问题的能力。

[关键词]模糊神经网络;案例教学;模式识别;教学改革

[中图分类号] G640 [文献标识码] A [文章编号] 2095-3437(2022)12-0093-04

案例教学是通过选择典型的教学案例来进行教学的一种模式。在人工智能的教学中,通过对典型算法的介绍及案例分析,可有效地激发学生的学习兴趣,并提高学生分析问题的能力。案例教学法是提高教学效果的有效途径,已成为一种重要的教学手段[1-2]。在人工智能的教学中,案例教学的研究还处于起步阶段。在神经网络的课程教学中,如何将模糊神经网络与实际案例相结合以解决模式识别问题,并通过设计教学案例来展开教学,是一个值得研究的、有意义的教学问题。

一、案例教学设计

(一)模糊神经网络基本知识

在模糊系统中,模糊集、隶属度函数和模糊规则的设计是建立在经验知识基础上的,这种设计方法存在很大的主观性。将学习机制引入模糊系统中,不断修改和完善隶属函数和模糊规则,是模糊系统的发展方向。神经网络与模糊系统相结合,构成了模糊神经网络[1],这是建立在BP网络基础上的一种多层神经网络,可以称为一种特殊的深度神经网络[2]。模糊神经网络在本质上是将常规的神经网络赋予模糊输入信号和模糊权值。模糊神经网络技术已经在建模、模式识别和控制领域获得了广泛的应用。

模糊神经网络的设计步骤为:1.定义模糊神经网络结构;2.设计输入隶属函数进行模糊化;3.设计模糊控制规则;4.设计模糊推理算法;5.设计网络权值的学习算法。

(二)案例的设计

案例的设计包括以下几个步骤:1.介绍模糊神经网络的背景、发展历史及研究意义,介绍国内外相关代表性文献[3];2.设计网络结构、隶属函数、模糊规则、模糊推理算法和网络权值学习算法;3.设计一个模式识别实例,给出需要解决的问题,并进行仿真实例的设计; 4.制作PPT和开发Matlab数值仿真程序,并进行仿真测试和分析;5.模糊神经网络算法与传统算法(如BP神经网络、RBF神经网络)的仿真比较。

(三)案例分析

在案例分析中,在介绍模糊神经网络的算法和一个模式识别案例的基础上,设计一个模式识别问题,让学生通过对给定案例背景进行分析,依据模糊神经网络提出具体解决问题的方案。通过案例分析,可提高学生理解、运用知识的能力。

二、模糊神经网络设计实例

(一)网络结构与算法

本文以2输入1输出的模糊神经网络为例进行案例教学探讨。模糊神经网络由输入层、模糊化层、模糊推理层和输出层构成(见图1)。

[f 4输出层][f 3模糊推理层][f 2模糊化层][f 1输入层][[x1]] […][…]

图1 2输入1输出的模糊神经网络结构

模糊神经网络中信号传播及各层的功能构成如下。

第一层:输入层

该层的各个节点直接与输入层的各个输入连接,将输入量传到下一层。该层的每个节点[i]的输入输出表示为:

[f1(i)=x=[x1,x2]]                (1)

第二层:模糊化层

模糊化是模糊神经网络的关键,采用隶属函数对输入进行模糊化,常用的隶属函数有10余种,其中高斯型隶属函数是一种有代表性的隶属函数。图1中,针对每个输入采用5个高斯型隶属函数进行模糊化,[cij]和[bj]分别是第[i]个输入变量第[j]个模糊集合隶属函数的中心点位置和宽度,该函数表示为:

[f2(i, j)=exp- (f1(i)-cij)2b2j]       (2)

其中[i=1,2, j=1,2,3,4,5]。

模糊化是模糊神经网络的关键。为了使输入得到有效的映射,需要根据网络输入值的范围设计隶属函数参数。以输入为[x=3sin2πt]为例,输入值范围为[-3,3],设计5个高斯型隶属函数进行模糊化,取[c=[-1.5   -1   0  1  1.5]],[bj=0.05]。

第三层:模糊推理层

该层通过与模糊化层的连接来完成模糊规则的匹配,各个节点之间通过模糊与运算,即通过各个模糊节点的组合得到相应的输出。

由于第1个输入经模糊化后输出为5个,第2个输入经模糊化后输出为5个,具有相同输入的输出之间不进行组合,通过两两组合后,构成25条模糊规则,每条模糊规则的输出为:

[f3(l)=f2(1, j1)f2(2, j2)]       (3)

其中[j1=1,2,3,4,5],[j2=1,2,3,4,5],[l=1,2,…,25]。

第四层:输出层

输出层为[f4],采用加权得到最后的输出,即

[f4=l=125w(l)⋅f3(l)]          (4)

其中[w]为输出节点与第三层各节点的连接权矩阵。

取网络输出[y=f4],网络输入[x]与输出y之间的非线性映射关系需要通过以下的模糊神经网络的学习算法进行学习。

(二)模糊神经网络的学习算法

在神经网络模式识别中,项目组根据标准的输入输出模式,采用神经网络学习算法,以标准的模式作为学习样本进行模糊神经网络训练,通过学习调整神经网络的连接权值。当训练满足要求后,得到的神经网络权值构成了模式识别的知识库。

模糊神经网络的训练过程如下:正向传播是采用算法式(1)至算式(4),输入信号从输入层经模糊化层和模糊推理层传向输出层,若输出层得到了期望的输出,则学习算法结束;反之,则转至反向传播。反向传播采用梯度下降法,调整神经网络的输出层权值。

理想的输入输出为[[xs,ys]],网络第[l]个输出与相应理想输出[ysl]的误差为:

[el=ysl-yl]

第[p]个样本的误差性能指标函数为:

[Ep=12l=1Ne2l]          (5)

其中[N]为网络输出层神经元的个数。

输出层的权值通过以下方式来调整:

[Δw(k)=-η∂EP∂w=-η∂EP∂e ∂e∂y ∂y∂w =ηe(k)f3]  (6)

输出层的权值学习算法为:

[w(k)=w(k-1)+Δw(k)+α(w(k-1)-w(k-2))]      (7)

其中[η]为学习速率,[α]为动量因子。

在每次迭代中,项目组分别依次对各个样本进行训练,更新权值,直到所有样本训练完毕,再进行下一次迭代,直到满足误差性能指标的要求为止。

三、仿真实例

取标准样本3个,各个样本的输入输出需要有所区别,如表1所示。所要解决的问题为:针对表1中的样本进行训练,使训练后的模糊神经网络具有模式识别能力, 即针对相同的输入得到相同的输出,相近的输入得到相近的输出。

针对所要解决的问题,首先选择模糊神经网络的结构,然后设计神经网络算法,包括网络的训练和测试两部分。

(一)模糊神经网络的训练

首先,针对表1中的问题,设计3输入2输出的模糊神经网络结构。针对每个输入采用5个隶属函数进行模糊化,模糊神经网络的输入输出结构为3-15-125-2,权值W的初始值取[-1   +1]之间的随机值,学习参数取[η=0.50,α=0.05]。针对表1中输入的范围,高斯型参数取为:

[c=[c(i, j)]]=[-1.5   -1   0   1   1.5-15   -1   0   1   1.5-15   -1   0   1   1.5]和[bj=0.50,i=1,2,3, j=1,2,3,4,5]。

采用学习算法算式(6)和算式(7),运行网络训练程序train_file.m,取网络训练的最终误差指标为[E=10-20],经过27次迭代,误差指标的变化如图2所示。将网络训练的最终权值保存在文件wfile.dat中。

Matlab网络训练程序:train_file.m

%Fuzzy Neural Network Training for MIMO and Multi-samples

clear all;

close all;

xite=0.50;

alfa=0.05;

bj=0.50;

c=[-1.5 -1 0 1 1.5;

-1.5 -1 0 1 1.5;

-1.5 -1 0 1 1.5];

w=rands(125,2);

w_1=w;w_2=w_1;

E=1.0;k=0;

NS=3;  %three samples

xs=[1 0 0;

0 1 0;

0 0 1]; %Ideal Input

ys=[1 0;

0 0.5;

0 1];   %Ideal Output

while E>=1e-20

k=k+1;

times(k)=k;

for s=1:1:NS   %Begain training for each sample

% Layer1: Input

f1=xs(s,:);

% Layer2: Fuzzification

for i=1:1:3

for j=1:1:5

net2(i,j)=-(f1(i)-c(i,j))^2/bj^2;

f2(i,j)=exp(net2(i,j));

end

end

% Layer3: Fuzzy inference(5*5*5=125 rules)

for j1=1:1:5

for j2=1:1:5

for j3=1:1:5

ff3(j1,j2,j3)=f2(1,j1)*f2(2,j2)*f2(3,j3);

end

end

end

经典小说推荐

杂志订阅