賀紫平,夏克文,潘用科,王 莉
(河北工業(yè)大學 電子信息工程學院,天津 300401)
在石油勘探與開發(fā)以及測井解釋的過程中,通常采用測井解釋工程師的經(jīng)驗進行油層識別。但其無法達到高效的推廣油層解釋工作的目的。為此不少學者將監(jiān)督的人工智能方法,比如貝葉斯支持向量機[1]、量子粒子群優(yōu)化的支持向量機(support vector machine based on quantum-behaved particle swarm optimization, QPSO-SVM)[2]、多核相關(guān)向量機(multiple-kernel relevance vector machine based on SOCP, MKRVM)[3]等應(yīng)用到石油識別中,取得了不錯的效果。由于有標簽樣本缺乏,傳統(tǒng)監(jiān)督預(yù)測模型存在著過擬合的問題。其次,獲取有標簽的石油數(shù)據(jù)需花費很大代價。半監(jiān)督學習可以通過大量的未標記數(shù)據(jù)來改善分類器效果,訓(xùn)練在所有數(shù)據(jù)分布上都具有強泛化能力的模型。Shamanism和Landgrebe于1994年首次將半監(jiān)督學習(semi-supervised learning,SSL)方法應(yīng)用于衛(wèi)星遙感圖像分析中,而后SSL陸續(xù)在中文文本分類、視頻、網(wǎng)頁信息提取、圖像分類、大規(guī)模圖像檢索等眾多領(lǐng)域取得了成功應(yīng)用。如Zhang等將基于圖的SSL應(yīng)用于視頻領(lǐng)域研究[4]。Cheng等將粒子群優(yōu)化算法(particle swarm optimization, PSO)優(yōu)化的S3VM算法應(yīng)用于中文文本分類[5]。Guilaumin等將多模態(tài)SSL用于圖像分類[6]。Wang等將SSL散列法用于大規(guī)模圖像檢索中,取得了顯著的性能提高[7]。Carlson等利用耦合的SSL在網(wǎng)頁中提取有效的信息[8]。羅偉平等將最小二乘半監(jiān)督SVM應(yīng)用于海上石油識別,成功地對油層進行了準確預(yù)判[9]。文獻[10]針對軟件缺陷預(yù)測研究中類標簽數(shù)據(jù)難以獲取和類不平衡分布問題,提出基于采樣的半監(jiān)督支持向量機預(yù)測模型。王立國等將K均值聚類和孿生支持向量機相結(jié)合的半監(jiān)督方法應(yīng)用于高光譜圖像分類中,最終縮短了整個分類過程中所需的時間,并提高了分類銷量[11]。文獻[12]提出了一種集成S3VM的方法,并將該算法應(yīng)用于極化合成孔徑雷達圖像的地面覆蓋分類。傳統(tǒng)監(jiān)督預(yù)測模型如QPSO-SVM在有標簽樣本過少時,易出現(xiàn)過擬合問題,導(dǎo)致預(yù)測精度低,最小二乘支持向量機(least squares support vector machine, LS-SVM)預(yù)測模型為降低求最優(yōu)解的時間復(fù)雜度,卻損失了SVM解的稀疏性。而S3VM算法則能僅利用少量標簽樣本訓(xùn)練得到較高預(yù)測精度的分類器,彌補了全監(jiān)督算法的缺陷。但是,S3VM算法存在易陷于局部最優(yōu)的問題,為此,許多學者提出了全局搜索技術(shù)[13]、分支定界(branch and bound)[14]技術(shù)、基于全局和局部保持的S3VM[15]、基于標記生成的WELLSVM[16]等技術(shù)方法。
Chapelle O等提出的分支定界算法可以在小樣本上實現(xiàn)全局最優(yōu)化,將其結(jié)合S3VM可以有效地避免S3VM陷入局部最優(yōu)解,且可讀性快,分類速度快[14]。為此,為提高石油預(yù)測精度和訓(xùn)練速度,提出一種基于分支定界半監(jiān)督支持向量機的油層識別模型,并應(yīng)用于實際測井中,以期獲得更好的油層識別效果。
統(tǒng)計學習的結(jié)構(gòu)風險最小化準則和VC維理論使得SVM算法具有完備的理論基礎(chǔ),泛化錯誤率低,計算開銷不大,結(jié)果易解釋的優(yōu)點。半監(jiān)督SVM在SVM的基礎(chǔ)上還能結(jié)合無類標簽的樣例提高算法預(yù)測的精度,是基于低密度假設(shè)與聚類假設(shè)的完美實現(xiàn)[17-18],近年來成為機器學習領(lǐng)域的熱門研究方向。依照參數(shù)優(yōu)化的差異,半監(jiān)督SVM可以分為基于組合與基于連續(xù)方法2類,而本文BBS3VM算法則是一種經(jīng)典的基于組合半監(jiān)督SVM。
給定一組有標簽訓(xùn)練樣本集為
(x1,y1),(x2,y2),…,(xl,yl),xi∈Rd
假定為二分類,其對應(yīng)的標簽為
yi∈{+1,-1}
同時,給定無標簽訓(xùn)練樣本集為
U={x1,x2,…,xu},xi∈Rd
這里n=l+u為訓(xùn)練集的樣本總數(shù),有標簽訓(xùn)練樣本集與無標簽樣本集都屬于同一分布,且相互獨立。
則半監(jiān)督SVM可以由(1)式描述為
(1)
(1)式中:向量yu為無標簽樣本集U的標簽;C1表示有標簽樣本的懲罰因子;C2表示無標簽樣本的懲罰因子;ξi和ξj依次對應(yīng)有標簽樣本與無標簽樣本的損失函數(shù);ω表示基于預(yù)測標簽yu對無標簽樣本進行分類時的最優(yōu)超平面;b為偏移量。
首先,對無標簽樣本yu進行組合。其次,在其所有組合中采用全監(jiān)督的SVM算法對其所有組合進行優(yōu)化,最終得到目標函數(shù)的最優(yōu)解,即最優(yōu)組合。
若給定任意一組yu的組合,那么此時全監(jiān)督模型的目標函數(shù)可以由(2)式表示為
(2)
此時半監(jiān)督SVM的目標函數(shù)可以由(3)式表示為
(3)
s.t.yi(ωxi+b)≥1-ξi,i=1,2,…,l
yj(ωxj+b)≥1-ξj,j=1,2,…,u
分支定界的主要思想便是采用深度優(yōu)先原則遍歷問題的解空間樹的解方法,采用深度優(yōu)先的分支策略,即依次搜索根節(jié)點的所有分支,對不滿足約束條件的結(jié)點進行剪支,其余結(jié)點列為非葉子結(jié)點,繼續(xù)進行分支訓(xùn)練,從非葉子結(jié)點子集中選擇一個結(jié)點作為下一個根結(jié)點,繼續(xù)搜索。
分支定界一般步驟如下:首先生成在根結(jié)點處的所有分支,即非葉子結(jié)點,其次再在非葉子結(jié)點集中選擇下一個分支對象。以上的搜索過程需要耗費大量的時間,因此,為了加快搜索速度,并更加高效地挑選下一個分支對象,通過計算得到一些界限,首先只能通過這些界限從當前的非葉子結(jié)點集中選擇一個最可靠、最有利的結(jié)點作為下一個分支對象,即下一個根結(jié)點;其次,將不滿足界限條件的分支剔除于非葉子結(jié)點集中,縮小非葉子結(jié)點集范圍,加快分支速度,最后使得當前解逐步往最優(yōu)解的分支上前進。
在半監(jiān)督學習中,很難僅通過少量的有標記樣本直接預(yù)測大量無標簽樣本集中的樣本標簽分布情況,從而或多或少存在數(shù)據(jù)不均衡的問題,容易將所有的無標簽樣本劃分為一個類別,為此專家們提出了一個可以盡可能使無標簽樣本劃分到2個類的平衡約束。本文為簡化計算,令C1=C2,設(shè)置無標簽樣本集的二分類樣本比例為r,但由于其標簽是未知的,因此r通常用有標簽樣本集中的二分類樣本比例來估計,如(4)式所示
(4)
(4)式中,標簽樣本與無標簽樣本的樣本總和由n=l+u計算得到。
1)標記:首先在給定的有標簽樣本集L上進行SVM訓(xùn)練得到目標函數(shù)值,作為分支定界樹的根結(jié)點,其次從無標簽樣本集中選擇樣本對其進行標注,并分別計算預(yù)測標簽不同時,此時的目標函數(shù)值。
2)分支:由于分支定界是從深度優(yōu)先的方式搜索解空間樹,所以需要不斷的更新其上界與下界,從而獲得一個盡可能緊的界限,有利于快速的修剪分支,去除非可行解的子集,從此時的最優(yōu)解集中選擇一個子集,對其進行分支操作。
在給定節(jié)點上,一些無標記的點已經(jīng)被標注了一個標簽,如何挑選最不容易出錯的,最可靠的無標簽樣本作為下一個分支標注對象,在算法的迭代中非常重要。若挑選一個易錯分的樣本進入訓(xùn)練,得到其標簽后加入有標簽訓(xùn)練集即等同于加入了噪聲樣本進入訓(xùn)練過程,將會降低分類準確率。此處引入對無標簽樣本的置信度準則,如果一個未標記點距離另一個標記點最近,那么使用最可靠的距離度量,計算2個點之間的距離,就可以對無標簽樣本進行標注。本文采用了一種更加可靠的度量方法,其主要思想是如果一個標簽樣本的標簽是可靠的,那么當給這個有標簽樣本一個相反的標簽時,此時的目標函數(shù)值會大大的增加。根據(jù)此思想,就可直觀的挑選使目標函數(shù)值增長最大的那個樣本與此時假定賦予該樣本的標簽,那么就可認為該標簽為下一個進行訓(xùn)練的對象,其預(yù)測結(jié)果即為與此刻標簽相反的標簽。
其算法描述為,給定當前有標簽樣本集L,無標簽樣本集U,令s(L)為此時在訓(xùn)練集L訓(xùn)練得到的SVM的目標函數(shù)值,可以由(5)式表示為
(5)
(5)式中,ξ可以由(6)式表示為
ξ=max(0,1-yi(ω·xi+b))2
(6)
現(xiàn)在就在無標簽樣本集U中選擇一個樣本點,那么有
(7)
根據(jù)(7)式挑選出使目標函數(shù)增長最大的無標簽樣本x和此時對應(yīng)的標簽y,該點就為最不容易錯分的樣本點,并給其標注為-y。
3)定界:分支定界算法中上界(upper bound, ub)與下界(lower bound, lb)的定義決定剪支與分支的情況,一個好的上界與下界能夠快速修剪非可行解的分支,加快訓(xùn)練速度。
定義1分支上界。
初始化時,上界ub=∞ 。隨著全局搜索的進行,在葉子結(jié)點上,在分支定界半監(jiān)督支持向量機中,上界ub簡單定義為此刻半監(jiān)督支持向量機目標函數(shù)的最優(yōu)解Imin(ω,b,yu),可以表示為
ub=Imin(ω,b,yu)
(8)
(9)
(9)式中,k為葉子結(jié)點總數(shù)。
而非葉子結(jié)點則不存在上界。
定義2分支下界。
當C2=0時的半監(jiān)督支持向量機目標函數(shù)值小于當C2>0時的值,然而c2=0時,半監(jiān)督支持向量機為一個標準的監(jiān)督支持向量機,沒有考慮無標簽樣本的影響。為此,首先,要計算在給定的有標簽樣本集上的標準支持向量機的目標函數(shù)值,得到一個初始的下界。此時,可構(gòu)造一個對偶的半監(jiān)督SVM的目標函數(shù)為
s.t.
αi≥0
∑αi=0
(10)
隨著對解空間樹的搜索,無標簽樣本開始加入訓(xùn)練,計算得到無標簽樣本的標簽yu,并構(gòu)造一個滿足(10)式中約束條件的向量yu。此時,任意滿足約束條件的yu都有
令Q(yu)=D(α(yu),yu) ,那么此時下界lb就可以由(11)式表示為
lb=minQ(yu)
(11)
對于所有的葉子結(jié)點,該結(jié)點上的所有樣本都已經(jīng)被標簽,故lb同時也是在該節(jié)點上的目標函數(shù)的值,即lb=ub。
對于非葉子結(jié)點,其下界就是要找到一個yu的組合,使得下界可由lb=minQ(yu)計算得到。
首先在有標簽樣本集上進行SVM訓(xùn)練得到初始分類器SVM0以及向量α;其次,將無標簽樣本在初始分類器SVM0里訓(xùn)練,獲得其預(yù)測標簽yu;最后,根據(jù)yu向量α(yu),D(α(yu),yu)就可計算得到該非葉子結(jié)點的下界lb。
4)剪支:根據(jù)以下原則對現(xiàn)分支定界樹進行剪支,刪除不可行的分支子集,再對剩下的分支子集進行分支。
原則1如果當前的結(jié)點的下界大于全局分支定界中的上界,那么剪支。
原則2如果當前結(jié)點的樣本集不符合平衡約束,那么剪支。
最后,當所有無標簽樣本都被標記時,則得到最終最優(yōu)解,即最優(yōu)組合。
分支定界半監(jiān)督SVM算法實現(xiàn)如下所示。
輸入:有標簽樣本集L;
無標簽樣本集U;
混合標簽Y:有標簽樣本集標簽與先設(shè)定為全0的無標簽樣本集標簽;
初始上界ub=∞;
輸出:無標簽樣本集的預(yù)測標簽Y*;
相對應(yīng)的目標函數(shù)值v;
步驟1初始化,計算目標函數(shù)值,得到上界ub及下界lb。
if ∑max(0,Yi)>urOR ∑max(0,-Yi) return%平衡約束條件不滿足 endif%剪支 v=SVM(Y) %計算在訓(xùn)練樣本集L上訓(xùn)練得到 SVM的目標函數(shù)值 步驟2判斷,根據(jù)分支及剪支原則對結(jié)點進行剪支或分支操作。 ifv>ub then return%下界大于上界 endif%剪支 ifYisfulllabeled then Y*=Y Return%得到葉子結(jié)點 endif 步驟3計算無標簽樣本置信度,選擇置信度高的作為下一個標注樣本。 Findindexiandlabelyasin(7)%尋找下一個標注的無標簽樣本 Yi=-y%從置信度最高的樣本開始標注 步驟4解得最優(yōu)解,并輸出及v (Y*,v)=S3VM(Y,ub) %解得此時的最優(yōu)解 Yi=-Yi%切換標簽 ifv2 end if 分支定界半監(jiān)督SVM油層識別模型如圖1。 圖1 分支定界半監(jiān)督SVM油層識別模型Fig.1 Oil layer recognition model by BBS3VM 油層識別主要有如下幾個步驟。 ①樣本信息選取及預(yù)處理:首先,應(yīng)該選擇具有和油層緊密聯(lián)系的信息的樣本;其次,為避免計算飽和,將樣本進行歸一化處理。 ②屬性離散化和泛化:分別用0、1表示油層與干層,則有決策屬性D=kis08w0,d={di=i,i=0,1},然后將選取的樣本進行決策屬性泛化,且使用曲線拐點方法每個屬性各自單獨離散化。 ③樣本信息屬性約簡:通常,比較完善的測井數(shù)據(jù)至少有10余種測井信息,然而大多數(shù)數(shù)據(jù)中都存在冗余且充分的屬性,為此采用基于屬性重要性的簡約算法進行約簡。 ④分支定界半監(jiān)督SVM算法建模:在BBS3VM模型中,輸入經(jīng)屬性約簡后的樣本信息,采用S3VM算法進行訓(xùn)練,對無標簽樣本進行標注,同時利用分支定界算法加快求解速度和精度,最后得到BBS3VM分類模型。 ⑤識別輸出:在整個井段利用最終訓(xùn)練所得半監(jiān)督識別模型進行油層識別,從而得到輸出結(jié)果。 本文選取同課題組LIU Liu等成功驗證和應(yīng)用過的某油井真實數(shù)據(jù)進行訓(xùn)練和測試[19]。該油井實際測得28個屬性信息,分別為{AC,CNL,DEN,GR,RT,RI,RXO,SP,R2M,R025,BZSP,RA2,C1,C2,CALI,RINC,PORT,VCL,VMA1,VMA6,RHOG,SW,VO,WO,PORE,VXO,VW,AC1},約簡后得到{AC,GR,RI,RXO,SP}5個屬性。 從井段1 230~1 270 m提取160個測井數(shù)據(jù)作為訓(xùn)練集,包括油層46個,干層114個,屬性信息約簡后得到{AC, GR, RI, RXO,SP}5個屬性。使決策屬性D=m0gcakc,d={di=i,i=0,1},0,1分別表示干層和油層。將在訓(xùn)練機上訓(xùn)練好的預(yù)測模型對井段1 200~1 280 m的641個樣本進行油層識別,屬性在全井段的歸一化范圍如表1。 表1 屬性在全井段的歸一化范圍 將約簡后的屬性在井段1 230~1 270 m間進行歸一化處理。圖2為屬性AC與GR的歸一化處理。 圖2 AC屬性與GR屬性歸一化處理Fig.2 Normalization attribute AC, GR 圖3為屬性RT,RXO與SP的歸一化處理。其中:X軸代表油井深度;Y軸代表歸一化值。 實驗1有標簽樣本數(shù)目對半監(jiān)督算法的影響。 為考慮有標簽樣本集數(shù)目對半監(jiān)督算法的分類準確率與速度的影響,將分支定界半監(jiān)督SVM與經(jīng)典S3VM算法及標準SVM算法進行對比。為使預(yù)測結(jié)果更加可靠,并驗證其具有強泛化能力,本文采取隨機抽取并劃分有標簽樣本集與無標簽樣本集的方式來構(gòu)成訓(xùn)練集。有標簽樣本集分別由從原始的訓(xùn)練集中隨機的抽取數(shù)目為10,20,30,40,50的樣本及其標簽構(gòu)成,其余的訓(xùn)練集樣本去除標簽,與其對應(yīng)的作為無標簽樣本集。其中,標準SVM算法只選取劃分好的有標簽樣本集作為其訓(xùn)練集。經(jīng)過10次獨立重復(fù)實驗取平均值,得到2種半監(jiān)督算法與1種全監(jiān)督算法的訓(xùn)練精度對比如圖4。分支定界半監(jiān)督SVM的訓(xùn)練時間和精度數(shù)據(jù)如表2所示。表2中訓(xùn)練時間是在CPU為Intel Core i7,內(nèi)存為16GB的計算機上的訓(xùn)練時間。 圖3 RT,RXO與SP屬性歸一化Fig.3 Normalization attribute RT, RXO, SP 圖4 預(yù)測準確率對比Fig.4 Comparison on predictive accuracy 由圖4可以看出:①隨著有標簽樣本數(shù)目的增加,3種半監(jiān)督模型及監(jiān)督模型的分類準確率都越來越高,但分支定界半監(jiān)督SVM模型增幅更為穩(wěn)定,且在有標簽樣本越少時,本文的算法模型與經(jīng)典S3VM算法相比,預(yù)測精度更高。而2種半監(jiān)督算法模型由于無標簽樣本加入訓(xùn)練,皆比只采用有標簽樣本進行訓(xùn)練的SVM算法預(yù)測精度高;②在有標簽樣本數(shù)目較多時,依據(jù)此時的訓(xùn)練集,2種半監(jiān)督算法都可以訓(xùn)練得到一個性能好的分類器,因此,2種半監(jiān)督算法分類準確率趨于一致。而監(jiān)督的SVM算法由于僅使用有標簽樣本進行訓(xùn)練,預(yù)測精度仍隨著有標簽樣本數(shù)目增加而逐步提升。 表2 性能指標比較 從表2的數(shù)據(jù)可知,當有標簽樣本數(shù)目增加時,模型的訓(xùn)練時間也有所增加,這是由于若有標簽樣本訓(xùn)練集增大,那么進行初始SVM訓(xùn)練得到初始分類器的訓(xùn)練時間也將跟著增加,分類精度更好,即相對應(yīng)的油層識別率隨著有標簽樣本的增加而穩(wěn)步提高。增加有標簽樣本集樣本數(shù)量,即提高了由有標簽樣本訓(xùn)練得到的初始分類器的分類精度,而后能夠?qū)o標簽樣本進行更好的預(yù)測,減少噪聲樣本的加入。 總之,有標簽樣本數(shù)目的增加,能夠小幅度地提高分支定界半監(jiān)督SVM的分類識別率,且能夠更好估計無標簽樣本集的2類標簽分布,但僅采用少量有標簽樣本(10個)時,訓(xùn)練精度與采用大量有標簽樣本(50個)時分類識別率差別不大,滿足半監(jiān)督學習的理論效果。 實驗2屬性約簡前后對比。 為驗證測井數(shù)據(jù)屬性約簡的有效性,在屬性約簡前后分別對井段1 190~1 290 m的641個樣本的分類結(jié)果進行了對比和分析,如表3。 表3 識別結(jié)果 分支定界半監(jiān)督SVM的訓(xùn)練集由10個有標簽樣本,150個無標簽樣本構(gòu)成。由表3可知,經(jīng)過屬性約簡后的數(shù)據(jù)略微的提高了算法的訓(xùn)練時間,但稍微的降低了識別率。 實驗33種算法比較。 圖5 油層識別結(jié)果Fig.5 Results of oil layer recognition 最后將在訓(xùn)練集上訓(xùn)練好的以上3種識別算法模型在井段1 190~1 290 m的641個樣本進行油層識別。比較3種算法在真實石油測井數(shù)據(jù)上的分類效果,如表4。 表4 幾種模型的識別結(jié)果 從表4可得出結(jié)論,同半監(jiān)督的SVM相比,在同樣的樣本選擇的情況下,本文的BBS3VM算法訓(xùn)練時間更快,且識別精度更高,比半監(jiān)督SVM具有更好的應(yīng)用前景。同全監(jiān)督的SVM相比,由于BBS3VM需要進行多次SVM運算,所以訓(xùn)練時間要略長于標準SVM,而識別率能與標準SVM保持很接近,則可表明,本文的BBS3VM算法能夠僅使用少量的有標簽樣本,就能達到與全監(jiān)督接近的識別效果,降低了對標簽樣本的依賴程度,具有廣泛的應(yīng)用前景。 針對傳統(tǒng)的監(jiān)督SVM算法對有標簽樣本依賴性太強,且石油測井中標簽樣本獲取難度大的缺點,本文使用分支定界算法優(yōu)化的半監(jiān)督支持向量機油層識別模型,使無標簽樣本的標簽預(yù)測更準確,其次加快了訓(xùn)練速度,提高了分類精度。此方法應(yīng)用于油層識別時,分類效果好,在使用少量有標簽樣本的情況下,提高了識別率,減少了樣本提取代價,明顯優(yōu)于其他2種算法,具有很好的應(yīng)用前景。3 油層識別應(yīng)用
3.1 油層識別基本模型
3.2 實例分析
4 結(jié)束語