摘 要:介紹Matlab神經(jīng)網(wǎng)絡工具箱的相關情況及基本應用。結(jié)合一些簡單的例子進一步對神經(jīng)網(wǎng)絡工具箱中的一些函數(shù)及神經(jīng)網(wǎng)絡結(jié)構解釋和說明。通過該說明明確神經(jīng)網(wǎng)絡工具箱的相關應用,并利用神經(jīng)網(wǎng)絡在同步中的應用進行簡單的介紹。通過仿真驗證神經(jīng)網(wǎng)絡在同步中的可行性。
關鍵詞:Matlab;神經(jīng)網(wǎng)絡;工具箱;同步
中圖分類號:TP318文獻標識碼:B文章編號:1004373X(2008)2015603
Matlab Neural Network Toolbox and Its Application in Synchrony
TIAN Yuan
(Department of Electronic and Information Engineering,Huazhong Normal University,Wuhan,430079,China)
Abstract:This work gives an introduction to the Matlab Neural Network Toolbox (NNT),including the structure of the Neural Network Toolbox(NNT),pattern classification and learning and generalization.During the introduction,some practical examples to show the function of the NNT are given.At last,the application of the neural network in the synchrony is expatiated,and the results show that the synchronous is precise by using the NNT.
Keywords:Matlab;neural network;toolbox;synchrony
1 引 言
神經(jīng)網(wǎng)絡工具箱擴充了Matlab的設計、應用、顯示和仿真神經(jīng)網(wǎng)絡的工具。如今神經(jīng)網(wǎng)絡能夠用來解決常規(guī)計算機和人難以解決的問題,神經(jīng)網(wǎng)絡已經(jīng)在各個領域中應用,以實現(xiàn)各種復雜的功能。這些領域包括:模式識別、非線性系統(tǒng)鑒定和系統(tǒng)控制[1]。神經(jīng)網(wǎng)絡工具箱除了提供方便用戶設計和管理網(wǎng)絡的可視化接口(GUI)外,還提供了大量已經(jīng)證實的網(wǎng)絡設計的支持。標準、開放、可擴張的工具箱設計方便了用戶自定義函數(shù)和網(wǎng)絡的生成[2]。
像生物學神經(jīng)系統(tǒng)一樣,一個神經(jīng)網(wǎng)絡會學習,因此,也就可以被訓練去解決問題,識別模式,劃分數(shù)據(jù)和預測事態(tài)發(fā)展。神經(jīng)網(wǎng)絡的行為由它的各個計算參數(shù)的結(jié)合方式以及它們的權重來決定。一般的神經(jīng)網(wǎng)絡都是可調(diào)節(jié)的,或者說可訓練的,這樣一個特定的輸入便可得到要求的輸出。這里,網(wǎng)絡根據(jù)輸出和目標的比較而調(diào)整,直到網(wǎng)絡輸出和目標匹配[3]。神經(jīng)網(wǎng)絡工具GUI使神經(jīng)網(wǎng)絡變得簡單,它使你能夠?qū)氪罅繌碗s的數(shù)據(jù),并能夠很快地產(chǎn)生、初始化、訓練、仿真和管理網(wǎng)絡。簡單的圖像表示有助于明確和理解網(wǎng)絡的結(jié)構[4]。因為神經(jīng)網(wǎng)絡需要復雜的矩陣計算,Matlab提供一個神經(jīng)框架,幫助快速地使用神經(jīng)網(wǎng)絡和學習它們的行為和應用。
文獻[5]討論了用擴充的神經(jīng)系統(tǒng)工具的方法在仿真環(huán)境里解決現(xiàn)存的問題。這種新方法簡化了網(wǎng)絡結(jié)構,并且也實現(xiàn)對其他軟件工具的利用。目前還沒有論文公開討論NNT在同步機制中的應用,而這一部分的研究也是具有現(xiàn)實意義的。
2 Matlab神經(jīng)網(wǎng)絡工具箱
NNT使在Matlab中使用神經(jīng)網(wǎng)絡變得簡單。其工具箱中包含了大量函數(shù)和網(wǎng)絡結(jié)構框圖(圖1是一個簡單的神經(jīng)網(wǎng)絡框圖,圖中獨立的符號簡化了對網(wǎng)絡結(jié)構的理解),因此,這里不需要介紹所有的將用到的函數(shù)、訓練算法等。

2.1 NNT的結(jié)構
工具箱是基于網(wǎng)絡對象的。網(wǎng)絡對象包括關于神經(jīng)網(wǎng)絡的所有信息,例如:網(wǎng)絡的層數(shù)和結(jié)構、層與層之間的連接等。Matlab提供了高等網(wǎng)絡層的創(chuàng)建函數(shù),比如:newlin (創(chuàng)建一個線性層),newp(創(chuàng)建一個感知機),newff(創(chuàng)建一個反向傳播網(wǎng)絡)等。舉例說明,這里創(chuàng)建了1個感知機,2個輸入向量p1=[0 1],p2=[-2 2],神經(jīng)元數(shù)為1。
>>net = newp ([0 1;-2 2],1);
首先,結(jié)構參數(shù)和子對象如下:
architecture:
numInputs:1
numLayers:1
biasConnect:[1]
inputConnect:[1]
layerConnect:[0]
outputConnect:[1]
targetConnect:[1]
numOutputs:1 (read-only)
numTargets:1 (read-only)
numInputDelays:0 (read-only)
numLayerDelays:0 (read-only)
subobject structures:
inputs:{1x1 cell} of inputs
layers:{1x1 cell} of layers
outputs:{1x1 cell} containing 1 output
targets:{1x1 cell} containing 1 target
biases:{1x1 cell} containing 1 bias
inputWeights:{1x1 cell} containing 1 input weight
layerWeights:{1x1 cell} containing no layer weights
子對象結(jié)構中包含了網(wǎng)絡單個對象的信息。神經(jīng)元的每一層有相同的傳輸函數(shù)net.transferFcn 和 網(wǎng)絡輸入函數(shù)net.netInputFcn,對于創(chuàng)建感知機采用hardlim和 netsum函數(shù)。如果神經(jīng)元要有不同的傳輸函數(shù),則將設計不同的層以滿足要求。參數(shù)net.InputWeights 和 net.layerWeights 描述了被應用的訓練函數(shù)以及它們的參數(shù)。
接下來敘述訓練函數(shù)、初始化函數(shù)和性能函數(shù)。
functions:
adaptFcn:′trains′
initFcn:′initlay′
performFcn:′mae′
trainFcn:′trainc′
trainFcn 和adaptFcn是2種不同的訓練方式,分別指批處理方式和增加方式或稱在線方式。通過設置trainFcn的參數(shù),就可以告訴Matlab哪種運算法被使用;在運用循環(huán)順序增加方式時,多用trainc函數(shù)。ANN工具箱包含大約20個訓練函數(shù)。性能函數(shù)用來測定ANN完成規(guī)定任務時的性能。對于感知機,它的平均差錯性能測定用函數(shù)mae;對于線性衰退系統(tǒng),它的均方根差錯性能測定用函數(shù)mae。initFcn函數(shù)用來初始化網(wǎng)絡的權重和偏置。神經(jīng)網(wǎng)絡工具箱包含在nnet目錄中,鍵入help nnet可得到幫助主題。如果要將這些函數(shù)替換為工具箱里的其他函數(shù)或者是自己編寫的函數(shù),只需把這些函數(shù)名配置新的參數(shù)即可,例如:
net.trainFcn = ′mytrainingfun′;
這些函數(shù)的參數(shù)被列表如下:
parameters:
adaptParam:.passes
initParam:(none)
performParam:(none)
trainParam:.epochs,.goal,.show,.time
通過改變參數(shù),可以改變上面提到的函數(shù)的默認行為。最經(jīng)常用到的函數(shù)的參數(shù)就是:trainParam,格式:net.trainParam.epochs,用來設置運算的時間點的最大數(shù)目;格式:net.trainParam.show,用來設置性能測定間隔的時間點的數(shù)目。可以通過輸入幫助help獲得更多信息。
網(wǎng)絡的權重和偏置也被存儲在下面的結(jié)構體里面:
weight and bias values:
IW:{1x1 cell} containing 1 input weight matrix
LW:{1x1 cell} containing no layer weight matrices
b:{1x1 cell} containing 1 bias vector
IW(i,j)部分是一個二維的元胞矩陣,存儲輸入j與網(wǎng)絡層i的連接的權重。LW(i,j)部分,用來存儲網(wǎng)絡層j和網(wǎng)絡層i間連接的權重。元胞數(shù)組b存儲每一層的偏置向量。
2.2 模式分類
如果一個問題可以被分解為多個模式級別,則可以用神經(jīng)網(wǎng)絡來解決這一問題。在大多數(shù)情況下,利用神經(jīng)網(wǎng)絡解決問題是可能的。神經(jīng)網(wǎng)絡的函數(shù)用來接收輸入模式,然后輸出適合這一級別的模式。
這方面的例子由產(chǎn)生和訓練一個感知機對屬于3個不同等級的點進行正確的分級。神經(jīng)網(wǎng)絡的輸入數(shù)據(jù)被定義如下:
>>P=X′
X矩陣的每一行代表一個采樣點,采樣點的等級用矩陣C的相應元素值來描述。因為想要對3個不同的等級進行區(qū)分,所以需要3個感知機,每一個等級有1個。相應的目標函數(shù)描述如下:
>>T=ind2vec(C)
產(chǎn)生有正確輸入等級類型感知機層函數(shù)為:
>>net=newp(minmax(P),size(T,1))
2.3 訓練與泛化
神經(jīng)網(wǎng)絡是模式分級的,但并不是所有的模式分級都指的是神經(jīng)網(wǎng)絡。下面將講述神將神經(jīng)網(wǎng)絡與其他分級的一些區(qū)別。它們的主要區(qū)別在2個屬性上:學習與泛化。
在使用電子存儲器解決數(shù)字分級器時,管理存儲器,特別是完成輸入的合并方面,花費很大精力。要求能夠通過給它較少數(shù)目的簡單且具有正確響應的例子來解決問題,這就指的是學習或稱為訓練:系統(tǒng)學習識別默寫特定的模式,然后給出正確的輸出響應。
某種程度上,這一部分已經(jīng)被如今的電子存儲器實現(xiàn)了。首先初始化設置存儲器的所有值為0,然后,調(diào)用范例對存儲器的值進行訓練,將結(jié)果存入存儲器的相應位置。在相應的位置用1替換原來的0。1顯示了相應的輸入模式等級。訓練階段結(jié)束后,進入實際操作。如果這些模式與訓練階段的模式是一樣的,則輸出結(jié)果就是正確的。
理想的,器件應該給出正確的響應,即使有些例子沒有明確的顯示。這部分被稱為泛化。系統(tǒng)能夠推斷出例子給的不同模式等級的屬性。神經(jīng)網(wǎng)絡能夠做這種事,如果他們被正確操作,他們將對那些在訓練階段學習的模式非常相似的模式做出響應。那么,對于數(shù)字分級器來說,這意味著神經(jīng)網(wǎng)絡被數(shù)據(jù)范例進行訓練,它就能正確地區(qū)分相似的數(shù)據(jù),而以前這些都是次要的。這里設:
>>net.trainFcn=′trainb′作為批處理訓練方式
>>net.trainFcn=′trainc′作為在線訓練方式。
訓練參數(shù)一般都依賴于選擇的訓練函數(shù)。兩個重要的參數(shù):net.trainParam.epochs設置所有數(shù)據(jù)全部用于訓練的最多次數(shù),net.trainParam.show設置訓練函數(shù)狀態(tài)報告的時間。例如:
>> net.trainParam.epochs=1000
>> net.trainParam.show=100
初始化且仿真網(wǎng)絡使用下面的語句:
>> net=init(net)
>>[net,tr]=train(net,P,T)
3 在同步中的應用
在加性高斯白噪聲條件下,接收端對信號進行高速采樣,根據(jù)香農(nóng)定理,在一個模擬信號持續(xù)時間內(nèi)至少要保證4個采樣點,才能完整和準確地恢復信號的信息,由此決定了系統(tǒng)的采樣要求。軟件上主要由若干BP(Back-Propagation)前向神經(jīng)網(wǎng)絡完成,網(wǎng)絡的個數(shù)與算法精度有關。
在搜索長度一定的條件下,根據(jù)整個搜索區(qū)間上采樣點個數(shù)確定各個神經(jīng)網(wǎng)絡的輸出節(jié)點數(shù)目。使用的網(wǎng)絡個數(shù)由捕獲精度來確定,即整個捕獲區(qū)間上劃分為N個搜索相位,則采樣N個網(wǎng)絡并行執(zhí)行。每個網(wǎng)絡都具有相同的一組輸入信號,一個輸出為0或者1。
為體現(xiàn)神經(jīng)網(wǎng)絡對信號進行捕獲的思想,訓練樣本為不含噪聲的高斯脈沖信號,搜索的相位區(qū)間為6個,識別的結(jié)果是6維向量,在出現(xiàn)信號相應得區(qū)間位置上對應的元素為1,其他元素為0,測試樣本信噪比為30 dB。
圖2是6個不含噪聲的訓練樣本;圖3和圖4左邊是信噪比為30 dB的分別出現(xiàn)在6個不同區(qū)間的測試樣本,右邊是網(wǎng)絡輸出的識別結(jié)果,在向量的對應元素上出現(xiàn)尖峰。仿真結(jié)果說明在30 dB信噪比的情況下,利用神經(jīng)網(wǎng)絡能夠準確檢測到信號的出現(xiàn)時刻。由于仿真使用的訓練樣本比較少,神經(jīng)網(wǎng)絡沒有充分提取樣本的統(tǒng)計特性,也沒有足夠的網(wǎng)絡結(jié)構和訓練過程對神經(jīng)網(wǎng)絡檢測信號能力的影響和噪聲對訓練過程和測試過程及性能的影響。通過仿真看來,在特定情況下神經(jīng)網(wǎng)絡對信號具有一定的檢測能力。

4 結(jié) 語
本文在介紹Matlab神經(jīng)網(wǎng)絡工具箱的基礎上,結(jié)合簡單例子進一步對神經(jīng)網(wǎng)絡工具箱中的一些函數(shù)及神經(jīng)網(wǎng)絡結(jié)構進行解釋和說明。然后利用神經(jīng)網(wǎng)絡在同步中的應用進行了簡單的說明,并通過仿真驗證了神經(jīng)網(wǎng)絡在同步中的可行性。


參考文獻
[1]Picton,Philip.Neural Networks.Basingstoke Palgrave,2000.
[2]Hagan,Martin T.Neural Network Design\\.China Machine Press,2002.
[3]Zaknich,Anthony.Neural Networks for Intelligent Signal Processing\\.River Edge,NJ:World Scientific,2003.
[4]Kandel,Schwarts E R.Principles of Neural Science[M].Elsevier,1985.
[5]Worley J,Jordan R.A Scalable Khoros NeuralNetwork Toolbox.Telecommunications Symposium,1998.ITS ′98 Proceedings.SBT/IEEE International,1998,2:667-670.
[6]劉浩,白振興.BP網(wǎng)絡的Matlab實現(xiàn)及應用研究\\.現(xiàn)代電子技術,2006,29(2):49-51,54.