摘要:用神經網絡對軟件可靠性進行預測比傳統的NHPP預測模型預測精度高、擬合度好。但是神經網絡的結構是有經驗的神經網絡專家根據實際經驗得來的。而該文提出了用遺傳算法去優化神經網絡的結構,很好的解決了神經網絡的結構問題。用進化的神經網絡對軟件可靠性的預測提高了預測的精度和準確度。
關鍵詞:軟件可靠性;神經網絡;遺傳算法
中圖分類號:TP183文獻標識碼:A文章編號:1009-3044(2008)28-0181-03
Prediction of Software Reliability Based on Evolutionary Neural Network
ZHANG Gui-yong, SHEN Yuan-long, DING Xiao-guang, WANG Ling
(College of Optoelectronic Engineering,Nanjing University of Posts Telecommunications,Nanjing 210003,China)
Abstract: It is more precise using neural network to predict software reliability than the model of NHPP. The structure of neural network designs by experienced experts. The author uses genetic algorithm to optimize the structure of neural network and solves this problem. The evolutionary neural network can effectively improve the ability of prediction in precision and accurate.
Key words: software reliability; neural network; genetic algorithm
1 軟件可靠性
軟件可靠性被定義為:“在一段時間內軟件正常運行的概率”。軟件可靠性模型對于軟件可靠性的估測起著核心的作用。而對于軟件質量保證有直接意義的模型,是那些它們的參數能夠以軟件故障發生的歷史預測軟件將來故障發生的行為,軟件可靠性模型是這種思想的體現。
到目前為止,世界上大約已公開發表了一百多個軟件可靠性模型,基本上被分為兩類:參數型軟件可靠性模型和數據驅動型軟件可靠性增長模型。前者主要有Musa的執行時間模型、Goel-Okumoto模型、J-M模型、貝葉斯模型等等。這種模型的主要缺點是:預測的數據是在自己模型的假設前提下實現的,每個模型都有自己的假設前提,導致模型應用的局限性。后者主要指用神經網絡去預測軟件可靠性模型,這種模型沒有前提、假設。輸入的是歷史錯誤數據,提高了預測的精度。Karunanithi.whitleyMalaiya在1992年的論文中已證明數據驅動型比參數型有著更好的預測精度。
2 BP神經網絡
BP神經網絡是采用BP算法的神經網絡的統稱。目前在人工神經網絡實際應用中,絕大部分采用BP網絡和它的變化形式,它是前向網絡的核心部分。
2.1 BP網絡的結構
BP神經網絡有三層,分別為:輸入層、隱藏層和輸出層(見圖1),其中隱藏層的層數理論上可以為任意值。
■
圖1 BP網絡模型結構 圖2 三層BP網絡模型
2.2 BP算法
BP神經網絡參數傳遞有兩個過程:一個為輸出參數的順傳播,另一個為誤差的逆傳播。假設一個三層的BP神經網絡(見圖2)網絡權值(Wij Tli)閾值為θ。則
1) 輸出的順傳播
隱節點:■ 其中■
輸出節點:■其中■
2) 誤差的逆傳播
誤差:
■
輸出節點權值修正值:
■
令δl=-(Tl-Ol)f'(netl) 則■
隱節點權值修正值:
■
令■ 則 ■
由于權值的修正正比于誤差函數沿梯度下降,所以有:
△Tli=ηδlY △Wij=ηδi'Xj其中η為修正參數。
對閾值的修正過程同對權值的修正過程,推倒的結果為:
輸出節點:θl(k+1)=θl(k)+ηδl
隱節點: θi(k+1)=θi(k)+η'δi'
2.3 傳遞函數
在BP神經網絡中經常使用對數S形函數、正切函數和線性函數作為神經元的傳遞函數。
3 遺傳算法
遺傳算法(GA)是由美國科學家Holland提出來的,它的主要優點是簡單、魯棒性強、需要解決的問題越復雜,目標越不明確,優越性越大。它模擬自然界適者生存,優勝劣汰的進化原則,將問題的解表示成染色體(chromosome),在計算機編程時,通常用二進制碼串表示,每個碼稱為一個基因,每個染色體代表問題的一個解。一群染色體構成一個群體或種群,他是GA搜索的空間。在搜索過程中,用適應度函數(fitness function) 來評價每個染色體的優劣,其值越大(適應度越大),相應染色體代表的解越優。選擇適應度大的染色體進行再生(reproduction),通過交換(crossover) 、變異(mutation) 兩種操作產生新的一代更適應環境的染色體群,這樣一代一代地不斷進化,最后收斂到一個最適應環境地個體上,求得問題的最優解。適應度函數的選擇能有效的指導搜索空間沿著面向優化參數組合方向,逐步逼近最佳參數組合,而不會導致不收斂或陷入局部最優。
算法流程如下:
1) 編碼所要解決的問題。
2) 隨機生成N個個體,形成初始染色體群體。
3) 計算群體中每個個體的適應度值。
4) 計算群體的平均適應度,把每個染色體的適應度歸一化。
5) 依據歸一化后的染色體適應度值,賦給每個染色體一個生存概率,按這個概率選擇n(n 6) 用新的染色體代替原來的2n個染色體,形成新的種群。 7) 若滿足中止條件,則解碼適應度最大的染色體得到問題的解,否則返回步驟2)繼續進行。 4 用遺傳算法去優化BP神經網絡的結構 在用神經網絡去預測軟件可靠性的過程中,神經網絡的結構往往是預先不能獲得的。本文提出了用遺傳算法優化神經網絡結構的方法。論文假設神經網絡有四個輸入一個輸出中間的隱層為待優化的部分。 4.1 個體的編碼 我們用2進制編碼方法對結構進行編碼,每個隱層用4位二進制碼來代表,則隱層的神經元的個數為0-15個,當個數為零時代表該層不存在,我們可以假設隱層有二層、三層或任意層,則個體的編碼為8、12或更多個二進制碼。 4.2 適應度函數 在遺傳算法中使用適應度來度量群體中的個體在優化計算中能達到或接近于最優解的優良程度。本文采用的適應度函數為: ■ 其中p為可靠性樣本用于訓練的數目,■i是神經網絡的輸出值,xi為樣本值。 4.3 控制參數的選取 遺傳算法中控制參數的選擇非常關鍵,參數選取的不同對遺傳算法的性能產生較大的影響。這些參數有群體規模N、交叉概率Pc、變異概率Pm等等。交叉概率太大使搜索走向隨機化,交叉概率越小,搜索的速度就越慢,太小時則陷入停滯,一般Pc為0.4-0.99。變異概率越大,容易破壞好的模式,是遺傳算法近似隨機搜索,變異概率太小,對產生新個體和抑制早熟現象的能力就會較差,一般為0.001-0.1。群體規模的大小直接影響到遺傳算法的收斂性或計算效率。規模過小容易收斂到局部最優解;規模過大,會造成計算速度降低。群體規模可以根據具體情況在10-200之間選擇。 4.4 流程圖(見圖3) 4.5 泛化處理 在BP網絡的訓練中往往會出現這樣的情況,當網絡的訓練誤差很小的時候,一個新的輸入會使網絡的訓練誤差增大,這是因為網絡記憶了已被訓練的樣本,而對新的輸入沒有良好的泛化能力。規則化調整方法是通過調整網絡的性能函數,來增強網絡的泛化能力。普通的BP神經網絡都采用網絡誤差的均方根之和作為性能函數。如下式 : ■ 其中 ei ti ai分別表示第i個訓練樣本的訓練誤差、目標函數和網絡輸出。而調整后的網絡函數如下: msereg=γmse=(1-γ)msw γ是性能參數 ■ 使用該函數可以減少網絡的有效權值和閾值,并且使網絡的訓練輸出更加平滑,從而增強網絡的泛化性能。 4.6 數據預處理 在我們開始試驗之前,還得對原始數據進行如下處理:■,x為原始數據,△=xmax-xmin。這樣數據就被調整到0.1-0.9之間。在預測結束后用■將得到的數據調整到原始數據。 5 進化神經網絡對軟件可靠性預測實例 為了證明本文提出的方法優于直接用神經網絡進行預測,這里我們找到了一組軟件可靠性的數據,這組數據來源于一個中等項目軟件測試過程(見表1)。 在進行仿真之前我們還得定義幾個指標來代表預測的精度。 ■其中■i為預測的數據,xi為實際的數據。 ■其中■i為預測的數據,xi為實際的數據,n為待預測的數據量。 我們用前12組數據對神經網絡進行訓練,后四組作為待預測的數據,普通神經網絡采用3-7-1的結構,優化的結果神經網絡采用2-6-2-1的結構。預測結果的RE和AE比較(見表2)。 對數據的擬合度如圖4所示 。 6 結論 在這篇論文中提出了用遺傳算法優化了的神經網絡去預測軟件的可靠性的方法。遺傳算法具有全局擇優的特點,它可以很 (下轉第189頁)