摘 要:介紹Matlab神經網絡工具箱的相關情況及基本應用。結合一些簡單的例子進一步對神經網絡工具箱中的一些函數及神經網絡結構解釋和說明。通過該說明明確神經網絡工具箱的相關應用,并利用神經網絡在同步中的應用進行簡單的介紹。通過仿真驗證神經網絡在同步中的可行性。
關鍵詞:Matlab;神經網絡;工具箱;同步
中圖分類號: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 引 言
神經網絡工具箱擴充了Matlab的設計、應用、顯示和仿真神經網絡的工具。如今神經網絡能夠用來解決常規計算機和人難以解決的問題,神經網絡已經在各個領域中應用,以實現各種復雜的功能。這些領域包括:模式識別、非線性系統鑒定和系統控制[1]。神經網絡工具箱除了提供方便用戶設計和管理網絡的可視化接口(GUI)外,還提供了大量已經證實的網絡設計的支持。標準、開放、可擴張的工具箱設計方便了用戶自定義函數和網絡的生成[2]。
像生物學神經系統一樣,一個神經網絡會學習,因此,也就可以被訓練去解決問題,識別模式,劃分數據和預測事態發展。神經網絡的行為由它的各個計算參數的結合方式以及它們的權重來決定。一般的神經網絡都是可調節的,或者說可訓練的,這樣一個特定的輸入便可得到要求的輸出。這里,網絡根據輸出和目標的比較而調整,直到網絡輸出和目標匹配[3]。神經網絡工具GUI使神經網絡變得簡單,它使你能夠導入大量復雜的數據,并能夠很快地產生、初始化、訓練、仿真和管理網絡。簡單的圖像表示有助于明確和理解網絡的結構[4]。因為神經網絡需要復雜的矩陣計算,Matlab提供一個神經框架,幫助快速地使用神經網絡和學習它們的行為和應用。
文獻[5]討論了用擴充的神經系統工具的方法在仿真環境里解決現存的問題。這種新方法簡化了網絡結構,并且也實現對其他軟件工具的利用。目前還沒有論文公開討論NNT在同步機制中的應用,而這一部分的研究也是具有現實意義的。
2 Matlab神經網絡工具箱
NNT使在Matlab中使用神經網絡變得簡單。其工具箱中包含了大量函數和網絡結構框圖(圖1是一個簡單的神經網絡框圖,圖中獨立的符號簡化了對網絡結構的理解),因此,這里不需要介紹所有的將用到的函數、訓練算法等。

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

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


參考文獻
[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網絡的Matlab實現及應用研究\\.現代電子技術,2006,29(2):49-51,54.