劉海東, 李星誠, 張文豪
(1. 西山煤電(集團(tuán))有限責(zé)任公司,山西 太原 030053;2. 北京大學(xué) 工學(xué)院,北京 100871)
瓦斯動力災(zāi)害是威脅煤礦生產(chǎn)的主要風(fēng)險之一,準(zhǔn)確的瓦斯涌出量預(yù)測對瓦斯災(zāi)害的防治與通風(fēng)設(shè)計具有重要意義[1]。傳統(tǒng)的瓦斯涌出量預(yù)測方法(如礦山類比法[2-3]、分源預(yù)測法[4-5]等)原理簡單,符合工程實際,但預(yù)測準(zhǔn)確性不高。隨著機(jī)器學(xué)習(xí)數(shù)據(jù)驅(qū)動方法的興起與煤礦智能化建設(shè)的推進(jìn),可充分利用煤礦的監(jiān)測數(shù)據(jù),使用數(shù)據(jù)驅(qū)動方法進(jìn)行瓦斯涌出量預(yù)測[6]。主要方法包括灰色預(yù)測算法[7]、支持向量機(jī)算法[8-9]、隨機(jī)森林算法[8,10]、極限學(xué)習(xí)機(jī)算法[11]、神經(jīng)網(wǎng)絡(luò)類算法等。神經(jīng)網(wǎng)絡(luò)類算法能夠處理影響因素之間的非線性關(guān)系,各類神經(jīng)網(wǎng)絡(luò)及其變體用于礦井瓦斯預(yù)測時準(zhǔn)確性和適用范圍優(yōu)于傳統(tǒng)預(yù)測方法[12-16]。
瓦斯涌出量神經(jīng)網(wǎng)絡(luò)預(yù)測模型的訓(xùn)練常采用梯度類算法,對可微函數(shù)具有較高的計算效率。其中最常用的梯度類算法包括隨機(jī)梯度下降(Stochastic Gradient Desent,SGD)算法和Adam 算法。Adam 算法[17]是一種引入了指數(shù)移動平均(Root Mean Square Propagation, RMSProp)的自適應(yīng)梯度下降(Adaptive Gradient, AdaGrad)算法,運行速度較SGD 算法更快。然而Adam 算法在部分情況下不收斂或不收斂于極小值點,且可能在訓(xùn)練前期出現(xiàn)難以糾正的過擬合現(xiàn)象[18]。在實際應(yīng)用場景下,Adam 算法的不收斂性易造成模型的最佳超參數(shù)丟失,導(dǎo)致預(yù)測效果不佳[17]。許多研究人員對各類預(yù)測模型在瓦斯涌出問題上的表現(xiàn)進(jìn)行了研究[14,19],但對模型訓(xùn)練中優(yōu)化器性質(zhì)的關(guān)注與改進(jìn)較少。因此,為了提高瓦斯涌出量預(yù)測準(zhǔn)確性,縮短模型響應(yīng)時間,降低瓦斯預(yù)測模型部署的硬件性能需求,本文改進(jìn)了Adam 優(yōu)化器,在Adam 算法中引入一種隨迭代更新的矩估計參數(shù),在保證收斂速率的同時獲得了更強(qiáng)的收斂性。以山西焦煤西山煤電集團(tuán)馬蘭礦某回采工作面為例,在相同預(yù)測模型下考察了改進(jìn)的Adam 優(yōu)化器在瓦斯涌出量預(yù)測中的訓(xùn)練效率、模型收斂性與預(yù)測準(zhǔn)確度。
馬蘭礦某回采工作面位于8 號煤層,屬穩(wěn)定可采厚煤層,煤層厚度為3.65~5.20 m,平均厚度為4.39 m,含2 層不穩(wěn)定夾矸,厚度分別為0.03~0.10,0.10~0.26 m,堅固性系數(shù)為1.5,煤質(zhì)屬焦煤。8 號煤下部鄰近煤層為間隔11.5~16.0 m 的8 下煤層,厚度為1.42~1.97 m,平均厚度為1.81 m,結(jié)構(gòu)簡單。走向長度為1 390 m,傾斜長度為276 m,工作面標(biāo)高為783~833 m。煤層瓦斯含量為7.6 m3/t,壓力為0.4 MPa,有瓦斯涌出風(fēng)險。膠帶巷中多處施工有本煤層瓦斯抽采孔。8 號煤頂板沖刷帶附近煤層變薄,地質(zhì)測試中發(fā)現(xiàn)對瓦斯涌出有一定影響。
該工作面共回采214 d,以天作為最小時間間隔構(gòu)建數(shù)據(jù)集,按照時間序列先后將全部數(shù)據(jù)的前75%劃分為訓(xùn)練集(161 組數(shù)據(jù)),其后10%劃分為驗證集(21 組數(shù)據(jù)),最后15%劃分為預(yù)測集(32 組數(shù)據(jù))。對數(shù)據(jù)中缺失值、異常值進(jìn)行填補,對每項影響因素進(jìn)行無量綱化處理并線性歸一至[0,1]區(qū)間內(nèi)。為避免數(shù)據(jù)量級差異引起的數(shù)值誤差,全部算例中均使用歸一化數(shù)據(jù)。
根據(jù)工作面的實際特點,影響瓦斯涌出量的因素共19 項,包含本煤層的回采日進(jìn)尺、工作面標(biāo)高、煤層厚度、煤層傾角、煤體硬度、初始瓦斯含量、初始瓦斯壓力、進(jìn)風(fēng)量、回風(fēng)量、平均埋深,臨近煤層的瓦斯含量、瓦斯壓力、標(biāo)高、煤層厚度,煤層間距、采掘點與陷落柱距離、預(yù)抽及卸壓總量、溫度。
礦井瓦斯涌出影響因素多而雜,與地質(zhì)條件、施工及抽采工作、熱力學(xué)條件等相關(guān)[20]。不必要的高維數(shù)據(jù)在深度學(xué)習(xí)模型中可能延長運行時間并降低預(yù)測準(zhǔn)確性,依據(jù)重要性,利用最小絕對收縮選擇算子(Least Absolute Shrinkage and Selection Operator,LASSO)對影響瓦斯涌出的因素進(jìn)行篩選。通過求解最小化含L1 范數(shù)正則項的損失函數(shù),對瓦斯涌出量的多項式進(jìn)行擬合。
式中:c為回歸系數(shù)向量;T為數(shù)據(jù)集內(nèi)的總時刻;yt為t時刻的實際涌出量;xt為t時刻的特征變量向量; λ為懲罰項系數(shù)。
若選取較大的懲罰項系數(shù) λ,則式(1)要求c更稀疏,以使得損失函數(shù)最小。在此過程中,影響因素的重要程度由c中元素被置零的次序決定。
對訓(xùn)練集求解LASSO 模型軌跡,得到回歸系數(shù)隨懲罰項系數(shù) λ的變化,如圖1 所示。其中每條曲線代表了一項影響因素在不同 λ下的回歸取值,隨著λ的增大,各曲線均逐漸趨近于0。這意味著在 λ足夠大時,c應(yīng)取零向量,使式(1)中目標(biāo)函數(shù)最小,這與LASSO 問題的定義相符。因此在 λ增大的過程中,越晚被置零的因素被認(rèn)為越重要。

圖1 瓦斯涌出變量的LASSO 回歸軌跡Fig. 1 LASSO regression trajectory of gas emission variables
選取的 λ越大,篩選得到的關(guān)鍵變量越少,為保證足夠的特征信息及模型運算量,本文選擇λ=10-6。此時各影響因素的LASSO 回歸系數(shù)見表1,可見此時保留了13 項因素,重要性以回風(fēng)量、平均埋深、瓦斯含量、鄰近煤層瓦斯含量為著。其中也存在少量與現(xiàn)場認(rèn)知不符的結(jié)果,如瓦斯壓力一般與瓦斯含量相關(guān)性強(qiáng),但模型結(jié)果中瓦斯壓力顯得不重要,這是因為壓力原始數(shù)據(jù)缺失項較多,作為數(shù)據(jù)質(zhì)量不佳的因素被LASSO 模型弱化。但瓦斯壓力對瓦斯含量及涌出量的實際影響在埋深、預(yù)抽等相關(guān)因素中得到了一定體現(xiàn)。

表1 λ=10-6時LASSO 回歸系數(shù)Table 1 LASSO regression coefficients atλ=10-6
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)在傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)中引入了循環(huán)結(jié)構(gòu),是將神經(jīng)網(wǎng)絡(luò)按時間遞歸執(zhí)行的衍生。RNN 的基本原理如圖2 所示,每個隱藏層節(jié)點代表1 個前饋神經(jīng)網(wǎng)絡(luò),其不僅接收當(dāng)前時刻的輸入,還接收先前時刻的隱藏層參數(shù)。RNN 在處理時序數(shù)據(jù)時具備記憶功能,能夠在一定程度上捕捉到序列數(shù)據(jù)的長期依賴關(guān)系。因此它可以表現(xiàn)出時間上的動態(tài)行為,具有處理時間序列特征數(shù)據(jù)的能力。

圖2 RNN 原理Fig. 2 RNN principle
RNN 模型原理為
式中:ht為t時刻的隱藏層向量;σh,σy為非線性的激活函數(shù);wih,bih,whh,bhh,wiy,biy為模型的參數(shù)張量;y?t為t時刻模型輸出的預(yù)測結(jié)果。
本文選用預(yù)測結(jié)果在驗證集上的均方誤差(Mean-Square Error,MSE)作為RNN 模型的損失函數(shù):
式中:Nv為驗證集中樣本總個數(shù);k為驗證集中樣本個數(shù);yk為驗證集中瓦斯平均涌出量;y?k為第k個樣本的涌出量預(yù)測值。
為了判斷RNN 模型預(yù)測趨勢,引入歸一化的均方誤差(Normalized Mean Square Error,NMSE)。預(yù)測趨勢的正確性通過比較預(yù)測段各極值點間斜率的正負(fù),按照正負(fù)匹配率的3 等分點將結(jié)果區(qū)分為“正確”“基本正確”“不正確”。
式中: ε為歸一化的均方誤差;V為驗證集上瓦斯涌出量的方差。
Adam 算法兼具自適應(yīng)學(xué)習(xí)率與指數(shù)移動平均傳播算法[17]的優(yōu)勢,在一些領(lǐng)域中較SGD 算法具有更好的工作性能[22]。但Adam 算法的學(xué)習(xí)率主要受二階動量矩控制,在迭代過程中并非單調(diào)遞減,導(dǎo)致其在部分情況下不收斂或不收斂于極小值點。本文用一種隨迭代變化的矩估計參數(shù)β1,i,β2,i對Adam 算法進(jìn)行改進(jìn)。
式中:i為迭代步數(shù); μ為矩估計參數(shù)的衰減系數(shù)。
β1,i隨著迭代遞減,進(jìn)而一階矩和二階矩在迭代更新時能夠獲得更強(qiáng)的收斂性。
式中:mi為梯度的一階矩向量(即梯度的均值);gi為損失函數(shù)的梯度;vi為二階矩向量(即梯度未中心化的方差)。
迭代步數(shù)為n時的優(yōu)化殘差為
式中:Li為迭代第i步時的損失函數(shù); θi為預(yù)測模型的參數(shù)向量; θ*為使損失函數(shù)最小的理論參數(shù)值。
改進(jìn)的Adam 算法存在殘差上界[17],即
式中:D∞,j分別為參數(shù)空間的直徑和維數(shù); α為初始學(xué)習(xí)率; ξ為有限的常數(shù),ξ>0;d為總維數(shù);g1:n=[g1,g2,···,gn]為梯度序列連接成的矩陣;G∞為‖?Li(θi)‖∞的一個上界。
對Adam 算法與本文中改進(jìn)的Adam 算法在不同隱藏層數(shù)量、隱藏層節(jié)點數(shù)量、激活函數(shù)下的預(yù)測表現(xiàn)進(jìn)行測試。RNN 模型與Adam 算法在Pytorch 框架下實現(xiàn),改進(jìn)的Adam 算法使用Python 3.7 實現(xiàn)。全部模型所用計算機(jī)硬件為Intel(R)Core(TM) i5-9300H @2.40 GHz CPU,內(nèi)存大小為16 GiB。
一般而言,隱藏層數(shù)量越多,神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)擬合能力越強(qiáng),但過多的隱藏層數(shù)量大幅增加了模型運算量,且易引發(fā)過擬合。當(dāng)激活函數(shù)σ=tanh,隱藏層節(jié)點數(shù)為20,隱藏層數(shù)分別為1,2,3 時,Adam算法與改進(jìn)的Adam 算法的預(yù)測結(jié)果如圖3 所示,模型性能表現(xiàn)見表2。

表2 不同隱藏層數(shù)下運行結(jié)果比較Table 2 Comparison of results under different hidden layers

圖3 不同隱藏層數(shù)下Adam 算法與改進(jìn)的Adam 算法的訓(xùn)練及預(yù)測結(jié)果Fig. 3 Training and prediction results of Adam algorithm and improved Adam algorithm under different numbers of hidden layers
由圖3 及表2 可看出,當(dāng)隱藏層數(shù)為1 時,Adam 算法和改進(jìn)的Adam 算法的表現(xiàn)幾乎一致。隨著隱藏層數(shù)的增加,CPU 運行時間顯著增加,當(dāng)隱藏層數(shù)為2 和3 時,改進(jìn)的Adam 算法較Adam 算法的運行時間分別縮短了18.83,13.72 s。程序運行時發(fā)現(xiàn),當(dāng)隱藏層數(shù)為2 時,Adam 算法達(dá)到最大迭代數(shù)但仍沒有收斂,而改進(jìn)的Adam 算法達(dá)到了收斂。在結(jié)果收斂時,2 種算法預(yù)測誤差相近,Adam 算法未收斂時的預(yù)測誤差高于改進(jìn)的Adam 算法。當(dāng)隱藏層數(shù)為3 時,模型表現(xiàn)出了一些過擬合的傾向,在預(yù)測集上的誤差開始上升,趨勢正確性也有所下降。
隱藏層中使用的節(jié)點(或稱神經(jīng)元)數(shù)量與結(jié)果有較大的聯(lián)系,過少的神經(jīng)元將導(dǎo)致欠擬合,而過多的神經(jīng)元會導(dǎo)致過擬合。訓(xùn)練集中包含的有限信息量不足以訓(xùn)練隱藏層中的所有節(jié)點,會無謂地增加訓(xùn)練時間并降低泛化性能。當(dāng)模型擁有2 個隱藏層,激活函數(shù)σ=tanh,每層內(nèi)節(jié)點數(shù)分別為15,20,25時,模型預(yù)測結(jié)果如圖4 所示,模型性能表現(xiàn)見表3。

表3 不同隱藏層節(jié)點數(shù)下運行結(jié)果比較Table 3 Comparison of results with different number of hidden layer nodes

圖4 不同隱藏層節(jié)點數(shù)下Adam 算法與改進(jìn)的Adam 算法的訓(xùn)練及預(yù)測結(jié)果Fig. 4 Training and prediction results of Adam algorithm and improved Adam algorithm under the number of nodes of different hidden layers
由圖4 和表3 可看出,在3 種隱藏層節(jié)點數(shù)下,Adam 算法都沒有在最大迭代步長內(nèi)收斂,而改進(jìn)的Adam 算法均達(dá)到了收斂,且CPU 運行時間較Adam算法分別縮短了16.17,188.83,22.15 s。當(dāng)隱藏層節(jié)點數(shù)為15 時,用改進(jìn)的Adam 算法預(yù)測時的NMSE超過Adam 算法,其余情況下用改進(jìn)的Adam 算法預(yù)測時的NMSE 顯著小于Adam 算法,且改進(jìn)的Adam算法預(yù)測趨勢的正確性更高。當(dāng)每層內(nèi)節(jié)點數(shù)為20 時,改進(jìn)后的模型在190~200 d 預(yù)測段內(nèi)2 處大梯度波動得到了較為有效的捕捉,在總體數(shù)據(jù)量較小的情況下仍得到了比較理想的泛化性能。隨著層內(nèi)節(jié)點數(shù)的增大,均方誤差有所下降,但預(yù)測趨勢的正確性降低,對大梯度位置變化趨勢的捕捉不夠靈敏。
神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)是模型非線性的主要來源,與輸出結(jié)果的聯(lián)系較為緊密,激活函數(shù)的選擇往往取決于具體問題。分別使用tanh 與ReLU 函數(shù)作為激活函數(shù)考察模型性能,在驗證集上的預(yù)測結(jié)果如圖5 所示,其中圖例格式為{隱藏層數(shù),隱藏層節(jié)點數(shù),激活函數(shù)}。在不同激活函數(shù)下運行結(jié)果見表4。

表4 不同激活函數(shù)下運行結(jié)果比較Table 4 Comparison of results under different activation functions

圖5 不同激活函數(shù)下Adam 算法與改進(jìn)的Adam 算法的訓(xùn)練及預(yù)測結(jié)果Fig. 5 Training and prediction results of Adam algorithm and improved Adam algorithm under different activation functions
由圖5 和表4 可看出,使用ReLU 作為激活函數(shù)時,Adam 算法僅在超參數(shù){2,25,ReLU}下達(dá)到收斂,ReLU 函數(shù)已經(jīng)幾乎失去了對趨勢的判斷能力,同時還需要較長的訓(xùn)練時間。使用tanh 作為激活函數(shù)時模型性能較好。改進(jìn)的Adam 算法運行時間較Adam 算法更有優(yōu)勢,使用tanh 函數(shù)時,改進(jìn)的Adam算法運行時間較Adam 算法分別縮短了22.15,41.03 s,使用ReLU 函數(shù)時,改進(jìn)的Adam 算法與Adam 算法運行時間相差不大。
由上述算例可見,2 種優(yōu)化算法同時收斂時,模型的預(yù)測誤差與訓(xùn)練用時均相近。這是由于此處使用的預(yù)測模型相同,不同的優(yōu)化器理應(yīng)收斂至相近的結(jié)果。
使用Adam 算法,在隱藏層數(shù)量取1,2,3,隱藏層節(jié)點數(shù)取15,20,25,激活函數(shù)取tanh,ReLU 時做遍歷的網(wǎng)格搜索,取得最佳的模型超參數(shù)為{2,20,tanh},預(yù)測結(jié)果如圖4(a)所示。此時驗證集上MSE 為0.174, NMSE 僅為0.000 236,CPU 運行時間為52.69 s。使用改進(jìn)后的Adam 算法,做同樣的遍歷網(wǎng)格搜索,得到最佳的模型超參數(shù)為{3,20,tanh},預(yù)測結(jié)果如圖6 所示。此時驗證集上MSE、NMSE、運行時間分別為0.078 5,0.000 101,32.59 s。可見改進(jìn)的Adam 算法得到的最佳模型預(yù)測精度高于Adam算法。

圖6 最優(yōu)參數(shù)下的模型預(yù)測結(jié)果Fig. 6 Model prediction results under optimal parameters
在同參數(shù)下使用Adam 算法訓(xùn)練模型,MSE、NMSE 分別為0.126,0.000 414,運行時間為78.82 s。在最大迭代步數(shù)內(nèi)結(jié)果未收斂,預(yù)測趨勢不正確,存在過擬合現(xiàn)象。由于Adam 算法在實際的最優(yōu)參數(shù)下不收斂,使得模型錯過了最佳參數(shù),僅收斂至前述的次優(yōu)參數(shù)。改進(jìn)的Adam 算法可通過更強(qiáng)的收斂性提升實際模型預(yù)測的準(zhǔn)確度,且運行時間較Adam算法縮短了20.1 s。
改進(jìn)的Adam 算法給出的最優(yōu)模型對待預(yù)測范圍內(nèi)出現(xiàn)的幾個低谷及峰值趨勢判斷均正確,在訓(xùn)練集上的擬合程度適當(dāng),未見明顯的過擬合現(xiàn)象。這表明模型的泛化性能較好,具備了依據(jù)時間序列預(yù)測工作面瓦斯涌出量的能力。
1) 運用LASSO 方法篩選了影響瓦斯涌出的因素,發(fā)現(xiàn)待考察工作面回風(fēng)量、平均埋深、瓦斯含量、鄰近煤層瓦斯含量等影響較大。
2) 以RNN 為例,提出了一種改進(jìn)的Adam 優(yōu)化器,解決了常用的Adam 優(yōu)化器可能不收斂的問題。在煤礦瓦斯預(yù)測中可使模型在更多超參數(shù)下達(dá)到收斂,改進(jìn)的Adam 算法的運行時間較Adam 算法縮短了20.1 s。
3) 改進(jìn)的Adam 算法的最優(yōu)模型的預(yù)測精度高于Adam 算法,均方誤差僅為0.078 5,具有良好的泛化性能與趨勢預(yù)測能力。