




已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
神經網絡課程設計 神經網絡用于機器手臂的控制神經網絡用于機器手臂的控制機械手是一種高度非線性、強耦合、時變的系統(tǒng),對它的控制基本為兩種:基于精確數學模型的傳統(tǒng)控制和與模型無關的智能控制。由于機械手系統(tǒng)的復雜性,其精確的數學模型難以建立,使應用傳統(tǒng)的控制手段對其進行的控制效果欠佳。常用的智能控制手段如模糊控制、人工神經網絡等又有各自的局限性。一般說來,模糊邏輯方法雖然長于表達近似與定性的知識,卻通常無學習能力;神經網絡具有學習能力,但內部知識的表達方式又是不清楚的,這樣神經網絡在每次學習時只能從任意初始條件開始,不能利用必要的初始經驗或知識,收斂速度慢,易陷入局部極限;而由于缺乏學習能力,模糊邏輯方法只能主觀或試湊地選擇隸屬函數和模糊規(guī)則,不能根據積累的經驗自動地改善系統(tǒng)的性能。上世紀70年代,J.S.Albus根據神經生理學小腦皮層的結構特點,提出了一種小腦模型關聯控制(cerebellar model articulation controller),即CMCA神經網絡,是一種類似于Perceptron的相聯記憶方法,與模糊邏輯不但是相互補充的,而且也是相互結合的。首先它用連接主義來表達模糊邏輯控制器,引入了學習機制,也帶來了兩者結合的諸多優(yōu)點,如存儲容量的減小,泛化能力的增加,以及連接主義結構的容錯性等。其次,在CMAC的分布表達中,一個值由散布于許多計算單元的活性模式表示,每個計算單元又涉及許多不同值的表達,因此每個計算單元都有一個感受野(receptive field),即它表達的所有值的集合,這相當于每個計算單元都對應一個模糊集合,或者說感受野相當于隸屬函數,這正是它們能夠有機結合的一個基礎。1CMAC的優(yōu)越性神經網絡可分為全局逼近神經網絡和局部逼近神經網絡,如果網絡的一個和多個連接權系數或自適應可調參數,在輸入空間的每一點對任何一個輸出都有影響,則稱該神經網絡為全局逼近網絡。如BP網絡,每一次樣本學習都需要重新調整網絡的所有權值,收斂速度慢,易陷入局部最小,很難滿足控制系統(tǒng)的實時性要求;若對輸入空間的某個局部區(qū)域,只有少數幾個連接權影響網絡的輸出,則稱該網絡為局部逼近網絡,從而使局部逼近網絡具有學習速度快的優(yōu)點。CMAC、RBF以及某些模糊神經網絡是局部逼近網絡。CMAC比其他神經網絡的優(yōu)越性體現在:(1) CMAC神經網絡把信息存儲在局部的結構上,在保證函數逼近的前提下,學習速度快。(2) CMAC函數逼近器對學習數據出現的次序不敏感,因此,CMAC在時變、非線性系統(tǒng)控制中得到廣泛應用。(3) CMAC結構簡單,易于硬件實現和軟件實現。因此,CMAC已被越來越多的學者所關注,并得到廣泛的應用。2CMAC模型結構CMAC的模型結構如圖1所以,它的工作過程是一系列映射。輸入狀態(tài)空間S的維數由對象決定。一般來說,輸入是模擬量,需要進行量化,然后才能送入存儲區(qū)A,狀態(tài)空間中的每一點將同時激活A中的c個單元。網絡輸出F(si)為c個對應單元中的值(即權wi)累加的結果,如對應s1輸入單眼有c4個,則Fig1 CMAC結構模型可把c看作是信號檢測單元的感受野大小,其值與泛化能力有關,所以有時稱c為范化參數。如果輸入S有m個分量(輸入向量時m維的),而每一分量有q個量化等級,則S的可能狀態(tài)有qm個,它們都要映射到A中,并有其對應的(權)值。在S中比較接近的那些樣本在A中會出現交疊,如圖1中s2與s3,它們有兩個權時交疊的,從而其輸出F(s2)和F(s3)也較相近,這可起到泛化的作用,對S中相距很遠的矢量這種泛化是不起作用的。如果用Hamming距離d表示si,sj的差異程度,則在A存儲區(qū)內交疊的單元數約為cdij,cdij0的那些交疊區(qū)可以看作聚類的領域。這樣,輸入空間S中相近的向量映射后產生聚類。對一些實際系統(tǒng),qm往往很大,例如10維輸入,每個量化為100個等級,則輸入空間有100個可能的狀態(tài),這個需要A中至少有100個權與其對應。由于絕大數學習問題并不要包含所有狀態(tài),所以實際上不需要那么多的地址單元。A只是一個虛擬地址,可把A的地址通過散列編碼映射到一個小的多的物理地址Ap中,且在Ap中每一個狀態(tài)也有c個地址與之對應,輸出仍滿足但在Ap中c個單元是隨機的,wi可通過學習得到,S到Ap部分是非線性映射,而Ap到輸出F是線性映射。3工作原理圖2畫出了一個較詳細的二維輸入,一維輸出的CMAC模型,下面對每一部作分析。(1) S到M的映射Fig2 CMAC的工作原理圖輸入為二維,量化感知器M也分為兩組,圖2中M的每一小格是一個感知器,感知器的個數是量化的級數,和的量化級數不一定相同,對任意輸入或,在M上可找到其對應的感知器,為泛化需要,在對應量化周圍c格感知器同時被激勵。如表1所以,c4,a,b,c,l表示感知器編號,表示輸入一個模擬對應的量化值。任一量化值將引起c個感知器激活為1,每個感知器也可對應于c個輸入量。例如是25之間,為1的個數與聚類范圍c相同,c可由認為選擇,表1中c4,shijic可以很大,例如從10100。希望S中靠近的值在中也較近。把表中為1的值表示為a,b,c,后,可把表1整理化為表2,其中每一S值與4個感知器對應。可以看出輸入空間中相近的在輸出中也接近,且有表1 感知器的激活情況 表2 與各對應的激活感知器 例如對兩個接近的量5和4來說, 可見 一般情況下,輸入是多維的,以二維情況為例,設量化為5級,量化為7級,它們分別用大寫和小寫字母表示,如表3和表4所示。表3 表2 與各對應的激活感知器 表4 表2 與各對應的激活感知器 在一般情況下 則映射為(2) M到A的映射M到A的映射是通過滾動組合得到的。其原則還是輸入空間相近的矢量在輸出空間也相近,如果輸入感知器的興奮元為c個,不管輸入是多少維,A中地址也對應c個。以二維c4情況為例,映射如表5,用與的關系組合后,得到A的地址表5所示。(下圖為表5)在表中,和組合成,每個中含c個單元,在A中同樣有c個單元被激勵。在表5中,每一組合Ae,Cf,都代表A中的一個地址,正如前面所說,這樣的地址共有個,數量很大,但實際能被激勵的地址是非常稀疏的,可使用雜散技術把很大的A空間壓縮到較小的實際空間中去。(3) A到的映射雜散技術是將分布稀疏,占用較大存儲空間的數據作為一個偽隨機發(fā)生器的變量,產生一個占用空間小的隨機地址,用于存放A中的數據。實現這一個壓縮的最簡單方法是將A中的地址除以一個大的質數,所得余數就作為一個偽隨機碼,表示為中的地址。用雜散技術會帶來沖撞問題,即A中不同的地址在中卻被映射到同一個地址,若映射的隨機性很強,將減少沖撞的概率,但仍不可避免。在CMAC中,我們忽略這種沖撞,因為沖撞部強烈時,可將其看作一種隨機擾動,通過學習算法的迭代過程,可逐步將影響減小,而不影響輸出結果。(4)到F的映射網絡輸出為 ,存于的個地址中,因為經的變化后,有個地址被選中,如不考慮沖撞,在中也有個地址對應,由于使用雜散技術,在中這個地址是隨機分布的。輸出是這個地址中所存的權值的疊加,對應某一輸入樣本,總可通過調整權值,達到應有的輸出值。4學習算法 CMAC的學習采用誤差糾正算法,如圖3所示。權值修正公式為 為應有輸出, c,為綜合聚類神經元數修正方法可以用每個樣本修正一次的方法,也可用所有樣本都輸入一輪后在修正的批學習方法。Fig3 CMAC的學習算法5程序作業(yè)算法的思路來此書本,為了驗證所做算法的正確性,首先使用一個一維的進行驗證。通過選擇可以使用CMAC算法對一個正弦波形進行逼近。見程序一。(程序見附錄)Fig1.1主要是通過圖像來看CMAC的效果,通過多次對權值的修改,達到最好的效果。下面分別是三次網絡的訓練的逼近圖。Fig1.1是訓練三次的結果Fig1.2是它的權值分布,Fig2.1也是訓練五次的結果,Fig2.2是它的權值分布,Fig3.1是訓練九次的結果,Fig3.2是它的權值分布:(其中顯示的SSe是21個點上的誤差的和均方根)Fig 1.2權值分布epoch = 1 SSE = 0.926epoch = 2 SSE = 0.231epoch = 3 SSE = 0.058Fig2.1Fig2.2 權值分布epoch = 1 SSE = 0.926epoch = 2 SSE = 0.231epoch = 3 SSE = 0.058epoch = 4 SSE = 0.014epoch = 5 SSE = 0.004Fig3.1Fig3.2權值分布epoch = 1 SSE = 0.926epoch = 2 SSE = 0.231epoch = 3 SSE = 0.058epoch = 4 SSE = 0.014epoch = 5 SSE = 0.004epoch = 6 SSE = 0.001epoch = 7 SSE = 0.000epoch = 8 SSE = 0.000從上述可以看出在第六次訓練的時候在規(guī)定的誤差精度權值的分布已經很好的滿足條件。同時可以看出cmac算法的優(yōu)越性,在很少次數訓練仍然可以達到很好的效果,從三次權值分布可以看出,權值分布形狀大致是一樣的,可以看出在很少的步驟就可以達到效果,所不同的就是精度問題。而精度可以從誤差SSE看出。在實際程序中同時還使用cmac算法對波形為階梯波形以及脈沖波形進行訓練。應用程序可以得到相應的訓練結果(如下圖)梯形波形權值分布脈沖波形權值分布從各個不通的波形可以看出所做算法的正確性,最后按照實驗要求對機器人控制的模擬.同樣按照課本上的思路,由于它是五維的輸入,算法相對復雜一些。(見附錄程序二)課程設計要求以及原理請看神經網絡與模糊控制P151-156的詳細說明。其中最主要的部分通過cmac控制器實現,具體的學習原理可以看前面的具體敘述。同樣通過圖形觀察訓練情況如圖:訓練一次的情況:誤差和的均方根是:SSE=5.0533e-005訓練第二次情況:SSE=5.0439e-006訓練第三次SSE = 4.7503e-006訓練第四次SSE =5.0070e-006四次訓練以后的權值分布在機器人控制,使用了書上的學習步長為0.00001,但是在實際使用中,效果不是很好,收斂太慢,在實際學習中使用的學習步長是0.1,效果比較明顯,然而當學習步長為0.5,1.0的時候算法變得不收斂,在本程序中可以在matlab的環(huán)境對這幾種學習步長進行比較.可以具體運行程序觀察。6不足對學習步長得確定沒有通過具體的分析,是通過猜測估計得到.而算法的實現很重要的一節(jié)是其魯棒性的測試,但是由于時間問題沒有對它的魯棒性進行分析。這是很大的不足之處。7補充在算法中求對物理地址的實際映射使用的算法有很多。本程序還使用了來自網絡的算法。同樣可以得到書上算法的效果,但在實驗中沒有具體分析各個算法不同之處。希望在將來里能更深入的研究。附錄程序一function cmac1d()% A single input single output CMAC networkhelp cmac1dclf resetpausetime = 0.1;P = -1:0.1:1;P3 = -1:0.005:1;% INITIALIZE iprange = 256;disp(sprintf(iprange is %d,iprange);width=1;c=10;beta=0.5;memreq = c*ceil(iprange/width);s = sprintf(number of weights required is %d,memreq);disp(s);memsize=0;% INITIALISE WEIGHTS% =if memsize = 0 wts = zeros(memreq,1);else wts = zeros(memsize,1);end% PLOT CMAC OUTPUTwts,netout = modcmac(wts,(2.0)*64,1,1.0,1.0,iprange,c,width,memsize);for k=1:401 wts,op(k) = opcmac(wts,(P3(k)+2.0)*64,1,iprange,c,width,memsize);end;plot(P3,op,r);axis(-1.0,1.0,-2.0,2.0);title(CMAC output after one training example);xlabel(Input Vector P);ylabel(Network Output);disp(any key to continue);pause%Define the associated twenty-one 1-element targets.z = menu(select target function, . damped sinusoid, . step, .impulse);disp()if z = 1 T = -.9602 -.5770 -.0729 .3771 .6405 .6600 .4609 . .1336 -.2013 -.4344 -.5000 -.3930 -.1647 .0988 . .3072 .3960 .3449 .1816 -.0312 -.2189 -.3201;else if z = 2 T = 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1;else T = 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0;endendplot(P,T,+);title(Training Vectors);xlabel(Input Vector P);ylabel(Target Vector T);hold on% PLOT INITIALif memsize = 0 wts = zeros(memreq,1);else wts = zeros(memsize,1);endfor i=1:401 wts,op(i) = opcmac(wts,(P3(i)+2.0)*64,1,iprange,c,width,memsize);endplot(P3,op,m);title(Function Approximation);xlabel(Input Vector P);ylabel(Target + Network -);h = get(gca,Children);h = h(1); hold onpause2(pausetime);% TRAIN THE NETWORK%=% TRAINING PARAMETERSmax_epoch = input(enter maximum number of training epochs );epoch = 1;SSE = 1;while (epoch 0.02)for i = 1:21 wts,netout = modcmac(wts,(P(i)+2.0)*64,1,T(i),beta,iprange,c,width,memsize);endfor k=1:401 wts,op(k) = opcmac(wts,(P3(k)+2.0)*64,1,iprange,c,width,memsize);end for i = 1:21 wts,p=opcmac(wts,(P(i)+2.0)*64,1,iprange,c,width,memsize); neterr(i) = T(i) - p; end SSE = sumsqr(neterr); fprintf(epoch = %d SSE = %5.3fn,epoch,SSE); delete(h); h = plot(P3,op,m); drawnow pause2(pausetime); epoch = epoch + 1; endenddisp(any key to continue);pausehold offbar(wts,r)title(Network Weights);xlabel(Weight Number);ylabel(Weight Value);if memsize = 0 set(gca,xlim,0 memreq);else set(gca,xlim,0 memsize);endfunction wts,op=opcmac(wts,ip,ipdim,iprange,c,width,memsize)% OP = OPCMAC(WTS,IP,IPRANGE,C,WIDTH,MEMSIZE)HASH=12345;addrs=zeros(c,1);quantisation=ceil(iprange/width);offset=width/c;ofs=0;op=0;for i=1:c address=0; shift=1.0; for j=1:ipdim %address=address+rem(ceil(ip(j)+ofs)/width),quantisation)*shift; address=address+ceil(ip(j)/width)*shift; shift=shift*quantisation; end; % address=address+shift*i; if memsize0 addrs(i)=ceil(rem(log(address+1)*HASH),memsize); else %addrs(i)=ceil(rem(address,c*ceil(iprange/width); memreq = c*ceil(iprange/width); addrs(i)=ceil(rem(address,memreq); end; ofs=ofs+offset; op=op+wts(addrs(i); end;function wts,mod=modcmac(wts,ip,ipdim,target,beta,iprange,c,width,memsize)addrs=zeros(c,1);quantisation=ceil(iprange/width);offset=width/c;ofs=0;sum=0.0;for i=1:c address=0; shift=1.0; for j=1:ipdim address=address+ceil(ip(j)/width)*shift; shift=shift*quantisation; end; address=address+shift*i; if memsize0 addrs(i)=ceil(rem(log(address+1)*HASH),memsize); else memreq = c*ceil(iprange/width); addrs(i)=ceil(rem(address,memreq); end; ofs=ofs+offset; sum=sum+wts(addrs(i); end; delta=beta*(target-sum)/c; for i=1:c wts(addrs(i)=wts(addrs(i)+delta; end; mod=sum+delta*c;程序二function robot()% neural networks housework%use cmac simulink 2D robotic operation% CMAC operates as a form of lookup table. Note, however,% that it generalises, i.e. is capable of producing outputs% in response to inputs not previously experienced.%5 dim input 3 dim outputhelp robot;clf reset;pausetime=0.1;quantisation=200;c=40;memsize=3080;pausez = menu(select step of studying, . 0.00001, . 0.1,. 0.5,. 1.0);if z=1 seta=0.00001;else if z=2 seta=0.1; else if z=3 seta=0.5; else if z=4 seta=1.0; end; end; end;end;disp()%seta=0.1;l=0.5 0.5 0.5;ipdim=5;disp(sprintf(quantisation is; %d,quantisation);disp(sprintf(acceptive field is: %d,c);disp(sprintf(memsize is : %d,memsize);iprange=360;width=iprange/200;% data initial xd=zeros(200,2);disp(any key to continue);pausez = menu(select target function, . Circle, . Line);disp()if z = 1 for t=1:200 xd(t,1)=0.5-0.25*cos(0.5*pi*0.02*(t-1); xd(t,2)=0.25+0.25*sin(0.5*pi*0.02*(t-1); end;else for t=1:200 %xd(t,1)=0.5-0.25*cos(0.5*pi*0.02*(t-1); %xd(t,2)=0.25+0.25*sin(0.5*pi*0.02*(t-1); xd(t,1)=0.5-0.0025*t; xd(t,2)=0.0025*t; end;end;k=1:200;hold off;plot(xd(k,1),xd(k,2);hold on;deta=-9.14 69.87 131.58;x=l(1)*cos(deta(1)*2*pi/360)+l(2)*cos(deta(1)+deta(2)*2*pi/360)+l(3)*cos(deta(1)+deta(2)+deta(3)*2*pi/360) . l(1)*sin(deta(1)*2*pi/360)+l(2)*sin(deta(1)+deta(2)*2*pi/360)+l(3)*sin(deta(1)+deta(2)+deta(3)*2*pi/360);jmat=-l(1)*sin(deta(1)*2*pi/360)-l(2)*sin(deta(1)+deta(2)*2*pi/360)-l(3)*sin(deta(1)+deta(2)+deta(3)*2*pi/360) . -l(2)*sin(deta(1)+deta(2)*2*pi/360)-l(3)*sin(deta(1)+deta(2)+deta(3)*2*pi/360) . -l(3)*sin(deta(1)+deta(2)+deta(3)*2*pi/360); . l(1)*cos(deta(1)*2*pi/360)+l(2)*cos(deta(1)+deta(2)*2*pi/360)+l(3)*cos(deta(1)+deta(2)+deta(3)*2*pi/360) . l(2)*cos(deta(1)+deta(2)*2*pi/360)+l(3)*cos(deta(1)+deta(2)+deta(3)*2*pi/360) . l(3)*cos(deta(1)+deta(2)+deta(3)*2*pi/360) ;wts=zeros(memsize,3);% weight stacksse=1;%sse=|Et| addrs=zeros(c,3);epcoh = input(enter number of training epochs );%epcoh=4;for p=1:epcoh disp(any key to continue); pause k=1:200; hold off; plot(xd(k,1),xd(k,2); hold on; for t=1:200 delta_x=xd(t)-x; ip=deta 360*delta_x+90 90 90 0 0; HASH=123456; offset=width/c; ofs=0; seta_delta=0 0 0; for i=1:c address=0; shift=1; for j=1:ipdim address=address+(rem(ceil(ip(j)+ofs)/width),quantisation)*shift; %address=address+(ceil(ip(j)/width)*shift; shift=shift*quantisation; end; address=address+shift*i; for j=1:3 addrs(i,j)=ceil(rem(log(address+1)*HASH),memsize); %addrs(i,j)=mod(address,memsize); end; ofs=ofs+offset; for j=1:3 seta_delta(j)=seta_delta(j)+wts(addrs(i,j),j); end; end; deta=deta+seta_delta; x=l(1)*cos(deta(1)*2*pi/360)+l(2)*cos(deta(1)+deta(2)*2*pi/360)+l(3)*cos(deta(1)+deta(2)+deta(3)*2*pi/360) . l(1)*sin(deta(1)*2*pi/360)+l(2)*sin(deta(1)+deta(2)*2*pi/360)+l(3)*sin(deta(1)+deta(2)+deta(3)*2*pi/360); jmat=-l(1)*sin(deta(1)*2*pi/360)-l(2)*sin(deta(1)+deta(2)*2*pi/360)-l(3)*sin(deta(1)+deta(2)+deta(3)*2*pi/360) . -l(2)*sin(deta(1)+deta(2)*2*pi/360)-l(3)*sin(deta(1)+deta(2)+deta(3)*2*pi/360) . -l(3)*sin(deta(1)+deta(2)+deta(3)*2*pi/360); . l(1)*cos(deta(1)*2*pi/360)+l(2)*cos(deta(1)+deta(2)*2*pi/360)+l(3)*cos(deta(1)+deta(2)+deta(3)*2*pi/360) . l(2)*cos(deta(1)+deta(2)*2*pi/360)+l(3)*cos(deta(1)+deta(2)+deta(3)*2*pi/360) . l(3)*cos(deta(1)+deta(2)+deta(3)*2*pi/360) ; Et=xd(t)-x; seta_delta=seta_delta-0.1*(-300*Et*jmat+seta_delta); deta=deta+seta_delta; x=l(1)*cos(deta(1)*2*pi/360)+l(2)*cos(deta(1)+deta(2)*2*pi/360)+l(3)*cos(deta(1)+deta(2)+deta(3)*2*pi/360) . l(1)*sin(deta(1)*2*pi/360)+l(2)*sin(deta(1)+deta(2)*2*pi/360)+l(3)*sin(deta(1)+deta(2)+deta(3)*2*pi/360); jmat=-l(1)*sin(deta(1)*2*pi/360)-l(2)*sin(deta(1)+deta(2)*2*pi/360)-l(3)*sin(deta(1)+deta(2)+deta(3)*2*pi/360
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 婚姻糾紛財產保全法律文書解除合同
- 高新技術產品采購合同與一般商品銷售合同差異化分析
- 彩鋼板屋頂隔熱施工與節(jié)能評估合同
- 農家樂特色餐飲加盟合作協議細則
- 教育心理與學生學習動力激發(fā)
- 餐飲連鎖總經理任期目標責任書范本
- 提升員工職業(yè)技能的園區(qū)計劃
- 探索游戲化情感教育的實踐與效果
- 專業(yè)典押借款合同范本
- 公司簽售活動方案
- 商業(yè)綜合體能源效率提升實踐
- 水產品市場的營銷策略與市場推廣
- 超市經營方案
- 工程施工竣工報告
- PythonWeb開發(fā)技術與應用(Flask版)PPT完整全套教學課件
- 10kV~500kV輸變電及配電工程質量驗收與評定標準:01輸電線路工程
- 子宮內膜癌內分泌治療課件
- 稅務行政處罰文書(標準版)
- 第三章葡萄酒釀造2
- 每天100道語法填空題過高考英語高頻詞匯12
- 數字程控交換機系統(tǒng)技術規(guī)范書
評論
0/150
提交評論