Matlab語言的Neural Network Toolbox 及其在同步中的應用
1 引 言
本文引用地址:http://2s4d.com/article/201610/308602.htm神經(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)控制。神經(jīng)網(wǎng)絡工具箱除了提供方便用戶設計和管理網(wǎng)絡的可視化接口(GUI)外,還提供了大量已經(jīng)證實的網(wǎng)絡設計的支持。標準、開放、可擴張的工具箱設計方便了用戶自定義函數(shù)和網(wǎng)絡的生成。
像生物學神經(jīng)系統(tǒng)一樣,一個神經(jīng)網(wǎng)絡會學習,因此,也就可以被訓練去解決問題,識別模式,劃分數(shù)據(jù)和預測事態(tài)發(fā)展。神經(jīng)網(wǎng)絡的行為由它的各個計算參數(shù)的結合方式以及它們的權重來決定。一般的神經(jīng)網(wǎng)絡都是可調節(jié)的,或者說可訓練的,這樣一個特定的輸入便可得到要求的輸出。這里,網(wǎng)絡根據(jù)輸出和目標的比較而調整,直到網(wǎng)絡輸出和目標匹配。神經(jīng)網(wǎng)絡工具GUI使神經(jīng)網(wǎng)絡變得簡單,它使你能夠導人大量復雜的數(shù)據(jù),并能夠很快地產(chǎn)生、初始化、訓練、仿真和管理網(wǎng)絡。簡單的圖像表示有助于明確和理解網(wǎng)絡的結構。因為神經(jīng)網(wǎng)絡需要復雜的矩陣計算,Matlab提供一個神經(jīng)框架,幫助快速地使用神經(jīng)網(wǎng)絡和學習它們的行為和應用。
文獻[5]討論了用擴充的神經(jīng)系統(tǒng)工具的方法在仿真環(huán)境里解決現(xiàn)存的問題。這種新方法簡化了網(wǎng)絡結構,并且也實現(xiàn)對其他軟件工具的利用。目前還沒有論文公開討論NNT在同步機制中的應用,而這一部分的研究也是具有現(xiàn)實意義的。
2 Matlab神經(jīng)網(wǎng)絡工具箱
NNT使在Matlab中使用神經(jīng)網(wǎng)絡變得簡單。其工具箱中包含了大量函數(shù)和網(wǎng)絡結構框圖(圖1是一個簡單的神經(jīng)網(wǎng)絡框圖,圖中獨立的符號簡化了對網(wǎng)絡結構的理解),因此,這里不需要介紹所有的將用到的函數(shù)、訓練算法等。
2.1 NNT的結構
工具箱是基于網(wǎng)絡對象的。網(wǎng)絡對象包括關于神經(jīng)網(wǎng)絡的所有信息,例如:網(wǎng)絡的層數(shù)和結構、層與層之間的連接等。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。
子對象結構中包含了網(wǎng)絡單個對象的信息。神經(jīng)元的每一層有相同的傳輸函數(shù)net.transferFcn和網(wǎng)絡輸入函數(shù)net.netInputFcn,對于創(chuàng)建感知機采用hardlim和netsum函數(shù)。如果神經(jīng)元要有不同的傳輸函數(shù),則將設計不同的層以滿足要求。參數(shù)net.Input-Weights和net.layerWeights描述了被應用的訓練函數(shù)以及它們的參數(shù)。
接下來敘述訓練函數(shù)、初始化函數(shù)和性能函數(shù)。
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ù)即可,例如:
通過改變參數(shù),可以改變上面提到的函數(shù)的默認行為。最經(jīng)常用到的函數(shù)的參數(shù)就是:trainParam,格式:net.trainParam.epochs,用來設置運算的時間點的最大數(shù)目;格式:net.trainParam.show,用來設置性能測定間隔的時間點的數(shù)目??梢酝ㄟ^輸入幫助help獲得更多信息。
網(wǎng)絡的權重和偏置也被存儲在下面的結構體里面:
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ù)被定義如下:
X矩陣的每一行代表一個采樣點,采樣點的等級用矩陣C的相應元素值來描述。因為想要對3個不同的等級進行區(qū)分,所以需要3個感知機,每一個等級有1個。相應的目標函數(shù)描述如下:
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,然后,調用范例對存儲器的值進行訓練,將結果存入存儲器的相應位置。在相應的位置用1替換原來的0。1顯示了相應的輸入模式等級。訓練階段結束后,進入實際操作。如果這些模式與訓練階段的模式是一樣的,則輸出結果就是正確的。
理想的,器件應該給出正確的響應,即使有些例子沒有明確的顯示。這部分被稱為泛化。系統(tǒng)能夠推斷出例子給的不同模式等級的屬性。神經(jīng)網(wǎng)絡能夠做這種事,如果他們被正確操作,他們將對那些在訓練階段學習的模式非常相似的模式做出響應。那么,對于數(shù)字分級器來說,這意味著神經(jīng)網(wǎng)絡被數(shù)據(jù)范例進行訓練,它就能正確地區(qū)分相似的數(shù)據(jù),而以前這些都是次要的。這里設:
訓練參數(shù)一般都依賴于選擇的訓練函數(shù)。兩個重要的參數(shù):net.trainParam.epochs設置所有數(shù)據(jù)全部用于訓練的最多次數(shù),net.trainParam.show設置訓練函數(shù)狀態(tài)報告的時間。例如:
3 在同步中的應用
在加性高斯白噪聲條件下,接收端對信號進行高速采樣,根據(jù)香農定理,在一個模擬信號持續(xù)時間內至少要保證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個,識別的結果是6維向量,在出現(xiàn)信號相應得區(qū)間位置上對應的元素為1,其他元素為0,測試樣本信噪比為30dB。圖2是6個不含噪聲的訓練樣本;圖2和圖3左邊是信噪比為30 dB的分別出現(xiàn)在6個不同區(qū)間的測試樣本,右邊是網(wǎng)絡輸出的識別結果,在向量的對應元素上出現(xiàn)尖峰。仿真結果說明在30 dB信噪比的情況下,利用神經(jīng)網(wǎng)絡能夠準確檢測到信號的出現(xiàn)時刻。由于仿真使用的訓練樣本比較少,神經(jīng)網(wǎng)絡沒有充分提取樣本的統(tǒng)計特性,也沒有足夠的網(wǎng)絡結構和訓練過程對神經(jīng)網(wǎng)絡檢測信號能力的影響和噪聲對訓練過程和測試過程及性能的影響。通過仿真看來,在特定情況下神經(jīng)網(wǎng)絡對信號具有一定的檢測能力。
4 結 語
本文在介紹Matlab神經(jīng)網(wǎng)絡工具箱的基礎上,結合簡單例子進一步對神經(jīng)網(wǎng)絡工具箱中的一些函數(shù)及神經(jīng)網(wǎng)絡結構進行解釋和說明。然后利用神經(jīng)網(wǎng)絡在同步中的應用進行了簡單的說明,并通過仿真驗證了神經(jīng)網(wǎng)絡在同步中的可行性。
評論