Matlab語言的Neural Network Toolbox 及其在同步中的應(yīng)用
1 引 言
本文引用地址:http://butianyuan.cn/article/201610/308602.htm神經(jīng)網(wǎng)絡(luò)工具箱擴(kuò)充了Matlab的設(shè)計、應(yīng)用、顯示和仿真神經(jīng)網(wǎng)絡(luò)的工具。如今神經(jīng)網(wǎng)絡(luò)能夠用來解決常規(guī)計算機(jī)和人難以解決的問題,神經(jīng)網(wǎng)絡(luò)已經(jīng)在各個領(lǐng)域中應(yīng)用,以實現(xiàn)各種復(fù)雜的功能。這些領(lǐng)域包括:模式識別、非線性系統(tǒng)鑒定和系統(tǒng)控制。神經(jīng)網(wǎng)絡(luò)工具箱除了提供方便用戶設(shè)計和管理網(wǎng)絡(luò)的可視化接口(GUI)外,還提供了大量已經(jīng)證實的網(wǎng)絡(luò)設(shè)計的支持。標(biāo)準(zhǔn)、開放、可擴(kuò)張的工具箱設(shè)計方便了用戶自定義函數(shù)和網(wǎng)絡(luò)的生成。
像生物學(xué)神經(jīng)系統(tǒng)一樣,一個神經(jīng)網(wǎng)絡(luò)會學(xué)習(xí),因此,也就可以被訓(xùn)練去解決問題,識別模式,劃分?jǐn)?shù)據(jù)和預(yù)測事態(tài)發(fā)展。神經(jīng)網(wǎng)絡(luò)的行為由它的各個計算參數(shù)的結(jié)合方式以及它們的權(quán)重來決定。一般的神經(jīng)網(wǎng)絡(luò)都是可調(diào)節(jié)的,或者說可訓(xùn)練的,這樣一個特定的輸入便可得到要求的輸出。這里,網(wǎng)絡(luò)根據(jù)輸出和目標(biāo)的比較而調(diào)整,直到網(wǎng)絡(luò)輸出和目標(biāo)匹配。神經(jīng)網(wǎng)絡(luò)工具GUI使神經(jīng)網(wǎng)絡(luò)變得簡單,它使你能夠?qū)舜罅繌?fù)雜的數(shù)據(jù),并能夠很快地產(chǎn)生、初始化、訓(xùn)練、仿真和管理網(wǎng)絡(luò)。簡單的圖像表示有助于明確和理解網(wǎng)絡(luò)的結(jié)構(gòu)。因為神經(jīng)網(wǎng)絡(luò)需要復(fù)雜的矩陣計算,Matlab提供一個神經(jīng)框架,幫助快速地使用神經(jīng)網(wǎng)絡(luò)和學(xué)習(xí)它們的行為和應(yīng)用。
文獻(xiàn)[5]討論了用擴(kuò)充的神經(jīng)系統(tǒng)工具的方法在仿真環(huán)境里解決現(xiàn)存的問題。這種新方法簡化了網(wǎng)絡(luò)結(jié)構(gòu),并且也實現(xiàn)對其他軟件工具的利用。目前還沒有論文公開討論NNT在同步機(jī)制中的應(yīng)用,而這一部分的研究也是具有現(xiàn)實意義的。
2 Matlab神經(jīng)網(wǎng)絡(luò)工具箱
NNT使在Matlab中使用神經(jīng)網(wǎng)絡(luò)變得簡單。其工具箱中包含了大量函數(shù)和網(wǎng)絡(luò)結(jié)構(gòu)框圖(圖1是一個簡單的神經(jīng)網(wǎng)絡(luò)框圖,圖中獨立的符號簡化了對網(wǎng)絡(luò)結(jié)構(gòu)的理解),因此,這里不需要介紹所有的將用到的函數(shù)、訓(xùn)練算法等。
2.1 NNT的結(jié)構(gòu)
工具箱是基于網(wǎng)絡(luò)對象的。網(wǎng)絡(luò)對象包括關(guān)于神經(jīng)網(wǎng)絡(luò)的所有信息,例如:網(wǎng)絡(luò)的層數(shù)和結(jié)構(gòu)、層與層之間的連接等。Matlab提供了高等網(wǎng)絡(luò)層的創(chuàng)建函數(shù),比如:newlin(創(chuàng)建一個線性層),newp(創(chuàng)建一個感知機(jī)),newff(創(chuàng)建一個反向傳播網(wǎng)絡(luò))等。舉例說明,這里創(chuàng)建了1個感知機(jī),2個輸入向量p1=[0 1],p2=[-2 2],神經(jīng)元數(shù)為1。
子對象結(jié)構(gòu)中包含了網(wǎng)絡(luò)單個對象的信息。神經(jīng)元的每一層有相同的傳輸函數(shù)net.transferFcn和網(wǎng)絡(luò)輸入函數(shù)net.netInputFcn,對于創(chuàng)建感知機(jī)采用hardlim和netsum函數(shù)。如果神經(jīng)元要有不同的傳輸函數(shù),則將設(shè)計不同的層以滿足要求。參數(shù)net.Input-Weights和net.layerWeights描述了被應(yīng)用的訓(xùn)練函數(shù)以及它們的參數(shù)。
接下來敘述訓(xùn)練函數(shù)、初始化函數(shù)和性能函數(shù)。
trainFcn和adaptFcn是2種不同的訓(xùn)練方式,分別指批處理方式和增加方式或稱在線方式。通過設(shè)置trainFcn的參數(shù),就可以告訴Matlab哪種運(yùn)算法被使用;在運(yùn)用循環(huán)順序增加方式時,多用trainc函數(shù)。ANN工具箱包含大約20個訓(xùn)練函數(shù)。性能函數(shù)用來測定ANN完成規(guī)定任務(wù)時的性能。對于感知機(jī),它的平均差錯性能測定用函數(shù)mae;對于線性衰退系統(tǒng),它的均方根差錯性能測定用函數(shù)mae。initFcn函數(shù)用來初始化網(wǎng)絡(luò)的權(quán)重和偏置。神經(jīng)網(wǎng)絡(luò)工具箱包含在nnet目錄中,鍵入help nnet可得到幫助主題。如果要將這些函數(shù)替換為工具箱里的其他函數(shù)或者是自己編寫的函數(shù),只需把這些函數(shù)名配置新的參數(shù)即可,例如:
通過改變參數(shù),可以改變上面提到的函數(shù)的默認(rèn)行為。最經(jīng)常用到的函數(shù)的參數(shù)就是:trainParam,格式:net.trainParam.epochs,用來設(shè)置運(yùn)算的時間點的最大數(shù)目;格式:net.trainParam.show,用來設(shè)置性能測定間隔的時間點的數(shù)目??梢酝ㄟ^輸入幫助help獲得更多信息。
網(wǎng)絡(luò)的權(quán)重和偏置也被存儲在下面的結(jié)構(gòu)體里面:
IW(i,j)部分是一個二維的元胞矩陣,存儲輸入j與網(wǎng)絡(luò)層i的連接的權(quán)重。LW(i,j)部分,用來存儲網(wǎng)絡(luò)層j和網(wǎng)絡(luò)層i間連接的權(quán)重。元胞數(shù)組b存儲每一層的偏置向量。
2.2 模式分類
如果一個問題可以被分解為多個模式級別,則可以用神經(jīng)網(wǎng)絡(luò)來解決這一問題。在大多數(shù)情況下,利用神經(jīng)網(wǎng)絡(luò)解決問題是可能的。神經(jīng)網(wǎng)絡(luò)的函數(shù)用來接收輸入模式,然后輸出適合這一級別的模式。
這方面的例子由產(chǎn)生和訓(xùn)練一個感知機(jī)對屬于3個不同等級的點進(jìn)行正確的分級。神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù)被定義如下:
X矩陣的每一行代表一個采樣點,采樣點的等級用矩陣C的相應(yīng)元素值來描述。因為想要對3個不同的等級進(jìn)行區(qū)分,所以需要3個感知機(jī),每一個等級有1個。相應(yīng)的目標(biāo)函數(shù)描述如下:
2.3 訓(xùn)練與泛化
神經(jīng)網(wǎng)絡(luò)是模式分級的,但并不是所有的模式分級都指的是神經(jīng)網(wǎng)絡(luò)。下面將講述神將神經(jīng)網(wǎng)絡(luò)與其他分級的一些區(qū)別。它們的主要區(qū)別在2個屬性上:學(xué)習(xí)與泛化。
在使用電子存儲器解決數(shù)字分級器時,管理存儲器,特別是完成輸入的合并方面,花費很大精力。要求能夠通過給它較少數(shù)目的簡單且具有正確響應(yīng)的例子來解決問題,這就指的是學(xué)習(xí)或稱為訓(xùn)練:系統(tǒng)學(xué)習(xí)識別默寫特定的模式,然后給出正確的輸出響應(yīng)。
某種程度上,這一部分已經(jīng)被如今的電子存儲器實現(xiàn)了。首先初始化設(shè)置存儲器的所有值為0,然后,調(diào)用范例對存儲器的值進(jìn)行訓(xùn)練,將結(jié)果存入存儲器的相應(yīng)位置。在相應(yīng)的位置用1替換原來的0。1顯示了相應(yīng)的輸入模式等級。訓(xùn)練階段結(jié)束后,進(jìn)入實際操作。如果這些模式與訓(xùn)練階段的模式是一樣的,則輸出結(jié)果就是正確的。
理想的,器件應(yīng)該給出正確的響應(yīng),即使有些例子沒有明確的顯示。這部分被稱為泛化。系統(tǒng)能夠推斷出例子給的不同模式等級的屬性。神經(jīng)網(wǎng)絡(luò)能夠做這種事,如果他們被正確操作,他們將對那些在訓(xùn)練階段學(xué)習(xí)的模式非常相似的模式做出響應(yīng)。那么,對于數(shù)字分級器來說,這意味著神經(jīng)網(wǎng)絡(luò)被數(shù)據(jù)范例進(jìn)行訓(xùn)練,它就能正確地區(qū)分相似的數(shù)據(jù),而以前這些都是次要的。這里設(shè):
訓(xùn)練參數(shù)一般都依賴于選擇的訓(xùn)練函數(shù)。兩個重要的參數(shù):net.trainParam.epochs設(shè)置所有數(shù)據(jù)全部用于訓(xùn)練的最多次數(shù),net.trainParam.show設(shè)置訓(xùn)練函數(shù)狀態(tài)報告的時間。例如:
3 在同步中的應(yīng)用
在加性高斯白噪聲條件下,接收端對信號進(jìn)行高速采樣,根據(jù)香農(nóng)定理,在一個模擬信號持續(xù)時間內(nèi)至少要保證4個采樣點,才能完整和準(zhǔn)確地恢復(fù)信號的信息,由此決定了系統(tǒng)的采樣要求。軟件上主要由若干BP(Back-Propagation)前向神經(jīng)網(wǎng)絡(luò)完成,網(wǎng)絡(luò)的個數(shù)與算法精度有關(guān)。
在搜索長度一定的條件下,根據(jù)整個搜索區(qū)間上采樣點個數(shù)確定各個神經(jīng)網(wǎng)絡(luò)的輸出節(jié)點數(shù)目。使用的網(wǎng)絡(luò)個數(shù)由捕獲精度來確定,即整個捕獲區(qū)間上劃分為N個搜索相位,則采樣N個網(wǎng)絡(luò)并行執(zhí)行。每個網(wǎng)絡(luò)都具有相同的一組輸入信號,一個輸出為0或者1。
為體現(xiàn)神經(jīng)網(wǎng)絡(luò)對信號進(jìn)行捕獲的思想,訓(xùn)練樣本為不含噪聲的高斯脈沖信號,搜索的相位區(qū)間為6個,識別的結(jié)果是6維向量,在出現(xiàn)信號相應(yīng)得區(qū)間位置上對應(yīng)的元素為1,其他元素為0,測試樣本信噪比為30dB。圖2是6個不含噪聲的訓(xùn)練樣本;圖2和圖3左邊是信噪比為30 dB的分別出現(xiàn)在6個不同區(qū)間的測試樣本,右邊是網(wǎng)絡(luò)輸出的識別結(jié)果,在向量的對應(yīng)元素上出現(xiàn)尖峰。仿真結(jié)果說明在30 dB信噪比的情況下,利用神經(jīng)網(wǎng)絡(luò)能夠準(zhǔn)確檢測到信號的出現(xiàn)時刻。由于仿真使用的訓(xùn)練樣本比較少,神經(jīng)網(wǎng)絡(luò)沒有充分提取樣本的統(tǒng)計特性,也沒有足夠的網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練過程對神經(jīng)網(wǎng)絡(luò)檢測信號能力的影響和噪聲對訓(xùn)練過程和測試過程及性能的影響。通過仿真看來,在特定情況下神經(jīng)網(wǎng)絡(luò)對信號具有一定的檢測能力。
4 結(jié) 語
本文在介紹Matlab神經(jīng)網(wǎng)絡(luò)工具箱的基礎(chǔ)上,結(jié)合簡單例子進(jìn)一步對神經(jīng)網(wǎng)絡(luò)工具箱中的一些函數(shù)及神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行解釋和說明。然后利用神經(jīng)網(wǎng)絡(luò)在同步中的應(yīng)用進(jìn)行了簡單的說明,并通過仿真驗證了神經(jīng)網(wǎng)絡(luò)在同步中的可行性。
評論