汪順和
(安徽開放大學 學習資源中心,合肥 230022)
軟件可靠性 (Software Reliability )是軟件產(chǎn)品在規(guī)定的條件下和規(guī)定的時間區(qū)間完成規(guī)定功能的能力。規(guī)定的條件是指直接與軟件運行相關的使用該軟件的計算機系統(tǒng)的狀態(tài)和軟件的輸入條件,或統(tǒng)稱為軟件運行時的外部輸入條件;規(guī)定的時間區(qū)間是指軟件的實際運行時間區(qū)間;規(guī)定功能是指為提供給定的服務,軟件產(chǎn)品所必須具備的功能。軟件可靠性不但與軟件存在的缺陷和(或)差錯有關,而且與系統(tǒng)輸入和系統(tǒng)使用有關。
軟件可靠性模型就是根據(jù)已發(fā)生的軟件失效數(shù)據(jù),通過統(tǒng)計方法計算出軟件的可靠性估計值或預測值[1]。它是評估和預測軟件可靠性的重要工具,對于軟件可靠性的評估起著核心作用,從而對軟件質(zhì)量的保證有著重要的意義,也為改善軟件質(zhì)量提供了指南。張坤等人使用神經(jīng)網(wǎng)絡對軟件可靠性建模[2],張婷婷等人[3]建立了貝葉斯組合模型用來提高模型的預測精度和模型的適應性,李思雨等人[3]利用極限學習機對軟件可靠性建模,將經(jīng)典軟件可靠性模型和人工智能算法有機結(jié)合。
和聲搜索(Harmony Search,簡稱HS)算法[5]是Greem提出的一種新型啟發(fā)式優(yōu)化算法。類似于遺傳算法對生物進化的模仿、模擬退火算法對物理退火的模擬以及粒子群優(yōu)化算法對鳥群的模仿等。和聲算法模擬了音樂演奏的原理,在音樂演奏中,樂師們憑借自己的記憶,通過反復調(diào)整樂隊中各樂器的音調(diào),最終達到一個美妙的和聲狀態(tài)。該算法簡單,易于與其他算法混合,構(gòu)造出具有更優(yōu)性能的算法[4],在參數(shù)尋優(yōu)問題上有很大的優(yōu)勢。
支持向量機[6](Support Vector Machine,簡稱SVM)由Vapnik首先提出,它是一種監(jiān)督式學習的方法,廣泛地應用于統(tǒng)計分類以及回歸分析中。該方法理論基礎是統(tǒng)計學習理論,可用于模式識別和回歸問題,能提供很好的全局最優(yōu)性和泛化能力。SVM的關鍵在于核函數(shù)的選擇、SVM中參數(shù)和核函數(shù)中參數(shù)難以確定。傳統(tǒng)的方法有:實驗法、經(jīng)驗選擇法、交叉驗證法等,其中交叉驗證法使用較多。近年來,啟發(fā)式算法已被成功地應用到SVM參數(shù)優(yōu)化中來,如遺傳算法、粒子群算法、模擬退火算法。本文利用和聲搜索算法參數(shù)尋優(yōu)的優(yōu)點,用來優(yōu)化支持向量回歸中的參數(shù),并將之用于軟件可靠性預測,提出了一種基于和聲搜索優(yōu)化支持向量回歸的軟件可靠性預測模型,并通過實驗證明該方法的可行性和有效性。
SVM作為一種監(jiān)督式學習的方法,其理論基礎是統(tǒng)計學習理論,既可以用于模式識別,又可以用于回歸問題。這兩方面上本質(zhì)是相同的,都有一個可以是屬性矩陣或者是自變量的輸入x,也都有一個輸出y。模式識別輸出是分類標簽的,回歸輸出是因變量,即相當于一個函數(shù)映射y=f(x)。利用訓練集中已知數(shù)據(jù)(x,y)來建立模型,再利用這個模型去對測試集進行分類或者回歸。研究表明,SVM在回歸問題上也具有極好的性能。
設給定訓練集{(xi,yi)}∈Rn×R,i=1,2,…,l。
對于線性回歸,采用f(x)=w·x+b作為回歸函數(shù),其中w表示權重向量,b表示偏項,目標就是尋找合適的w和b,使得f(xi)估計yi時的估計誤差最小,即回歸風險最小。采用ε-不敏感損失函數(shù),回歸問題轉(zhuǎn)化為:
s.t.wTxi+b-yi≤ε+ξi
(1)
引入Lagrange函數(shù),公式(1)可以轉(zhuǎn)化為其對偶問題:
(2)
對于非線性回歸,首先將輸入數(shù)據(jù)集映射到一個高維特征空間中,緊接著在高維特征空間中進行線性回歸,這其中需要構(gòu)造一個非線性映射。只需要將公式(2)中的(xi,xj)用核函數(shù)K(xi,xj)代替。因此,非線性回歸的優(yōu)化問題為:
(3)
在線性不可分的情況下,將最優(yōu)化問題轉(zhuǎn)化為二重QP問題,在原空間得到如下非線性判定函數(shù):
(4)
HS算法模擬音樂家創(chuàng)作的過程:HS算法中將每次演奏的和聲類比于每次迭代的解向量;和聲中的音調(diào)類比解向量中的分量;美學評價類比目標函數(shù);最佳的和聲類比全局最優(yōu)。首先,算法產(chǎn)生N個初始解(和聲)放入和聲記憶庫HM內(nèi),以概率HMCR在HM內(nèi)搜索新解,以概率1-HMCR在HM外變量可能值域中搜索。然后,算法以概率PAR對新解產(chǎn)生局部擾動,判斷新解目標函數(shù)值是否優(yōu)于HM內(nèi)的最差解,若是,則替換之;再不斷迭代,直至達到預定迭代次數(shù)Ni為止。HS算法中參數(shù)有:決策變量的個數(shù)N,各個決策變量的取值范圍[Li,Ui],和聲記憶庫大小HMS,和聲記憶庫取值概率HMCR,音調(diào)微調(diào)概率PAR,音調(diào)微調(diào)帶寬BW,最大迭代次數(shù)Ni。HS具體的算法步驟如下:
Step 1確定目標函數(shù)和初始化參數(shù)。
Step2初始化和聲記憶庫,并計算目標函數(shù)值。
在每個決策變量取值范圍內(nèi),隨機生成HMS個解向量放入和聲記憶庫HM中,每個決策變量按照以下公式生成:
(5)
其中i=1,2,…,N,k=1,2,…,HMS;
Step3產(chǎn)生一個新和聲(即新解)。
新和聲x′=(x′1,x′2,…,x′N)中任一音調(diào)(即變量)x′i按照如下規(guī)則產(chǎn)生:首先產(chǎn)生一個0到1之間的隨機數(shù)rand1,如果rand1小于和聲記憶庫取值概率HMCR,則在和聲記憶庫中HM個第i維變量中隨機選擇一個,然后產(chǎn)生一個0到1之間的隨機數(shù)rand2,如果rand2小于音調(diào)微調(diào)概率PAR,按照公式(6)進行局部干擾;如果rand1大于和聲記憶庫取值概率HMCR,則按照公式(5)隨機產(chǎn)生一個新解。
x′i=x′i+rand2*BW
(6)
Step4若Step3中的新解優(yōu)于HM中的最差和聲,則將新解x′替換HM中當前最差和聲,更新和聲記憶庫HM。
Step5判斷算法終止條件,若滿足,則停止迭代,輸出最優(yōu)解;否則重復步驟Step3和Step4。
構(gòu)造出一個具有良好性能的SVM,核函數(shù)的選擇是關鍵。核函數(shù)的選擇包括兩部分工作:一是核函數(shù)類型的選擇,二是確定核函數(shù)類型后相關參數(shù)的選擇。常用的核函數(shù)有線性核函數(shù),多項式核函數(shù),徑向基核函數(shù),Sigmoid核函數(shù)。
徑向基核函數(shù)也叫高斯核函數(shù),是一種局部性強的核函數(shù),其可以將一個樣本映射到一個更高維的空間內(nèi),是應用最廣的一個核函數(shù),無論大樣本還是小樣本都有比較好的性能,而且其相對于多項式核函數(shù)參數(shù)要少。本文基于 HS-SVM的軟件可靠性預測模型選取徑向基核函數(shù)作為核函數(shù),公式(7)是其表達式,將公式(3)中的K(xi,xj)替換成公式(7)。模型中需 要 優(yōu)化 的 參 數(shù) 有 懲 罰 因 子C、核函數(shù)參數(shù)σ及損失函數(shù)中的ε,采用和聲搜索算法來優(yōu)化參數(shù)C、σ和ε。
(7)
其中,σ是高斯核的寬度,其值大于0。
和聲搜索算法優(yōu)化支持向量回歸模型中參數(shù)時,將參數(shù)(C,σ,ε)看作為和聲,即問題的解,回歸指標均方差作為HS算法中的目標函數(shù),當目標函數(shù)最小時所對應的解(C,σ,ε)是最優(yōu)的。基于和聲搜索算法的支持向量回歸(HS-SVR)的軟件可靠性預測建立的步驟如下:
(1)對選定的失效數(shù)據(jù)進行歸一化處理,確定訓練樣本數(shù)據(jù)和預測樣本數(shù)據(jù);
(2)選擇SVM模型中的回歸指標均方差作為HS算法中的目標函數(shù);
(3)初始化和聲算法的參數(shù)和C、σ和ε的取值范圍;
(4)將訓練樣本數(shù)據(jù)代入目標函數(shù),得到C、σ和ε的最佳組合值(CO,σO,εO);
(5)將最佳組合值(CO,σO,εO)代入SVM模型中, 預測測試樣本值。
為了驗證本文提出模型的可行性和有效性,實驗選擇兩組真實故障數(shù)據(jù)SYS1和SYS2作為測試數(shù)據(jù),兩組數(shù)據(jù)均來自Muse數(shù)據(jù)集[7]。SY1數(shù)據(jù)中有136條記錄,SYS2數(shù)據(jù)中有86條記錄。兩組數(shù)據(jù)中每一條記錄由兩列構(gòu)成,第一列是故障編號,第二列是當前故障與上次故障發(fā)生的時間間隔。
實驗前兩組數(shù)據(jù)中的第二列數(shù)據(jù)轉(zhuǎn)化為累計時間,然后對故障數(shù)和連續(xù)時間進行歸一化處理,SYS1中取前90條數(shù)據(jù)作為訓練樣本,SY2中取前56條數(shù)據(jù)作為訓練樣本,兩組數(shù)據(jù)中剩下部分作為預測樣本。實驗平臺采用Matlab2013,實驗中和聲搜索算法參數(shù)設置為HMS=5,HMCR=0.95,PAR=0.5,BW=0.01,Ni=200。算法獨立運行10次,取均方差最小所對應的參數(shù)為最終參數(shù)。均方差值越小,說明參數(shù)估計的精確度越高。將得到的最佳參數(shù)代入模型,對測試集進行預測,再與真實值進行比較。仿真實驗結(jié)果如表1所示,表1、表2和表3中的G-O和M-O模型的數(shù)據(jù)來自參考文獻[8]。
表1 兩組數(shù)據(jù)對應的模型中的參數(shù)
均方差是誤差平方的平均數(shù),則均方差定義為:
(8)
平方相關系數(shù),以R2表示。R2提供了吻合度相關信息,用來評價預測模型的好壞。R2的值表示模型預測值真實值相吻合的程度,值越大吻合度越高。平方相關系數(shù)定義為:
(9)
由表1可以得出,用和聲搜索算法優(yōu)化支持向量回歸中的參數(shù)方法效果很好,沒有擬合不出來的情況,說明本文提出的軟件可靠性預測模型是可行的。
對于G-O模型和M-O模型,以故障數(shù)據(jù)向量和失效累計時間向量作為輸入量,利用和聲搜索算法進行參數(shù)估計,參數(shù)估計結(jié)果見表1。利用三種模型分別對相同的訓練數(shù)據(jù)和測試數(shù)據(jù)進行分析計算,計算結(jié)果見表2和表3。可以看出,HS-SVR模型與G-O模型和M-O模型相比,HS-SVR模型的均方差最小,平方相關系數(shù)最大,這說明模型的預測能力和吻合度非常好。
表2 SYS1的訓練誤差及預測誤差
表3 SYS2的訓練誤差及預測誤差
G-O模型的均值函數(shù):
μ(t)=a(1-e-bt)
(10)
M-O模型的均值函數(shù):
μ(t)=ln(λθt+1)/θ
(11)
其中,μ(t)表示截止到t時刻檢測到錯誤數(shù)的期望值,t表示錯誤發(fā)現(xiàn)的時刻,a、b、λ、θ是未知參數(shù)。
將本文提出的HS-SVR模型、G-O模型、M-O模型各自生成的曲線和原始數(shù)據(jù)點進行對比,如圖1、圖2所示,可以發(fā)現(xiàn),模型曲線和原始觀測數(shù)據(jù)點非常接近,僅有少量的偏離,說明模型的吻合度非常好,預測能力非常強,優(yōu)于其他兩種模型。
軟件可靠性模型是評估和預測軟件可靠性的重要工具,支持向量回歸在小樣本數(shù)據(jù)預測中具有較為突出優(yōu)勢。本文為了提高軟件可靠性預測的精確度,提出了一種基于和聲搜索優(yōu)化支持向量回歸的軟件可靠性預測模型,并通過兩組數(shù)據(jù)進行實驗,證實了模型的有效性。將實驗結(jié)果與兩個經(jīng)典軟件可靠性模型做比較,結(jié)果表明,該模型具有較好的預測效果。文中的方法原理簡單,容易實現(xiàn),也可以運用到其他應用中,具有一定的通用性。