




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Matlab的神經(jīng)網(wǎng)絡(luò)工具箱實用指南文章摘要:第一章是神經(jīng)網(wǎng)絡(luò)的基本介紹,第二章包括了由工具箱指定的有關(guān)網(wǎng)絡(luò)結(jié)構(gòu)和符號的基本材料以及建立神經(jīng)網(wǎng)絡(luò)的一些基本函數(shù),例如new、init、adapt和train。第三章以反向傳播網(wǎng)絡(luò)為例講解了反向傳播網(wǎng)絡(luò)的原理和應(yīng)用的基本過程。第一章介紹1神經(jīng)網(wǎng)絡(luò)神經(jīng)網(wǎng)絡(luò)是單個并行處理元素的集合,我們從生物學神經(jīng)系統(tǒng)得到啟發(fā)。在自然界, 網(wǎng)絡(luò)功能主要由神經(jīng)節(jié)決定, 我們可以通過改變連接點的權(quán)重來訓練神經(jīng)網(wǎng)絡(luò)完成特定的功 能。一般的神經(jīng)網(wǎng)絡(luò)都是可調(diào)節(jié)的,或者說可訓練的,這樣一個特定的輸入便可得到要求 的輸出。如下圖所示。這里,網(wǎng)絡(luò)根據(jù)輸出和目標的比較而調(diào)整,直到網(wǎng)絡(luò)輸
2、出和目標匹配。作為典型,許多輸入/目標對應(yīng)的方法已被用在有監(jiān)督模式中來訓練神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)已經(jīng)在各個領(lǐng)域中應(yīng)用,以實現(xiàn)各種復雜的功能。這些領(lǐng)域包括:模式識別、 鑒定、分類、語音、翻譯和控制系統(tǒng)。如今神經(jīng)網(wǎng)絡(luò)能夠用來解決常規(guī)計算機和人難以解決的問題。我們主要通過這個工具箱來建立示范的神經(jīng)網(wǎng)絡(luò)系統(tǒng),并應(yīng)用到工程、金融和其他實際項目中去。一般普遍使用有監(jiān)督訓練方法,但是也能夠通過無監(jiān)督的訓練方法或者直接設(shè)計得到其 他的神經(jīng)網(wǎng)絡(luò)。無監(jiān)督網(wǎng)絡(luò)可以被應(yīng)用在數(shù)據(jù)組的辨別上。一些線形網(wǎng)絡(luò)和Hopfield網(wǎng)絡(luò)是直接設(shè)計的??偟膩碚f,有各種各樣的設(shè)計和學習方法來增強用戶的選擇。神經(jīng)網(wǎng)絡(luò)領(lǐng)域已經(jīng)有 50年的歷史
3、了,但是實際的應(yīng)用卻是在最近15年里,如今神經(jīng)網(wǎng)絡(luò)仍快速發(fā)展著。因此, 它顯然不同與控制系統(tǒng)和最優(yōu)化系統(tǒng)領(lǐng)域,它們的術(shù)語、數(shù)學理論和設(shè)計過程都已牢固的建立和應(yīng)用了好多年。我們沒有把神經(jīng)網(wǎng)絡(luò)工具箱僅看作一個能正常運行的建好的處理輪廓。我們寧愿希望它能成為一個有用的工業(yè)、教育和研究工具,一個能夠幫助用戶找到什么能夠做什么不能做的工具,一個能夠幫助發(fā)展和拓寬神經(jīng)網(wǎng)絡(luò)領(lǐng)域的工具。因為這個領(lǐng)域和它的材料是如此新,這個工具箱將給我們解釋處理過程,講述怎樣運用它們,并且舉例說明它們的成功和失敗。我們相信要成功和滿意的使用這個工具箱,對范例和它們的應(yīng)用的理解是很重要的,并且如果沒有這些說明那么用戶的埋怨和質(zhì)詢
4、就會把我們淹沒。所以如果我們包括了大量的說明性材料,請保持耐心。我們希望這些材料能對你有幫助。這個章節(jié)在開始使用神經(jīng)網(wǎng)絡(luò)工具箱時包括了一些注釋,它也描述了新的圖形用戶接口和新的運算法則和體系結(jié)構(gòu),并且它解釋了工具箱為了使用模塊化網(wǎng)絡(luò)對象描述而增強的機 動性。最后這一章給出了一個神經(jīng)網(wǎng)絡(luò)實際應(yīng)用的列表并增加了一個新的文本-神經(jīng)網(wǎng)絡(luò)設(shè)計。這本書介紹了神經(jīng)網(wǎng)絡(luò)的理論和它們的設(shè)計和應(yīng)用,并給出了相當可觀的MATLAB和神經(jīng)網(wǎng)絡(luò)工具箱的使用。2.準備工作基本章節(jié)第一章是神經(jīng)網(wǎng)絡(luò)的基本介紹,第二章包括了由工具箱指定的有關(guān)網(wǎng)絡(luò)結(jié)構(gòu)和符號的基 本材料以及建立神經(jīng)網(wǎng)絡(luò)的一些基本函數(shù),例如new、in it、ad
5、apt和train。第三章以反向傳播網(wǎng)絡(luò)為例講解了反向傳播網(wǎng)絡(luò)的原理和應(yīng)用的基本過程。幫助和安裝神經(jīng)網(wǎng)絡(luò)工具箱包含在 nnet目錄中,鍵入 help nnet可得到幫助主題。工具箱包含了許多示例。每一個例子講述了一個問題,展示了用來解決問題的網(wǎng)絡(luò)并給 出了最后的結(jié)果。顯示向?qū)б懻摰纳窠?jīng)網(wǎng)絡(luò)例子和應(yīng)用代碼可以通過鍵入help nndemos找到。安裝神經(jīng)網(wǎng)絡(luò)工具箱的指令可以在下列兩份MATLAB文檔中找到:the Installation Guidefor MS-Windows and Macintosh 或者 the Installation Guide for UNIX 。第二章神經(jīng)元模型
6、和網(wǎng)絡(luò)結(jié)構(gòu)1.符號數(shù)學符號下面給出等式和數(shù)字中用到的基本符號:標量-小寫的斜體字a,b,c向量-小寫加粗的非斜體字a,b,c矩陣-大寫加粗的非斜體字A,B,C向量表示一組數(shù)字數(shù)學符號和字符的等價從數(shù)學符號到字符的轉(zhuǎn)換或者反過來可以遵循一些規(guī)則,為了便于今后引用我們將這些規(guī)則列出。為了從數(shù)學符號變?yōu)镸ATLAB符號用戶需要:變上標為細胞數(shù)組標號例如' " 1變下標為圓括號標號例如 -和兀=汀"變圓括號標號為二維數(shù)組標號例如變數(shù)學運算符為MATLAB運算符和工具箱函數(shù)2神經(jīng)元模型單神經(jīng)元下圖所示為一個單標量輸入且無偏置的神經(jīng)元。輸入 無偏置神經(jīng)元輸入有偏置神經(jīng)元、亠乞斗
7、/亠*7wp,這仍是一個標量。這里,加權(quán)a。右邊的神經(jīng)元有一個標量偏置 b,也可以認為它把函數(shù) f左移了 b個單V/It = f(即)這個輸入標量通過乘以權(quán)重為標量w的連結(jié)點得到結(jié)果的輸入wp僅僅是轉(zhuǎn)移函數(shù)f的參數(shù),函數(shù)的輸入是標量 你既可以認為它僅僅是通過求和節(jié)點加在結(jié)果wp上,位,偏置除了有一個固定不變的輸入值1以外,其他的很像權(quán)重。標量n是加權(quán)輸入wp和偏置b的和,它作為轉(zhuǎn)移函數(shù) f的參數(shù)。函數(shù)f是轉(zhuǎn)移函數(shù),它可以為階躍函數(shù)或者曲線函 數(shù),它接收參數(shù)n給出輸出a,下一節(jié)將給出各種不同的轉(zhuǎn)移函數(shù)。注意神經(jīng)元中的w和b都是可調(diào)整的標量參數(shù)。神經(jīng)網(wǎng)絡(luò)的中心思想就是參數(shù)的可調(diào)整使得網(wǎng)絡(luò)展示需要和
8、令人感 興趣的行為。這樣,我們就可以通過調(diào)整權(quán)重和偏置參量訓練神經(jīng)網(wǎng)絡(luò)做一定的工作?;蛘呱窠?jīng)網(wǎng)絡(luò)自己調(diào)整參數(shù)以得到想要的結(jié)果。在這個工具箱里所有的神經(jīng)元都提供偏置,我們的許多例子中都用到了偏置并且假定它在這個工具箱的大多數(shù)情況下都要用到。可是,如果你愿意的話,你也可以在一個神經(jīng)元中省略偏置。正如上面所提到的,在神經(jīng)元中,標量b是個可調(diào)整的參數(shù)。它不是一個輸入??墒球?qū) 動偏置的常量1卻是一個輸入而且當考慮線性輸入向量時一定要這樣認為。轉(zhuǎn)移函數(shù)在這個工具箱里包括了許多轉(zhuǎn)移函數(shù)。你能在"Transfer Function Graphs"中找到它們的完全列表。下面列出了三個最常用的
9、函數(shù)。aA+1m免-Ia - hardlim(n)上圖所示的階躍轉(zhuǎn)移函數(shù)限制了輸出,使得輸入?yún)?shù)小于0時輸出為0,大于或等于0時輸出為1,在第三章中我們將用它來進行分類。工具箱中有一個函數(shù)hardlim來數(shù)學上的階躍,如上圖所示。我們可以輸入以下代碼n = -5:0.1:5;plot( n,hardlim( n),'c+:');它產(chǎn)生一張在-5到5之間的階躍函數(shù)圖。所有在工具箱中的數(shù)學轉(zhuǎn)移函數(shù)都能夠用同名的函數(shù)實現(xiàn)。線性轉(zhuǎn)移函數(shù)如下圖所示a = purelin(n)這種類型的神經(jīng)元將在第四章的自適應(yīng)線性濾波中用作線性擬合。下圖顯示的曲線轉(zhuǎn)移函數(shù)的輸入?yún)?shù)是正負區(qū)間的任意值,而將
10、輸出值限定于 之間。企±1這種傳遞函數(shù)通常用于反向傳播( BP)網(wǎng)絡(luò),這得益于函數(shù)的可微性。在上面所示的每一個轉(zhuǎn)移函數(shù)圖的右邊方框中的符號代表了對應(yīng)的函數(shù),這些圖表將替換網(wǎng)絡(luò)圖的方框中的f來表示所使用的特定的轉(zhuǎn)移函數(shù)。第13章列出了所有的轉(zhuǎn)移函數(shù)和圖標。你能夠定義自己的傳遞函數(shù),你可以不限于使 用第13章所列的轉(zhuǎn)移函數(shù)。你能夠通過運行示例程序nn2n1來試驗一個神經(jīng)元和各種轉(zhuǎn)移函數(shù)。帶向量輸入的神經(jīng)元一個有R個元素輸入向量的神經(jīng)元如下圖所示。這里單個輸入元素P jt乘上權(quán)重得到加權(quán)值輸入求和節(jié)點。它們的和是Wp,單行矩陣 W和向量p的點乘。這里R二輸入向量的 元素個數(shù)a = A Wp
11、 +6)這個神經(jīng)元有一個偏置 b,它加在加權(quán)的輸入上得到網(wǎng)絡(luò)輸入n,和值n是轉(zhuǎn)移函數(shù)f的參數(shù)。表達式自然可用 MATLAB代碼表示為:n =W*p + b可是,用戶很少要寫如此底層的代碼, 因為這些代碼已經(jīng)被建立到函數(shù)中來定義和模擬 整個網(wǎng)絡(luò)。上面所示的圖包括了許多細節(jié)。 當我們考慮有許多神經(jīng)元和可能是許多神經(jīng)元組 成的多層網(wǎng)絡(luò)時,我們可能會漏掉許多細節(jié)。因此,作者設(shè)計了一個簡潔的符號代表單個神 經(jīng)元。這個符號如下圖中所示,它將會在以后的多重神經(jīng)元電路中用到。輸入神經(jīng)元這里輸入向量p用左邊的黑色實心豎條代表,p的維數(shù)寫在符號p下面,在圖中是Rx1。 (注意我們用的是大寫字母,正如在以前句子里R
12、用來表示向量大小時一樣。)因此,p是一個有R個輸入元素的向量。這個輸入列向量乘上R列單行矩陣 W。和以前一樣,常量 1作為一個輸入乘上偏置標量 b,給轉(zhuǎn)移函數(shù)的網(wǎng)絡(luò)輸入是 n,它是偏置與乘積 Wp的和。這 個和值傳給轉(zhuǎn)移函數(shù) f得到網(wǎng)絡(luò)輸出a,在這個例子中它是一個標量。注意如果我們有超過 一個神經(jīng)元,網(wǎng)絡(luò)輸出就有可能是一個向量。上面圖中定義了神經(jīng)網(wǎng)絡(luò)的一層。一層包括權(quán)重的組合, 乘法和加法操作(這里就是向量乘積 Wp),偏置b和轉(zhuǎn)移函數(shù)f。輸入數(shù)組,即向量 p不包括在一層中。這個簡潔的網(wǎng)絡(luò)符號每一次都會被用到,向量的大小會顯示在矩陣變量名字的下面。我們希望這個符號會讓你理解神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)以及與
13、之相關(guān)的矩陣數(shù)學。正如前面所討論的,當特定的轉(zhuǎn)移函數(shù)在一張圖中被使用時,轉(zhuǎn)移函數(shù)將用上面所示的符號代替。下面是幾個例子:1_hard lintpurelin你可以通過運行示例程序nnd2n2來試驗有2個兀素的神經(jīng)兀。3.網(wǎng)絡(luò)結(jié)構(gòu)兩個或更多的上面所示的神經(jīng)元可以組合成一層,一個典型的網(wǎng)絡(luò)可包括一層或者多 層。我們首先來研究神經(jīng)元層。單層神經(jīng)元網(wǎng)絡(luò)有R輸入元素和S個神經(jīng)元組成的單層網(wǎng)絡(luò)如下圖所示:輸入神經(jīng)兀尾ii 里喻人向捷的 元素個Jft的-個數(shù)在一個單層網(wǎng)絡(luò)中,輸入向量p的每一個元素都通過權(quán)重矩陣W和每一個神經(jīng)元連接起來。第I個神經(jīng)元通過把所有加權(quán)的輸入和偏置加起來得到它自己的標量輸出n(i)
14、。不同的n(i)合起來形成了有 S個元素的網(wǎng)絡(luò)輸入向量 n。最后,網(wǎng)絡(luò)層輸出一個列向量 a,我們 在圖的底部顯示了 a的表達式。注意輸入元素個數(shù) R和神經(jīng)元個數(shù) S通常是不等的,我們也并不需要這兩者相等。你 也可以建立一個簡單的復合神經(jīng)元層,它將上面所示的網(wǎng)絡(luò)并行的合在一起,使用不同的轉(zhuǎn)移函數(shù)。所有的網(wǎng)絡(luò)都有相同的輸入,而每一個網(wǎng)絡(luò)都會產(chǎn)生輸出。輸入向量兀素經(jīng)加權(quán)矩陣W 作叫2JtE用輸入網(wǎng)絡(luò)。W=嚴畑注意加權(quán)矩陣 W的行標標記權(quán)重的目的神經(jīng)元, 列標標記待加權(quán)的輸入標號。 因此,的。有S個神經(jīng)元和R個輸入元輸人神經(jīng)元層f、這里R=輸入向董的 元素個數(shù)S二層中神經(jīng)元 的個數(shù)標號表示從輸入信號的
15、第二個元素到第一個神經(jīng)元的權(quán)重是 素的神經(jīng)網(wǎng)絡(luò)也能夠簡化成以下符號:3= f (Wp+ b)這里,p是一個有R個元素的輸入向量, W是一個SxR的矩陣,a和b是有S個元素 的向量。如前面所定義的,神經(jīng)元層包括權(quán)重矩陣,乘法運算,偏置向量b,求和符和轉(zhuǎn)移函數(shù)框。輸入和層我們將要討論多層網(wǎng)絡(luò),所以我們需要拓展我們的符號來描述這樣的網(wǎng)絡(luò)。特別是我們要弄清連接輸入的權(quán)重矩陣和連接層的權(quán)重矩陣之間的區(qū)別。我們也要分清權(quán)重矩陣的目的和源。我們將把連接輸入的權(quán)重矩陣成為輸入權(quán)重,把來自層輸出的權(quán)重矩陣稱為層矩陣。進一步說,我們在各個權(quán)重和其他網(wǎng)絡(luò)元素中將用上標區(qū)分源(第二個標號)和目的(第一個標號)。作為示
16、例,我們用簡化的形式重畫了上面所畫的單層多輸入網(wǎng)絡(luò)。你可以看到,我們把連接輸入向量p的權(quán)重矩陣標記為輸入權(quán)重矩陣(IW1,1),第二個標號1是源,第二個標號1是目的。同樣,第一層的元素,比如偏置、網(wǎng)絡(luò)輸入和輸出都有 上標1來表示它們屬于第一層。在下一章節(jié),我們將用 LW表示層權(quán)重矩陣,用IW表示輸入權(quán)重矩陣。你可以復習以下這一章開始的符號那一節(jié),它把特定的網(wǎng)絡(luò) net中用數(shù)學符號表示的層權(quán)重矩陣轉(zhuǎn)換成代碼,如下所示:IW1,1 n et. IW1,1這樣,你就可以寫代碼來得到對轉(zhuǎn)移函數(shù)的網(wǎng)絡(luò)輸入了:n 1 =n etW1,1*p+net.b1多層神經(jīng)元網(wǎng)絡(luò)一個網(wǎng)絡(luò)可以有幾層,每一層都有權(quán)重矩陣
17、W,偏置向量b和輸出向量a。為了區(qū)分這些權(quán)重矩陣、輸出矩陣等等,在圖中的每一層,我們都為感興趣的變量以上標的形式增加了 層數(shù)。你能夠看到在下面所示的三層網(wǎng)絡(luò)圖和等式中使用層符號。輸入第一層第二層笫三層L 和a>-P(LWai *皿)皿-P (LWvas+fc*>* =P (TWM 儀(LWwfl (IWijp +>Q+bfl>bs)上面所示的網(wǎng)絡(luò)有 R1個輸入,第一層有 S1個神經(jīng)元,第二層有 S2個神經(jīng)元,以次類 推。一般不同層有不同數(shù)量的神經(jīng)元。每一個神經(jīng)元的偏置輸入是常量1。注意中間層的輸出就是下一層的輸入。第二層可看作有 S1個輸入,S2個神經(jīng)元和S1xS2階權(quán)
18、重矩陣 W2的單層網(wǎng)絡(luò)。第二層的輸入是al,輸出是a2,現(xiàn)在我們已經(jīng)確定了第二層的所有向量和矩陣,我們就能把它看成一個單層網(wǎng)絡(luò)了。其他層也可以照此步驟處理。多層網(wǎng)絡(luò)中的層扮演著不同的角色。 給出網(wǎng)絡(luò)輸出的層叫做輸出層。所有其他的層叫做 隱層。上圖所示的三層網(wǎng)絡(luò)有一個輸出層(第三層)和兩個隱層(第一和第二層)。有些作者把輸入作為第四層,這里不用這種指定。上面所示的三層網(wǎng)絡(luò)的簡潔畫法如下圖所示:輸人第一層第二層第三層H = P (IWvp+bi)單-v +血» -Pa*(LWv f? (LWnf 1 (TWiJp +b)+,多層網(wǎng)絡(luò)的功能非常強大。舉個例子,一個兩層的網(wǎng)絡(luò),第一層的轉(zhuǎn)移函
19、數(shù)是曲線函數(shù), 第二層的轉(zhuǎn)移函數(shù)是線性函數(shù),通過訓練,它能夠很好的模擬任何有有限斷點的函數(shù)。這種兩層網(wǎng)絡(luò)集中應(yīng)用于"反向傳播網(wǎng)絡(luò)”。注意我們把第三層的輸出 a3標記為y。我們將使用這種符號來定義這種網(wǎng)絡(luò)的輸出。4 數(shù)據(jù)結(jié)構(gòu)這一節(jié)將討論影響網(wǎng)絡(luò)仿真的輸入數(shù)據(jù)結(jié)構(gòu)的格式。我們首先討論靜態(tài)網(wǎng)絡(luò), 在討論動態(tài)網(wǎng)絡(luò)。我們將關(guān)心兩種基本的輸入向量類型:同步(同時或者無時序)向量和異步向量。對異步向量來說,向量的順序是非常重要的。對同步向量來說,順序是不重要的,并且如果我們已經(jīng)有一定數(shù)量的并行網(wǎng)絡(luò)我們就能把一個輸入向量輸入到其中的任意網(wǎng)絡(luò)。靜態(tài)網(wǎng)絡(luò)中的同步輸入仿真仿真靜態(tài)網(wǎng)絡(luò)(沒有反饋或者延遲)是
20、網(wǎng)絡(luò)仿真最簡單的一種。在這種情況中,我們不需要關(guān)心向量輸入的時間順序,所以我們可以認為它是同時發(fā)生的。另外,為了是問題更簡單,我們假定開始網(wǎng)絡(luò)僅有一個輸入向量。我們用下面的網(wǎng)絡(luò)作為例子。為了建立這個網(wǎng)絡(luò)我們可以用以下命令:輸入綾性神經(jīng)元net = n ewli n(-1 1;-1 1,1);簡單起見我們假定權(quán)重矩陣和偏置為W=1,2,b=0其命令行是:netW1,1 = 1 2;n et.b1 = 0;假定模擬的網(wǎng)絡(luò)有四個無序向量,即Q=4 :這些同步向量可以用一個矩陣來表示:P = 1 2 2 3; 2 1 3 1;現(xiàn)在我們就可以模擬這個網(wǎng)絡(luò)了:A = sim( net,P)A =5 4 8
21、 5我們向網(wǎng)絡(luò)輸入一個簡單的同步向量矩陣,得到了一個簡單的同步向量輸出矩陣。結(jié)果不論是由一個網(wǎng)絡(luò)串行輸出還是由四個網(wǎng)絡(luò)并行輸出得到的都是一樣的。由于輸入并無關(guān) 聯(lián),輸入向量的順序并不重要。動態(tài)網(wǎng)絡(luò)中的異步輸入仿真當網(wǎng)絡(luò)中存在延遲時,順序發(fā)生的輸入向量就要按一定的序列輸入網(wǎng)絡(luò)。為了演示這種情況,我們用了一個有延遲的簡單網(wǎng)絡(luò)。p(fi 輸入線性神經(jīng)元rn(t)/ j0(0 = 0為了建立這個網(wǎng)絡(luò)我們可以用以下命令:net = n ewli n(-1 1,1,0 1);n et.biasC onnect = 0;假定權(quán)重矩陣為:W=1,2命令行為:netW1,1 = 1 2;假定輸入順序為:p(1)
22、=1,P(2)=2, p(3)=3, p(4)=4輸入序列可以用一個細胞數(shù)組來表示:P = 1 2 3 4;這樣我們就能模擬這個網(wǎng)絡(luò)了:A = sim( net,P)A =1 4 7 10我們輸入一個包含輸入序列的細胞數(shù)組,網(wǎng)絡(luò)產(chǎn)生一個包含輸出序列的細胞數(shù)組。注意異步輸入中的輸入順序是很重要的。在這個例子中,當前輸出等于當前輸入乘 1加上前一個輸入乘2。如果我們改變輸入順序,那么輸出結(jié)果也回隨之改變。動態(tài)網(wǎng)絡(luò)中的同步輸入仿真如果我們在上一個例子中把輸入作為同步而不是異步應(yīng)用,我們就會得到完全不同的響應(yīng)。(雖然我們不清楚為什么要在動態(tài)網(wǎng)絡(luò)中使用這種方式。)這就好象每一個輸入都同時加到一個單獨的并
23、行網(wǎng)絡(luò)中。在前一個例子中,如果我們用一組同步輸入,我們有:P1=1, P2=2, p3=3, p4=4這可用下列代碼創(chuàng)建:P =1 2 3 4;模擬這個網(wǎng)絡(luò),我們得到:A = sim( net,P)A =1 2 3 4這個結(jié)果和我們同時把每一個輸入應(yīng)用到單獨的網(wǎng)絡(luò)中并計算單獨的輸出沒什么兩樣。 注意如果我們沒有初始化延遲時間,那么缺省值就是0。在這個例子中,由于當前輸入的權(quán)重是1,輸出就是輸入乘 1。在某些特定的情況下,我們可能想要在同一時間模擬一些不同 序列的網(wǎng)絡(luò)響應(yīng)。這種情況我們就要給網(wǎng)絡(luò)輸入一組同步序列。比如說,我們要把下面兩個序列輸入網(wǎng)絡(luò):p(1)=1, p(2)=2, p(3)=3,
24、 p(4)=4p(1)=4, p(2)=3, p(3)=2, p(4)=1輸入P應(yīng)該是一個細胞數(shù)組,每一個數(shù)組元素都包含了兩個同時發(fā)生的序列的元素。P = 1 4 2 3 3 2 4 1;現(xiàn)在我們就可以模擬這個網(wǎng)絡(luò)了:A = sim( net,P);網(wǎng)絡(luò)輸出結(jié)果將是:A = 1 4 4 11 7 8 10 5你可以看到,每個矩陣的第一列是由第一組輸入序列產(chǎn)生的輸出序列,每個矩陣的第二列是由第二組輸入序列產(chǎn)生的輸出序列。這兩組序列之間沒有關(guān)聯(lián),好象他們是同時應(yīng)用在單個的并行網(wǎng)絡(luò)上的。下面的圖表顯示了當我們有Q個TS長度的序列時,在函數(shù)sim中輸入P的一般格式。它函蓋了單輸入向量的所有的情況。每一
25、個細胞數(shù)組的元素都是一個同步向量矩陣,它對應(yīng)于每一個序列的同一時間點。如果有多輸入向量,那么在細胞數(shù)組中的矩陣里就有多行。Qth Sequence,p2("p】,p2(2),p*2> * P|( TSjt pjfrS), * pTS)First Sequence這一節(jié)我們我們把同步和異步輸入應(yīng)用到了動態(tài)網(wǎng)絡(luò)中。在以前的章節(jié)中我們把同步輸 入應(yīng)用到了靜態(tài)網(wǎng)絡(luò)中。我們也能把異步序列應(yīng)用到靜態(tài)網(wǎng)絡(luò)中。這不會改變網(wǎng)絡(luò)的輸出響 應(yīng),但是這會影響訓練過的網(wǎng)絡(luò)的形式。在下一節(jié)你會更清楚的了解這一點。5.訓練方式在這一節(jié)中,我們將描述兩種不同的訓練方式。在增加方式中,每提交一次輸入數(shù)據(jù), 網(wǎng)絡(luò)
26、權(quán)重和偏置都更新一次。在批處理方式中,僅僅當所有的輸入數(shù)據(jù)都被提交以后,網(wǎng)絡(luò)權(quán)重和偏置才被更新。增加方式(應(yīng)用與自適應(yīng)網(wǎng)絡(luò)和其他網(wǎng)絡(luò))雖然增加方式更普遍的應(yīng)用于動態(tài)網(wǎng)絡(luò),比如自適應(yīng)濾波,但是在靜態(tài)和動態(tài)網(wǎng)絡(luò)中都可以應(yīng)用它。在這一節(jié)中我們將示范怎樣把增加方式應(yīng)用到這兩種網(wǎng)絡(luò)中去。靜態(tài)網(wǎng)絡(luò)中的增加方式繼續(xù)考慮前面用過的第一個靜態(tài)網(wǎng)絡(luò)的例子, 我們用增加方式來訓練它,這樣每提交一 次輸入數(shù)據(jù),網(wǎng)絡(luò)權(quán)重和偏置都更新一次。在這個例子里我們用函數(shù)adapt,并給出輸入和目標序列:假定我們要訓練網(wǎng)絡(luò)建立以下線性函數(shù):t=2p1+p2我們以前用的輸入是:刊卜花=;卜目標輸出是:t仁4,t2=5 ,t3=7 ,
27、t4=7我們首先用0初始化權(quán)重和偏置。為了顯示增加方式的效果,我們把學習速度也設(shè)為0。net = n ewli n(-1 1;-1 1,1,0,0);n etW1,1 = 0 0;n et.b1 = 0;為了用增加方式,我們把輸入和目標輸出表示為以下序列:P = 1;2 2;1 2;3 3;1;T = 4 5 7 7;前面的討論中,不論是作為一個同步向量矩陣輸入還是作為一個異步向量細胞數(shù)組輸 入,模擬的輸出值是一樣的。而在訓練網(wǎng)絡(luò)時,這是不對的。當我們使用adapt函數(shù)時,如果輸入是異步向量細胞數(shù)組,那么權(quán)重將在每一組輸入提交的時候更新(就是增加方式),我們將在下一節(jié)看到,如果輸入是同步向量矩
28、陣,那么權(quán)重將只在所有輸入提交的時候更新 (就是批處理方式)。我們現(xiàn)在開始用增加方式訓練網(wǎng)絡(luò):n et,a,e,pf = adapt (n et,P,T);由于學習速度為0,網(wǎng)絡(luò)輸出仍然為0,并且權(quán)重沒有被更新。錯誤和目標輸出相等。a = 0 0 0 0e = 4 5 7 7如果我們設(shè)置學習速度為0.1,我們就能夠看到當每一組輸入提交時,網(wǎng)絡(luò)是怎么調(diào)整的了。n et.i nputWeights1,1.learnParam.lr=0.1;n et.biases1,1 .learn Param.lr=0.1;n et,a,e,pf = adapt (n et,P,T);a = 0 2 6.0 5.
29、8e = 4 3 1.0 1.2由于在第一個輸入數(shù)據(jù)提交前還沒有更新,第一個輸出和學習速率為 0時一樣。由于權(quán)重已更新,第二個輸出就不一樣了。 每計算一次錯誤,權(quán)重都不斷的修改。如果網(wǎng)絡(luò)可行并且學習速率設(shè)置得當,錯誤將不斷的趨向于0。動態(tài)網(wǎng)絡(luò)中的增加方式我們同樣也能用增加方式訓練動態(tài)網(wǎng)絡(luò)。實際上,這是最普遍的情況。讓我們用前面用過的那個有輸入延遲的線性網(wǎng)絡(luò)作為例子,我們將初始化權(quán)重為0,并把學習速率設(shè)為0.1。net = n ewli n(-1 1,1,0 1,0.1);n et.IW1,1 = 0 0;n et.biasC onnect = 0;為了用增加方式,我們把輸入和目標輸出表示為細胞
30、數(shù)組的元素:Pi = 1;P = 2 3 4;T = 3 5 7;這里我們嘗試訓練網(wǎng)絡(luò)把當前輸入和前一次輸入加起來作為當前輸出。輸入序列和我們 以前使用 sim 的例子中用過的一樣,除了我們指定了輸入序列的第一組作為延遲的初始狀 態(tài)?,F(xiàn)在我們可以用 adapt 來訓練網(wǎng)絡(luò)了:net,a,e,pf = adapt(net,P,T,Pi);a = 0 2.4 7.98e = 3 2.6 -1.98 由于權(quán)重沒有更新,第一個輸出是0。每一個序列步進,權(quán)重都改變一次。批處理方式在批處理方式中, 僅僅當所有的輸入數(shù)據(jù)都被提交以后, 網(wǎng)絡(luò)權(quán)重和偏置才被更新, 它 也可以應(yīng)用于靜態(tài)和動態(tài)網(wǎng)絡(luò)。我們將在這一節(jié)
31、討論這兩種類型。靜態(tài)網(wǎng)絡(luò)中的批處理方式批處理方式可以用adapt或train函數(shù)來實現(xiàn),雖然由于由于采用了更高效的學習算法,train通常是最好的選擇。增加方式只能用adapt來實現(xiàn),train函數(shù)只能用于批處理方式。讓我們用前面用過的靜態(tài)網(wǎng)絡(luò)的例子開始,學習速率設(shè)置為0.1。net = newlin(-1 1;-1 1,1,0,0.1);net.IW1,1 = 0 0;net.b1 = 0;用adapt函數(shù)實現(xiàn)靜態(tài)網(wǎng)絡(luò)的批處理方式,輸入向量必須用同步向量矩陣的方式放置:P = 1 2 2 3; 2 1 3 1;T = 4 5 7 7;當我們調(diào)用adapt時將觸發(fā)adaptwb函數(shù),這是缺省的
32、線性網(wǎng)絡(luò)調(diào)整函數(shù)。learnwh是缺 省的權(quán)重和偏置學習函數(shù)。因此, Widrow-Hoff 學習法將會被使用:net,a,e,pf = adapt(net,P,T);a = 0 0 0 0e = 4 5 7 7注意網(wǎng)絡(luò)的輸出全部為 0,因為在所有要訓練的數(shù)據(jù)提交前權(quán)重沒有被更新,如果我們 顯示權(quán)重,我們就會發(fā)現(xiàn):>>net.IW1,1ans = 4.9000 4.1000>>net.b1ans =2.3000經(jīng)過了用adapt函數(shù)的批處理方式調(diào)整,這就和原來不一樣了?,F(xiàn)在用 train 函數(shù)來實現(xiàn)批處理方式。由于 Widrow-Hoff 規(guī)則能夠在增加方式和批處理 方
33、式中應(yīng)用,它可以通過adapt和train觸發(fā)。我們有好幾種算法只能用于批處理方式(特別是 Levenberg-Marquardt 算法),所以這些算法只能用 train 觸發(fā)。網(wǎng)絡(luò)用相同的方法建立:net = newlin(-1 1;-1 1,1,0,0.1);net.IW1,1 = 0 0;net.b1 = 0;在這種情況下輸入向量即能用同步向量矩陣表示也能用異步向量細胞數(shù)組表示。用 train函數(shù), 任何異步向量細胞數(shù)組都會轉(zhuǎn)換成同步向量矩陣。 這是因為網(wǎng)絡(luò)是靜態(tài)的, 并且因為 train 總是在批處理方式中使用。因為 MATLAB 實現(xiàn)同步模式效率更高,所以只要可能總是 采用同步模式處
34、理。P = 1 2 2 3; 2 1 3 1;T = 4 5 7 7;現(xiàn)在我們開始訓練網(wǎng)絡(luò)。由于我們只用了一次adapt,我們這里訓練它一次。缺省的線性網(wǎng)絡(luò)訓練函數(shù)是 trainwb 。 learnwh 是缺省的權(quán)重和偏置學習函數(shù)。因此,我們應(yīng)該和前面 缺省調(diào)整函數(shù)是 adaptwb 的例子得到同樣的結(jié)果。net.inputWeights1,1.learnParam.lr = 0.1; net.biases1.learnParam.lr = 0.1;net.trainParam.epochs = 1;net = train(net,P,T); 經(jīng)過一次訓練后,我們顯示權(quán)重發(fā)現(xiàn):>>
35、net.IW1,1ans = 4.9000 4.1000>>net.b1ans =2.3000 這和用adapt訓練出來的結(jié)果是一樣的。在靜態(tài)網(wǎng)絡(luò)中,adapt函數(shù)能夠根據(jù)輸入數(shù)據(jù)格式的不同應(yīng)用于增加方式和批處理方式。 如果數(shù)據(jù)用同步向量矩陣方式輸入就用批處理方 式訓練;如果數(shù)據(jù)用異步方式輸入就用增加方式。但這對于train 函數(shù)行不通,無論輸入格式如何,它總是采用批處理方式。動態(tài)網(wǎng)絡(luò)中的增加方式訓練靜態(tài)網(wǎng)絡(luò)相對要簡單一些。如果我們用 train 訓練網(wǎng)絡(luò),即使輸入是異步向量細胞 數(shù)組,它也是轉(zhuǎn)變成同步向量矩陣而采用批處理方式。如果我們用adapt。輸入格式?jīng)Q定著網(wǎng)絡(luò)訓練方式。 如
36、果傳遞的是序列, 網(wǎng)絡(luò)用增加方式, 如果傳遞的是同步向量就采用批處理 方式。在動態(tài)網(wǎng)絡(luò)中,批處理方式只能用 train 完成,特別是當僅有一個訓練序列存在時。為 了說明清楚, 讓我們重新考慮那個帶延遲的線性網(wǎng)絡(luò)。 我們把學習速率設(shè)為 0.02(當我們采 用梯度下降算法時, 我們要用比增加方式更小的學習速率, 應(yīng)為所有的分立的梯度都要在決 定權(quán)重改變步進之前求和)net = newlin(-1 1,1,0 1,0.02);net.IW1,1=0 0;net.biasConnect=0;net.trainParam.epochs = 1;Pi = 1;P = 2 3 4;T = 3 5 6;我們用
37、以前增加方式訓練過的那組數(shù)據(jù)訓練, 但是這一次我們希望只有在所有數(shù)據(jù)都提 交后才更新權(quán)重(批處理方式) 。因為輸入是一個序列,網(wǎng)絡(luò)將用異步模式模擬。但是權(quán)重 將用批處理方式更新。net=train(net,P,T,Pi);經(jīng)過一次訓練后,權(quán)重值為:>>net.IW1,1ans = 0.9000 0.6200 這里的權(quán)重值和我們用增加方式得到的不同。 在增加方式中, 通過訓練設(shè)置, 一次訓練 可以更新權(quán)重三次。在批處理方式中,每次訓練只能更新一次。第三章反向傳播網(wǎng)絡(luò)(BP網(wǎng)絡(luò))1概述前面介紹了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和模型,在實際應(yīng)用中,我們用的最廣泛的是反向傳播網(wǎng)絡(luò)(BP網(wǎng)絡(luò))。下面就介紹一
38、下 BP網(wǎng)絡(luò)的結(jié)構(gòu)和應(yīng)用。BP網(wǎng)絡(luò)是采用Widrow-Hoff學習算法和非線性可微轉(zhuǎn)移函數(shù)的多層網(wǎng)絡(luò)。一個典型的BP網(wǎng)絡(luò)采用的是梯度下降算法,也就是Widrow-Hoff算法所規(guī)定的。backpropagation就是指的為非線性多層網(wǎng)絡(luò)計算梯度的方法?,F(xiàn)在有許多基本的優(yōu)化算法,例如變尺度算法和牛頓算法。神經(jīng)網(wǎng)絡(luò)工具箱提供了許多這樣的算法。這一章我們將討論使用這些規(guī)則和這些算法的優(yōu)缺點。一個經(jīng)過訓練的BP網(wǎng)絡(luò)能夠根據(jù)輸入給出合適的結(jié)果,雖然這個輸入并沒有被訓練過。 這個特性使得 BP網(wǎng)絡(luò)很適合采用輸入/目標對進行訓練,而且并不需要把所有可能的輸入/目標對都訓練過。為了提高網(wǎng)絡(luò)的適用性,神經(jīng)網(wǎng)絡(luò)
39、工具箱提供了兩個特性-規(guī)則化和早期停止。這兩個特性和用途我們將在這一章的后面討論。這一章還將討論網(wǎng)絡(luò)的預處理和后處理技術(shù)以提高網(wǎng)絡(luò)訓練效率。2.基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)前一章已詳細討論過,前饋型BP網(wǎng)絡(luò)的結(jié)構(gòu)結(jié)構(gòu)和它基本相同,這里就不再詳細論述了,這里著重說明以下幾點:1. 常用的前饋型 BP網(wǎng)絡(luò)的轉(zhuǎn)移函數(shù)有l(wèi)ogsig , tansig,有時也會用至U線性函數(shù)purelin。當網(wǎng)絡(luò)的最后一層采用曲線函數(shù)時,輸出被限制在一個很小的范圍內(nèi),如果采用線性函數(shù)則輸出可為任意值。以上三個函數(shù)是BP網(wǎng)絡(luò)中最常用到的函數(shù),但是如果需要的話你也可以創(chuàng)建其他可微的轉(zhuǎn)移函數(shù)。2. 在BP網(wǎng)絡(luò)中,轉(zhuǎn)移函數(shù)可求導
40、是非常重要的,tan sig、logsig和purelin都有對應(yīng) 的導函數(shù)dtansig、dlogsig和dpurelin。為了得到更多轉(zhuǎn)移函數(shù)的導函數(shù), 你可以帶字符"deriv" 的轉(zhuǎn)移函數(shù):tan sig('deriv')ans = dta nsig網(wǎng)絡(luò)構(gòu)建和初始化訓練前饋網(wǎng)絡(luò)的第一步是建立網(wǎng)絡(luò)對象。函數(shù)newff建立一個可訓練的前饋網(wǎng)絡(luò)。這需要4個輸入?yún)?shù)。第一個參數(shù)是一個Rx2的矩陣以定義 R個輸入向量的最小值和最大值。第二個參數(shù)是一個顢頇每層神經(jīng)元個數(shù)的數(shù)組。第三個參數(shù)是包含每層用到的轉(zhuǎn)移函數(shù)名稱的細胞數(shù)組。最后一個參數(shù)是用到的訓練函數(shù)的名稱。
41、舉個例子,下面命令將創(chuàng)建一個二層網(wǎng)絡(luò),其網(wǎng)絡(luò)模型如下圖所示。輸入隱層輸出層它的輸入是兩個元素的向量,第一層有三個神經(jīng)元,第二層有一個神經(jīng)元。第一層的轉(zhuǎn)移函數(shù)是tan-sigmoid ,輸出層的轉(zhuǎn)移函數(shù)是linear。輸入向量的第一個元素的范圍是-1到2,輸入向量的第二個元素的范圍是0 到 5,訓練函數(shù)是 traingd 。net=newff(-1 2; 0 5,3,1,'tansig','purelin','traingd'); 這個命令建立了網(wǎng)絡(luò)對象并且初始化了網(wǎng)絡(luò)權(quán)重和偏置,因此網(wǎng)絡(luò)就可以進行訓練了。 我們可能要多次重新初始化權(quán)重或者進行自定
42、義的初始化。下面就是初始化的詳細步驟。在訓練前饋網(wǎng)絡(luò)之前,權(quán)重和偏置必須被初始化。初始化權(quán)重和偏置的工作用命令 init 來實現(xiàn)。 這個函數(shù)接收網(wǎng)絡(luò)對象并初始化權(quán)重和偏置后返回網(wǎng)絡(luò)對象。 下面就是網(wǎng)絡(luò)如何初 始化的:net = init(net);我們可以通過設(shè)定網(wǎng)絡(luò)參數(shù) net.initFcn 和 net.layeri.initFcn 這一技巧來初始化一個給 定的網(wǎng)絡(luò)。 net. initFcn 用來決定整個網(wǎng)絡(luò)的初始化函數(shù)。前饋網(wǎng)絡(luò)的缺省值為 initlay ,它 允許每一層用單獨的初始化函數(shù)。設(shè)定了 net.initFcn ,那么參數(shù) net.layeri.initFcn 也要設(shè) 定用來
43、決定每一層的初始化函數(shù)。對前饋網(wǎng)絡(luò)來說,有兩種不同的初始化方式經(jīng)常被用到: initwb 和 initnw 。 initwb 函數(shù) 根據(jù)每一層自己的初始化參數(shù) (net.inputWeightsi,j.initFcn) 初始化權(quán)重矩陣和偏置。前饋網(wǎng) 絡(luò)的初始化權(quán)重通常設(shè)為ran ds,它使權(quán)重在-1到1之間隨機取值。這種方式經(jīng)常用在轉(zhuǎn)換函數(shù)是線性函數(shù)時。 initnw 通常用于轉(zhuǎn)換函數(shù)是曲線函數(shù)。 它根據(jù) Nguyen 和 WidrowNgWi90 為層產(chǎn)生初始權(quán)重和偏置值, 使得每層神經(jīng)元的活動區(qū)域能大致平坦的分布在輸入空間。它比起單純的給權(quán)重和偏置隨機賦值有以下優(yōu)點: (1)減少神經(jīng)元的浪
44、費 (因為所有神經(jīng)元的 活動區(qū)域都在輸入空間內(nèi)) 。(2)有更快的訓練速度(因為輸入空間的每個區(qū)域都在活動的 神經(jīng)元范圍中) 。初始化函數(shù)被 newff 所調(diào)用。因此當網(wǎng)絡(luò)創(chuàng)建時,它根據(jù)缺省的參數(shù)自動初始化。init不需要單獨的調(diào)用。 可是我們可能要重新初始化權(quán)重和偏置或者進行自定義的初始化。例如,我們用 newff 創(chuàng)建的網(wǎng)絡(luò),它缺省用 initnw 來初始化第一層。如果我們想要用 rands 重新初 始化第一層的權(quán)重和偏置,我們用以下命令:net.layers1.initFcn = 'initwb'net.inputWeights1,1.initFcn = 'ran
45、ds'net.biases1,1.initFcn = 'rands'net.biases2,1.initFcn = 'rands'net = init(net);網(wǎng)絡(luò)模擬 (SIM)函數(shù)sim模擬一個網(wǎng)絡(luò)。sim接收網(wǎng)絡(luò)輸入 p,網(wǎng)絡(luò)對象net,返回網(wǎng)絡(luò)輸出 a,這里 是 simuff 用來模擬上面建立的帶一個輸入向量的網(wǎng)絡(luò)。p = 1;2;a = sim(net,p)a =-0.1011(用這段代碼得到的輸出是不一樣的,這是因為網(wǎng)絡(luò)初始化是隨機的。)下面調(diào)用 sim 來計算一個同步輸入 3 向量網(wǎng)絡(luò)的輸出:p = 1 3 2;2 4 1;a=sim(n
46、et,p)a =-0.1011 -0.2308 0.4955網(wǎng)絡(luò)訓練一旦網(wǎng)絡(luò)加權(quán)和偏差被初始化, 網(wǎng)絡(luò)就可以開始訓練了。 我們能夠訓練網(wǎng)絡(luò)來做函數(shù)近似(非線性 后退),模式結(jié)合,或者模式分類。訓練處理需要一套適當?shù)木W(wǎng)絡(luò)操作的例子 - 網(wǎng)絡(luò)輸入p和目標輸出t。在訓 練期間網(wǎng)絡(luò)的加權(quán)和 偏差 不斷的把網(wǎng) 絡(luò)性能函數(shù) net.performFcn 減少到最小。 前饋網(wǎng)絡(luò)的缺省性能函數(shù)是均方誤差mse-網(wǎng)絡(luò)輸出和目標輸出t 之間的均方誤差。這章的余項將描述幾個對前饋網(wǎng)絡(luò)來說不同的訓練算法。所有這些算法 都用性能函數(shù)的梯度來決定怎樣把權(quán)重調(diào)整到最佳。 梯度由叫做反向傳播的技術(shù)決定, 它要 通過網(wǎng)絡(luò)實現(xiàn)反
47、向計算。 反向傳播計算源自使用微積分的鏈規(guī)則。 基本的反向傳播算法的權(quán) 重沿著梯度的負方向移動, 這將在下一節(jié)講述。 以后的章節(jié)將講述更復雜的算法以提高收斂 速度。反向傳播算法反向傳播算法中有許多變量, 這一章將討論其中的一些。 反向傳播學習算法最簡單的應(yīng) 用是沿著性能函數(shù)最速增加的方向-梯度的負方向更新權(quán)重和偏置。這種遞歸算法可以寫成:xk+1 = xk- a k g k這里xk是當前權(quán)重和偏置向量,g k是當前梯度,a k是學習速率。有兩種不同的辦法 實現(xiàn)梯度下降算法: 增加模式和批處理模式。 在增加模式中, 網(wǎng)絡(luò)輸入每提交一次,梯度計 算一次并更新權(quán)重。 在批處理模式中, 當所有的輸入都
48、被提交后網(wǎng)絡(luò)才被更新。 下面兩節(jié)將 討論增加模式和批處理模式。增加模式訓練法( ADAPT )函數(shù)adapt用來訓練增加模式的網(wǎng)絡(luò),它從訓練設(shè)置中接受網(wǎng)絡(luò)對象、網(wǎng)絡(luò)輸入和目標 輸入,返回訓練過的網(wǎng)絡(luò)對象、用最后的權(quán)重和偏置得到的輸出和誤差。這里有幾個網(wǎng)絡(luò)參數(shù)必須被設(shè)置,第一個是n et.adaptFcn,它決定使用哪一種增加模式函數(shù),缺省值為adaptwb,這個值允許每一個權(quán)重和偏置都指定它自己的函數(shù),這些單個的 學 習 函 數(shù) 由 參 數(shù) net.biasesi,j.learnFcn 、 net.inputWeightsi,j.learnFcn 、 net.layerWeightsi,j.l
49、earnFcn 和 Gradient Descent (LEARDGD) 來決定。對于基本的梯度最速 下降算法, 權(quán)重和偏置沿著性能函數(shù)的梯度的負方向移動。 在這種算法中, 單個的權(quán)重和偏 置的學習函數(shù)設(shè)定為"learngd"。下面的命令演示了怎樣設(shè)置前面建立的前饋函數(shù)參數(shù):net.biases1,1.learnFcn = 'learngd'net.biases2,1.learnFcn = 'learngd'net.layerWeights2,1.learnFcn = 'learngd'net.inputWeights1,1.
50、learnFcn = 'learngd'函數(shù)learngd有一個相關(guān)的參數(shù)-學習速率lr。權(quán)重和偏置的變化通過梯度的負數(shù)乘上學 習速率倍數(shù)得到。學習速率越大,步進越大。 如果學習速率太大算法就會變得不穩(wěn)定。 如果 學習速率太小,算法就需要很長的時間才能收斂。當 learnFcn 設(shè)置為 learngd 時,就為每一 個權(quán)重和偏置設(shè)置了學習速率參數(shù)的缺省值, 如上面的代碼所示, 當然你也可以自己按照意 愿改變它。下面的代碼演示了把層權(quán)重的學習速率設(shè)置為0.2。我們也可以為權(quán)重和偏置單獨的設(shè)置學習速率。net.layerWeights2,1.learnParam.lr= 0.2;為
51、有序訓練設(shè)置的最后一個參數(shù)是net.adaptParam.passes它決定在訓練過程中訓練值重復的次數(shù)。這里設(shè)置重復次數(shù)為 200net.adaptParam.passes = 200; 現(xiàn)在我們就可以開始訓練網(wǎng)絡(luò)了。當然我們要指定輸入值和目標值如下所示: p = -1 -1 2 2;0 5 0 5;t = -1 -1 1 1;如果我們要在每一次提交輸入后都更新權(quán)重, 那么我們需要將輸入矩陣和目標矩陣轉(zhuǎn)變 為細胞數(shù)組。每一個細胞都是一個輸入或者目標向量。p = num2cell(p,1);t = num2cell(t,1);現(xiàn)在就可以用 adapt 來實現(xiàn)增加方式訓練了 :net,a,e=a
52、dapt(net,p,t); 訓練結(jié)束以后,我們就可以模擬網(wǎng)絡(luò)輸出來檢驗訓練質(zhì)量了。a = sim(net,p)a =-0.9995 -1.0000 1.0001 1.0000帶動力的梯度下降法 (LEARDGDM)除了 learngd 以外,還有一種增加方式算法常被用到,它能提供更快的收斂速度 -learngdm, 帶動量的最速下降法。 動力允許網(wǎng)絡(luò)不但根據(jù)當前梯度而且還能根據(jù)誤差曲面最 近的趨勢響應(yīng)。 就像一個低通濾波器一樣, 動量允許網(wǎng)絡(luò)忽略誤差曲面的小特性。 沒有動量, 網(wǎng)絡(luò)又可能在一個局部最小中被卡住。 有了動量網(wǎng)絡(luò)就能夠平滑這樣的最小。 動量能夠通過 把權(quán)重變得與上次權(quán)重變化的部分
53、和由算法規(guī)則得到的新變化的和相同而加入到網(wǎng)絡(luò)學習 中去。上一次權(quán)重變化對動量的影響由一個動量常數(shù)來決定, 它能夠設(shè)為 0 到 1 之間的任意 值。當動量常數(shù)為 0 時, 權(quán)重變化之根據(jù)梯度得到。 當動量常數(shù)為 1 時新的權(quán)重變化等于上 次的權(quán)重變化,梯度值被忽略了。Learngdm 函數(shù)有上面所示的 learngd 函數(shù)觸發(fā),除非 mc 和 lr 學習參數(shù)都被設(shè)置了。由 于每一個權(quán)重和偏置有它自己的學習參數(shù),每一個權(quán)重和偏置都可以用不同的參數(shù)。下面的命令將用 lerangdm 為前面建立的用增加方式訓練的網(wǎng)絡(luò)設(shè)置缺省的學習參數(shù): net.biases1,1.learnFcn = 'le
54、arngdm'net.biases2,1.learnFcn = 'learngdm'net.layerWeights2,1.learnFcn = 'learngdm'net.inputWeights1,1.learnFcn = 'learngdm'net,a,e=adapt(net,p,t);批處理訓練方式訓練的另一種方式是批處理方式,它由函數(shù) train 觸發(fā)。在批處理方式中,當整個訓練 設(shè)置被應(yīng)用到網(wǎng)絡(luò)后權(quán)重和偏置才被更新。 在每一個訓練例子中的計算的梯度加在一起來決 定權(quán)重和偏置的變化。批處理梯度下降法 (TRAINGD)與增加方式
55、的學習函數(shù) learngd 等價的函數(shù)是 traingd ,它是批處理形式中標準的最速下 降學習函數(shù)。 權(quán)重和偏置沿著性能函數(shù)的梯度的負方向更新。 如果你希望用批處理最速下降 法訓練函數(shù),你要設(shè)置網(wǎng)絡(luò)的 trainFcn 為 traingd ,并調(diào)用 train 函數(shù)。不像以前章節(jié)的學習 函數(shù),它們要單獨設(shè)置權(quán)重矩陣和偏置向量,這一次給定的網(wǎng)絡(luò)只有一個學習函數(shù)。Traingd 有幾個訓練參數(shù): epochs,show,goal,time,min_grad,max_fail 和 lr 。這里的學習速 率和 lerangd 的意義是一樣的。訓練狀態(tài)將每隔 show 次顯示一次。其他參數(shù)決定訓練什么 時候結(jié)束。如果訓練次數(shù)超過epochs性能函數(shù)低于goal,梯度值低于mingrad或者訓練時間超過time,訓練就會結(jié)束。下面的代碼將重建我們以前的網(wǎng)絡(luò),然后用批處理最速下降法訓練網(wǎng)絡(luò)。(注意用批處理方式訓練的話所有的輸入要設(shè)置為矩陣方式) net=newff(-1 2; 0 5,3,1,'tansig'
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三年級教師線上教學總結(jié)
- 廠區(qū)電子合同范本
- 勞務(wù)磚體合同范本
- 印刷廣告標牌合同范本
- 企業(yè)員工股合同范本
- 《韓愈短文》教案
- 合買別墅合同范本
- 《這片土地是神圣的》說課稿
- 《觀滄?!烽喿x答案及鑒賞
- 任務(wù)目標認購合同范例
- 2024-2025學年第二學期英語教研組工作計劃
- 山東省海洋知識競賽(初中組)考試題庫500題(含答案)
- 服務(wù)行業(yè)人力資源薪酬體系管理與優(yōu)化
- 《蔚來發(fā)展》課件
- 2024年山東商務(wù)職業(yè)學院高職單招語文歷年參考題庫含答案解析
- 醫(yī)學教育中的學習風格與個性化教學
- GB/T 45167-2024熔模鑄鋼件、鎳合金鑄件和鈷合金鑄件表面質(zhì)量目視檢測方法
- 2023年東北公司加油站賬務(wù)人員考試題庫
- 舊樓加裝電梯施工方案
- 《鴉片戰(zhàn)爭改》課件
- 銀行網(wǎng)點裝修工程施工組織設(shè)計方案
評論
0/150
提交評論