牛春彥,夏克文,張江楠,賀紫平
(河北工業(yè)大學電子信息工程學院,天津 300401)
(?通信作者電子郵箱2053807967@qq.com)
在石油產業(yè)發(fā)展和管理方面,油氣層識別已經成為石油開發(fā)的不可缺少的依據(jù)[1]。近年來,研究者多采用擬合公式法來識別油氣層,但由于油井的油氣層識別是一門非線性的研究,因此采用擬合公式法進行識別的誤差非常大,精確度不高。因此,本文利用極限學習機(Extreme Learning Machine,ELM)來識別油氣層,驗證極限學習機在油氣層識別的可行性。
極限學習機算法由于輸入權值和偏置值的隨機選取,穩(wěn)定性較差,且分類誤差大[2-5],因此對極限學習機的參數(shù)進行優(yōu)化顯得非常重要。目前用來優(yōu)化極限學習機輸入?yún)?shù)的智能優(yōu)化算法有很多,如:文獻[6]將粒子群優(yōu)化(Particle Swarm Optimization,PSO)算法應用到極限學習機中,但是PSO 算法易陷入局部最優(yōu),使其泛化性能不高。文獻[7]利用蟻群優(yōu)化(Ant Colony Optimization,ACO)算法來優(yōu)化極限學習機的算法,但是蟻群算法本身較復雜,搜索時間長。因此本文利用改進的花朵授粉算法(Flower Pollination Algorithm,F(xiàn)PA)優(yōu)化極限學習機的輸入?yún)?shù),通過實驗驗證了改進的花朵授粉算法優(yōu)化的極限學習機具有很高的識別精度和識別效率。
花朵授粉算法利用萊維飛行機制,在尋優(yōu)方面取得了較好的效果;但該算法也存在易陷入局部最優(yōu)的問題,在尋優(yōu)過程中,后期收斂速度較慢。為了解決以上問題,本文提出云量子花朵授粉算法(Cloud Quantum Flower Pollination Algorithm,CQFPA)。Sun 等[8]將量子行為應用到粒子群優(yōu)化(PSO)算法中,改善了粒子群優(yōu)化算法易陷入局部最優(yōu)的問題,并擴大了搜索空間;但是粒子群優(yōu)化算法在種群的不同搜索方式上存在模糊性、不能準確找出全局最優(yōu)點、容易造成早熟等問題。因此,本文將量子系統(tǒng)引入花朵授粉中擴大搜索的空間范圍,使其避免陷入局部最優(yōu)。同時,加入云模型對其收縮擴張因子進行改進,平衡了收縮擴張因子對花朵授粉算法的影響,從而提高了收斂精度。通過六個經典測試函數(shù),將本文算法與量子粒子群優(yōu)化算法進行對比,驗證了本文改進的云量子花朵授粉算法的有效性。
花朵授粉算法(FPA)是由Yang 等[9]提出的一種群智能優(yōu)化算法,受自然界中花朵授粉的啟示,花朵授粉算法分為異花授粉和自花授粉。異花授粉過程要借助鳥、昆蟲、蜜蜂等載體協(xié)助完成授粉過程,在這個過程中,這些傳播者具有萊維(Levy)飛行機制,它們的行為服從萊維飛行分布,能飛行到較遠的地方,因此把此過程又稱為全局授粉。自花授粉過程是在同一種植物花朵上進行授粉過程,因為搜索范圍小,將這種過程稱為局部授粉。為了方便研究,需設置4個理想假設[10]:
1)在全局授粉過程中由攜帶花粉的傳播者采取萊維(Levy)飛行機制來進行傳播,計算式如下:
2)自花授粉過程是在小范圍內進行的自身局部授粉過程。配子的位置按式(2)進行更新:
花朵授粉算法雖然引入了Levy 飛行機制在一定程度上避免陷入局部最優(yōu)解,但仍存在易陷入局部最優(yōu)且收斂速度慢的問題。量子系統(tǒng)的粒子處于量子束縛的狀態(tài),能以特定的概率出現(xiàn)在量子空間中的任意位置;同時它滿足聚焦態(tài)的性質,因此能夠搜索空間中的任意位置,這樣使得加入量子系統(tǒng)的花朵授粉的全局搜索能力優(yōu)于傳統(tǒng)的FPA。
云量子花朵授粉算法(CQFPA)利用δ勢阱束縛花朵個體的行為。在量子空間中,粒子具有波動二象性,無法同時確定粒子的位置和速度,因此粒子的位置狀態(tài)只能利用波函數(shù)來表示[11]。為了得到粒子的位置,使粒子具有聚焦態(tài)的性質,進一步得到粒子的位置:
其中:u=rand(0,1);L表示δ勢阱的特征長度;P(t)為粒子在t時刻的δ勢阱。
假設種群當前最優(yōu)解為gbest,用種群的平均最優(yōu)解表示:
其中:Pi表示第i個粒子的當前最優(yōu)解;M表示種群的個數(shù);D為粒子的維度。
則勢阱長度L表達式為:
式中:φ為收縮擴張因子,若φ的值選取不當會對FPA 的收斂性和尋優(yōu)精度有很大的影響。因此本文將云模型與量子系統(tǒng)的花朵授粉算法結合,提出云量子花朵授粉算法。根據(jù)文獻[12]給出的結論,花朵授粉轉換概率p=0.8 時,更有利于種群尋優(yōu)。本文利用轉換概率p∈[0,1]調節(jié)個體進行全局搜索或者局部搜索:
1)當轉換概率p<rand時,表明花朵個體之間的轉換率較低,種群不需要全局授粉,應加快局部收斂速度,所以取收斂因子φ為0.4。
2)當轉換概率rand≤p≤0.8,采用云模型對其進行改進:假設種群在第l次迭代中xi的適應度值為fi(l),全局最優(yōu)解的適應度值為fgbest(l),種群個體的數(shù)學期望為EX=fbest(l),b1=b2=2,粒子的熵為En=(fgbest(l)-fbest(l))/b1,個體的超熵與熵的關系值為He=En/b2。則在此區(qū)間內的收縮擴張因子β為:
其中,En'=normrnd(En,He)。
3)若轉換因子p>0.8 表明花朵個體間的轉換率很高,需擴大全局搜索能力,因此取φ=0.9。
為了測試改進算法的正確性和有效性,本文選取了6 個經典的標準測試函數(shù)進行對比測試,分別與FPA、量子粒子群優(yōu)化(Quantum Particle Swarm Optimization,QPSO)算法、蝙蝠算法(Bat Algorithm,BA)進行對比分析,驗證了CQFPA 的優(yōu)越性。6個測試函數(shù)分別如下:
1)Schwefel函數(shù)(單峰函數(shù)):
2)Sphere函數(shù)(單峰函數(shù)):
3)Rastrigin函數(shù)(多峰函數(shù)):
4)Ackley函數(shù)(多峰函數(shù)),含大量的局部優(yōu)點:
5)Griewank函數(shù)(多峰函數(shù)):
6)Sum of different power函數(shù):
這六個函數(shù)均在(0,0,…,0)處有最小值0。
實驗是在Matlab R2014a下測試的,同類改進的FPA 的參數(shù)設置相同,轉換概率p=0.8,λ=1.5。BA 的參數(shù)設置為:A=0.25,r=0.5。PSO算法的參數(shù)設置為:c1和c2的值均為2,ωmax為0.9,ωmin為0.3。所有算法的種群大小均為30,最大迭代次數(shù)為2 000。各算法的仿真尋優(yōu)迭代曲線如圖1所示。
圖1 CQFPA、QPSO、FPA和BA在6種標準測試函數(shù)f1~f6上的適應度曲線Fig.1 Fitness value curves of CQFPA,QPSO,F(xiàn)PA and BA on six benchmark functions f1-f6
圖1中,將CQFPA與傳統(tǒng)的FPA、QPSO和BA收斂曲線進行對比,通過比較四種優(yōu)化算法的收斂速度以及全局搜索能力可知:BA 容易陷入局部最優(yōu),達到最大迭代次數(shù)也無法跳出局部最優(yōu);FPA和QPSO雖然能跳出局部最優(yōu),但相比而言,CQFPA 的收斂速度高于FPA 和QPSO,具有較高的精確度且收斂較快。此外,CQFPA 在尋優(yōu)結果數(shù)量級上都比其他三種優(yōu)化算法高。CQFPA 比FPA 高出10~20 個數(shù)量級,且收斂比較快,表明本文在對收縮擴張因子φ上的改進是可取的。CQFPA 相較BA 具有很高的精度,高出20~30 個數(shù)量級,不會陷入局部最優(yōu)。CQFPA 相較QPSO,尋優(yōu)結果的數(shù)量級和收斂速度均有所提高。
極限學習機(ELM)是由Huang 等[13]提出的一種單隱層前饋神經網絡。極限學習機網絡比較簡單,它相當于一個黑匣子,只需要輸入樣本,就能很好地產生一系列與輸出樣本基本接近的數(shù)據(jù),有很好的擬合能力。
ELM的數(shù)學模型[14]如式(13)所示:
其中:ti表示第i個輸出;bi是第i個隱含層偏置。
激活函數(shù)的表達式[15]為:
式(13)的N個方程可以寫成為:
其中:
β=,H為隱含層的輸出矩陣,只要確定隱含層輸出矩陣H后,就可根據(jù)式(15)求出最小二乘范數(shù)解:
式中,H-1為H的Moore-Penrose 廣義逆矩陣。由式(14)可知,已知wi和bi,則求Hβ=T的最小二乘解的過程其實和訓練一個單隱層前饋神經網絡是一樣的,計算式如下:
本文的均方誤差函數(shù)E(mse)如下:
式中:E(mse)越小,表明ELM訓練網絡性能越好。
ELM 算法由于輸入權值和偏置值隨機選取,隱含層節(jié)點數(shù)目要求量可能很大,使得資源利用率很低;而且在學習過程中ELM 會產生許多非最優(yōu)的參數(shù),穩(wěn)定性也很差。在計算輸出權重時,誤差主要來自于輸入權重和偏置的隨機選取,也可能存在一些輸入為零的參數(shù)而導致某些隱含層節(jié)點無效。針對這些缺陷,本文提出了一種基于云量子花朵授粉算法優(yōu)化的極限學習機模型——CQFPA-ELM。
在ELM 算法中,隨機初始化后的參數(shù)使得ELM 算法的精確度不是很高;而花朵授粉算法在搜索方面具有參數(shù)簡單、收斂速度快和魯棒性能好等特點,能有效地找出全局最優(yōu)解。因此本文將CQFPA 引入到ELM 算法中,對輸入權值w和隱含層偏差b(閾值)優(yōu)化,選出最優(yōu)的值,代入ELM算法訓練網絡中,使ELM算法精度提高,泛化能力也提高,同時節(jié)省了運算時間。
CQFPA-ELM算法流程如圖2所示,其具體步驟如下:
步驟1 初始化ELM 網絡模型參數(shù),輸入訓練樣本數(shù)據(jù),設置隱含層節(jié)點個數(shù)L。
步驟2 定義CQFPA 的參數(shù),隨機生成CQFPA 的初始種群,種群維度為d維。選取fitness 函數(shù),確定迭代次數(shù)的值Nmax以及種群數(shù)t。
步驟3 計算最優(yōu)的fitness 值作為當前種群最優(yōu)fitness的適應度初始值,利用式(4)計算種群的平均最優(yōu)位置。
步驟4 若種群個體的轉換概率p<rand,進行局部搜索,收縮因子φ=0.4;若rand≤p≤0.8,根據(jù)式(6)計算收縮因子φ;若p>0.8,收縮因子為0.9。計算花朵個體的適應度值,更新最優(yōu)解的位置。
步驟5 判斷是否滿足適應度值最大值條件或者達到最大迭代次數(shù):若是,停止迭代;否則返回步驟4。
步驟6 將CQFPA 優(yōu)化得到的輸入權值和閾值代入ELM模型中,利用式(16)計算出H。然后,根據(jù)式(17)得出輸出權重建立ELM訓練模型。
步驟7 根據(jù)訓練好的模型對測試樣本進行預測,評估網絡模型的性能。
圖2 CQFPA-ELM的流程Fig.2 Flowchart of CQFPA-ELM
油氣層識別技術是一項很復雜的動態(tài)研究技術,與它有關的參數(shù)有很多,比如:油藏厚度、油壓、滲透率、含水率、油藏壓力、儲存有效厚度等,還有識別的準確性以及時間的影響[17]。本文提出的CQFPA-ELM 在分類上有很高的準確率,并且訓練時間短,因此將CQFPA-ELM 應用到石油測井中,通過采用某油田提供的石油數(shù)據(jù)來驗證此算法的有效性。
本文在預測過程中,假定油井的靜態(tài)數(shù)據(jù)是不變的。主要影響石油產量的因素有自然伽馬(GR)、聲波時差(DT)、自然電位(SP)、鈾(U)、釷(TH)、鉀(K)、微球聚焦(WQ)、深側向電阻率(LLD)、淺側向電阻率(LLS)、補償密度(DEN)、補償中子(NPHI)、光電吸收截面指數(shù)(PE)、井徑(CALI)等13 個屬性。本文選取了某石油公司提供的樣本數(shù)據(jù),由于各屬性的量綱不一,數(shù)值范圍各異,將這些數(shù)據(jù)先進行歸一化處理,使得樣本數(shù)據(jù)范圍在[0,1],然后把歸一化后的影響因素數(shù)據(jù)代入網絡中進行訓練和測試,得出結果。其中,樣本歸一化的計算式如下:
其中:x∈[xmin,xmax],xmin為數(shù)據(jù)樣本屬性的最小值,xmax為數(shù)據(jù)樣本屬性的最大值。為遵守保密規(guī)范,表1 只列出部分歸一化的測井數(shù)據(jù)。數(shù)據(jù)歸一化不僅能夠加快訓練速度,而且還能使神經元對輸入更敏感。為了對比歸一化前后對網絡的影響,表2 中列出歸一化數(shù)據(jù)前后的訓練時間、識別率以及均方誤差。
表1 樣本數(shù)據(jù)(部分數(shù)據(jù))Tab.1 Sample data(part of data)
表2 歸一化前后對比Tab.2 Comparison before and after normalization
由于油氣層影響因素對油氣層識別的決定程度不同,本文使用的數(shù)據(jù)是經過屬性約簡技術處理過的數(shù)據(jù),其中剔除了一些影響程度較小的屬性,圖3是屬性約減后的5個屬性歸一化后的曲線。
圖3 屬性歸一化曲線Fig.3 Attribute normalization curve
本文將樣本數(shù)據(jù)隨機分成兩部分:訓練樣本用來構建ELM算法的整個神經網絡;測試樣本用在測試過程中,測試過程用來測試和檢驗訓練網絡的性能。下面給出訓練過程中的參數(shù)選擇及實驗分析。
在油氣層識別中,CQFPA中適應度函數(shù)如下:
式中,N為輸出樣本的總個數(shù)。
初始化種群,本文迭代次數(shù)從0 到120 逐步增加,轉換概率p=0.8,λ=1.5。尋找最優(yōu)的粒子群,即所對應的適應度函數(shù)值為種群最小值的一組解。迭代次數(shù)逐步增加所對應的適應度函數(shù)值的變化曲線如圖4所示。由圖4可知,適應度值從80 之后開始收斂并趨于平穩(wěn),收斂速度較快,因此本文固定CQFPA 的迭代次數(shù)值為80。此時取最優(yōu)的一組解作為ELM算法的輸入權值和隱含層偏置。
圖4 適應度值變化曲線Fig.4 Curve of fitness value change
將上面得到的最優(yōu)的輸入權值w和隱含層偏差b代入式(4),求出隱含層的輸出矩陣代入ELM 網絡模型中,得到ELM訓練網絡。
ELM 模型的激活函數(shù)分別選取sigmoid 函數(shù)、反正切函數(shù)(sin)、Gaussian函數(shù)(hardlim)進行實驗對比,隱含層節(jié)點數(shù)從1 逐步增加到90,為了提高ELM 模型的準確性,進行了20 次訓練,取20 次訓練的正確率平均值,結果如圖5 所示,比較3個激活函數(shù)對CQFPA-ELM 模型準確率的影響。實驗結果表明,當隱含層節(jié)點個數(shù)相同的情況下,sigmoid 函數(shù)對應的CQFPA-ELM 模型的識別率最高,且隱含層節(jié)點數(shù)取35 時,識別精確度最高。因此本文的激活函數(shù)選取sigmoid 函數(shù),隱含層節(jié)點數(shù)為35。
圖5 激活函數(shù)對精度的影響Fig.5 Effect of activation function on accuracy
本文算法的應用環(huán)境是Matlab 2014b,PC 的處理器是Intel Core i3-3110,主頻2.40 GHz,內存6 GB。為了驗證本文提出的CQFPA 優(yōu)化ELM 參數(shù)的有效性,分別與PSO、ACO 和遺傳算法(Genetic Algorithm,GA)進行對比。本實驗各優(yōu)化算法的參數(shù)設置為:PSO 算法的c1和c2均為2,ωmax=0.9,ωmin=0.2;ACO 算法的最大迭代次數(shù)為100,信息素因子α=1.7,啟發(fā)因子β=2,信息素加強系數(shù)為Q=10,信息素蒸發(fā)系數(shù)ρ=0.2;GA的變異率Pc∈{0.35,0.04}。
本文利用2.2 節(jié)訓練出來的ELM 網絡模型進行預測驗證,如圖6 是傳統(tǒng)的ELM 識別結果,圖7 是PSO 優(yōu)化后的ELM(PSO-ELM)的識別結果,圖8 是蟻群算法優(yōu)化的ELM(ACOELM)的識別結果,圖9 是遺傳算法優(yōu)化的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
為了展示傳統(tǒng)的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
蟻群算法比較復雜,搜索時間比較長,且容易出現(xiàn)停滯現(xiàn)象,因此在優(yōu)化ELM 算法(ACO-ELM)上所用時間比另外三種優(yōu)化算法(PSO-ELM、GA-ELM、CQFPA-ELM)長,達到2.397 1 s,而本文提出的CQFPA 在優(yōu)化ELM 參數(shù)時,運行時間最少,驗證了該算法具有較低的復雜度。
本文提出的云量子花朵授粉算法避免了FPA易陷入局部最優(yōu)的問題,且收斂速度加快。將改進的花朵授粉算法用來優(yōu)化ELM 算法的輸入權重和閾值,使ELM 模型的精度提高,并且訓練速度加快,同時在網絡參數(shù)選取上也避免了局部最優(yōu),能很好地找到全局最優(yōu)值,這樣得到的ELM 訓練網絡比較完善。將改進的ELM 算法應用在石油測井中,與ELM 算法以及PSO算法優(yōu)化的ELM相比,CQFPA優(yōu)化的ELM預測精確度更高,誤差相對減小,表明該改進算法是可行的,可應用于油氣層識別。在今后的研究中,可以進一步對ELM 的網絡模型進行研究,例如增加ELM 的網絡層數(shù),將其達到深度學習的水平,以便應用到大數(shù)據(jù)集的識別和分類中。