趙 炯 馬 超 周奇才 熊肖磊
同濟大學機械與能源工程學院 上海 201804
為了減少隧道施工安全問題,發展智能化盾構施工技術,現在隧道施工盾構機都往智能化方向發展[1],包括智能掘進和智能化管片拼裝。然而,目前這方面還缺乏系統的、完善的掘進適應性決策體系和理論基礎[2],依據不同環境和不同地質條件,盾構機需要作出不同的參數調整。傳統方法是靠人工視情況調整各參數,使其在不同環境下能正常工作,難免會有意外情況,雖問題不大但對施工過程會有影響。所以,對智能化盾構的研究不僅會對隧道工程的發展有很大的促進作用[3],而且也能進一步提高隧道施工的安全性,保障施工人員的安全和提高工程效率[4]。
針對以上問題,利用現有的一系列成熟數據處理和機器學習方法將盾構的歷史數據進行整合和處理,將其運用到合理的機器學習算法中,得出各類傳感器數據與推進速度之間的模型。將實時的傳感器數據放入此模型中,從而得出此時對應的推進速度。
神經網絡與人類的神經網絡相似,是科學家從人類身上得到啟發而建立的一種學習模型。它由一個個單獨的神經元組成,每個神經元接收其上一層神經元所發送的信息,經過多個神經元的傳遞給出最終的信息,也就是所需要的數據值[5]。
如圖1所示,多層感知器的基本結構主要由輸入層、隱藏層和輸出層等組成。隱藏層可以有多個層次,輸入層和輸出層一般都只有一層,輸入層不同的神經元代表的是不同的特征,輸出層是最終輸出的數據,可以有多個,這里只是針對本次的研究只畫出一個神經元。

圖1 多層感知器(MLP)的基本構成

對應下一層的取值為

在上述表達式中,上角標表示的是計算的下一層層數,σ函數在神經網絡中稱為激活函數,確定激活函數也是神經網絡的核心[6]。在隱藏層中,每個神經元都存在一個激活函數,數據的流向逐層傳遞,每一層處理的數據都是上一層傳遞的數據,故確定隱藏層數量和激活函數在神經網絡中尤為重要。本文所選輸出層的激活函數是Adam函數,隱藏層一般有3種激活函數可以選擇,即非線性矯正函(Relu)、雙曲正切處理函數(Tanh)和Sigmod函數(Logistic),本文選擇的激活函數是Tanh函數,可表示為

神經網絡其實是一個黑盒模型,對使用者來說可見的就是輸入層,輸出層,隱藏層對應的層數、神經元數量和激活函數。輸入層對應的是輸入的特征值,輸出層是要得到的數據集。所以,神經網絡中最重要的就是確定隱藏層的層數、每層的神經元數量、對應的激活函數。當然,這些數值要依據具體數據進行計算,多次調整對應的參數得到最好的結果。
本文所使用的每臺盾構機數據字段大約有400個,數據大約有3萬條左右,在此只選取1臺盾構機的數據進行計算。
每個盾構數據表都有一張對應的參數說明,通過每一張盾構表的參數說明即可得知很多字段是開關量。不僅如此,還有很多字段的數值一直為常量值,分析這些數據字段與推進速度無直接關系,進行數據處理時可直接刪除,經過這一步的數據篩選留下44個字段。
本文主要研究盾構機推進時的推進速度,所以除去管片拼裝時產生的數據,即將推進速度小于等于0的數據行刪除。
按照前2步數據篩選條件將數據進行第1步篩選,然后數據通過數據庫導出并保存為CSV文件,使用Python的Pandas模塊對這個文件進行讀取,之后使用Describe方法形成一個數據表格,如表1所示。

表1 篩選條件實際數據值
由表1可知,目前還有很多字段是不可用的,其數據有異常值,表中25%、50%、77%、99%等是將該列數據進行排序之后處于相對應位置的值。分析可能出現這些異常值的原因是在實際的工程環境中網絡通信異常或關鍵的傳感器出現問題,亦有可能某些字段只是列出來而并無在實際過程中的應用。刪除之后再進行統計化的查看,截取部分統計數據如表2所示(此處截取出的數據表示在上一步處理完成之后還有異常的部分數據)。
1.1.5 文獻排除標準 無法獲得全文,無有效數據提取,同一作者或同一研究團隊重復發表,孕婦合并嚴重并發癥,非隨機對照研究,回顧性研究,綜述及動物實驗,非英文或中文的文獻。

表2 土壓異常值
由表2可知,土壓最小值多為-9 999,而在盾構運行過程中土壓不會為負值,所以在此進行下一步操作,將土壓為負的行數據刪除。完成之后最后再查看一次數據,此時有部分數據受到影響,這些數據包括俯仰角、側滾角、方位角、刀盤液壓泵出口壓力、1號仿形刀行程、2號仿形刀行程等。在刪除土壓為負值的行后,這部分數據均為0,對此后的數據計算無關鍵作用,在此處對其進行刪除。
經過上述處理后,將目標數值列提取出來單獨作為一張表,然后在原數據上推進速度列刪除。
使用Sklearn.Preprocessong中的MinMaxScaler模塊對剩余的數據進行數據歸一化。數據歸一化之后,需要對每一列按照之前的命名順序進行命名,在此加上數據對應的每一列的名字以便后面的觀察。
對數據進行卡方檢驗對之前處理后的數據進行打分,提取合適的數據特征。使用Sklearn.Feature_Selection中的SelectKBest和Chi2模塊進行數據的卡方檢驗,在此使用的數據是之前提取的推進速度,也就是標簽值;另一個是進行歸一化處理后的數據集。設置30%為測試集,70%為訓練集,進行訓練打分之后的特征如表3所示。

表3 卡方計算結果
表3所示為最終選定的特征值,隨后在推進速度預測中將用到傳感器的參數對應的數據。
在使用神經網絡前,先對數據進行標準化操作,在此使用的數據不是在卡方時歸一化的數據,而是在歸一化之前的原始數據。標準化數據完成后使用Sklearn Model_Selection中的Train_Test_Split模塊對其進行訓練集和測試集的劃分。在標簽值使用前得到推進速度,然后設置30%的數據為測試集,70%的數據為訓練集。對數據和標簽值進行數據劃分。當數據集劃分完成,即使用Sklearn.Neurak_Network中的MLPRegressor模塊進行神經網絡回歸算法的運算。在計算中,選用4層隱藏層,使用這些參數的原因是通過多次的算法運算和驗證,數據在這些神經元下計算能得到較好的計算結果。設置計算的最大迭代次數為40 000次,在此處一定要設置最大迭代次數,如果使用默認值迭代將有可能出現迭代次數不夠無法得到最后結果。在每個神經元中都需要一個激活函數,本次計算中選用Tanh,如果未激活函數,隱藏層中的數據關系將是線性的,隱藏層沒有起任何作用,所以應使用一個非線性的激活函數。梯度下降選擇Adam,其他參數設置為默認。
在MLP神經網絡中,評價回歸模型有平均絕對誤差、中值絕對誤差、可解釋方差值等評價指標,對應的最優值和其在Sklearn中對應的函數如表4所示。

表4 各種評價指標
經過計算后,得到對應的值為 :平均絕對誤差1.074,中值絕對誤差0.431,可解釋方差值0.996。最后使用測試集的值代入模型中得出對應的推進速度預測值,再將預測值和實際數據在同一副圖上表示出來,如圖2所示。

圖2 預測值與實際數值結果圖
在圖2中,紅色表示實際值,藍色表示對應的預測值。每一個數值都有一個對應的自增標簽,本次實驗的數據中所用的數據一共有8 000多條,將其中的30%用作實際的目標值,即有2 000余條數據。橫坐標表示的是從0~2 000條數據對應的標簽值,2組數據中對應數據的標簽值是一樣的,故用標簽值作為橫坐標。縱坐標是預測值和真實值得具體數值,但由于數據比較多,在一張圖中無法準確表達,所以在這里選了4個區段的值每10個數據為一個區域,紅色線是目標值,藍色線是預測值。在圖2a中,基本每個點數據都是相同的,但仍有差值,而圖上點的坐標跨度較大,無法明顯看出。在圖2b、圖2c中,可以看出幾個點有很明顯的差異,但相差不多,在可接受范圍內。
由圖2可知,大部分的值和真實值相接近。盡管在有的數據值上會有差異,但這些差異都保持在2左右。在實際運行時,這些差值在可接受范圍之內的,本次模型的研究總體而言符合預期的要求。