摘 要: 詳細介紹了CMAC神經網絡結構、中間層作用函數地址的計算方法、輸出層權值的學習算法,并利用CMAC神經網絡對水下機器人深度模糊控制器進行了學習。仿真結果表明,訓練得到的CMAC神經控制器控制效果良好,中間層作用函數地址的計算方法正確。
關鍵詞: CMAC神經網絡 模糊控制 水下機器人
小腦模型關節控制器神經網絡(Cerebella Model Articulation Controller Neural Network,即CMAC NN)由J.S.Albus 于1975年首先提出并由W.T.Miller等人成功運用于機械手的實時動態軌跡跟蹤控制。與多層前項神經網絡這樣的全局逼近神經網絡[1]相比,CMAC神經網絡在任意時刻的學習都是少數的輸出層權值的調節過程,并且是一個線性優化過程,因此具有學習速度快的特點,非常適合于在線實時控制。對于大多數的控制問題,完全可以達到與多層前向神經網絡相同的控制效果。目前,CMAC神經網絡被越來越多地應用于機器人控制、模式識別、信號處理以及自適應控制等領域。
1 CMAC的結構及工作原理
CMAC是類似于感知器的基于網格基的聯想記憶神經網絡。它由輸入層、中間層和輸出層組成。在輸入層與中間層和中間層與輸出層之間分別有由設計者預先確定的輸入層非線性映射和輸出層權值的自適應線性映射。在輸入層對n維輸入空間進行劃分,形成一個n維網格基,任意一個輸入都降落到此n維網格基的一個超立方體單元內。中間層由若干個基函數構成,對任意一個輸入只有少數幾個基函數的輸出為非零值,我們稱非零輸出的基函數為作用基函數,作用基函數的個數為泛化參數ρ(generalization parameter),它規定了網絡內部影響網絡輸出的區域大小。中間層基函數的個數用P表示,泛化參數應滿足ρ<<P。在中間層的基函數與輸出層的網絡輸出之間通過若干個連接權進行連接,它是一個全連接,在網絡訓練階段,可以通過梯度下降算法對權值進行調整。CMAC神經網絡的設計主要包括輸入空間的劃分、輸入層非線性映射的實現、輸出層權值學習算法,下面給予詳細介紹。
1.1 CMAC 輸入空間的劃分
設計CMAC神經網絡的第一步是對輸入空間的劃分方法進行定義。設輸入向量為x=[x1x2...xn]T,且xi∈Ri,Ri為一有限區間,定義為:
通常,所有左邊的外節點均置于ximin,所有右邊的外節點均置于ximax。若兩節點在同一位置,則稱該節點為重節點。所有這些節點將整個區間RI分為ri+1個子區間Rr,j(0≤j≤ri):
內節點的選區辦法可以是在區間[ximin,ximax]等間隔劃分或是根據實際問題的需要非均勻劃分,即在期望輸出變化快的區域多劃分,在期望輸出變化慢的區域少劃分。對輸入空間的劃分不僅影響網絡的內存消耗,還影響網絡的建模能力和學習收斂速度。
1.2 CMAC輸入層非線性映射的實現
設計CMAC輸入層非線性映射的目的是保證對任意一個輸入,在中間層只有ρ個基函數的輸出值為非零值,并且在輸入沿某一輸入坐標軸平行移動一個超立方體單元后,只有一個非零輸出的基函數與原來的不同。而在輸入沿某一坐標軸平行移動ρ個超立方體單元后,已無任何一個非零輸出的基函數與原來相同,這樣就保證了當輸入相近時,輸出也比較相近,當輸入的距離較遠時,相應的輸出互不相關。并且,輸出層權值的調整也是局部的,在每一次學習過程中只有ρ個權值發生調整,對兩個相近的輸入,只有少量的權值發生變化,而不影響大多數權值,這樣大大加快了網絡學習速度,減少了學習干擾。當泛化參數ρ增大時,學習變得缺少局部特性,網絡的建模能力通常也會下降。
由于對任意一個輸入向量x,只有ρ個中間層的基函數的輸出非零,問題歸結為找到這ρ個基函數在中間層p維基函數向量a(t)中的地址。下面分別給出在輸入為一維、二維和多維情況下的作用基函數的地址的計算方法。
1.2.1 一維輸入的計算方法
當n=1時,共有ρ個作用基函數輸出非零,其中第j個作用基函數地址ad(j)的計算方法如下:
1.2.2 二維輸入的計算方法
當n=2時,ad(j)的計算方法如下:
1.2.3 多維輸入的計算方法
當n>2時,第j個作用基函數地址ad(j)的計算方法如下:
1.3 CMAC 基函數的輸出
本文采用二進制CMAC神經網絡,作用基函數的輸出為1/ρ,這樣CMAC網絡作用基函數的輸出和為
1.4 CMAC 輸出層權值學習算法
本文采用帶有輸出死區的NLMS學習算法:
這里,δ為學習速率,當δ∈(0,2)時,學習收斂,輸出誤差。
2 水下機器人CMAC神經網絡控制器設計
采用CMAC神經網絡對水下機器人深度模糊控制器進行學習,從而得到水下機器人CMAC神經網絡控制器。
2.1 水下機器人深度模糊控制器
本文對某水下機器人深度通道設計了一PD型模糊控制器,以系統輸出誤差e及誤差變化率e’作為模糊控制器的輸入,e∈[-1.5m,1.5m],e’∈[-0.5m/s,0.5m/s],模糊控制器的輸出是z軸方向上的推力,u∈[-270N,270N]。模糊控制器的輸入和輸出語言變量的模糊子集均為NL(負大)、NM(負中)、NS(負小)、ZE(零)、PS(正小)、PM(正中)、PL(正大)。模糊隸屬函數采用等腰三角形,且隸屬函數的重合度為2,采用Mandani推理方法。模糊控制規則表如表1所示。
模糊控制器的輸出曲面見圖1,模糊控制器作用下的系統輸出見圖2。
2.2 水下機器人CMAC神經網絡深度控制器
本文利用CMAC神經網絡對水下機器人CMAC模糊深度控制器進行學習,以模糊控制規則的前件和后件隸屬函數的中心對應的e、e’和u的取值作為訓練樣本對,組成49個訓練樣本對。CMAC神經網絡的設計參數如下:泛化參數ρ=5,輸入空間為均勻劃分,劃分數為20*20,覆蓋偏移向量d1=[1 3]T,d2=[2 1]T,d3=[3 4]T,d4=[4 2]T,d5=[5 5]T,輸出死區ζ=5。訓練得到的CMAC神經網絡深度控制器輸出曲面見圖3,該控制器作用下的系統輸出見圖4。
參考文獻
1 孫增圻.智能控制理論及應用.北京:清華大學出版社,廣西科學技術出版社,1997
2 石寺博.遙控無人潛器的運動仿真.船工技術譯叢,1987(3):53~62
3李士勇,夏乘志.模糊控制和智能控制理論與應用.哈爾濱工業大學出版社,1990