儘管神經網路的研究和應用已經取得巨大成功,但在網路的開發設計方面至今仍沒有一套完善的理論做指導,應用中採取的主要設計方法是,在充分了解待解決問題的基礎上將經驗與試探相結合,通過多次改進性試驗,最終選出乙個較好的設計方案。下面是在開發神經網路中常用的基本方法和實用技術。
多層神經網路的分類能力與網路資訊容量相關,如果網路的權值和閾值總數nw表徵網路資訊容量,研究表明,訓練樣本數n與給定的訓練誤差ε之間應滿足以下匹配關係:
n = nw / ε.
上式表明網路的資訊容量與訓練樣本數之間存在合理匹配關係。在解決實際問題時,訓練樣本數常常難以滿足以上要求。對於確定的樣本數,網路引數太少則不足以表達樣本中所蘊含的全部規律即發生欠擬合;而網路引數太多,則可能發生過擬合,造成網路的泛化能力減弱。所以,通過上式根據設定的網路結構和誤差要求,可以評估一下大致需要多少訓練樣本。
訓練資料的準備工作是網路設計與訓練的基礎,資料選擇的科學合理性以及資料表示的合理性對於網路設計具有極為重要的影響。資料準備分為原始資料的收集、資料分析、變數選擇和資料預處理等諸多步驟。
一般來講,輸出量代表系統要實現的功能目標,常常是系統的效能指標,分類問題的類別歸屬,或非線性函式的函式值等。輸入量必須選擇那些對輸出影響大且能檢測或提取的變數,此外還要求輸入變數之間互不相關或相關性很小。如果對於某個變數是否合適作網路輸入沒有把握,可分別訓練含有和不含有該輸入變數的兩個網路,對比其效果。從輸入、輸出量的性質來看,可分為兩類:一是數值變數,一類是語言變數。數值變數指的是數值確定的連續量和離散量。而語言變數是用自然語言表示的概念,其「語言值」使用自然語言標識的事物的各個屬性,比如顏色、性別、規模等。當選擇語言變數作為網路輸入或輸出時,需將語言值進行編碼轉變為離散的數值量。
通常需要使用訊號處理與特徵提取技術從原始資料中提取能夠反映其特徵的若干特徵引數作為網路的輸入。常見的典型情況有文字元號輸入、曲線輸入、函式自變數輸入和影象輸入。字元輸入常常根據要識別的字元的特徵進行編碼之後再作為網路輸入;曲線輸入通常進行離散化取樣,在滿足夏農取樣定理的前提下等間隔取樣,也可以根據小波變化或短時傅利葉變換的思想在曲線變化大的地方細分間隔,在曲線平坦的地方放寬間隔;函式自變數輸入直接採用待擬合的曲線的自變數作為網路輸入;影象輸入則很少直接採用畫素點的灰度值作為網路輸入,通常根據識別的具體目的從影象中提取一些有用的特徵引數,再根據這些引數對輸入的貢獻進行篩選,而這些特徵提取則屬於影象處理的範疇。
0,1或者-1,1表示為二分類;多個有限的離散值表示為多分類;[0,1]之間表示為邏輯回歸;連續值表示為擬合。
尺度變換,也叫歸一化或標準化(normalization)。進行尺度變換的原因是:網路的輸入資料常常具有不同的物理意義和不同量綱,尺度變換為0~1之間使網路訓練一開始就給各輸入分量以同等重要地位;bp網路的神經元均採用sigmoid激發函式,變換後可防止輸出飽和;sigmoid激發函式的輸出為0~1之間,作為教師訊號的輸出資料如不進行變換處理,勢必使數值大的輸出分量絕對誤差大,數值小的輸出分量絕對誤差小,會導致權值調整不均勻。尺度變換是一種線性變換,當樣本分佈不合理時,線性變換只能統一樣本資料的變化範圍,而不能改變其分布規律。適合網路訓練的樣本分佈應該比較均勻,相應的樣本分佈曲線應比較平坦,當樣本分佈不理想時,最常用是分布變換。比如對數變換或平方根、立方根等。由於變換是非線性的,其結果不僅壓縮了資料變化的範圍,而且改善了其分布規律。
訓練樣本數的確定。一般來說訓練樣本數越多,訓練結果越能正確反映其內在規律,但樣本的收集整理往往受到客觀條件的限制。此外,當樣本數量多到一定程度,網路的精度也很難再提高。實踐表明,網路訓練所需的樣本數取決於輸入-輸出非線性對映關係的複雜度,對映關係越複雜,樣本中含的雜訊越大,為保證映**度所需的樣本數越多,而網路規模也越大。因此,可以參考這樣乙個經驗規則,即:訓練樣本數是網路連線權總數的5~10倍。樣本的選擇和組織。網路訓練中提取的規律蘊含在樣本中,因此樣本一定要有代表性。樣本的選擇要注意樣本類別的均衡,盡量使得每個類別的數量大致相等。即使是同一類樣本也要照顧到樣本的多樣性和均勻性。按照這種「平均主義」原則選擇的樣本能使網路在訓練時見多識廣,而且可以避免網路對樣本數量多的類別「印象深」,而對樣本數量少的類別「印象淺」。同類樣本太集中會使得網路訓練時傾向於只建立與其匹配的對映關係,而當另一類別樣本集中輸入時,權重的調整又轉向新的對映關係而將前面的訓練結果否定。當各類樣本輪流集中輸入時,網路的訓練會出現振盪使訓練時間延長。
網路權值的初始化決定了網路的訓練從誤差曲面的哪一點開始,因此初始化方法對縮短網路的訓練時間至關重要。神經元的變換函式都是關於零點對稱的,如果每個節點的淨輸入均在零點附近,則其輸出均處在變換函式的中點。這個位置是其變換最敏感的地方,必然使得網路學習速度快。為了使得各個結點的初始淨輸入在零點附近,有兩種辦法可以採用:一是使得初始權值足夠小;二是使得初始權值為+1和-1的數量相等。應用中對隱含層權值可採用第一種辦法,而對輸出層可採用第二種辦法。如果輸出層權值太小,會使得隱層權值在訓練初期的調整量變小,因此採用第二種權值與淨輸入兼顧的辦法。
神經網路在訓練樣本問題解決後,網路的輸入層結點和輸出層結點數便已確定。因此神經網路結構設計主要解決設定幾個隱含層和每個隱含層設定幾個結點的問題。以下是神經網路的設計者們通過大量實踐積累的經驗。
理論證明單隱層的感知器可以對映所有連續函式,只有當學習不連續函式(如鋸齒波等)時,才需要兩個隱層,所以多層感知器最多需要兩個隱層。再設計多層感知器時,一般先考慮設乙個隱層,當乙個隱層的隱結點數很多仍不能改善網路效能時,才考慮再增加乙個隱層。經驗表明,採用兩個隱層時,如在第乙個隱層設定較多的隱結點而第二層設定較少的隱結點,則有利於改善多層前饋網路的效能。此外,對於有些實際問題,採用雙隱層所需的隱節點數可能少於單隱層所需的隱節點數。所以,對於隱節點仍不能明顯降低訓練誤差的情況,應當嘗試一下增加隱層數。
隱節點數的設計。隱節點的作用是從樣本中提取並儲存內在規律,每個隱節點有若干權值,而每個權值都是增強網路對映能力的乙個引數。隱節點數太少,網路從樣本中獲取資訊的能力就差,不足以概括和體現集中的樣本規律;隱節點數太多,可能把樣本中非規律性內容如雜訊等也學會記勞,從而導致過擬合,造成網路泛化能力減弱。確定最佳隱節點數的乙個常用方法是試湊法,可先設定較少的隱節點進行訓練,然後逐漸增加隱節點數,用同乙個樣本集進行訓練,從中確定網路誤差最小時對應的隱節點數。在用試湊法時,可以用一些確定隱節點數的經驗公式。這些公式計算出來的隱節點數只是一種粗略的估計值,可作為試湊法的初始值。其中m為隱層結點數,n為輸入層節點數,為輸出層節點數,α
為1~10之間的常數。
m = sqrt(n+l)+α
m = log2(n)
m = sqrt(nl)
網路設計完成後,要應用設計值進行訓練。訓練時對所有樣本正向執行一輪並反向修改權值一次稱為一次訓練。在訓練過程中反覆使用樣本集資料,但每一輪最好不要按固定的順序取資料。通常訓練乙個網路需要成千上萬次。
網路的效能好壞主要看其是否具有很好的泛化能力,而對泛化能力的測試不能用訓練資料,而應該用訓練資料之外的驗證(validation)集。只有訓練好的網路在驗證集上表現良好才能說明網路訓練良好,因此通常是用在驗證集上的誤差精度來終止訓練過程,而不是用訓練集上的誤差精度。如果網路在訓練集上誤差非常小,而在驗證集上誤差卻很大,則有可能發生了過擬合。訓練次數越多,訓練集上誤差會越小,而在驗證集上誤差會先小後增,因此會大致有乙個最佳的訓練次數。通常在實現中可以判定驗證集誤差的改變來作為終止訓練的標準。比如設定在驗證集上,本次訓練後的誤差要比前一次訓練後的誤差大20%,就認為前一次訓練的結果已經是最佳,則保留前一次訓練的網路權值作為訓練的結果。
BP神經網路設計
1 網路層數 大部分單個隱藏層即可 2 輸入層神經元個數 輸入變數的個數通常都是由問題的外部描述所確定的。例如,如果有4個外部變數作為網路的輸入,那麼網路就有4個輸入。但是,這是不是意味著輸入層的神經元個數就為4呢?答案是否定的 因為每個神經元的輸入可以有無數個,所以,通常當輸入變數較多的時候,輸入...
BP神經網路設計常用的基本方法和實用技術
儘管神經網路的研究和應用已經取得巨大成功,但在網路的開發設計方面至今仍沒有一套完善的理論做指導,應用中採取的主要設計方法是,在充分了解待解決問題的基礎上將經驗與試探相結合,通過多次改進性試驗,最終選出乙個較好的設計方案。下面是在開發神經網路中常用的基本方法和實用技術。多層神經網路的分類能力與網路資訊...
BP神經網路的基本理解
誤差反向傳播 error back propagation,bp 演算法 1 bp演算法的基本思想是,學習過程由訊號的正向傳播與誤差的反向傳播兩個過程組成。1 正向傳播 輸入樣本 輸入層 各隱層 處理 輸出層 注1 若輸出層實際輸出與期望輸出 教師訊號 不符,則轉入2 誤差反向傳播過程 2 誤差反向...