| 摘要 人工神經(jīng)網(wǎng)絡(ANN)是一種非線性的處理單元,具有自學習、自組織與自適應性的特點,能夠聯(lián)想記憶,擅長處理復雜的非線性問題;但因為人工神經(jīng)網(wǎng)絡的學習訓練過程運算量大,耗時長,所以很少應用于實時要求較高的嵌入式系統(tǒng)。文中提出把網(wǎng)絡的建立、學習訓練及測試這部分運算量大、耗時多的工作放在PC機上進行。當這部分工作完成,網(wǎng)絡收斂后,將計算得到的網(wǎng)絡參數(shù)存入一個文件。把該文件下載到嵌入式系統(tǒng)中,在嵌入式系統(tǒng)中進行網(wǎng)絡重建,并應用神經(jīng)網(wǎng)絡迅速算出正確結(jié)果,這樣就能很好地達到實時的要求。目前已成功地把BP網(wǎng)絡應用于ARM平臺上,實現(xiàn)了對復雜非線性問題的準確分類。該方法為神經(jīng)網(wǎng)絡走入嵌入式領(lǐng)域提供了一條廉價有效的途徑。 關(guān)鍵詞 ARM ANN BP網(wǎng)絡 人工神經(jīng)網(wǎng)絡 MC9328MX1 嵌入式系統(tǒng) 引言 人工神經(jīng)網(wǎng)絡ANN(Artificial Neural Network)是在對人腦組織結(jié)構(gòu)和運行機制的認識理解基礎(chǔ)之上,模擬其結(jié)構(gòu)和智能行為的一種工程系統(tǒng)\[1\]。作為一門多學科、綜合性的研究領(lǐng)域,于20世紀80年代初復興以來, 在全世界掀起了一股空前廣泛的研究熱潮。目前,人工神經(jīng)網(wǎng)絡已被廣泛應用于各個領(lǐng)域,包括商業(yè)及經(jīng)濟估算、自動檢測和監(jiān)視、計算機視覺、語音處理、機器人及自動控制、優(yōu)化問題、航空航天、銀行金融業(yè)和工業(yè)生產(chǎn)等。多數(shù)情況下,人工神經(jīng)網(wǎng)絡都是在內(nèi)存大、運算快的計算機上應用。這是因為人工神經(jīng)網(wǎng)絡一般都要先針對特定的問題進行學習訓練;而學習訓練運算量相當大,往往會花費很長的時間(幾小時、幾天甚至更長時間),并且嵌入式系統(tǒng)中的內(nèi)存大小和通用微處理器處理速度都無法與計算機相比,所以要照搬計算機的處理方法會花費更長的時間。這一點就限制了人工神經(jīng)網(wǎng)絡在時效性要求較高的嵌入式系統(tǒng)中應用。事實上,人工神經(jīng)網(wǎng)絡技術(shù)很早就在嵌入式系統(tǒng)中得到了應用,但大多都是針對特定的問題在專用的芯片中應用,而通用芯片卻達不到要求。當然,也有專業(yè)的神經(jīng)網(wǎng)絡芯片,但價格較貴,不能滿足成本要求。針對這個矛盾,提出一種在ARM芯片上應用神經(jīng)網(wǎng)絡技術(shù)的方案。32位的ARM(Advance RISC Machines)微處理器,以其低成本、低功耗、高性能的特點在嵌入式領(lǐng)域被廣泛使用。本方案已經(jīng)在Motorola公司的龍珠MC9328MX1(ARM920T)上成功實現(xiàn)。該方案能在不增加硬件成本的基礎(chǔ)上,僅通過軟件編寫,就能把神經(jīng)網(wǎng)絡建立在嵌入式系統(tǒng)上,并且快速高效地發(fā)揮神經(jīng)網(wǎng)絡的作用。 1人工神經(jīng)網(wǎng)絡介紹 人工神經(jīng)網(wǎng)絡是根據(jù)人們對生物神經(jīng)網(wǎng)絡的研究成果設計出來的,由一系列的神經(jīng)元及相應的連接構(gòu)成,具有良好的數(shù)學描述;不僅可以用適當?shù)碾娮泳路來實現(xiàn),更可以方便地用計算機程序加以模擬。早在20世紀40年代初期,心理學家McCulloch、數(shù)學家Pitts就提出了人工神經(jīng)網(wǎng)絡的第一個數(shù)學模型,從此開創(chuàng)了神經(jīng)科學理論的研究時代。其后,學者們又先后提出了感知器網(wǎng)絡、BP網(wǎng)絡、自組織網(wǎng)絡、Hopfiled網(wǎng)絡、Elman網(wǎng)絡等各種模型,目前已有200多種網(wǎng)絡模型,十幾種常用算法,使得人工神經(jīng)網(wǎng)絡技術(shù)得以蓬勃發(fā)展。它的應用領(lǐng)域也十分廣闊,特別是在信息、汽車、軍事、化學、水利等工程領(lǐng)域,神經(jīng)網(wǎng)絡的作用越來越顯著。 1.1人工神經(jīng)網(wǎng)絡的特點 人工神經(jīng)網(wǎng)絡在結(jié)構(gòu)上并行處理、分布式存儲,因此運算速度快,具有較理想的容錯性;同時還具有自學習、自組織、自適應能力。它是由大量的神經(jīng)元廣泛互連而成的系統(tǒng),這個結(jié)構(gòu)特點決定著人工神經(jīng)網(wǎng)絡具有高速信息處理的能力。 人工神經(jīng)網(wǎng)絡的知識存儲容量很大。在神經(jīng)網(wǎng)絡中,知識與信息的存儲表現(xiàn)為神經(jīng)元之間分布式的物理聯(lián)系。它分散地表示和存儲于整個網(wǎng)絡內(nèi)的各神經(jīng)元及其連線上。每個神經(jīng)元及其連線只表示一部分信息,而不是一個完整的具體概念。只有通過各神經(jīng)元的分布式綜合效果才能表達出特定的概念和知識。 由于人工神經(jīng)網(wǎng)絡中神經(jīng)元個數(shù)眾多以及整個網(wǎng)絡存儲信息容量的巨大,使得它具有很強的不確定性信息處理能力。即使輸入信息不完全、不準確或模糊不清,神經(jīng)網(wǎng)絡仍然能夠聯(lián)想思維存在于記憶中的事物的完整圖像。只要輸入的模式接近于訓練樣本,系統(tǒng)就能通過聯(lián)想記憶給出正確的推理結(jié)論。 正是因為人工神經(jīng)網(wǎng)絡的結(jié)構(gòu)特點和其信息存儲的分布式特點,使得它相對于其他的判斷識別系統(tǒng),如專家系統(tǒng)等,具有另一個顯著的優(yōu)點——健壯性。生物神經(jīng)網(wǎng)絡不會因為個別神經(jīng)元的損失而失去對原有模式的記憶。最有力的證明是,當一個人的大腦因意外事故受輕微損傷之后,并不會失去原有事物的全部記憶。人工神經(jīng)網(wǎng)絡也有類似的情況。因某些原因,無論是網(wǎng)絡的硬件實現(xiàn)還是軟件實現(xiàn)中的某個或某些神經(jīng)元失效,整個網(wǎng)絡仍然能繼續(xù)工作。 人工神經(jīng)網(wǎng)絡同現(xiàn)行的計算機不同,是一種非線性的處理單元。只有當神經(jīng)元對所有的輸入信號的綜合處理結(jié)果超過某一門限值后才輸出一個信號,因此神經(jīng)網(wǎng)絡是一種具有高度非線性的超大規(guī)模連續(xù)時間動力學系統(tǒng)。它突破了傳統(tǒng)的以線性處理為基礎(chǔ)的數(shù)字電子計算機的局限,標志著人類智能信息處理能力和模擬人腦智能行為能力的一大飛躍。 1.2人工神經(jīng)網(wǎng)絡的基本功能 (1) 聯(lián)想記憶 可以從不完整的信息和噪聲干擾中恢復原始的完整信息,并對從未遇到過的新情況能根據(jù)以往的經(jīng)驗作出合理的分析和判斷。這一能力使其在圖像復原、圖像和語音處理、模式識別、分類等方面具有巨大的應用價值。 (2) 非線性映射 可以用獨特的方式對很復雜的非線性問題作分析、歸納和表述,并作出合適的處理。 (3) 分類與識別 神經(jīng)網(wǎng)絡可以很好地解決對非線性曲面的逼近,可以以任意精度逼近任意曲線,因此比傳統(tǒng)的分類器具有更好的分類與識別能力。 (4) 優(yōu)化計算 神經(jīng)網(wǎng)絡經(jīng)過動態(tài)演變過程達到穩(wěn)定狀態(tài)時,對應的能量函數(shù)最小,從而其穩(wěn)定狀態(tài)就是問題的最優(yōu)解。 (5) 知識處理 主要優(yōu)點是能夠自適應樣本數(shù)據(jù)。當數(shù)據(jù)中有噪聲、形變和非線性時,它能夠正常地工作。 2BP網(wǎng)絡原理 誤差逆?zhèn)鞑ド窠?jīng)網(wǎng)絡,簡稱BP(Back Propagation)網(wǎng)絡,是應用最廣的一種人工神經(jīng)網(wǎng)絡。人工神經(jīng)網(wǎng)絡模型可分為三類:前向網(wǎng)絡、反饋網(wǎng)絡和自組織網(wǎng)絡。BP網(wǎng)絡屬于前向網(wǎng)絡。主要用于函數(shù)逼近、模式識別、分類及數(shù)據(jù)壓縮等方面。 2.1BP神經(jīng)網(wǎng)絡結(jié)構(gòu)\[2\] BP神經(jīng)網(wǎng)絡是一種具有三層或三層以上階層結(jié)構(gòu)的神經(jīng)網(wǎng)絡。層間各種神經(jīng)元實現(xiàn)全連接,即下層的每一個單元與上層的每個單元都實現(xiàn)權(quán)連接,而每層各神經(jīng)元之間不連接,如圖1所示。由于BP 神經(jīng)網(wǎng)絡及其算法增設了中間隱含層而且有相應的學習規(guī)則可循,使其具有對非線性模式的識別能力;尤其是其數(shù)學意義明確、算法步驟分明,更使其具有廣泛的應用前景。一個典型的BP神經(jīng)網(wǎng)絡由三層構(gòu)成:輸入層、隱含層和輸出層。各階層之間實行全互連方式。 圖1BP網(wǎng)絡結(jié)構(gòu)示意2.2BP神經(jīng)網(wǎng)絡原理 BP網(wǎng)絡是一種單向傳播的多層前向網(wǎng)絡。它通過大量樣本進行有導師學習,不斷減小網(wǎng)絡輸出與用戶要求間的距離,逼近要求。其學習訓練由四個過程組成: ① 輸入模式由輸入層經(jīng)中間層向輸出層的“模式順傳播”過程,得到了最初網(wǎng)絡的輸出; ② 由網(wǎng)絡的期望輸出與網(wǎng)絡實際輸出之差得到的誤差信號,從輸出層經(jīng)中間層向輸入層逐漸修正連接權(quán)的“誤差逆?zhèn)鞑ァ边^程; ③ “模式順傳播”與“誤差逆?zhèn)鞑ァ钡姆磸徒惶孢M行的網(wǎng)絡“記憶訓練”過程,用各樣本反復迭代,不斷修正連接權(quán); ④ 網(wǎng)絡趨向收斂,即網(wǎng)絡的全局誤差趨向極小值的“學習收斂”過程。 網(wǎng)絡收斂后,就達到用戶的要求,訓練過程結(jié)束。 可以看出,BP網(wǎng)絡的訓練過程歸結(jié)起來為: 模式順傳播→誤差逆?zhèn)鞑ァ洃浻柧殹鷮W習收斂。 2.3BP神經(jīng)網(wǎng)絡訓練算法 圖1中輸入層、隱層和輸出層的單元數(shù)分別為N、L和M。輸入層各神經(jīng)元輸入為I0,I1,…,IN-1;隱層各神經(jīng)元的輸出為M0,M1,…,ML-1;網(wǎng)絡實際輸出層各神經(jīng)元輸出為O0,O1,…,OM-1;訓練樣本期望各神經(jīng)元輸出值為E0,E1,…,EM-1;輸入單元i到隱層j的權(quán)值為Vij,隱層j到輸出單元k的權(quán)值為Wjk。 BP網(wǎng)絡訓練過程具體算法如下: ① 將權(quán)值初始化為 -1.0~1.0之間的隨機數(shù); ② 從樣本中提取特征,取出I0,I1,…,IN-1輸入網(wǎng)絡,指定期望輸出E0,E1,…,EM-1; ③ 計算隱層輸出M0,M1,…,ML-1和網(wǎng)絡實際輸出O0,O1,…,OM-1; ④ 計算實際輸出與期望輸出的誤差; ⑤ 調(diào)整權(quán)值W(n+1)jk=W(n)jk+ηδkMj(1) W(n+1)ij=V(n)ij+ηδjIi(2)式中η為學習步長,δ為局域梯度。 ⑥ 返回⑤,用所有訓練樣本反復訓練網(wǎng)絡,多次迭代,直到權(quán)值達到穩(wěn)定。 實際訓練時,定義出反映實際輸出與期望輸出誤差平方和的度量值為EP=1〖〗2∑M-1〖〗k=0(Ek-Ok)2(3)收斂條件為Error=1〖〗P∑P-1〖〗P=0EP<ε(4)式中P為訓練樣本數(shù),ε為給定的誤差范圍。當滿足此條件時訓練結(jié)束。 3方案設計 大多人工神經(jīng)網(wǎng)絡程序都是在計算機上運行的,但在嵌入式領(lǐng)域中,更多應用都是針對便攜式設備的;而目前嵌入式系統(tǒng)中,內(nèi)存容量和通用處理器的處理能力都無法與計算機相比。這就限制了其處理能力,導致了嵌入式系統(tǒng)在應用人工神經(jīng)網(wǎng)絡時有時效性不好的先天缺陷。在暫時不能提高芯片處理能力的情況下,為了克服這個缺陷,就要讓嵌入式系統(tǒng)盡量少參加運算,集中資源僅處理必要的任務來提高時效性。也就是說,在應用神經(jīng)網(wǎng)絡技術(shù)時,把運算量大的、耗時多的任務交給PC機先完成,而僅把用戶要使用的應用程序部分載入嵌入式系統(tǒng),這樣可以大大地提高嵌入式系統(tǒng)在應用人工神經(jīng)網(wǎng)絡時的時效性。于是,可以把整體工作分為兩部分。第一部分包括網(wǎng)絡的建立、學習訓練以及檢測。這部分應該在PC機上實現(xiàn),當網(wǎng)絡經(jīng)過訓練,收斂后,計算得到了合適的各網(wǎng)絡參數(shù),將這些參數(shù)存入一個文件。第二部分包括重新復原網(wǎng)絡、用戶使用界面及其他對用戶進行各種服務的應用程序。這部分程序?qū)⒃谇度胧较到y(tǒng)上運行。需要注意的是,在嵌入式系統(tǒng)使用神經(jīng)網(wǎng)絡處理問題之前,必須把預先在PC機上經(jīng)過長時間學習訓練得到的網(wǎng)絡參數(shù)文件先裝入嵌入式系統(tǒng)。因為嵌入式系統(tǒng)要根據(jù)這些網(wǎng)絡參數(shù)在嵌入式系統(tǒng)中重新復原出結(jié)構(gòu)合理的神經(jīng)網(wǎng)絡。也可以直接把網(wǎng)絡參數(shù)文件與第二部分的應用程序放在一起,編譯生成在ARM上運行的可執(zhí)行代碼,然后下載到嵌入式系統(tǒng)中運行。 4人工神經(jīng)網(wǎng)絡在ARM平臺上的實現(xiàn) 目前,成熟的BP網(wǎng)絡算法代碼很多。設計者只需要針對處理的特定問題而確定網(wǎng)絡的規(guī)模,即確定網(wǎng)絡層數(shù)和每層神經(jīng)元數(shù)目。也可以再選擇適當?shù)膭恿恳蜃印W習步長等極少的幾個參數(shù),然后調(diào)用BP網(wǎng)絡算法代碼進行迭代運算。直到網(wǎng)絡收斂后,將得到的網(wǎng)絡各權(quán)值等參數(shù)存入網(wǎng)絡參數(shù)文件就可以了。這第一部分的工作在PC機上完成,比較簡單。第二部分是嵌入式系統(tǒng)中運行的程序,應該按照實際問題的要求,在需要時從第一部分生成的網(wǎng)絡參數(shù)文件中取出各個網(wǎng)絡參數(shù)復原網(wǎng)絡。然后根據(jù)用戶要求,將輸入模式輸入神經(jīng)網(wǎng)絡,由網(wǎng)絡進行前向計算得出結(jié)果,從而快速合理地解決問題。因為在嵌入式系統(tǒng)中,只對網(wǎng)絡進行前向運算,所以運算量相當小,瞬間即可完成。對于處理較復雜的非線性問題,這種處理方法會比普通算法快,并且因為它使用了第一部分在PC機上訓練好的神經(jīng)網(wǎng)絡,所以具有普通算法不具備的容錯、聯(lián)想、自適應能力,而且整個應用具有非常好的健壯性。人工神經(jīng)網(wǎng)絡的應用部分只是作為解決問題的一種方法,應該包含在應用程序內(nèi)。應用程序代碼編寫完畢后,可以在PC上使用GNU提供的交叉編譯工具編譯出ARM平臺上的可執(zhí)行代碼。如果在ARM平臺上移植了嵌入式Linux操作系統(tǒng),還可以使用GNU的調(diào)試工具,如gdb、gdbserver、kgdb等,方便地對目標板上Linux下應用程序進行調(diào)試。 5試驗 在MC9328MX1處理器\[3\](ARM920T)的硬件平臺上,移植嵌入式Linux操作系統(tǒng)。在該系統(tǒng)中加入運用神經(jīng)網(wǎng)絡進行文字識別的應用程序,對國家863字庫中的前100個字進行識別。先在PC機上進行了10個小時訓練,識別率達到99%。運用得到的神經(jīng)網(wǎng)絡參數(shù)文件,在嵌入式系統(tǒng)中重新復原網(wǎng)絡,進行識別應用,會有同樣的識別率。識別過程在瞬間完成,具有非常好的時效性。該技術(shù)可以方便地應用在PDA等嵌入式產(chǎn)品中進行快速高效的文字或者其他用途的模式識別。 結(jié)語 人工神經(jīng)網(wǎng)絡作為一種交叉學科正受到人們的關(guān)注,同時也正被廣泛應用于各個領(lǐng)域。在嵌入式領(lǐng)域的應用中,必須要克服時效性不好的缺點。文中提出的將訓練和應用兩部分分離的方法是一個有效的方法。該方法會推動人工神經(jīng)網(wǎng)絡在嵌入式領(lǐng)域更廣泛地應用,特別是對于時效性、可靠性要求都很高的便攜式設備,具有更廣闊的應用前景。 參考文獻 1袁曾任. 人工神經(jīng)元網(wǎng)絡及其應用\[M\]. 北京: 清華大學出版社,1999. 60~130 2韓力群. 人工神經(jīng)網(wǎng)絡理論、設計與應用\[M\]. 北京: 化學工業(yè)出版社,2002. 57~94 3王祖林, 等. 新一代嵌入式微處理器龍珠i.MX結(jié)構(gòu)及應用基礎(chǔ)\[M\]. 北京: 北京航空航天大學出版社,2004. 281~291 |