主要内容

训练自适应神经模糊推理系统

这个例子展示了如何创建、训练和测试sugeno型模糊系统去噪的设计师更多信息:

将示例数据文件添加到MATLAB中®路径。

目录(fullfile (matlabroot,“例子”“模糊”“数据”));

负荷训练数据

培训和验证系统使用去噪的设计师App需要数据。导入训练数据(fuzex1trnData)和验证数据(fuzex1chkData)到MATLAB工作区。

负载fuzex1trnData.dat负载fuzex1chkData.dat

打开去噪的设计师应用程序。

neuroFuzzyDesigner

默认的神经模糊设计器应用程序对话框,在左下角有一个空的情节和一个加载数据部分。

从工作区加载训练数据集。在加载数据部分中,选择培训而且worksp

点击加载数据.在“从工作区加载”对话框中,输入变量名fuzex1trnData

输入fuzex1trdData作为输入变量名,从工作区加载

点击好吧去噪的设计师将图中的训练数据显示为一组圆圈。

神经模糊设计应用程序显示导入的训练数据的情节

将检查数据从MATLAB工作区加载到去噪的设计师.在加载数据部分中,选择检查

以与训练数据相同的方式加载检查数据,并指定变量名fuzex1chkData去噪的设计师使用加号叠加在训练数据上显示检查数据。

神经模糊设计器应用程序显示一个与导入的检查数据和训练数据一起的情节

要从应用程序中清除特定数据集,请使用加载数据区域,选择数据类型,并单击明确的数据

生成或加载FIS结构

在开始FIS训练之前,必须指定初始的FIS模型结构。要指定模型结构,您可以执行以下任务之一:

  • 从文件或MATLAB工作区加载先前保存的单输出sugeno类型FIS对象。

  • 使用网格划分生成初始FIS模型。

  • 使用减法聚类生成初始FIS模型。

对于本例,使用网格分区生成初始FIS。在去噪的设计师,在生成FIS部分中,选择网格分区

点击生成FIS

在“添加成员功能”对话框中:

  • 输入部分,在mf数量,指定输入隶属度函数的个数。对于本例,使用4所有输入变量的隶属函数。

  • MF型中,选择gbellmf作为输入隶属度函数类型。

  • 输出部分,在MF型中,选择线性作为输出隶属函数类型。

“添加成员函数”对话框显示所选输入成员函数的数量和类型以及所选输出成员函数类型。

交互式地指定FIS结构

或者,您可以使用指定的成员函数和规则交互式地指定自己的FIS结构。您定义的系统必须是具有以下属性的Sugeno系统:

  • 单输出

  • 加权平均去模糊

  • 一阶或零阶系统;也就是说,所有输出成员函数也必须是相同的类型“线性”“不变”

  • 没有规则共享。不同的规则不能使用相同的输出隶属度函数;也就是说,输出隶属函数的数量必须等于规则的数量。

  • 每个规则的统一权重。

  • 没有自定义成员函数或去模糊化方法。

定义:

  • 每个变量的隶属函数,在去噪的设计师中,选择编辑>隶属度函数.然后,在“成员函数编辑器”窗口中定义成员函数。

  • 规则,在去噪的设计师中,选择编辑>规则.然后,在“规则编辑器”窗口中定义规则。

这些工具与模糊逻辑设计器有关更多信息,请参见使用模糊逻辑设计器构建模糊系统

查看FIS结构

加载或生成FIS之后,您可以查看模型结构。这样做,在去噪的设计师,点击结构

对话框,显示ANFIS模型的结构

图中的分支是用颜色编码的。分支的颜色编码描述了规则,并指出规则中是否使用and、not或or。输入由最左边的节点表示,输出由最右边的节点表示。节点表示规则的规范化因子。要查看结构的信息,请单击每个节点。

此外,要查看FIS:

  • 成员函数,在去噪的设计师中,选择编辑>隶属度函数

  • 规则,在去噪的设计师中,选择编辑>规则

火车FIS

加载训练数据并生成初始FIS结构之后,就可以训练FIS了。这样做,在去噪的设计师,在火车FIS节中,指定以下参数。

  • Optim。方法-优化方法。对于本例,选择混合动力该方法使用反向传播和最小二乘回归相结合的方法来优化FIS参数。

  • 时代-训练周期数。对于本例,请指定40时代的发展。

  • 错误宽容-容错停止条件。对于本例,指定值为0,表示达到训练周期数后,训练将停止。

训练FIS,单击火车现在

神经模糊设计应用程序显示了整个训练过程的训练错误和测试错误的情节。

该应用程序训练FIS,并为每个训练时期绘制训练误差(作为星号)和检查误差(作为点)。

在训练中,检查误差减小到某一点,然后增加。这种增加发生在训练开始过度拟合训练数据的时候。应用程序选择与该过拟合点相关的FIS作为训练过的ANFIS模型。

验证训练好的FIS

训练完FIS后,使用函数验证模型测试检查与训练数据不同的数据集。对于本例,使用之前加载的检查数据。

要根据检查数据测试FIS,请在测试FIS部分中,选择检查数据.然后,单击测试现在

神经模糊设计器应用程序显示检查输出数据与输出生成的ANFIS系统检查输入数据

应用程序绘制测试数据集的输出值(使用蓝色+'s)和训练FIS的输出对应的测试数据输入值(使用红色*'s)。FIS输出值与预期输出有很好的相关性。

检查数据的重要性

重要的是要有充分代表FIS打算建模的数据特征的检查数据。如果你的检查数据与你的训练数据有很大的不同,并且没有覆盖与训练数据相同的数据特征来建模,那么训练结果就会很差。

例如,将新的训练和检查数据加载到去噪的设计师.该数据具有显著不同的训练集和检查集。

  1. 在MATLAB命令行中,加载训练和检查数据。

    负载fuzex2trnData.dat负载fuzex2chkData.dat

  2. 清除之前加载的训练和检查数据。在加载数据节中,选择每个数据类型,单击明确的数据

  3. 加载训练数据(fuzex2trnData)及核对资料(fuzex2chkData),就像你先前所做的一样。

神经模糊设计器应用程序显示训练和检查数据不是很相关

生成一个FIS结构,并像前面那样训练FIS,除了现在选择60培训时代。

神经模糊设计器应用程序显示大检查错误

在这种情况下,检查误差很大,最小的出现在第一个纪元。由于应用程序选择与最小检查误差相关的训练过的FIS参数,训练过的FIS不能充分捕获该数据集的特征。在选择训练和检查数据时,很好地了解数据集的特征是很重要的。当您不知道数据的特征时,您可以分析检查错误图,以查看检查数据是否与训练过的模型执行得足够好。

在这个例子中,检查误差足够大,表明您需要选择更多的数据进行训练,或者修改您的隶属函数选择(包括隶属函数的数量和类型)。否则,如果你认为训练数据足够捕捉你试图表示的特征,系统可以在没有检查数据的情况下重新训练。

为了验证较差的训练结果,将训练后的FIS模型与检查数据进行测试。

神经模糊设计器应用程序显示的输出模糊系统的检查数据不匹配的预期输出。

正如预期的那样,检查数据输出值和FIS输出之间存在显著差异。

从MATLAB路径中删除示例数据文件。

rmpath (fullfile (matlabroot,“例子”“模糊”“数据”))

另请参阅

相关的话题