陳戈珩, 程青青
(長春工業大學 計算機科學與工程學院, 吉林 長春 130012)
21世紀以來,世界進入信息化時代。計算機技術的快速發展,使人們的工作生活變得越來越方便、越來越智能化。它讓人類從很多枯燥乏味的工作中解放出來,在人工智能領域中字符識別(Optical Character Recognise, OCR)技術成為其中一個非常重要的應用[1]。
在這個信息爆炸的時代,人們的日常學習、工作和生活中幾乎每時每刻都充斥著與字符相關的各種信息,字符信息是人類從外界獲取信息最重要的方式之一,這些字符信息一般可以分為兩類:手寫體和印刷體。而我們所說的OCR技術一般指的是對印刷體字符的識別技術,原因在于手寫體因人而異,一般沒有統一的字符模板可供計算機參考,因此,計算機對這類字符的識別通常比較困難,不僅識別率比較低,而且對手寫體字符的識別速度相對印刷體字符來說也比較慢。因此,接下來所提到的字符識別技術都是針對印刷體字符的。印刷體字符通常具有一定的規則性,而且不論對于哪一種字體來說,其對應的印刷體字符都有相應的字符模板可供參考,這也是印刷體字符的識別率遠高于手寫體字符的重要原因之一。
人類對印刷體字符的識別技術早在上個世紀初就開始了。1929年,德國科學家Tausheck提出了光學文字識別的概念,這是最早的一種OCR技術。之后的幾十年,世界各國也相繼開始OCR技術的研究,但是由于硬件技術等條件的限制,直到上個世紀六七十年代,才相繼有少數學術成果以及基于OCR技術實現的產品出現[2]。1966年,IBM公司的Casey和Nagy兩人聯合發表了第一篇基于漢字識別的文章,填補了人類發展歷史上這一頁的空白。與此同時,日本在OCR技術上的研究也取得了一定的進展,研制出了一款基于印刷文字識別的郵政編碼識別系統。我國在OCR技術方面的研究晚于這些國家,20世紀70年代才開始對數字和符號的識別進行研究,而且由于條件的限制,研究進度相對較慢,直到90年代,我國對字符識別技術的研究才開始步入正軌,相應的技術和產品才逐漸得到應用和普及。
BP(Back Propagation)神經網絡是人工神經網絡的一種,是由Rumelhart和McClelland的團隊1986年提出的,也是目前應用最廣泛的人工神經網絡之一[3]。總的來說,BP神經網絡屬于前饋多層神經網絡的一種,它在函數逼近與預測分析、模式識別、分類以及數據壓縮等方面具有非常廣泛的應用[4]?;竟ぷ髟硎且揽空`差的反向傳播進行網絡訓練,以期望網絡的實際輸出值與期望輸出值之間的誤差均方差達到最小。
BP神經網絡的核心部分是BP算法,BP算法的核心思想是以網絡誤差平方為目標函數、采用梯度下降法來計算目標函數的最小值[5]。算法的執行過程包含兩個部分,信號的正向傳播以及誤差的反向傳播。信息首先沿正向傳播,當網絡輸出值與期望輸出值的誤差不滿足要求時,轉入誤差的反向傳播階段,并修改各個神經元權值,通過這樣的反復迭代過程,最終可以得到期望的網絡輸出值。
BP神經網絡模型如圖1所示。

圖1 BP神經網絡模型
前面已經提到,BP神經網絡是一種具有多層結構的前饋神經網絡,一個完整的BP神經網絡由輸入層、隱含層和輸出層組成,其中隱含層可以具有多層[5]。
附加動量法相比反向傳播法在進行權值修正時,考慮的因素更多,在反向傳播法的基礎上引入誤差在曲面上的變化趨勢的影響,這樣做的好處就是網絡在進行每一次權值修正時,都要加上相比于前一次的權值變化量的值,新的權值變化量的產生方式依據反向傳播方法的原理[6]。
不僅如此,附加動量法忽略了網絡上一些無關緊要的微小變化特性,這樣做不僅能夠使網絡的訓練速度加快,而且可以防止網絡陷入局部極小值。
下面是帶有附加動量因子修正公式:
Δwij(k+1)=(1-mc)ηδiPj+mcΔwij(k)
Δbi(k+1)=(1-mc)ηδi+mcΔbi(k)
式中:mc----動量因子,取值0或1;
k----訓練次數。
附加動量法就是利用動量因子將最新的權值修正情況傳遞下去。從上式可以看出,動量因子取值不同,權值的變化情況是截然不同的。當mc=0時,權值依據梯度法的規則變化;當mc=1時,自動忽略梯度法產生的權值變化,并將最新的權值變化設定為當前的權值變化。
另外,附加動量法規定了兩種特殊情況,一是修正后的權值導致誤差產生較大的變化,二是誤差變化率超過當前設定的最大誤差變化率,最大誤差變化率應當大于等于1,通常取1.04。這兩種情況看似在說明同一個問題,其實不然,因為誤差的產生不僅僅是因為權值的改變,第一種情況說明的僅僅是因為權值改變導致的誤差,屬于局部誤差的范圍,而第二種情況介紹的是全局誤差。當這兩種情況發生時,應當舍棄當前計算得出的權值變化[7]。這就要求在進行程序設計時注意選用正確的動量因子的值,具體值及判斷公式如下:

式中:SSE(K)----第K次的誤差變化率。
考慮到一個固定的學習效率可能不能完全適應訓練前后期的要求,文中采用可變的學習效率。首先,檢查修正后的權值是否能夠真正有效降低誤差,如果能,說明當前選取的學習效率較低,此時適當提高學習效率;如果不能有效降低誤差,說明當前學習效率可能過高,適當降低學習效率,直到網絡的學習過程趨于穩定為止。這樣做的好處是,可以保證網絡時刻都是以當前可以接受的最大效率進行學習,可以大大縮短網絡訓練的時間。
具體的自適應學習效率公式及條件如下:

式中:η(k)----第k次的學習效率。
用神經網絡對字母進行識別之前需要對字母進行歸一化處理,用一個7行5列的矩陣來對字母進行數字化的處理,其中有數據的地方用1表示,反之則用0表示。字母A、B、C的數字化過程如圖2所示。
也可以用1*35的向量來表示數字化處理過后的字母。則可以表示為:
LetterA=[00100010100101010001111111000110001]
LetterB=[11110100011000111110100011000111110]
LetterC=[01110100011000010000100001000101110]

圖2 數字化字母
由此可以得到26個標準字母的神經網絡輸入樣本,將輸入樣本定義為alphabet向量矩,其中alphabet=[letterA,letterB,…,letterZ]。由于每個字母都由35個元素組成一個向量,故alphabet是一個35*26的矩陣,故將網絡輸出矩陣定義為26*26的單位陣,記為:target=eye(26)。在實驗時,將理想標準信號和加入噪聲的標準輸入信號這兩類數據分別作為數據的輸入信號。
在對BP網絡設計時,隱層節點個數的選擇是BP網絡的重要環節,它也是網絡實現預測成敗的關鍵。在實際的預測實驗中,隱層節點個數過多會導致網絡學習過度,學習時間劇增。隱層節點數過少,則不能達到所需要的實驗預測要求。由此可見,隱層節點對于神經網絡的學習和計算特性起著非常大的作用[8]。
實驗中,根據Kolmogorov定理和單隱層的設計經驗公式確定隱層節點數范圍介于8~17之間。
通過實驗的驗證和誤差值的分析,將最終值確定為14。此時,BP網絡的輸出顯示以及網絡訓練速度和精度因素都是最好的。實驗仿真如圖3~圖5所示。

圖3 理想標準信號訓練狀態圖

圖4 理想標準信號訓練誤差性能曲線
文中選擇MATLAB開發環境,基于MATLAB對于圖像、神經網絡等提供的工具箱函數建立了BP神經網絡,并對獲取的樣本進行識別。

圖5 訓練回歸曲線
實驗過程中,為了使產生的網絡具有一定的容錯能力,需要采用BP網絡對不同的信號進行訓練,再使用trainlm函數達到快速訓練的目的,在這個過程中,網絡的學習速率和沖量參數的設定均為自適應改變。先將理想信號輸入,直到平方和誤差足夠小再停止訓練。文獻[9]在實驗時,將訓練結束的條件規定為:最大次數1 000,誤差平方和為0.000 01。通過MATLAB訓練后得到實驗結果:TRAINLM,Epoch 368/1000,SEE 3.68e-05/1e-05,Gradient 9.972e-06 TRAINLM,Performance goal met。由此可見,經過368次訓練后誤差達到要求。實驗仿真如圖6~圖8所示。

圖6 加入噪聲信號的訓練狀態圖

圖7 加入噪聲信號的訓練誤差性能曲線

圖8 訓練回歸曲線圖
接下來進行的是含有噪聲的信號實驗,選用15組帶有噪聲的信號,將加入噪聲的均值設定為0.1和0.2。這是為了保證神經網絡既能夠對含噪聲信號識別,又能夠對于理想情況下的字母進行識別。為了保證網絡在識別理想輸入向量的穩定性,要在輸入時滿足同時輸入有誤差向量和兩倍重復的無誤差信號。運行程序,查看識別錯誤與噪聲信號的關系,實驗結果如圖9~圖11所示。

圖9 第一次運行結果
通過三次結果的對比分析,可以看出每一次的運行結果都存在差異,這是因為在實驗的過程中,每次運行時產生的隨機數是不同的。
由實驗數據可以得出,當噪聲小于0.15的時候,兩個網絡的識別錯誤率基本上是相同的,而當噪聲不斷增加時,經過訓練的網絡會明顯比沒有經過訓練的網絡識別錯誤率要低,噪聲越大,差距也會越大。

圖10 第二次運行結果

圖11 第三次運行結果
編輯alphabet_recognise.m代碼,運行程序,結果如圖12~圖15所示。

圖12 含噪聲的字母A顯示圖

圖13 經過訓練后的網絡顯示的A圖

圖14 含噪聲的字母J顯示圖

圖15 經過訓練后的網絡顯示的J圖
利用BP網絡對有噪聲的字母進行識別和仿真,結果表明,此網絡具有聯想記憶和抗干擾功能,對于字母具有一定的辨別能力,可以作為一種對字母識別的有效方法。改進后的BP傳播算法在加快訓練速度的基礎上還解決了在實驗時網絡陷入局部極小值的問題,在訓練過程中可以根據當時的具體情況來自動調整學習速率,從而將學習速率和誤差值達到最佳的平衡狀態。在實驗過程中發現,均值為0~0.15之間的噪聲環境下,兩個網絡都能夠準確的進行識別。但是當所加的噪聲均值超過0.15時,待識別字符在噪聲作用下不再接近于理想字符,無噪聲訓練網絡的出錯率急劇上升,此時有噪聲訓練網絡的性能較好。為了獲得更高的識別準確率,可以訓練更多的樣本,盡量選擇一些帶有噪聲的字母來多次訓練網絡,使得識別的準確率更高。