[精品論文]基于VC++的數(shù)字識別系統(tǒng)的論文_第1頁
[精品論文]基于VC++的數(shù)字識別系統(tǒng)的論文_第2頁
[精品論文]基于VC++的數(shù)字識別系統(tǒng)的論文_第3頁
[精品論文]基于VC++的數(shù)字識別系統(tǒng)的論文_第4頁
[精品論文]基于VC++的數(shù)字識別系統(tǒng)的論文_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

畢業(yè)設(shè)計課程定做 QQ1714879127第1章緒論1.1數(shù)字識別概述模式識別是六十年代初迅速發(fā)展起來的一門學(xué)科。由于它研究的是如何用機(jī)器來實(shí)現(xiàn)人(及某些動物)對事物的學(xué)習(xí)、識別和判斷能力,因而受到了很多科技領(lǐng)域研究人員的注意,成為人工智能研究的一個重要方面。字符識別是模式識別的一個傳統(tǒng)研究領(lǐng)域。從50年代開始,許多的研究者就在這一研究領(lǐng)域開展了廣泛的探索,并為模式識別的發(fā)展產(chǎn)生了積極的影響。字符識別一般可以分為兩類:1.聯(lián)機(jī)字符識別;2.光學(xué)字符識別(Optical Chara- cter Recognition,OCR)或稱離線字符識別。在聯(lián)機(jī)字符識別中,計算機(jī)能夠通過與計算機(jī)相連的輸入設(shè)備獲得輸入字符筆劃的順序、筆劃的方向以及字符的形狀,所以相對OCR來說它更容易識別一些。但聯(lián)機(jī)字符識別有一個重要的不足就是要求輸入者必須在指定的設(shè)備上書寫,然而人們在生活中大部分的書寫情況是不滿足這一要求的,比如人們填寫各種表格資料,開具支票等。如果需要計算機(jī)去認(rèn)識這些己經(jīng)成為文字的東西,就需要OCR技術(shù)。比起聯(lián)機(jī)字符識別來,OCR不要求書寫者在特定輸入設(shè)備上書寫,它可以與平常一樣書寫,所以O(shè)CR的應(yīng)用更為廣泛。OCR所使用的輸入設(shè)備可以是任何一種圖像采集設(shè)備,如CCD、掃描儀、數(shù)字相機(jī)等。通過使用這類采集設(shè)備,OCR系統(tǒng)將書寫者已寫好的文字作為圖像輸入到計算機(jī)中,然后由計算機(jī)去識別。由于OCR的輸入只是簡單的一副圖像,它就不能像聯(lián)機(jī)輸入那樣比較容易的從物理特性上獲得字符筆劃的順序信息,因此OCR是一個更具挑戰(zhàn)性的問題。數(shù)字識別是多年來的研究熱點(diǎn),也是字符識別中的一個特別問題,它是本文研究的重點(diǎn)。數(shù)字識別在特定的環(huán)境下應(yīng)用特別廣泛,如郵政編碼自動識別系統(tǒng),稅表和銀行支票自動處理系統(tǒng)等。一般情況下,當(dāng)涉及到數(shù)字識別時,人們往往要求識別器有很高的識別可靠性,特別是有關(guān)金額的數(shù)字識別時,如支票中填寫的金額部分,更是如此。因此針對這類問題的處理系統(tǒng)設(shè)計的關(guān)鍵環(huán)節(jié)之一就是設(shè)計出高可靠性和高識別率的數(shù)字識別方法。然而可以說還沒有哪個數(shù)字識別器達(dá)到完美的識別效果。在過去的數(shù)十年中,研究者們提出了許許多多的識別方法。按使用的特征不同,這些方法可以分為兩類:基于結(jié)構(gòu)特征的方法和基于統(tǒng)計特征的方法。結(jié)構(gòu)特征通常包括圓、端點(diǎn)、交叉點(diǎn)、筆劃、輪廓等,統(tǒng)計特征通常包括點(diǎn)密度的測量、矩、特征區(qū)域等,一般來說,兩類特征各有優(yōu)勢。例如,使用統(tǒng)計特征的分類器易于訓(xùn)練,而且對于使用統(tǒng)計特征的分類器,在給定的訓(xùn)練集上能夠得到相對較高的識別率,而結(jié)構(gòu)特征的主要優(yōu)點(diǎn)之一是能描述字符的結(jié)構(gòu),在識別過程中能有效地結(jié)合幾何和結(jié)構(gòu)的知識,因此能夠得到可靠性較高的識別結(jié)果。1.2神經(jīng)網(wǎng)絡(luò)在數(shù)字識別中的應(yīng)用神經(jīng)網(wǎng)絡(luò)模型用于模擬人腦神經(jīng)元活動的過程。其中包括對信息的加工、處理、存儲和搜索等過程,它具有如下基本特點(diǎn):1、神經(jīng)網(wǎng)絡(luò)具有分布式存儲信息的特點(diǎn)。它存儲信息的方式與傳統(tǒng)的計算機(jī)的思維方式是不同的,一個信息不是存在一個地方,而是分布在不同的位置。網(wǎng)絡(luò)的某一部分也不只存儲一個信息,它的信息是分布式存儲的。神經(jīng)網(wǎng)絡(luò)是用大量神經(jīng)元之間的連接及對各連接權(quán)值的分布來表示特定的信息。因此,這種分布式存儲方式即使當(dāng)局部網(wǎng)絡(luò)受損時,仍具有能夠恢復(fù)原來信息的優(yōu)點(diǎn)。2、神經(jīng)網(wǎng)絡(luò)對信息的處理及推理的過程具有并行的特點(diǎn)。每個神經(jīng)元都可以根據(jù)接收到的信息作獨(dú)立的運(yùn)算和處理,然后將結(jié)果傳輸出去,這體現(xiàn)了一種并行處理。神經(jīng)網(wǎng)絡(luò)對于一個特定的輸入模式,通過前向計算產(chǎn)生一個輸出模式,各個輸出節(jié)點(diǎn)代表的邏輯概念被同時計算出來。在輸出模式中,通過輸出節(jié)點(diǎn)的比較和本身信號的強(qiáng)弱而得到特定的解,同時排出其余的解。這體現(xiàn)了神經(jīng)網(wǎng)絡(luò)并行推理的特點(diǎn)。3、神經(jīng)網(wǎng)絡(luò)對信息的處理具有自組織、自學(xué)習(xí)的特點(diǎn)。神經(jīng)網(wǎng)絡(luò)中各神經(jīng)元之間的連接強(qiáng)度用權(quán)值大小來表示,這種權(quán)值可以事先定出,也可以為適應(yīng)周圍環(huán)境而不斷地變化,這種過程稱為神經(jīng)元的學(xué)習(xí)過程。神經(jīng)網(wǎng)絡(luò)所具有的自學(xué)習(xí)過程模擬了人的形象思維方法,這是與傳統(tǒng)符號邏輯完全不同的一種非邏輯非語言的方法。在神經(jīng)網(wǎng)絡(luò)研究的歷史進(jìn)程中,它在模式識別方面的應(yīng)用一直是最活躍和最成功的領(lǐng)域。神經(jīng)網(wǎng)絡(luò)與它在模式識別中的應(yīng)用是息息相關(guān),密不可分的。幾乎可以說,神經(jīng)網(wǎng)絡(luò)模式識別研究的發(fā)展史貫穿了整個神經(jīng)網(wǎng)絡(luò)的研究歷程。目前, 隨著計算機(jī)的迅速發(fā)展,性能價格比的不斷提高,模式識別技術(shù)己經(jīng)從理論探討為主發(fā)展到大量的實(shí)際應(yīng)用,人們將更多的注意力開始轉(zhuǎn)向那些用于語音,圖像、機(jī)器人以及人工智能等的模式識別實(shí)際問題。解決這些問題的關(guān)鍵是需要進(jìn)行復(fù)雜而龐大的實(shí)時數(shù)據(jù)處理,而現(xiàn)有計算機(jī)的存貯容量及計算復(fù)雜性的局限,使得真正實(shí)時化的應(yīng)用受阻。這種面向?qū)崟r應(yīng)用的模式識別問題促使人們開始將并行處理的神經(jīng)網(wǎng)絡(luò)應(yīng)到模式識別,而神經(jīng)網(wǎng)絡(luò)模式識別技術(shù)又將模式識別實(shí)時應(yīng)用推進(jìn)了一大步,數(shù)字識別就是這種應(yīng)用的一個很重要的領(lǐng)域。數(shù)字識別是一項(xiàng)極具研究價值的課題,隨著神經(jīng)網(wǎng)絡(luò)和模糊邏輯技術(shù)的發(fā)展,人們對這一問題的研究又采用了許多新的方法和手段,也使得這一古老的課題煥發(fā)出新的生命力.目前國際上有相當(dāng)多的學(xué)者在研究這一課題,它包括了模式識別領(lǐng)域中所有典型的問題:數(shù)據(jù)的采集、處理及選擇、輸入樣本表達(dá)的選擇、模式識別分類器的選擇以及用樣本集對識別器的有指導(dǎo)的訓(xùn)練。人工神經(jīng)網(wǎng)絡(luò)為數(shù)字識別提供了新的手段。正是神經(jīng)網(wǎng)絡(luò)所具有的這種自組織自學(xué)習(xí)能力、推廣能力、非線性和運(yùn)算高度并行的能力使得模式識別成為目前神經(jīng)網(wǎng)絡(luò)最為成功的應(yīng)用領(lǐng)域。1.3數(shù)字圖像處理的應(yīng)用數(shù)字圖像處理主要研究的內(nèi)容有以下幾個方面: 1、圖像變換。由于圖像陣列很大,直接在空間域中進(jìn)行處理,涉及計算量很大。因此,往往采用各種圖像變換的方法,如傅立葉變換、沃爾什變換、離散余弦變換等間接處理技術(shù),將空間域的處理轉(zhuǎn)換為變換域處理,不僅可減少計算量,而且可獲得更有效的處理(如傅立葉變換可在頻域中進(jìn)行數(shù)字濾波處理)。目前新興研究的小波變換在時域和頻域中都具有良好的局部化特性,它在圖像處理中也有著廣泛而有效的應(yīng)用。 2、圖像編碼壓縮。圖像編碼壓縮技術(shù)可減少描述圖像的數(shù)據(jù)量(即比特數(shù)),以便節(jié)省圖像傳輸、處理時間和減少所占用的存儲器容量。壓縮可以在不失真的前提下獲得,也可以在允許的失真條件下進(jìn)行。編碼是壓縮技術(shù)中最重要的方法,它在圖像處理技術(shù)中是發(fā)展最早且比較成熟的技術(shù)。 3、圖像增強(qiáng)和復(fù)原。圖像增強(qiáng)和復(fù)原的目的是為了提高圖像的質(zhì)量,如去除噪聲,提高圖像的清晰度等。圖像增強(qiáng)不考慮圖像降質(zhì)的原因,突出圖像中所感興趣的部分。如強(qiáng)化圖像高頻分量,可使圖像中物體輪廓清晰,細(xì)節(jié)明顯;強(qiáng)化低頻分量可減少圖像中噪聲影響。圖像復(fù)原要求對圖像降質(zhì)的原因有一定的了解,一般講應(yīng)根據(jù)降質(zhì)過程建立“降質(zhì)模型”,再采用某種濾波方法,恢復(fù)或重建原來的圖像。 4、意義的特征部分提取出來,其有意義的特征有圖像中的邊緣、區(qū)域等,這是進(jìn)一步進(jìn)行圖像識別、分析和理解的基礎(chǔ)。雖然目前已研究出不少邊緣提取、區(qū)域分割的方法,但還沒有一種普遍適用于各種圖像的有效方法。因此,對圖像分割的研究還在不斷深入之中,是目前圖像處理中研究的熱點(diǎn)之一。 5、圖像描述。圖像描述是圖像識別和理解的必要前提。作為最簡單的二值圖像可采用其幾何特性描述物體的特性,一般圖像的描述方法采用二維形狀描述,它有邊界描述和區(qū)域描述兩類方法。對于特殊的紋理圖像可采用二維紋理特征描述。隨著圖像處理研究的深入發(fā)展,已經(jīng)開始進(jìn)行三維物體描述的研究,提出了體積描述、表面描述、廣義圓柱體描述等方法。 6、圖像分類(識別)。圖像分類(識別)屬于模式識別的范疇,其主要內(nèi)容是圖像經(jīng)過某些預(yù)處理(增強(qiáng)、復(fù)原、壓縮)后,進(jìn)行圖像分割和特征提取,從而進(jìn)行判決分類。圖像分類常采用經(jīng)典的模式識別方法,有統(tǒng)計模式分類和句法(結(jié)構(gòu))模式分類,近年來新發(fā)展起來的模糊模式識別和人工神經(jīng)網(wǎng)絡(luò)模式分類在圖像識別中也越來越受到重視。在數(shù)字識別中分類識別之前要利用數(shù)字圖象處理和計算機(jī)圖形學(xué)的知識進(jìn)行圖象的預(yù)處理以便進(jìn)行下面的特征提取以及識別。圖象的預(yù)處理包括二值化、圖象的增強(qiáng)、圖象的銳化以及圖象的分割等。1.4 本論文所做的工作本論文在數(shù)字識別及預(yù)處理方面做了如下工作:1、介紹了數(shù)字識別廣闊的應(yīng)用前景和常用的識別方法,通過分析指出數(shù)字識別的難點(diǎn)在于無法建立精確的數(shù)學(xué)模型和做出簡單可行的識別系統(tǒng)。2、本文第二、三章介紹了人工神經(jīng)元網(wǎng)絡(luò)基本原理和它的BP學(xué)習(xí)算法,然后論述了模式識別的方法和有關(guān)概念,指出了神經(jīng)網(wǎng)絡(luò)之所以能夠用于數(shù)字識別的內(nèi)在機(jī)理和獨(dú)特優(yōu)勢。3、第四章分析了常規(guī)數(shù)字識別的基本步驟,并指出數(shù)字識別的關(guān)鍵步驟是預(yù)處理和特征提取。詳細(xì)了圖像預(yù)處理的步驟及BP神經(jīng)網(wǎng)絡(luò)在數(shù)字識別中的應(yīng)用。第2章模式識別及人工神經(jīng)網(wǎng)絡(luò)概述2.1模式識別簡述在觀察各種事物或接受各種客觀現(xiàn)象時,人們總是不斷地進(jìn)行模式識別。各種具有相似的特征又不完全相同的事物和現(xiàn)象組成不同的類別。在同一類別中,事物和現(xiàn)象不盡相同,但它們總是表現(xiàn)出某些方面的相近之處。例如,每個人寫出來的數(shù)字“8”可能千差萬別,但它們的共同之處在于,它們都屬于數(shù)字,“8”這個范疇。也就是說,這些千差萬別的數(shù)字“8”的共性是它們具有相同的屬性特征。人的思維可以對初次見到的事物進(jìn)行分類。比如,即使人們初到一個城市,也可以輕易地辨認(rèn)出“街道”、“房屋”、“汽車”這樣的事物。同樣,看到另外一種寫法的“8”,人們?nèi)匀豢梢郧宄刂浪暮x。正是人腦的這種推廣能力,使得人們利用見到過的有限事物和現(xiàn)象,形成各種事物類別的概念。這些有限的、個別的事物和現(xiàn)象就可以稱為模式,而整個類別的現(xiàn)象和事物則可以稱為模式類,或者簡稱為類。人們根據(jù)所見模式的特性,將其劃歸為某一類的過程,實(shí)際上就是模式識別的過程。模式識別這個詞既可以是指人對事物的,一個分析、描述、判斷和識別的過程,也可以是指利用計算機(jī)對某些物理對象進(jìn)行分類的這門學(xué)科。模式和集合的概念是分不開的,模式可以看作是集合論中的元素,而類則可以看作是子集。2.2 人工神經(jīng)網(wǎng)絡(luò)模式識別具體的模式識別是多種多樣的,如果從識別的基本方法上劃分,傳統(tǒng)的模式識別大體分為統(tǒng)計模式識別和句法模式識別,在識別系統(tǒng)中引入神經(jīng)網(wǎng)絡(luò)是一種近年來發(fā)展起來的新的模式識別方法。盡管引入神經(jīng)網(wǎng)絡(luò)的方法和引入網(wǎng)絡(luò)的結(jié)構(gòu)可以各不相同,但都可稱為神經(jīng)網(wǎng)絡(luò)模式識別。而且這些識別方法在解決傳統(tǒng)方法較難處理的某些問題上帶來了新的進(jìn)展和突破,因而得到了人們越來越多的重視和研究。人工神經(jīng)元網(wǎng)絡(luò)(Artificial Neural Network)簡稱神經(jīng)網(wǎng)絡(luò),是基于日前人們對自然神經(jīng)系統(tǒng)的認(rèn)識而提出的一些神經(jīng)系統(tǒng)的模型,一般是由一系列被稱為神經(jīng)元的具有某種簡單計算功能的節(jié)點(diǎn)經(jīng)過廣泛連接構(gòu)成的一定網(wǎng)絡(luò)結(jié)構(gòu),而其網(wǎng)絡(luò)連接的權(quán)值根據(jù)某種學(xué)習(xí)規(guī)則在外界輸入的作用下不斷調(diào)節(jié),最后使網(wǎng)絡(luò)具有某種期望的輸出特性。神經(jīng)網(wǎng)絡(luò)的這種可以根據(jù)輸入樣本學(xué)習(xí)的功能使得它非常適合于用來解決模式識別問題,這也是神經(jīng)網(wǎng)絡(luò)目前最成功的應(yīng)用領(lǐng)域之一。神經(jīng)網(wǎng)絡(luò)模式識別的基本方法是,首先用己知樣本訓(xùn)練神經(jīng)網(wǎng)絡(luò),使之對不同類別的己知樣本給出所希望的不同輸出,然后用該網(wǎng)絡(luò)識別未知的樣本,根據(jù)各樣本所對應(yīng)的網(wǎng)絡(luò)輸出情況來劃分未知樣本的類別。神經(jīng)網(wǎng)絡(luò)進(jìn)行模式識別的一般步驟如圖2-1所示,分為如下幾個部分。 預(yù)處理神經(jīng)網(wǎng)絡(luò)識別特征變換常規(guī)處理樣本獲取圖 2-1 神經(jīng)網(wǎng)絡(luò)模式識別基本構(gòu)成1、樣本獲取這一步驟主要是為了得到一定數(shù)量的用于訓(xùn)練和識別的樣本。2、常規(guī)處理其作用相當(dāng)于傳統(tǒng)模式識別中的數(shù)據(jù)獲取和常規(guī)處理兩步的功能。即通過對識別對象的有效觀測、進(jìn)行采樣量化,獲得一系列數(shù)據(jù),再經(jīng)過去除噪聲、加強(qiáng)有用信息等工作獲得盡量逼真的原始數(shù)據(jù)。通過這一步驟,得到了樣本的原始表達(dá)。3、特征變換在原始樣本表達(dá)的基礎(chǔ)上,進(jìn)行適當(dāng)?shù)淖儞Q,得到適合神經(jīng)網(wǎng)絡(luò)進(jìn)行識別的樣本的特征表達(dá)。以上兩步構(gòu)成了神經(jīng)網(wǎng)絡(luò)模式識別中的預(yù)處理過程。這一步驟與傳統(tǒng)模式識別的特征提取選擇的位置很相似,不同的是,神經(jīng)網(wǎng)絡(luò)可以對原始樣本直接進(jìn)行處理,因此這種變換在神經(jīng)網(wǎng)絡(luò)模式識別中不象傳統(tǒng)模式識別的特征提取選擇那樣必不可少,神經(jīng)網(wǎng)絡(luò)對預(yù)處理的要求與傳統(tǒng)模式識別對特征提取選擇的要求也有所不同。4、神經(jīng)網(wǎng)絡(luò)識別根據(jù)識別對象和研究問題的不同,選用不同的網(wǎng)絡(luò)結(jié)構(gòu)并采用適當(dāng)?shù)膶W(xué)習(xí)算法,用已知樣本作為訓(xùn)練集對神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,使其網(wǎng)絡(luò)連接的權(quán)值不斷調(diào)整,直到網(wǎng)絡(luò)的輸出特性與期望的相符合。訓(xùn)練過程結(jié)束以后,網(wǎng)絡(luò)相當(dāng)于一個固定的映射器,新的輸入樣木(測試樣本)通過網(wǎng)絡(luò)映射到不同的類別。神經(jīng)網(wǎng)絡(luò)能夠應(yīng)用于模式識別,關(guān)鍵在于它具有一般數(shù)學(xué)模型所不具有的諸多優(yōu)點(diǎn)。1、分布存儲和容錯性一個信息不是存儲在一個地方,而是按內(nèi)容而分布在整個網(wǎng)絡(luò)上,網(wǎng)絡(luò)某一處不是只存儲一個外部信息,而每個神經(jīng)元存儲多種信息的部分內(nèi)容。網(wǎng)絡(luò)的每部分對信息的存儲有等勢作用。這種分布式存儲算法是存儲區(qū)與運(yùn)算區(qū)合為一體的。在神經(jīng)網(wǎng)絡(luò)中,要獲得存儲的知識則采用“聯(lián)想”的辦法,即當(dāng)一個神經(jīng)網(wǎng)絡(luò)輸入一個激勵時,它要在己存的知識中尋找與該輸入匹配最好的存儲知識為其解。當(dāng)然在信息輸出時也還要經(jīng)過一種處理。而不是直接從記憶中取出。這種存儲方式的優(yōu)點(diǎn)在于若部分信息不完全,就是說或者丟失或者損壞甚至有錯誤的信息,它仍能恢復(fù)出原來正確的完整的信息,系統(tǒng)仍能運(yùn)行。這就是網(wǎng)絡(luò)具有容錯性和聯(lián)想記憶功能,自然是表現(xiàn)出較強(qiáng)的魯莽性。人的大腦的容錯性是它的一種重要的智慧形式。2、大規(guī)模并行處理人工神經(jīng)元網(wǎng)絡(luò)在結(jié)構(gòu)上是并行的,而且網(wǎng)絡(luò)的各個單元可以同時進(jìn)行類似的處理過程。因此,網(wǎng)絡(luò)中的信息處理是在大量單元中平行而又有層次地進(jìn)行,運(yùn)算速度高,大大超過傳統(tǒng)的序列式運(yùn)算的數(shù)字機(jī)。雖然每個神經(jīng)元的信息傳遞(神經(jīng)脈沖)速度是以毫秒計算的,比普通序列式計算機(jī)要慢很多,但是人通常能在1秒內(nèi)即可作出對外界事物的判斷和決策、這就是能神奇地完成所謂“百步”決策。這按照現(xiàn)有傳統(tǒng)的計算機(jī)及人工智能技術(shù)目前還是做不到的。3、自學(xué)習(xí)、自組織和自適應(yīng)性學(xué)習(xí)和適應(yīng)要求在時間過程中系統(tǒng)內(nèi)部結(jié)構(gòu)和聯(lián)系方式有改變,神經(jīng)元網(wǎng)絡(luò)是一種變結(jié)構(gòu)系統(tǒng),恰好能完成對環(huán)境的活應(yīng)和對外界事物的學(xué)習(xí)能力。神經(jīng)元之間的連接有多種多樣,各神經(jīng)元之間連接強(qiáng)度具有一定的可塑性,相當(dāng)于突觸傳遞信息能力的變化,這樣,網(wǎng)絡(luò)可以通過學(xué)習(xí)和訓(xùn)練進(jìn)行自組織以適應(yīng)不同信息處理的要求。神經(jīng)元網(wǎng)絡(luò)是大量神經(jīng)元的集體行為,并不是各單元行為的簡單的相加,而表現(xiàn)出一般復(fù)雜非線性動態(tài)系統(tǒng)的特性。如不可預(yù)測性、不可逆性、有各種類型的吸引子(信息正是“存儲”在定點(diǎn)吸引子)和出現(xiàn)混沌現(xiàn)象等。正是由于神經(jīng)網(wǎng)絡(luò)具有這些特點(diǎn),所以可以處理一些環(huán)境信息十分復(fù)雜、知識背景不清楚和推理規(guī)則不明確的問題。例如語音識別和識別、醫(yī)學(xué)診斷以及市場估計等,都是具有復(fù)雜非線性和不確定性對象的控制。在那里,信源提供的模式豐富多彩,有的互相間存在矛盾,而判定決策原則又無條理可循。通過神經(jīng)元網(wǎng)絡(luò)學(xué)習(xí)(按照學(xué)習(xí)法則),從典型事例中學(xué)會處理具體事例,給出比較滿意的解答。2.3 人工神經(jīng)網(wǎng)絡(luò)的基本原理2.3.1神經(jīng)細(xì)胞以及人工神經(jīng)元的組成神經(jīng)系統(tǒng)的基本構(gòu)造單元是神經(jīng)細(xì)胞,也稱神經(jīng)元。它和人體中其他細(xì)胞的關(guān)鍵區(qū)別在于具有產(chǎn)生、處理和傳遞信號的功能。每個神經(jīng)元都包括三個主要部分:細(xì)胞體、樹突和軸突。樹突的作用是向四方收集由其他神經(jīng)細(xì)胞傳來的信息,軸突的功能是傳出從細(xì)胞體送來的信息。每個神經(jīng)細(xì)胞所產(chǎn)生和傳遞的基本信息是興奮或抑制。在兩個神經(jīng)細(xì)胞之間的相互接觸點(diǎn)稱為突觸。簡單神經(jīng)元網(wǎng)絡(luò)及其簡化結(jié)構(gòu)如圖2-2所示。從信息的傳遞過程來看,一個神經(jīng)細(xì)胞的樹突,在突觸處從其他神經(jīng)細(xì)胞接受信號。這些信號可能是興奮性的,也可能是抑制性的。所有樹突接受到的信號都傳到細(xì)胞體進(jìn)行綜合處理,如果在一個時間間隔內(nèi),某一細(xì)胞接受到的興奮性信號量足夠大,以致于使該細(xì)胞被激活,而產(chǎn)生一個脈沖信號。這個信號將沿著該細(xì)胞的軸突傳送出去,并通過突觸傳給其他神經(jīng)細(xì)胞.神經(jīng)細(xì)胞通過突觸的聯(lián)接形成神經(jīng)網(wǎng)絡(luò)。(1)細(xì)胞體(2)樹突(3)軸突(4)突觸圖2-2 簡單神經(jīng)元網(wǎng)絡(luò)及其簡化結(jié)構(gòu)圖人們正是通過對人腦神經(jīng)系統(tǒng)的初步認(rèn)識,嘗試構(gòu)造出人工神經(jīng)元以組成人工神經(jīng)網(wǎng)絡(luò)系統(tǒng)來對人的智能,甚至是思維行為進(jìn)行研究:嘗試從理性角度闡明大腦的高級機(jī)能。經(jīng)過幾十年的努力與發(fā)展,己涌現(xiàn)出上百種人工神經(jīng)網(wǎng)絡(luò)模型,它們的網(wǎng)絡(luò)結(jié)構(gòu)、性能、算法及應(yīng)用領(lǐng)域各異,但均是根據(jù)生物學(xué)事實(shí)衍生出來的。由于其基本處理單元是對生物神經(jīng)元的近似仿真,因而被稱之為人工神經(jīng)元。它用于仿效生物神經(jīng)細(xì)胞最基本的特性,與生物原型相對應(yīng)。人工神經(jīng)元的主要結(jié)構(gòu)單元是信號的輸入、綜合處理和輸出,其輸出信號的強(qiáng)度大小反映了該單元對相鄰單元影響的強(qiáng)弱。人工神經(jīng)元之間通過互相聯(lián)接形成網(wǎng)絡(luò),稱為人工神經(jīng)網(wǎng)絡(luò)。神經(jīng)元之間相互聯(lián)接的方式稱為聯(lián)接模式,相互之間的聯(lián)接度由聯(lián)接權(quán)值體現(xiàn)在人工神經(jīng)網(wǎng)絡(luò)中,改變信息處理過程及其能力,就是修改網(wǎng)絡(luò)權(quán)值的過程。目前多數(shù)人工神經(jīng)網(wǎng)絡(luò)的構(gòu)造大體上都采用如下的一些原則:1、由一定數(shù)量的基本單元分層聯(lián)接構(gòu)成;2、每個單元的輸入、輸出信號以及綜合處理內(nèi)容都比較簡單;3、網(wǎng)絡(luò)的學(xué)習(xí)和知識存儲體現(xiàn)在各單元之間的聯(lián)接強(qiáng)度上。2.3.2人工神經(jīng)元的模型神經(jīng)元是人工神經(jīng)網(wǎng)絡(luò)的基本處理單元,它一般是一個多輸入/單輸出的非線性元件。神經(jīng)元輸出除受輸入信號的影響外,同時也受到神經(jīng)元內(nèi)部其它因素的影響,所以在人工神經(jīng)元的建模中,常常還加有一個額外輸入信號、稱為偏差(bais),有時也稱為閾值或門限值。一個具有r個輸入分量的神經(jīng)元如圖2-2所示。其中,輸入分量通過與和它相乘的權(quán)值分量相連,以的形式求和后,形成激活函數(shù)f()的輸入。激活函數(shù)的另一個輸入是神經(jīng)元的偏差b,權(quán)值Wj和輸入分量的矩陣形式可以由W的行矢量以及P的列矢量來表示: (2.1)2.4神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)與學(xué)習(xí)規(guī)則2.4.1神經(jīng)網(wǎng)絡(luò)的聯(lián)接形式人腦中大量的神經(jīng)細(xì)胞都不是孤立的,而是通過突觸形式相互聯(lián)系著,構(gòu)成結(jié)構(gòu)與功能十分復(fù)雜的神經(jīng)網(wǎng)絡(luò)系統(tǒng)。為了便于從結(jié)構(gòu)出發(fā)模擬智能,因此必須將一定數(shù)量的神經(jīng)元適當(dāng)?shù)芈?lián)接成網(wǎng)絡(luò),從而形成多種神經(jīng)網(wǎng)絡(luò)模型。通常所說的神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),主要指它的聯(lián)接方式。神經(jīng)網(wǎng)絡(luò)按照拓?fù)浣Y(jié)構(gòu)屬于以神經(jīng)元為節(jié)點(diǎn),以及節(jié)點(diǎn)間有向連接為邊的一種圖,其結(jié)構(gòu)大體上可分為層狀和網(wǎng)狀兩大類。層狀結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)是由若干層組成,每層中有一定數(shù)量的神經(jīng)元,相鄰層中神經(jīng)元單向聯(lián)接,一般地同層內(nèi)的神經(jīng)元不能聯(lián)接,網(wǎng)狀結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)中,任何兩個神經(jīng)元之間都可能雙向聯(lián)接。下面介紹幾種網(wǎng)絡(luò)結(jié)構(gòu):1、前向網(wǎng)絡(luò)前向網(wǎng)絡(luò)通常包含許多層,如圖2-3所示為3層網(wǎng)絡(luò)。這種網(wǎng)絡(luò)特點(diǎn)是只有前后相鄰兩層之間神經(jīng)元相互聯(lián)接,各神經(jīng)元之間沒有反饋。每個神經(jīng)元可以從前一層接收多個輸入,并只有一個輸出送給下一層的各神經(jīng)元。三層前向網(wǎng)絡(luò)分為輸入層、隱層和輸出層。在前向網(wǎng)絡(luò)中有計算功能的節(jié)點(diǎn)稱為計算單元,而輸入節(jié)點(diǎn)無計算功能。2、反饋網(wǎng)絡(luò)反饋網(wǎng)絡(luò)從輸出層到輸入層有反饋。即每一個節(jié)點(diǎn)同時接收外來輸入和來自其它節(jié)點(diǎn)的反饋輸入,其中也包括神經(jīng)元輸出信號引回到本身輸入構(gòu)成的自環(huán)反饋,如圖2-4所示。這種反饋網(wǎng)絡(luò)每個節(jié)點(diǎn)都是一個計算單元。圖2-3前向網(wǎng)絡(luò) 圖2-4反饋網(wǎng)絡(luò)3、相互結(jié)合型網(wǎng)絡(luò)相互結(jié)合型網(wǎng)絡(luò)如圖2-5所示,它是屬于網(wǎng)狀結(jié)構(gòu)。構(gòu)成網(wǎng)絡(luò)中各個神經(jīng)元都可能相互雙向聯(lián)接,所有的神經(jīng)元既作輸入,同時也用于輸出。在這種網(wǎng)絡(luò)中,如果在某一時刻從神經(jīng)網(wǎng)絡(luò)外部施加一個輸入,各個神經(jīng)元一邊相互作用,一邊進(jìn)行信息處理,直到使網(wǎng)絡(luò)所有神經(jīng)元的活性度或輸出值,收斂于某個平均值為止作為信息處理的結(jié)束。圖2-5網(wǎng)狀結(jié)構(gòu)網(wǎng)絡(luò) 圖2-6混合型網(wǎng)絡(luò)4、混合型網(wǎng)絡(luò)上述的前向網(wǎng)絡(luò)和相互結(jié)合型網(wǎng)絡(luò)分別是典型的層狀結(jié)構(gòu)網(wǎng)絡(luò)和網(wǎng)絡(luò)結(jié)構(gòu)網(wǎng)絡(luò),介于這兩種網(wǎng)絡(luò)中間的一種聯(lián)接方式,如圖2-6所示,在前向網(wǎng)絡(luò)的同層間神經(jīng)元有互聯(lián)的結(jié)構(gòu),稱為混合型網(wǎng)絡(luò)。這種在同一層內(nèi)的互聯(lián),目的是為了限制同層內(nèi)神經(jīng)元同時興奮或抑制的神經(jīng)元數(shù)目,以完成特定的功能。2.4.2神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)和訓(xùn)練人腦中一個典型神經(jīng)元通過許多樹突的精細(xì)結(jié)構(gòu),收集來自其它神經(jīng)元的信息,神經(jīng)元又通過軸突發(fā)出電活性脈沖。軸突分裂上千條分支,在每條分支末端,通過突觸的結(jié)構(gòu)把來自軸突的電活性變?yōu)殡娮饔茫瑥亩古c之相連的各種神經(jīng)元的活性受到抑制或興奮。當(dāng)一個神經(jīng)元收到興奮輸入,而興奮輸入又比神經(jīng)元的抑制輸入足夠大時,神經(jīng)元把電活性脈沖向下傳到它的軸突,改變軸突的有效性,從而使一個神經(jīng)元對另一個神經(jīng)元的影響改變,便發(fā)生了學(xué)習(xí)行為。因此,可以認(rèn)為神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的本質(zhì)特征在于神經(jīng)細(xì)胞特殊的突觸結(jié)構(gòu)所具有的可塑性連接,而如何調(diào)整連接權(quán)重就構(gòu)成了不同的學(xué)習(xí)算法。神經(jīng)網(wǎng)絡(luò)按學(xué)習(xí)方式分為有教師學(xué)習(xí)和無教師學(xué)習(xí)兩大類。1、有教師學(xué)習(xí)為了使神經(jīng)網(wǎng)絡(luò)在實(shí)際應(yīng)用中解決各種問題,必須對它進(jìn)行訓(xùn)練,就是從應(yīng)用環(huán)境中選出一些樣本數(shù)據(jù),通過不斷地調(diào)整權(quán)值矩陣,直到得到合適的輸入輸出關(guān)系為止,這個過程就是對神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程,這種訓(xùn)練的過程需要有教師示范,提供訓(xùn)練數(shù)據(jù),又稱樣本數(shù)據(jù)。在訓(xùn)練過程中又需教師的監(jiān)督,故這種有教師的學(xué)習(xí)又稱監(jiān)督式學(xué)習(xí)。有教師學(xué)習(xí)方法雖然簡單,但是要求教師對環(huán)境和網(wǎng)絡(luò)的結(jié)構(gòu)應(yīng)該比較熟悉,當(dāng)系統(tǒng)復(fù)雜,環(huán)境變化時,就變得困難。為了適應(yīng)環(huán)境變化就要重新調(diào)整加權(quán)值,這樣,當(dāng)學(xué)習(xí)到新知識的同時,也容易忘掉已學(xué)過的舊知識,這一些是有教師學(xué)習(xí)方法的缺點(diǎn)。2、無教師學(xué)習(xí)無教師學(xué)習(xí)的訓(xùn)練數(shù)據(jù)集中,只有輸入而沒有目標(biāo)輸出,訓(xùn)練過程神經(jīng)網(wǎng)絡(luò)自動地將各輸入數(shù)據(jù)的特征提取出來,并將其分成若干類。經(jīng)過訓(xùn)練好的網(wǎng)絡(luò)能夠識別訓(xùn)練數(shù)據(jù)集以外的新的輸入類別,并相應(yīng)獲得不同的輸出。顯然,無教師的訓(xùn)練方式可使網(wǎng)絡(luò)具有自組織和自學(xué)習(xí)的功能。2.4.3神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)規(guī)則人類高度發(fā)展的智能,主要是通過學(xué)習(xí)獲得的。要模擬人腦神經(jīng)系統(tǒng)的學(xué)習(xí)功能,必須使得人工神經(jīng)網(wǎng)絡(luò)具有學(xué)習(xí)功能。因此,有關(guān)神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法的研究一直占有特殊的地位。神經(jīng)網(wǎng)絡(luò)中常用的有四種學(xué)習(xí)規(guī)則:1、聯(lián)想式學(xué)習(xí)Hebb規(guī)則。2、誤差傳播式學(xué)習(xí)Delta學(xué)習(xí)規(guī)則。3、概率式學(xué)習(xí)。4、競爭式學(xué)習(xí)。第3章前饋多層網(wǎng)絡(luò)結(jié)構(gòu)及其BP學(xué)習(xí)算法3.1前向多層網(wǎng)絡(luò)的結(jié)構(gòu)及BP學(xué)習(xí)算法前向網(wǎng)絡(luò)是目前研究最多的網(wǎng)絡(luò)形式之一。如圖3-1所示,在此模式中,共有三層神經(jīng)元,每層由若干節(jié)點(diǎn)組成,第k層的每個節(jié)點(diǎn)與第k+1層的每個節(jié)點(diǎn)連接。第一層為輸入層;第二層為中間層,又稱為隱層;最后一層為網(wǎng)絡(luò)的輸出層。其結(jié)構(gòu)可以表示為:n-q-m網(wǎng)絡(luò),n為輸入層節(jié)點(diǎn)數(shù),q為隱含層節(jié)點(diǎn)數(shù),m為輸出層節(jié)點(diǎn)數(shù)。每個連接對應(yīng)一個權(quán)值,通過修正這些權(quán)值“學(xué)習(xí)”或“訓(xùn)練”網(wǎng)絡(luò),從而修正輸入到輸出映射的網(wǎng)絡(luò)函數(shù)。輸入單元的活性(狀態(tài))代表輸入此網(wǎng)絡(luò)中的原始信息。每個隱單元的活性取決于輸入單元的活性及該輸入單元與隱單元之間聯(lián)接權(quán)值。同樣輸出單元的行為取決于隱單元的活性及隱單元和輸出單元之何的權(quán)值。上述網(wǎng)絡(luò)的信息傳播是由輸入單元傳到隱單元,最后傳到輸出單元。這種含有隱層的前向網(wǎng)絡(luò)有一個重要特征,即隱單元可以任意構(gòu)成它們自身的輸入表示,輸入單元和隱單元間的權(quán)值決定每個隱單元何時是活性的,因此,借修改這些權(quán)值,一個隱單元可以選擇它代表什么。 圖3-1 BP網(wǎng)絡(luò)結(jié)構(gòu)BP(Back Propagation)算法是誤差反向傳播算法,網(wǎng)絡(luò)的學(xué)習(xí)由四部分組成:1、 輸入模式由輸入層經(jīng)向輸出層的模式順傳播過程。2、 網(wǎng)絡(luò)的希望輸出與網(wǎng)絡(luò)實(shí)際輸出之間的誤差信號,由輸出層經(jīng)中間層向輸入層的誤差逆?zhèn)鞑ミ^程。3、 由模式順傳播與誤差逆?zhèn)鞑シ磸?fù)交替進(jìn)行的網(wǎng)絡(luò)記憶訓(xùn)練過程。4、 網(wǎng)絡(luò)趨向收斂即網(wǎng)絡(luò)的全局誤差趨向極小值的學(xué)習(xí)收斂過程。3.2 BP網(wǎng)絡(luò)誤差反向傳播學(xué)習(xí)算法的基本思想為了研究神經(jīng)網(wǎng)絡(luò)是怎樣從經(jīng)驗(yàn)中學(xué)習(xí)的,我們應(yīng)該首先向網(wǎng)絡(luò)提供一些訓(xùn)練例子,并可以通過下述方法,能教會一個三層前向網(wǎng)絡(luò)完成某個特定的任務(wù)。其方法步驟如下:(1)向網(wǎng)絡(luò)提供訓(xùn)練例子,包括輸入單元的活性模式和期望的輸出單元活性模式;(2)確定網(wǎng)絡(luò)的實(shí)際輸出與期望輸出之間允許的誤差;(3)改變網(wǎng)絡(luò)中所有聯(lián)接權(quán)值,使網(wǎng)絡(luò)產(chǎn)生的輸出更接近于期望的輸出,直到滿足確定的允許誤差。下面以網(wǎng)絡(luò)識別數(shù)字為例說明上述方法。比如使用64個傳感器組成傳感器陣列,每個傳感器記錄一個數(shù)字的一小部分面積內(nèi)是否有筆寫的墨跡存在。因此,網(wǎng)絡(luò)需要64個輸入單元(每個傳感器一個),10個輸出單元(每種數(shù)字一個)和許多隱單元。為便于傳感器記錄每種數(shù)字,網(wǎng)絡(luò)應(yīng)在適當(dāng)?shù)妮敵鰡卧挟a(chǎn)生高活性,并在其它輸單元中產(chǎn)生低的活性。為了訓(xùn)練此網(wǎng)絡(luò),提供一幅某個數(shù)字的圖像并把10個輸出單元的實(shí)際活性和期望活性加以比較,然后計算誤差,將實(shí)際活性與期望活性差值的平方定義為誤差。其次,改變網(wǎng)絡(luò)中所有聯(lián)接權(quán)值以減少誤差。針對每種數(shù)字的多種不同圖像重復(fù)訓(xùn)練,直到網(wǎng)絡(luò)能對每個數(shù)字正確地歸類為止。實(shí)現(xiàn)上述訓(xùn)練過程的關(guān)鍵是必須改變的每個權(quán)值,且其變化量應(yīng)正比于權(quán)值改變時誤差的變化率,此量稱權(quán)值的誤差導(dǎo)數(shù),簡記為EW。但是,要對EW的有效計算是十分復(fù)雜棘手的問題。如果采取稍許擾動每個權(quán)值,并觀察誤差如何變化,這種方法效率太低,因?yàn)橐髮γ恳粋€權(quán)值都要單獨(dú)加擾動。1979年前后,正在哈佛大學(xué)攻讀博士的Werbos發(fā)明了一種高效的計算EW的方法,即誤差反向傳播算法,只因發(fā)明后多年來未受重視,也沒有充分體會到它的用處,直到1985年Rumelhart和Parker兩人各自再次發(fā)現(xiàn)該算法后才得以推廣。首先研究網(wǎng)絡(luò)的單元是線性時誤差反向傳播的算法.首先計算改變一個單元活性水平時誤差的變化率EA,再計算每個權(quán)值的誤差導(dǎo)數(shù)EW。對于輸出單元,EA只是實(shí)際輸出和期望輸出間的差值。為計算在輸出層前面一層的一個隱單元的Eel,首先辨別該隱單元和與它相聯(lián)的那些輸出用數(shù)字識別的BP神經(jīng)網(wǎng)絡(luò)單元間的所有權(quán)值,然后把這些權(quán)值乘以這些輸出單元的EA并求和,此和值即為所選定的隱單元的EA。將所有隱單元的EA計算出后,可用類似的方法計算其它層的Eel值,計算的順序恰好與活性專播過網(wǎng)絡(luò)路徑相反的方向逐層進(jìn)行,故稱為誤差反向傳播算法。計算出一個單元的EA后,再計算該單元每條輸入聯(lián)接的EW,EW是EA和經(jīng)過該輸入聯(lián)接活性的乘積。對于非線性單元,反向傳播算法還包括另外一步,即在反向傳播前,必須把FA變換為EI,EI是一個單元所收到的總輸入變化時誤差的變化率。綜上所述,為了訓(xùn)練前向網(wǎng)絡(luò)完成某項(xiàng)任務(wù),必須調(diào)整每個單元的權(quán)值,即減小期望輸出與實(shí)際輸出之間的誤差,為此必須計算每個權(quán)值變化時誤差的變化,即誤差導(dǎo)數(shù)EW,而反向傳播算法是一種確定EW使用的最有效的方法。誤差反傳學(xué)習(xí)算法一種改進(jìn)算法可以用圖3-2表示,它添加了多個隱層. 圖3-2誤差反向傳播學(xué)習(xí)算法網(wǎng)絡(luò)結(jié)構(gòu)圖在如圖3.1所給出的前向多層BP網(wǎng)絡(luò),設(shè)單元j、i分別是輸出層和它前面一層中的一個單元。為計算輸出單元j的活性,首先計算總加權(quán)輸入,即 (3.1)其中Y是前面一層中第1個單元的活性水平,Wij是第i個單元和第j個單元的聯(lián)接權(quán)值.其次,為了利用上述求得的總加權(quán)輸入Xi來計算Yi,必須使用某個函數(shù)來激活輸入與輸出函數(shù)。一般常用S型函數(shù): (3.2)在確定了所有輸出單元的活性之后,利用下式計算網(wǎng)絡(luò)的誤差: (3.3)式中Yj是輸出層中第j個單元的活性水平,dj是第j個單元的期望輸出概括起來反向傳播算法包括下列四個步驟:(1)一個輸出單元活性改變時的誤差導(dǎo)數(shù)EA,即實(shí)際活性與期望活性的差值: (3.4)(2)計算一個單元所接受總輸入變化時的誤差導(dǎo)數(shù)EI,EI實(shí)際上等于上述步驟(1)的結(jié)果乘以一個單元的總輸入變化時其輸出的變化率,即 (3.5)(3)計算一個與輸出單元聯(lián)接權(quán)值改變時的誤差變化率EW。 (3.6)不難看出等于上述步驟(2)的結(jié)果,乘以與該輸出單元相連接單元i的活性水平(4)計算前面一層中一個單元活性改變時的誤差變化率,前面一層中一個單元活性的改變會影響與該單元相連接的所有輸出單元的活性。因此,為了計算對誤差總的影響,把對各輸出單元的所有單獨(dú)影響相加. (3.7)運(yùn)用步驟(2)和(4),可把一層單元的EA變成前面一層單元的FA,為了得到期望的前面各層的EA??芍貜?fù)此計算步驟。當(dāng)?shù)玫揭粋€單元的EA后,可用步驟(2)和(3)來計算作用于它的輸入聯(lián)接上的EW。3.3 BP算法的計算機(jī)實(shí)現(xiàn)流程BP算法的計算機(jī)實(shí)現(xiàn)按下述步驟進(jìn)行:(1)初始化,對所有權(quán)值賦以隨機(jī)任意小值,并對閥值設(shè)定初值;(2)給定訓(xùn)練數(shù)據(jù)集,即提供輸入向量x和期望輸出y:(3)計算實(shí)際輸出y (3.8)其中f函數(shù)為Sigmoid函數(shù):(4)調(diào)整權(quán)值,按誤差反向傳播方向,從輸出節(jié)點(diǎn)開始返回到隱層按下式修正權(quán)值. (3.9)其中為大于0的增益,為節(jié)點(diǎn)j的誤差,的計算根據(jù)節(jié)點(diǎn)j的形式不同,由下式分別計算: (3.10)(5)返回(2)步重復(fù),直至誤差滿足要求為止。3.4激活轉(zhuǎn)移函數(shù)激活函數(shù)(Activation transfer function)是一個神經(jīng)元及網(wǎng)絡(luò)的核心。網(wǎng)絡(luò)解決問題的能力與功效除了與網(wǎng)絡(luò)結(jié)構(gòu)有關(guān),在很大程度上取決于網(wǎng)絡(luò)所采用的激活函數(shù)。激活函數(shù)的基本作用是:(1)控制輸入對輸出的激活作用;(2)對輸入、輸出進(jìn)行函數(shù)轉(zhuǎn)換;(3)可將可能無限域的輸入變換成指定的有限范圍內(nèi)的輸出。在這個設(shè)計的BP神經(jīng)網(wǎng)絡(luò)中我們選擇的是S型(Sigmod型)激活函數(shù)。S型激活函數(shù)將任意輸入值壓縮到(0,1)的范圍內(nèi),如圖3-3所示。 帶有偏差的對數(shù)S型曲線 帶有偏差的雙曲S型函數(shù) 圖3-3 S型激活函數(shù)此種激活函數(shù)常用對數(shù)或雙曲正切等一類S形狀的曲線來表示,如對數(shù)S型激活函數(shù)關(guān)系為: (3.12)而雙曲正切S型曲線的輸入輸出函數(shù)關(guān)系為: (3.13)S型激活函數(shù)具有非線性放大增益,對任意輸入的增益等于在輸入/輸出曲線中該輸入點(diǎn)處的曲線斜率值。當(dāng)輸入由無窮增大到零時,其增益由0增至最大,然后當(dāng)輸入由0增加至正無窮時,其增益又由最大逐漸降低至0,并總為正值。利用該函數(shù)可以使同一神經(jīng)網(wǎng)絡(luò)既能處理小信號,也能處理大信號。因?yàn)樵摵瘮?shù)的中間高增益區(qū)解決了處理小信號的間題,而在伸向兩邊的低增益區(qū)正好適用于處理大信號的輸入。一般地,稱一個神經(jīng)網(wǎng)絡(luò)是線性或非線性是由網(wǎng)絡(luò)神經(jīng)元中所具有的激活函數(shù)的線性或非線性來決定的。第4章數(shù)字識別系統(tǒng)的設(shè)計與實(shí)現(xiàn)4.1系統(tǒng)的流程幾種常用的解決問題的軟件開發(fā)方法,一種是對問題追述的方法,也就是從問題的結(jié)果分析起一步一步找到問題的源頭。另一種解決問題的方法是尋找容易解決的或者是己經(jīng)解決的相關(guān)的問題轉(zhuǎn)而應(yīng)用到解決當(dāng)前的問題來。但是當(dāng)前軟件開發(fā)中更為流行和常用的方法是逐步求精法。這種方法是一種由頂向下的方法,也就是由一般到特殊的方法,它的基本思想是將原始的問題分割成若干個子問題,子問題較整個大問題容易解決。本文程序設(shè)計采用逐步求精法,將整個系統(tǒng)問題分割成若干個子問題來做,主要包括圖像數(shù)據(jù)輸入模塊GetDIB()、二值化模塊Threshold()、平滑濾波模塊Smooth()、分割模塊divide()、字符切分模塊CharSegment()、字符識別模塊CharRecognition()。首先分別對每個模塊進(jìn)行單元測試分析和模塊測試,然后再組合成系統(tǒng),進(jìn)行系統(tǒng)測試。圖 4-1 系統(tǒng)邏輯模型流程圖此圖為系統(tǒng)邏輯模型流程圖,其中細(xì)箭頭代表程序的進(jìn)程,整個程序就是按上圖所示流程編寫的。4.2系統(tǒng)的軟件實(shí)現(xiàn)面對琳瑯滿目的各種開發(fā)環(huán)境和開發(fā)軟件,我沒有使用MATLAB,最主要的原因是VC對內(nèi)存的掌控很好,這對運(yùn)算量極大的BP算法有著關(guān)鍵的作用,要知道,設(shè)計一個BP網(wǎng)絡(luò)不難,難的是設(shè)計一個高效,高速,穩(wěn)定的BP網(wǎng)絡(luò),這就需要我們來對內(nèi)存進(jìn)行優(yōu)化,對算法進(jìn)行最大程度的發(fā)掘.否則設(shè)計出來的BP算法將是不健壯、不穩(wěn)定、不實(shí)用的.一定要注意在設(shè)計時盡可能多的釋放掉不使用的內(nèi)存.Visua1C+6.0,是Microsoft公司開發(fā)的Visual Studio集成開發(fā)環(huán)境中功能最為強(qiáng)大、代碼效率最高的開發(fā)工共。利用VisualC+6.0可以兩種方式編寫Win32應(yīng)用程序,一種方式是基于Windows API的C編程方式,另一種是基于MFC的C+編程方式。C編程方式是傳統(tǒng)的、久經(jīng)考驗(yàn)的編程方式,代碼的效率較高,但開發(fā)難度與開發(fā)的工作量都很大。而C+編程方式代碼運(yùn)行效率相對較低,其開發(fā)難度小、開發(fā)工作量小、源代碼效率高,尤其Microsoft基礎(chǔ)類庫(Microsoft Foundation Class Library,MFC)為用戶提供了Windows95/NT環(huán)境下面向?qū)ο蟮某绦蜷_發(fā)界面,它提供了大量預(yù)先編寫好的類及支持代碼,用于處理多數(shù)標(biāo)準(zhǔn)Windows編程任務(wù),因此大大簡化了Windows應(yīng)用程序編寫工作。MFC類庫的優(yōu)越性表現(xiàn)在以下幾個方面:1、MFC幾乎完整地封裝了WindowsAPI函數(shù)。包括窗口函數(shù)、消息、控件、菜單、對話框、GDI對象、對象鏈接,以及多文檔界面等。2、MFC支持多線程,所有的應(yīng)用至少有一個線程,這個線程由CWinApp類的對象創(chuàng)建,被稱為“主”線程口為方便多線程編程,MFC還提供了同步對象類。3、MFC庫提供了自動消息處理功能。MFC庫自動處理每一個Windows消息,且每一條Windows消息被直接映射到一個進(jìn)行處理的成員函數(shù)。4.2.1 BMP圖像格式簡介程序中能夠進(jìn)行處理的是灰度圖像。灰度圖是只含亮度信息,不含色彩信息的圖像,就像平時看到亮度由暗到明變化連續(xù)的黑白照片一樣。因此要表示灰度圖,就需要把亮度值進(jìn)行量化,通常劃分成0到255共256個級別,0最暗(全黑),255最亮(全白),并將所有灰度圖像轉(zhuǎn)化為DIB(Device-Independent Bitmap設(shè)備無關(guān)位圖)位圖文件格式。位圖(BMP)文件中DIB的結(jié)構(gòu)由四部分組成:第1部分為位圖文件頭BITMAPFILEH -EADER,指定文件為BMP文件類型,并且指定了從文件頭到實(shí)際位圖數(shù)據(jù)的偏移字節(jié)數(shù);第二部分為位圖信息BITMAPINFOHEADER,其中說明了位圖包含的基本信息,如大小,寬度,高度,顏色位數(shù),水平和垂直分辨率等;第三部分調(diào)色板(Palette)保存顏色信息;第四部分就是實(shí)際的圖像數(shù)據(jù)。由于DIB位圖能獨(dú)立的保存固有的圖像信息,能在不同的系統(tǒng)中重現(xiàn)其圖像,故成為Windows環(huán)境中的基本圖像格式。由MFC中沒有設(shè)計一處理DIB位圖的類,因此,利用Visual C+進(jìn)行DIB位圖編程時只能使用“非面向?qū)ο蟆钡姆椒?,即直接調(diào)用Win32 SDK的有關(guān)API函數(shù),這是一個很大的缺陷,彌補(bǔ)的最好方法就是定義一個處理DIB位圖的專用類,比如一個名為CDib的類,在其中封裝必需的DIB數(shù)據(jù)成員和處理函數(shù)。但是在構(gòu)建CDib類時會遇到許多的困難,因?yàn)閃in32SDK沒有提供多少直接處理DIB位圖的API函數(shù),僅支持一些重要的DIB訪問,在實(shí)際應(yīng)用時很不夠,必須定義一套完整的DIB處理函數(shù)。但是Win32 SDK中的DIB API函數(shù)是定義DIB處理函數(shù)集的基礎(chǔ),因此,還是要分析Win32 SDK中的DIB API函數(shù),如表4.1所示。從這些函數(shù)中可以看出它們能完成DIB位圖的一些最基本的功能,如能申請到內(nèi)存,完成DIB位圖的構(gòu)造,能縮放顯示DIB于顯示器和打印機(jī)上,直接從磁盤文件中讀入位圖,返回該句柄,能設(shè)置和獲取位圖的顏色表。在構(gòu)造自己的CDib類時,也要以這些函數(shù)和功能為基礎(chǔ)。表4-1 Win32 SDK中的DIBAPI函數(shù)函數(shù)功能GetDIBits從DDB中獲取位圖的圖象位,用于將DDB轉(zhuǎn)換為DIB格式SetDIBits設(shè)置DIB位圖的圖象位,用于將DIB轉(zhuǎn)換為DDB形式CreateDIBitmap用指定的DIB來創(chuàng)建DDB,并用DIB信息初始化位圖的圖象位SetDIBitsToDevice直接將DIB位圖的圖象位輸出到設(shè)備,用于顯示DIBStretchDIBits將DIB位圖映射輸出到設(shè)備的一個矩形區(qū)域,位圖可能被縮放CreateDIBSection創(chuàng)建一個可直接寫入的DIBGetDIBColorTable獲取DIB的顏色表SetDIBColorTable設(shè)置DIB的顏色表4.2.2 CDib類的構(gòu)造一、CDib類設(shè)計的目標(biāo)面向?qū)ο笤O(shè)計的重點(diǎn)是類的設(shè)計,而不是對象的設(shè)計,如果將對象比作房子,那么類就是房子的設(shè)計圖紙。對于C+程序而言,設(shè)計孤立的類比較容易,難的是正確設(shè)置其基類及派生類。1、功能根據(jù)對DIB操作的分析,以及參照CBitmap的功能設(shè)計,CDib類的基本操作功能應(yīng)該包括如下:(1)多種形式的構(gòu)造函數(shù),包括創(chuàng)建空DIB,從DIB句柄創(chuàng)建,從DIB數(shù)據(jù)塊指針創(chuàng)建及從屏幕或顯示創(chuàng)建等。(2)DIB文件的讀寫操作。(3)DIB的顯示和縮放顯示。(4)提供DIB的空間、顏色和格式特征等信息。(5)DIB格式轉(zhuǎn)換和調(diào)色板操作。(6)能獲取DIB位圖數(shù)據(jù)的句柄并且生成DIB數(shù)據(jù)的拷貝。2、父類由于MFC中已有一個支持DDB操作的CBitmap類,因此容易想到以CBitmap類作為基類派生出CDib類。但是這樣做有諸多的不適,首先,CBitmap類是為DDB的操作而設(shè)計的,其中沒有處理DIB的功能,故CDib類不能從中繼承任何可用的功能;其次,CBitmap類是從CGdiObject中派生出來的,CBitmap類以及它從CGdiObject類繼承來的數(shù)據(jù)成員和功能函數(shù)對CDib來說都是不合適的,也是多余的。此外,CBitmap類沒有提供有效的文件操作機(jī)制,而DIB主要是一種“外部”位圖,即它主要以文件形式進(jìn)行存儲和交換,所以CDib類應(yīng)該能很好的處理文件操作。MFC中的CObject類是MFC中其他大多數(shù)類的基類。它不但提供許多有用的特性,還包括對文件串行化的支持,運(yùn)行時的類信息和對象診斷的輸出等。如果從CObject類來派生,則可以繼承該類的這種特性。另外,CObject類具有最低限度的成員數(shù)據(jù)和函數(shù),從CObject類派生的類所花的代價是最低的,因此,采用CObject類作為CDib類的基類是很合理的。3、數(shù)據(jù)成員數(shù)據(jù)成員很少,只有四個,都定義為公有變量public:HDIB mhDib /DIB位圖句柄CPalette *m_pPalette /位圖調(diào)色板類成員對象指針CBitmap * m_pBitmap /bitmap類成員對象指針VVin32 SDK使用句柄來表示操作內(nèi)存對象,因此,這里也定義了一個DIB句柄來表示DIB的內(nèi)存數(shù)據(jù)塊:# define HDIB HANDLEHDIB 定義為存儲BITMAPINFO結(jié)構(gòu)和位圖位數(shù)數(shù)據(jù)塊的內(nèi)存句柄,用GlobalLock鎖定HDIB得到DIB數(shù)據(jù)塊的地址指針,并可將該指針強(qiáng)制為LPBITMAPINF()或LPBITMAPINFOHEADER來使用,如HDIB hDIBLPBITMAPINFO lpbi;LPBI TMAPINFOHEADER Ipbih;Lpbi = (LPBITMAPINFO)G lobalLock(HDIB):Lpbih = (LPBITMAPINFOHEADER)lp bi;二、CDib類成員函數(shù)以下介紹的Win32SDKAPI函數(shù)和CDib類的數(shù)據(jù)成員是磚石,現(xiàn)在可以開始構(gòu)筑CDib類的成員函數(shù)也即DIB處理類的根基了,將定義的DIB處理函數(shù)分為以下幾類:初始化函數(shù)類,屬性函數(shù)類,顯示函數(shù)類,操作函數(shù)類,調(diào)色板函數(shù)類。初始化函數(shù)類用來創(chuàng)建DIB,讀入DIB數(shù)據(jù),保存DIB文件和釋放DIB內(nèi)存空間等;屬性函數(shù)是為了方便得到DIB的空間、顏色和圖像數(shù)據(jù)方面的信息如圖像的高度,寬度,數(shù)據(jù)塊地址等;操作函數(shù)類定義了對DIB文件的各類實(shí)際操作和變換,這個類的函數(shù)可以改寫DIB的數(shù)據(jù)所以是個核心函數(shù)類;調(diào)色板函數(shù)類完成對調(diào)色板的操作。DIB處理函數(shù)集的各個函數(shù)的名稱和功能說明如表4-2所示:表4-2 DIB處理函數(shù)集各個函數(shù)函數(shù)類型函數(shù)名稱功能初始化函數(shù)CreateDIB創(chuàng)建一個空的DIBCreateDefaultDIB用當(dāng)前的系統(tǒng)調(diào)色板創(chuàng)建一個空的DIBDestroyDIB釋放DIB內(nèi)存塊LoadDIB從DIB文件裝載DIB數(shù)據(jù)SaveDIB將DIB存

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論