牛春彥,夏克文,張江楠,賀紫平
(河北工業大學電子信息工程學院,天津 300401)
(?通信作者電子郵箱2053807967@qq.com)
在石油產業發展和管理方面,油氣層識別已經成為石油開發的不可缺少的依據[1]。近年來,研究者多采用擬合公式法來識別油氣層,但由于油井的油氣層識別是一門非線性的研究,因此采用擬合公式法進行識別的誤差非常大,精確度不高。因此,本文利用極限學習機(Extreme Learning Machine,ELM)來識別油氣層,驗證極限學習機在油氣層識別的可行性。
極限學習機算法由于輸入權值和偏置值的隨機選取,穩定性較差,且分類誤差大[2-5],因此對極限學習機的參數進行優化顯得非常重要。目前用來優化極限學習機輸入參數的智能優化算法有很多,如:文獻[6]將粒子群優化(Particle Swarm Optimization,PSO)算法應用到極限學習機中,但是PSO 算法易陷入局部最優,使其泛化性能不高。文獻[7]利用蟻群優化(Ant Colony Optimization,ACO)算法來優化極限學習機的算法,但是蟻群算法本身較復雜,搜索時間長。因此本文利用改進的花朵授粉算法(Flower Pollination Algorithm,FPA)優化極限學習機的輸入參數,通過實驗驗證了改進的花朵授粉算法優化的極限學習機具有很高的識別精度和識別效率。
花朵授粉算法利用萊維飛行機制,在尋優方面取得了較好的效果;但該算法也存在易陷入局部最優的問題,在尋優過程中,后期收斂速度較慢。為了解決以上問題,本文提出云量子花朵授粉算法(Cloud Quantum Flower Pollination Algorithm,CQFPA)。Sun 等[8]將量子行為應用到粒子群優化(PSO)算法中,改善了粒子群優化算法易陷入局部最優的問題,并擴大了搜索空間;但是粒子群優化算法在種群的不同搜索方式上存在模糊性、不能準確找出全局最優點、容易造成早熟等問題。因此,本文將量子系統引入花朵授粉中擴大搜索的空間范圍,使其避免陷入局部最優。同時,加入云模型對其收縮擴張因子進行改進,平衡了收縮擴張因子對花朵授粉算法的影響,從而提高了收斂精度。通過六個經典測試函數,將本文算法與量子粒子群優化算法進行對比,驗證了本文改進的云量子花朵授粉算法的有效性。
花朵授粉算法(FPA)是由Yang 等[9]提出的一種群智能優化算法,受自然界中花朵授粉的啟示,花朵授粉算法分為異花授粉和自花授粉。異花授粉過程要借助鳥、昆蟲、蜜蜂等載體協助完成授粉過程,在這個過程中,這些傳播者具有萊維(Levy)飛行機制,它們的行為服從萊維飛行分布,能飛行到較遠的地方,因此把此過程又稱為全局授粉。自花授粉過程是在同一種植物花朵上進行授粉過程,因為搜索范圍小,將這種過程稱為局部授粉。為了方便研究,需設置4個理想假設[10]:
1)在全局授粉過程中由攜帶花粉的傳播者采取萊維(Levy)飛行機制來進行傳播,計算式如下:

2)自花授粉過程是在小范圍內進行的自身局部授粉過程。配子的位置按式(2)進行更新:

花朵授粉算法雖然引入了Levy 飛行機制在一定程度上避免陷入局部最優解,但仍存在易陷入局部最優且收斂速度慢的問題。量子系統的粒子處于量子束縛的狀態,能以特定的概率出現在量子空間中的任意位置;同時它滿足聚焦態的性質,因此能夠搜索空間中的任意位置,這樣使得加入量子系統的花朵授粉的全局搜索能力優于傳統的FPA。
云量子花朵授粉算法(CQFPA)利用δ勢阱束縛花朵個體的行為。在量子空間中,粒子具有波動二象性,無法同時確定粒子的位置和速度,因此粒子的位置狀態只能利用波函數來表示[11]。為了得到粒子的位置,使粒子具有聚焦態的性質,進一步得到粒子的位置:

其中:u=rand(0,1);L表示δ勢阱的特征長度;P(t)為粒子在t時刻的δ勢阱。
假設種群當前最優解為gbest,用種群的平均最優解表示:

其中:Pi表示第i個粒子的當前最優解;M表示種群的個數;D為粒子的維度。
則勢阱長度L表達式為:

式中:φ為收縮擴張因子,若φ的值選取不當會對FPA 的收斂性和尋優精度有很大的影響。因此本文將云模型與量子系統的花朵授粉算法結合,提出云量子花朵授粉算法。根據文獻[12]給出的結論,花朵授粉轉換概率p=0.8 時,更有利于種群尋優。本文利用轉換概率p∈[0,1]調節個體進行全局搜索或者局部搜索:
1)當轉換概率p<rand時,表明花朵個體之間的轉換率較低,種群不需要全局授粉,應加快局部收斂速度,所以取收斂因子φ為0.4。
2)當轉換概率rand≤p≤0.8,采用云模型對其進行改進:假設種群在第l次迭代中xi的適應度值為fi(l),全局最優解的適應度值為fgbest(l),種群個體的數學期望為EX=fbest(l),b1=b2=2,粒子的熵為En=(fgbest(l)-fbest(l))/b1,個體的超熵與熵的關系值為He=En/b2。則在此區間內的收縮擴張因子β為:

其中,En'=normrnd(En,He)。
3)若轉換因子p>0.8 表明花朵個體間的轉換率很高,需擴大全局搜索能力,因此取φ=0.9。
為了測試改進算法的正確性和有效性,本文選取了6 個經典的標準測試函數進行對比測試,分別與FPA、量子粒子群優化(Quantum Particle Swarm Optimization,QPSO)算法、蝙蝠算法(Bat Algorithm,BA)進行對比分析,驗證了CQFPA 的優越性。6個測試函數分別如下:
1)Schwefel函數(單峰函數):

2)Sphere函數(單峰函數):

3)Rastrigin函數(多峰函數):

4)Ackley函數(多峰函數),含大量的局部優點:

5)Griewank函數(多峰函數):

6)Sum of different power函數:

這六個函數均在(0,0,…,0)處有最小值0。
實驗是在Matlab R2014a下測試的,同類改進的FPA 的參數設置相同,轉換概率p=0.8,λ=1.5。BA 的參數設置為:A=0.25,r=0.5。PSO算法的參數設置為:c1和c2的值均為2,ωmax為0.9,ωmin為0.3。所有算法的種群大小均為30,最大迭代次數為2 000。各算法的仿真尋優迭代曲線如圖1所示。

圖1 CQFPA、QPSO、FPA和BA在6種標準測試函數f1~f6上的適應度曲線Fig.1 Fitness value curves of CQFPA,QPSO,FPA and BA on six benchmark functions f1-f6
圖1中,將CQFPA與傳統的FPA、QPSO和BA收斂曲線進行對比,通過比較四種優化算法的收斂速度以及全局搜索能力可知:BA 容易陷入局部最優,達到最大迭代次數也無法跳出局部最優;FPA和QPSO雖然能跳出局部最優,但相比而言,CQFPA 的收斂速度高于FPA 和QPSO,具有較高的精確度且收斂較快。此外,CQFPA 在尋優結果數量級上都比其他三種優化算法高。CQFPA 比FPA 高出10~20 個數量級,且收斂比較快,表明本文在對收縮擴張因子φ上的改進是可取的。CQFPA 相較BA 具有很高的精度,高出20~30 個數量級,不會陷入局部最優。CQFPA 相較QPSO,尋優結果的數量級和收斂速度均有所提高。
極限學習機(ELM)是由Huang 等[13]提出的一種單隱層前饋神經網絡。極限學習機網絡比較簡單,它相當于一個黑匣子,只需要輸入樣本,就能很好地產生一系列與輸出樣本基本接近的數據,有很好的擬合能力。
ELM的數學模型[14]如式(13)所示:

其中:ti表示第i個輸出;bi是第i個隱含層偏置。
激活函數的表達式[15]為:

式(13)的N個方程可以寫成為:

其中:

β=,H為隱含層的輸出矩陣,只要確定隱含層輸出矩陣H后,就可根據式(15)求出最小二乘范數解:

式中,H-1為H的Moore-Penrose 廣義逆矩陣。由式(14)可知,已知wi和bi,則求Hβ=T的最小二乘解的過程其實和訓練一個單隱層前饋神經網絡是一樣的,計算式如下:

本文的均方誤差函數E(mse)如下:

式中:E(mse)越小,表明ELM訓練網絡性能越好。
ELM 算法由于輸入權值和偏置值隨機選取,隱含層節點數目要求量可能很大,使得資源利用率很低;而且在學習過程中ELM 會產生許多非最優的參數,穩定性也很差。在計算輸出權重時,誤差主要來自于輸入權重和偏置的隨機選取,也可能存在一些輸入為零的參數而導致某些隱含層節點無效。針對這些缺陷,本文提出了一種基于云量子花朵授粉算法優化的極限學習機模型——CQFPA-ELM。
在ELM 算法中,隨機初始化后的參數使得ELM 算法的精確度不是很高;而花朵授粉算法在搜索方面具有參數簡單、收斂速度快和魯棒性能好等特點,能有效地找出全局最優解。因此本文將CQFPA 引入到ELM 算法中,對輸入權值w和隱含層偏差b(閾值)優化,選出最優的值,代入ELM算法訓練網絡中,使ELM算法精度提高,泛化能力也提高,同時節省了運算時間。
CQFPA-ELM算法流程如圖2所示,其具體步驟如下:
步驟1 初始化ELM 網絡模型參數,輸入訓練樣本數據,設置隱含層節點個數L。
步驟2 定義CQFPA 的參數,隨機生成CQFPA 的初始種群,種群維度為d維。選取fitness 函數,確定迭代次數的值Nmax以及種群數t。
步驟3 計算最優的fitness 值作為當前種群最優fitness的適應度初始值,利用式(4)計算種群的平均最優位置。
步驟4 若種群個體的轉換概率p<rand,進行局部搜索,收縮因子φ=0.4;若rand≤p≤0.8,根據式(6)計算收縮因子φ;若p>0.8,收縮因子為0.9。計算花朵個體的適應度值,更新最優解的位置。
步驟5 判斷是否滿足適應度值最大值條件或者達到最大迭代次數:若是,停止迭代;否則返回步驟4。
步驟6 將CQFPA 優化得到的輸入權值和閾值代入ELM模型中,利用式(16)計算出H。然后,根據式(17)得出輸出權重建立ELM訓練模型。
步驟7 根據訓練好的模型對測試樣本進行預測,評估網絡模型的性能。

圖2 CQFPA-ELM的流程Fig.2 Flowchart of CQFPA-ELM
油氣層識別技術是一項很復雜的動態研究技術,與它有關的參數有很多,比如:油藏厚度、油壓、滲透率、含水率、油藏壓力、儲存有效厚度等,還有識別的準確性以及時間的影響[17]。本文提出的CQFPA-ELM 在分類上有很高的準確率,并且訓練時間短,因此將CQFPA-ELM 應用到石油測井中,通過采用某油田提供的石油數據來驗證此算法的有效性。
本文在預測過程中,假定油井的靜態數據是不變的。主要影響石油產量的因素有自然伽馬(GR)、聲波時差(DT)、自然電位(SP)、鈾(U)、釷(TH)、鉀(K)、微球聚焦(WQ)、深側向電阻率(LLD)、淺側向電阻率(LLS)、補償密度(DEN)、補償中子(NPHI)、光電吸收截面指數(PE)、井徑(CALI)等13 個屬性。本文選取了某石油公司提供的樣本數據,由于各屬性的量綱不一,數值范圍各異,將這些數據先進行歸一化處理,使得樣本數據范圍在[0,1],然后把歸一化后的影響因素數據代入網絡中進行訓練和測試,得出結果。其中,樣本歸一化的計算式如下:

其中:x∈[xmin,xmax],xmin為數據樣本屬性的最小值,xmax為數據樣本屬性的最大值。為遵守保密規范,表1 只列出部分歸一化的測井數據。數據歸一化不僅能夠加快訓練速度,而且還能使神經元對輸入更敏感。為了對比歸一化前后對網絡的影響,表2 中列出歸一化數據前后的訓練時間、識別率以及均方誤差。

表1 樣本數據(部分數據)Tab.1 Sample data(part of data)

表2 歸一化前后對比Tab.2 Comparison before and after normalization
由于油氣層影響因素對油氣層識別的決定程度不同,本文使用的數據是經過屬性約簡技術處理過的數據,其中剔除了一些影響程度較小的屬性,圖3是屬性約減后的5個屬性歸一化后的曲線。

圖3 屬性歸一化曲線Fig.3 Attribute normalization curve
本文將樣本數據隨機分成兩部分:訓練樣本用來構建ELM算法的整個神經網絡;測試樣本用在測試過程中,測試過程用來測試和檢驗訓練網絡的性能。下面給出訓練過程中的參數選擇及實驗分析。
在油氣層識別中,CQFPA中適應度函數如下:

式中,N為輸出樣本的總個數。
初始化種群,本文迭代次數從0 到120 逐步增加,轉換概率p=0.8,λ=1.5。尋找最優的粒子群,即所對應的適應度函數值為種群最小值的一組解。迭代次數逐步增加所對應的適應度函數值的變化曲線如圖4所示。由圖4可知,適應度值從80 之后開始收斂并趨于平穩,收斂速度較快,因此本文固定CQFPA 的迭代次數值為80。此時取最優的一組解作為ELM算法的輸入權值和隱含層偏置。

圖4 適應度值變化曲線Fig.4 Curve of fitness value change
將上面得到的最優的輸入權值w和隱含層偏差b代入式(4),求出隱含層的輸出矩陣代入ELM 網絡模型中,得到ELM訓練網絡。
ELM 模型的激活函數分別選取sigmoid 函數、反正切函數(sin)、Gaussian函數(hardlim)進行實驗對比,隱含層節點數從1 逐步增加到90,為了提高ELM 模型的準確性,進行了20 次訓練,取20 次訓練的正確率平均值,結果如圖5 所示,比較3個激活函數對CQFPA-ELM 模型準確率的影響。實驗結果表明,當隱含層節點個數相同的情況下,sigmoid 函數對應的CQFPA-ELM 模型的識別率最高,且隱含層節點數取35 時,識別精確度最高。因此本文的激活函數選取sigmoid 函數,隱含層節點數為35。

圖5 激活函數對精度的影響Fig.5 Effect of activation function on accuracy
本文算法的應用環境是Matlab 2014b,PC 的處理器是Intel Core i3-3110,主頻2.40 GHz,內存6 GB。為了驗證本文提出的CQFPA 優化ELM 參數的有效性,分別與PSO、ACO 和遺傳算法(Genetic Algorithm,GA)進行對比。本實驗各優化算法的參數設置為:PSO 算法的c1和c2均為2,ωmax=0.9,ωmin=0.2;ACO 算法的最大迭代次數為100,信息素因子α=1.7,啟發因子β=2,信息素加強系數為Q=10,信息素蒸發系數ρ=0.2;GA的變異率Pc∈{0.35,0.04}。
本文利用2.2 節訓練出來的ELM 網絡模型進行預測驗證,如圖6 是傳統的ELM 識別結果,圖7 是PSO 優化后的ELM(PSO-ELM)的識別結果,圖8 是蟻群算法優化的ELM(ACOELM)的識別結果,圖9 是遺傳算法優化的ELM(GA-ELM)識別結果,圖10 是CQFPA-ELM 識別結果。其中:橫軸表示深度;縱軸為油氣層識別的標簽,“1”表示非油氣層,“2”表示油氣層。通過對比,由圖6~10 可知,相較經典ELM、PSO-ELM、ACO-ELM、GA-ELM 的識別結果,本文提出的CQFPA-ELM 的識別結果更為理想,和實際油井分布情況最接近。

圖6 ELM識別結果Fig.6 ELM identification results

圖7 PSO-ELM識別結果Fig.7 PSO-ELM identification results

圖8 ACO-ELM識別結果Fig.8 ACO-ELM identification results

圖9 GA-ELM的識別結果Fig.9 GA-ELM identification results
為了展示傳統的ELM、PSO-ELM、ACO-ELM、GA-ELM、CQFPA-ELM 的性能指標,其中包括均方根誤差(Root Mean Squared Error,RMSE)、識別準確率以及運行時間,表3是各種算法運行30 次取得結果的平均值。由表3 可以看出,在油氣層識別的研究中,CQFPA-ELM相較經典的ELM對油氣層的平均識別準確率提高了10.52個百分點,而相較PSO-ELM、ACOELM、GA-ELM 的識別準確率分別提高了6.79個百分點、5.85個百分點、5.37 個百分點。綜上,本文提出的CQFPA-ELM 模型有效地提高了分類精度,驗證了該模型的分類效果較好。

圖10 CQFPA-ELM的識別結果Fig.10 CQFPA-ELM identification results

表3 不同ELM算法的性能比較Tab.3 Performance comparison of different ELM algorithms
蟻群算法比較復雜,搜索時間比較長,且容易出現停滯現象,因此在優化ELM 算法(ACO-ELM)上所用時間比另外三種優化算法(PSO-ELM、GA-ELM、CQFPA-ELM)長,達到2.397 1 s,而本文提出的CQFPA 在優化ELM 參數時,運行時間最少,驗證了該算法具有較低的復雜度。
本文提出的云量子花朵授粉算法避免了FPA易陷入局部最優的問題,且收斂速度加快。將改進的花朵授粉算法用來優化ELM 算法的輸入權重和閾值,使ELM 模型的精度提高,并且訓練速度加快,同時在網絡參數選取上也避免了局部最優,能很好地找到全局最優值,這樣得到的ELM 訓練網絡比較完善。將改進的ELM 算法應用在石油測井中,與ELM 算法以及PSO算法優化的ELM相比,CQFPA優化的ELM預測精確度更高,誤差相對減小,表明該改進算法是可行的,可應用于油氣層識別。在今后的研究中,可以進一步對ELM 的網絡模型進行研究,例如增加ELM 的網絡層數,將其達到深度學習的水平,以便應用到大數據集的識別和分類中。