自适应模糊神经网络ANFIS

最早关于自适应模糊神经网络推理系统( Adaptive Neuro Fuzzy Inference System,ANFIS)的文章应该是Jyh-Shing Roger Jang 于1993年发表的《ANFIS : Adaptive-Network-Based Fuzzy Inference System》这篇文章。当时对于处理模糊不确定系统,使用传统数学工具的系统建模并不能得到令人满意的效果。考虑采用模糊if-then规则的模糊推理系统不需要精确的定量分析就可以对人的知识和推理过程进行定性建模,作者提出了一种基于自适应网络的模糊推理系统。

ANFIS将模糊控制的模糊化、模糊推理和反模糊化3个基本过程全部用神经网络来实现,利用神经网络的学习机制自动地从输入输出样本数据中抽取规则,构成自适应神经模糊控制器。它的模型结构由自适应网络和模糊推理系统合并而成,在功能上继承了模糊推理系统的可解释性的特点以及自适应网络的学习能力,能够根据先验知识改变系统参数,使系统的输出更贴近真实的输出。

该系统运用神经网络的信息储存与自学习能力对多类自变量数据进行机器学习,并对模糊信息完成模糊推理功能,能够自动产生并更正输入与输出变量的隶属度函数,产生最优的模糊规则。ANFIS克服了单纯神经网络的黑匣子特性与模糊推理过程中推理规则的不全面性、粗糙性,比一般 BP 神经网络训练更快速,同时还具有模糊系统简洁、快速的特点。

介绍自适应模糊推理系统(ANFIS)模型前,先简单说一下模糊推理系统(FIS)以及自适应网络。

模糊推理系统(FIS)

FIS由五个功能模块组成:
1)包含若干模糊if-then规则的规则库;
2)定义关于使用模糊if-then规则的模糊集的隶属函数的数据库;
3)在规则上的执行推理操作的决策单元;
4)将明确输入转化为与语言价值匹配的程度的模糊界面;
5)将推理得到的模糊结果转化为明确输出的去模糊界面。
通常,1、2被联合称为知识库。FIS结构图如下:

自适应模糊神经网络ANFIS

自适应网络

自适应网络是一个由节点和连接节点的定向链路组成的多层前馈网络,其中每个节点对传入的信号以及与此节点相关的一组参数执行一个特定的功能(节点函数)。自适应网络的结构中包含有参数的方形节点和无参数的圆形节点,自适应网络的参数集是每个自适应节点的参数集的结合。他们的输出依赖于这些节点相关的参数,学习规则指定如何更改这些参数。
一种自适应网络结构如下图所示:

自适应模糊神经网络ANFIS

ANFIS模型结构

ANFIS的模型结构由自适应网络和模糊推理系统合并而成,在功能上继承了模糊推理系统的可解释性的特点以及自适应网络的学习能力,能够根据先验知识改变系统参数,使系统的输出更贴近真实的输出。一种ANFIS结构图如下:

自适应模糊神经网络ANFIS
ANFIS 模型计算主要采用 Takagi-Sugeno 模糊模型,假设该模型拥有 x,y 两个输入量与 z 一个输出量,形成 2 个 if-then 语言规则,公式为:

规则1:(\text { if } x=A_{1} \quad y=B_{1} \text {, then } f_{1}=p_{1} x+q_{1} y+r_{1})

规则2:(\text { if } x=A_{2} \quad y=B_{2} \text {, then } f_{2}=p_{2} x+q_{2} y+r_{2})

式中: (f_i) 为规则 i 所对应的输出结果; (A_1),(B_1)为规则 i 对应的非线性参数; (p_1),(q_1),(r_1) 为规则 1 的结论参数, (p_2),(q_2),(r_2) 为规则 2 的结论参数。 x,y 两个输入量形成的 ANFIS 模型计算结构如下图所示,共包含 5 层结构,前3层为规则前件,后2层为规则后件。每层结构功能及计算公式为:

第一层( 输入层) ,将输入变量模糊化,转换为不同模糊集的隶属度。公式为:

(Q_{i}^{1}=\mu A_{i}(x) \quad i=1,2)

(Q_{i}^{1}=\mu B_{i-2}(x) \quad i=3,4)

式中: i为节点; x,y 分别表示节点 i的输入变量; $\mu A_{i}(x) $ ,$\mu B_{i}(y) $为 x,y 输入变量的隶属函数; (Q_{i}^{1})为第一层 i节点对应的隶属度值。

第二层: 计算各模糊规则的触发强度,由不同模糊集的隶属度相乘所得。公式为:

(Q_{i}^{2}=w_{i}=\mu A_{i}(x) \times \mu B_{j}(y))

第三层: 将第二层所得的触发强度归一化,为 第 i 个规则在所有规则库中的触发比值,即在整个推理过程中使用到第 i 个规则的程度。计算公式为:

(Q_{i}^{3}=\bar{w}{i}=\frac{w{i}}{\left(w_{1}+w_{2}\right)})

第四层: 计算规则输出。公式为:

(Q_{i}^{4}=\bar{w}{i} f{i}=\bar{w}{i} (p{i} x+q_{i} y+r_{i}))

第五层: 去模糊化,得到确切的输出。计算公式为每条规则的结果加权平均(权重为规则的归一化触发程度,理解为计算期望),即:

(Q_{i}^{5}=\sum_{i} \bar{w}{i} f{i}=\frac{\sum_{i} w_{i} f_{i}}{\sum_{i} w_{i}})

Original: https://www.cnblogs.com/wkfvawl/p/16529220.html
Author: 王陸
Title: 自适应模糊神经网络ANFIS

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/553962/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【Golang】golang实现发送微信服务号模板消息

    下面是一些简化后的代码,供大家参考 引入的包是这些 使用了内存存储access_token 路由部分 控制器部分 函数部分 我的公众号相关配置存储到了数据库里,根据ent_id去查…

    技术杂谈 2023年6月1日
    068
  • InnoDB什么时候会锁表?

    我们常常说InnoDB是行锁,但是这里介绍一下它锁表的情况。 InnoDB行锁是通过索引上的索引项来实现的,这一点MySQL与Oracle不同,后者是通过在数据中对相应数据行加锁来…

    技术杂谈 2023年5月31日
    098
  • 冒泡排序

    冒泡排序 冒泡排序是一种常用且非常简单的排序法,对数组内的元素进行比较排序,它的算法描述如下: 比较相邻的两个元素,如果第一个比第二个大,就交换它们的位置 对每一对相邻元素都进行比…

    技术杂谈 2023年7月25日
    063
  • missing required cgroups: cpu

    missing required cgroups: cpu 公司给了21台AWS的Debian11服务器搭建k8s测试环境,在本地虚拟机测试安装脚本没有问题,结果在阿里云租了几台服…

    技术杂谈 2023年5月31日
    091
  • 正投影与斜投影

    正投影 设物体上任一点的三维坐标为(p(x,y,z)),投影后的三维坐标为(p^,(x^,,y^,,z^,)),则正交投影方程为: [ \left{\begin{array}{rc…

    技术杂谈 2023年7月11日
    0122
  • Fetch:下一代 Ajax 技术

    Ajax,2005年诞生的技术,至今已持续了 10 年。它是一种在客户端创建一个异步请求的技术,本质上它不算创新,是一组技术的组合。它的核心对象是 XMLHttpRequest。 …

    技术杂谈 2023年6月1日
    072
  • QSC的算法讲座第三季开始啦

    【背景】我已经毕业两年了,正所谓金三银四,现在正是刷题跳槽的好时节。上周同组的兄弟也讲了一下做自媒体的好处,所以我也开始重新举办算法讲堂了。 【时间】2020年12月7日~2020…

    技术杂谈 2023年6月1日
    077
  • rocketmq 精华

    介绍 rocket mq 翻译成中文就是火箭消息队列,从名字就可以看出来,它是一个很快的消息队列… rocket mq 是 阿里巴巴研制的后面贡献给 apache 基金…

    技术杂谈 2023年7月25日
    076
  • Hadoop(三)通过C#/python实现HadoopMapReduce

    MapReduce Hadoop中将数据切分成块存在HDFS不同的DataNode中,如果想汇总,按照常规想法就是,移动数据到统计程序:先把数据读取到一个程序中,再进行汇总。 但是…

    技术杂谈 2023年7月24日
    074
  • ORACLE重编译同义词(synonym)遇到ORA-01031总结

    我们在编译INVALID的同义词(synonym)的时候,可能在某些版本会遇到一些特殊权限问题,具体来说是遇到ORA-01031错误。下面构造这样一个例子: 如下所示,scott用…

    技术杂谈 2023年5月31日
    074
  • unity –项目总结

    最近做的unity的项目涉及到的问题如下: 1.绘制折线图问题: 起初利用的unity自带的linerender组件,这种方法绘制的线不均匀,效果不好。然后又利用画线插件Ves&#…

    技术杂谈 2023年5月31日
    0106
  • Saltstack系列4:Saltstack之Grains组件

    grains说明 grains是Saltstack最重要的组件之一,grains的作用是手机被控主机的基本信息,这些信息通常都是一些静态类的数据,包括CPU、内核、操作系统、虚拟化…

    技术杂谈 2023年5月31日
    083
  • 程序员与产品之间应该如何配合,什么时候技术为重,什么时候产品为重?

    原创不易,求分享、求一键三连 如图所示,产品狗在一次与程序员的战斗中吃了亏,后续马上想要找回场子! 技术的”劣根性” 近期有一个不好的Case,在一些跨部门…

    技术杂谈 2023年6月1日
    079
  • 【对话生成】常见对话生成数据集整理,含下载链接(更新至2022.06.04)

    本文主要整理对话生成领域相关的数据集,尤其是开放域对话生成。当前可以把开放域对话生成任务划分为:传统开放域对话生成、多模态对话生成、情感对话生成、个性化对话生成、策略控制对话生成等…

    技术杂谈 2023年7月24日
    068
  • 《Vision Permutator: A Permutable MLP-Like ArchItecture For Visual Recognition》论文笔记

    论文题目:《Vision Permutator: A Permutable MLP-Like ArchItecture For Visual Recognition》论文作者:Qi…

    技术杂谈 2023年6月21日
    099
  • opendrive中的坐标系

    来源: (46条消息) OpenDrive格式高精度地图详细解析及其使用(1.栅格地图、OpenDrive坐标系以及参考线介绍)_LeeLee是一个小学生的博客-CSDN博客_op…

    技术杂谈 2023年5月30日
    078
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球