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