小脑神经网络——CMAC
小脑神经网络小脑神经网络(CMAC-Cerebellar Model Articulation Controller)是由Albus最初与1975年基于神经生理学提出的,它是一种基于局部逼近、简单快速的神经网络,能够学习任意多维非线性拟合。相比于BP网络等全局逼近方法,CMAC具有以下优点
联系方式:860122112@qq.com
小脑神经网络
小脑神经网络(CMAC-Cerebellar Model Articulation Controller)是由Albus最初于1975年基于神经生理学提出的,它是一种基于局部逼近、简单快速的神经网络,能够学习任意多维非线性拟合。相比于BP网络等全局逼近方法,CMAC具有以下优点
-局部学习,每次修改权值少,学习速度快,适合在线学习
-具有一定的泛化能力,即相近输入产生相近输出,不同输入给出不同输出
-具有连续(模拟)输入输出能力
-采用寻址编程方式,在利用串行计算机仿真时,它将使响应速度加快
-对学习数据出现的次序不敏感
CMAC最初主要用来求解机械手的关节运动,后来被进一步应用于机械人控制、模式识别、信号处理以及自适应控制等领域
CMAC结构
CMAC最大特点是局部逼近,因此它具有特殊的结构。
如上图,假设输入是二维,即 X=(x1,x2) <script type="math/tex" id="MathJax-Element-79">X=(x_1,x_2)</script>, x1,x2∈[0,5] <script type="math/tex" id="MathJax-Element-80">x_1,x_2\in[0,5]</script>(即使不是也可以先标准化, [0,5] <script type="math/tex" id="MathJax-Element-81">[0,5]</script>不是固定的,可以是其他,本文只是为了好理解而使用这个范围)。
(1)每一维的输入 xi <script type="math/tex" id="MathJax-Element-82">x_i</script>都具有层 m <script type="math/tex" id="MathJax-Element-83">m</script>和块
(2)输入的维度之间,相同的层所激活的块联合起来对应一个权值地址空间。如上图,当前 X=(3.5,3.3) <script type="math/tex" id="MathJax-Element-90">X=(3.5,3.3)</script>, x1 <script type="math/tex" id="MathJax-Element-91">x_1</script>在不同层激活的块是B、D、F、G, x2 <script type="math/tex" id="MathJax-Element-92">x_2</script>是b、d、f、g,此时所对应的权值索引是Bb、Dd、Ff、Gg,把这4个权值加起来就是输出。由此可以看出,有多少层就激活多少个权值。同时,不存在同维度块联合、不同维度不同层块联合的情况,也就是说不存在AB、AC、Ad等情况。由此算来,可能使用到的权值个数为 m⋅nbn <script type="math/tex" id="MathJax-Element-93">m\cdot nb^n</script>, n <script type="math/tex" id="MathJax-Element-94">n</script>为输入的维度。
(4)一般CMAC网络的整体构架如下图,第一层是输入层;第二层是虚拟联想空间,即对应上图的Aa、Ab、Ba、Bb……;第三层是物理存储空间,即根据第二层给出的索引找到对应的权值;第四层即输出层。
(5)如果输入维度很大,根据
(6)权值更新公式为
wt+1=wt+α/m⋅e <script type="math/tex" id="MathJax-Element-96">w_{t+1}=w_t+\alpha/m\cdot e</script>
α <script type="math/tex" id="MathJax-Element-97">\alpha</script>为学习率, m <script type="math/tex" id="MathJax-Element-98">m</script>是层的个数,
模糊小脑神经网络(FCMAC)结构
FCMAC实际上就是在每个块里面加入了一个模糊隶属度函数,例如如果使用的是高斯模糊,则是在块里加入高斯函数,如下图:
高斯函数的均值
CMAC和FCMAC相关代码
https://github.com/DajunZhou/Gauss_CMAC
更多推荐
所有评论(0)