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