劉俊波,黃 斌,鄧 蕾
(中國電子科技集團公司第三十研究所,四川 成都 610041)
機器學(xué)習(xí)[1]是現(xiàn)階段實現(xiàn)人工智能應(yīng)用的主要方法。機器學(xué)習(xí)最重要的任務(wù)是根據(jù)已觀察到的數(shù)據(jù)對感興趣的未知數(shù)據(jù)進行估計或推測。
概率模型(probabilistic model)提供了一種描述框架,將學(xué)習(xí)任務(wù)歸結(jié)于計算變量的概率分布,即如何基于已知變量推測出未知變量的條件分布。
概率圖模型[2][3](probabilistic graphical model)是一類用圖來表達(dá)變量相關(guān)關(guān)系的概率模型。概率圖模型大致可分為兩類:第一類是使用有向無環(huán)圖表示變量間的依賴關(guān)系,稱為有向圖模型或貝葉斯網(wǎng);第二類是使用無向圖表示變量間的相互關(guān)系,稱為無向圖模型或馬爾可夫網(wǎng)[4]。
隱馬爾可夫模型[5](Hidden Markov Model,簡稱HMM)是結(jié)構(gòu)最簡單的動態(tài)貝葉斯網(wǎng),它是一種著名的有向圖模型。
本文基于HMM 采用兩種方法實現(xiàn)系統(tǒng)的態(tài)勢預(yù)測。這兩種方法在不同的場景中預(yù)測效果良好。
隱馬爾可夫模型可以計算出一個系統(tǒng)每一時刻處于各種狀態(tài)的概率以及這些狀態(tài)之間的轉(zhuǎn)移概率。
系統(tǒng)有n種互斥的狀態(tài)(狀態(tài)1,狀態(tài)2,狀態(tài)3,…),即系統(tǒng)的狀態(tài)可以構(gòu)成集合
設(shè)在t時刻系統(tǒng)的狀態(tài)為zt,它是一個離散型隨機變量。從時刻1 開始到時刻T為止,系統(tǒng)所有時刻的狀態(tài)值構(gòu)成一個隨機變量序列:
系統(tǒng)在不同時刻可以處于同一種狀態(tài),但在任何一個時刻,系統(tǒng)只能有一種狀態(tài)。不同時刻的狀態(tài)之間是有關(guān)系的。時刻t的狀態(tài)由它之前時刻的狀態(tài)決定,這可以表示為如下的條件概率:
即在從1 到t-1 時刻系統(tǒng)的狀態(tài)值分別為z1,z2,…,zt-1的前提下,時刻t系統(tǒng)的狀態(tài)為zt的概率。如果要考慮之前所有的狀態(tài),數(shù)學(xué)模型太復(fù)雜。因此,可以做一個簡化,假設(shè)t時刻系統(tǒng)的狀態(tài)只與t-1時刻系統(tǒng)的狀態(tài)有關(guān),與更早的時刻無關(guān)。上面的概率可簡化為
系統(tǒng)狀態(tài)的取值有n種可能,在t時刻取任何一個值與t-1 時刻取任何一個值的條件概率構(gòu)成一個n×n的矩陣A,稱為狀態(tài)轉(zhuǎn)移概率矩陣,其元素為
這個矩陣的元素表示t-1 時刻系統(tǒng)的狀態(tài)為i,t時刻系統(tǒng)的狀態(tài)為j的概率,即從狀態(tài)i轉(zhuǎn)移到狀態(tài)j的概率。如果知道了每一時刻的狀態(tài)轉(zhuǎn)移矩陣,就可以計算出任意時刻系統(tǒng)狀態(tài)取每個值的概率。狀態(tài)轉(zhuǎn)移矩陣的值通過訓(xùn)練樣本學(xué)習(xí)。
狀態(tài)轉(zhuǎn)移概率矩陣的元素必須滿足如下約束:
第一條是因為概率的值必須為[0,1],第二條是因為無論t時刻的狀態(tài)值是什么,在下一個時刻一定會轉(zhuǎn)向n個狀態(tài)中的一個,因此,它們的轉(zhuǎn)移概率和為1。另外,還需要為系統(tǒng)指定初始狀態(tài)z0=s0。
由該模型產(chǎn)生一個狀態(tài)序列z1,z2,…,zT的概率為
結(jié)果就是狀態(tài)轉(zhuǎn)移矩陣的元素乘積。在這里,假設(shè)任何一個時刻的狀態(tài)轉(zhuǎn)移矩陣都是相同的,即狀態(tài)轉(zhuǎn)移矩陣與時間無關(guān)。
狀態(tài)轉(zhuǎn)移矩陣通過訓(xùn)練樣本學(xué)習(xí)得到,訓(xùn)練時的損失函數(shù)使用對數(shù)似然函數(shù)。給定一個狀態(tài)序列z,定義馬爾可夫過程的對數(shù)似然函數(shù)為
因為狀態(tài)轉(zhuǎn)移矩陣要滿足上面的兩條約束,因此,要求解的是如下帶約束的最優(yōu)化問題:
由于對數(shù)函數(shù)的定義域要求自變量大于0,所以可以去掉不等式約束,上面的最優(yōu)化問題是一個帶等式約束的優(yōu)化問題,可以用拉格朗日乘數(shù)法求解。構(gòu)造拉格朗日函數(shù):
對aij求偏導(dǎo)數(shù)并令導(dǎo)數(shù)為0,可以得到
解得
對ai求偏導(dǎo)數(shù)并令導(dǎo)數(shù)為0,可以得到
將aij帶入上式可以得到
解得
合并后得到下面的結(jié)果:
也就是說,從狀態(tài)i轉(zhuǎn)移到狀態(tài)j的概率估計值,就是在訓(xùn)練樣本中從狀態(tài)i轉(zhuǎn)移到狀態(tài)j的次數(shù)除以從狀態(tài)i轉(zhuǎn)移到下一個狀態(tài)的總次數(shù)。
實驗的核心技術(shù)思想為采用PGM 算法對系統(tǒng)的歷史狀態(tài)數(shù)據(jù)即訓(xùn)練樣本進行學(xué)習(xí),求出狀態(tài)轉(zhuǎn)移矩陣,從而對系統(tǒng)的未來狀態(tài)進行預(yù)測。
實驗分為三個階段:
(1)樣本預(yù)處理。一個系統(tǒng)包含多個子系統(tǒng)。子系統(tǒng)的狀態(tài)有四種,分別記為狀態(tài)1、狀態(tài)2、狀態(tài)3、狀態(tài)4。分別查詢每個時刻(間隔1 小時或間隔固定時長)各個子系統(tǒng)的狀態(tài),并統(tǒng)計整個系統(tǒng)各個時刻、各個狀態(tài)的總數(shù)量。
(2)計算狀態(tài)轉(zhuǎn)移矩陣。根據(jù)預(yù)處理結(jié)果,取前80%的數(shù)據(jù)作為樣本集,統(tǒng)計各個狀態(tài)轉(zhuǎn)移次數(shù),求出各個狀態(tài)轉(zhuǎn)移概率,得到狀態(tài)轉(zhuǎn)移矩陣。
(3)預(yù)測。取欲處理結(jié)果的后20%作為測試集,根據(jù)狀態(tài)轉(zhuǎn)移矩陣,計算未來某一時刻系統(tǒng)的各個狀態(tài)的數(shù)量。
本文給出兩種預(yù)測方法。其中,狀態(tài)轉(zhuǎn)移矩陣的選取不同。
第一種,狀態(tài)轉(zhuǎn)移矩陣不隨時間變化。分別統(tǒng)計出各個狀態(tài)在各個時刻的預(yù)測數(shù)量和實際數(shù)量。實驗結(jié)果如表1 和圖1 所示。
表1 第一種方法結(jié)果
其中,四張圖分別表示各個狀態(tài)的預(yù)測數(shù)量和實際數(shù)量的對比圖,藍(lán)色線表示預(yù)測結(jié)果,紅色線表示實際結(jié)果。
第二種,狀態(tài)轉(zhuǎn)移矩陣隨時間變化。狀態(tài)轉(zhuǎn)移矩陣每時刻修正一次,且采用貝葉斯權(quán)重模擬計算狀態(tài)轉(zhuǎn)移概率,即系統(tǒng)當(dāng)前的狀態(tài)和它前一時刻的狀態(tài)相關(guān)性最大,往前依次根據(jù)貝葉斯系數(shù)遞減。貝葉斯函數(shù)為
貝葉斯函數(shù)圖像如圖2 所示。
實驗結(jié)果如表2 和圖3 所示。
圖1 方法一結(jié)果
圖2 貝葉斯函數(shù)
第一種方法,只能預(yù)測前幾個時刻,隨著時間推移,預(yù)測效果不理想,但是由于狀態(tài)轉(zhuǎn)移矩陣固定,所以該方法計算量小。第二種方法,由于狀態(tài)轉(zhuǎn)移矩陣隨時間不斷變化,計算量有所增加,但可以較好地預(yù)測未來任意時刻系統(tǒng)的狀態(tài)。
本文基于PGM 算法,給出了兩種預(yù)測系統(tǒng)狀態(tài)的方法。第一種方法可以快速預(yù)測未來前幾個時刻的狀態(tài),具有計算量小的優(yōu)點;第二種方法,通過不斷調(diào)整狀態(tài)轉(zhuǎn)移矩陣,雖然增加了計算量,但可以預(yù)測未來任意時刻系統(tǒng)的狀態(tài)。這兩種方法與神經(jīng)網(wǎng)絡(luò)方法預(yù)測相比,具有計算量小的優(yōu)點,均具有可行性。