尚 鑫,方超群,胡木生
(1.國網(wǎng)新源控股有限公司北京十三陵蓄能電廠,北京 102200;2.水利部水工金屬結(jié)構(gòu)質(zhì)量檢驗測試中心,河南 鄭州 450044;3.中國南水北調(diào)集團有限公司,北京 100097)
壓力鋼管是水利水電工程用來輸送有壓水流的鋼制管路,在保障水電站正常安全生產(chǎn)運行或引水管路安全使用方面具有重要的作用。壓力鋼管在服役過程中,隨著金屬材料疲勞、銹蝕等情況的發(fā)生,性能會不斷的劣化。如何以實時在線的方式評估壓力鋼管在常態(tài)運行中的穩(wěn)定性和可靠性,及時發(fā)現(xiàn)和監(jiān)測運行過程中的動態(tài)風(fēng)險,降低微小故障隨運行工況和水情條件變化不斷匯聚成重大安全生產(chǎn)隱患的風(fēng)險,是當(dāng)前水利水電工程安全運行亟需解決的問題。
目前,針對壓力鋼管安全運行的關(guān)鍵性因素研究,國內(nèi)外常規(guī)方法仍集中在傳統(tǒng)的人工檢查和定期安全檢測的方式進行安全性評估和維護。其中,國內(nèi)在壓力鋼管安全評估方面集中在理論計算和短暫觀測試驗后的研究分析,如楊綠峰等[1]通過彈性模量縮減法從理論角度探討壓力鋼管的安全評估方法;黃波等[2]從觀測數(shù)據(jù)提出D-S理論進行安全評估。在人工智能分析基礎(chǔ)技術(shù)和應(yīng)用方面,國內(nèi)外的研究成果較多,研究重點在算法模型、數(shù)據(jù)結(jié)構(gòu)以及應(yīng)用環(huán)境驗證等方面,但在基于實時數(shù)據(jù)驅(qū)動并采用人工智能分析的水利水電工程壓力鋼管安全評估或預(yù)警方面,國內(nèi)還沒有相關(guān)研究成果公布。
孤立森林算法在不平衡樣本中的應(yīng)用具有優(yōu)勢,在船舶、壩體、水質(zhì)、風(fēng)電、高鐵等類似設(shè)備上進行了較多探索,如操江能等[3]在船舶柴油機故障監(jiān)測方面對孤立森林算法進行了試驗驗證;張海龍等[4]通過對大壩監(jiān)測數(shù)據(jù)的分解與重構(gòu),將孤立森林算法引入壩體安全監(jiān)測的應(yīng)用; 謝炎昆[5]通過孤立森林算法實現(xiàn)了用水的異常監(jiān)測;湯婷等[6]通過風(fēng)力發(fā)電產(chǎn)生的自然異常點驗證了孤立森林算法的有效性;王沖等[7]將孤立森林算法應(yīng)用至高鐵制動系統(tǒng)的實時異常監(jiān)測等。
本文以北京十三陵抽水蓄能電廠1號引水系統(tǒng)壓力管道明管段為實例,通過壓力管道明管段實時在線監(jiān)測系統(tǒng)所采集的實時應(yīng)力、振動數(shù)據(jù)為數(shù)據(jù)源,采用孤立森林的算法實現(xiàn)對壓力鋼管的人工智能分析,實現(xiàn)對壓力鋼管安全運行進行安全評估和預(yù)測預(yù)警的目的。
北京十三陵抽水蓄能電站位于北京市昌平區(qū)蟒山,是我國北方地區(qū)建成的第一座大型抽水蓄能電站。水電站利用已經(jīng)建成的十三陵水庫為下庫,左岸蟒山的上寺溝為上庫,由引水系統(tǒng)和尾水系統(tǒng)連接上庫和下庫。發(fā)電廠房位于蟒山巖體內(nèi),電站裝機容量為4×200 MW,采用“一管兩機”布置方式,由兩個相互獨立的水道系統(tǒng)組成,包括上庫進/出水口、引水事故閘門、引水隧洞、引水調(diào)壓井、壓力管道、尾水支管、尾水事故閘門室、尾水調(diào)壓井、尾水隧洞、下庫進/出水口等建筑物[8]。
水電站引水壓力鋼管在運行過程中,設(shè)備在線監(jiān)測數(shù)據(jù)對設(shè)備的異常檢測和安全評估具有現(xiàn)實意義。通過對壓力鋼管進行實時在線監(jiān)測,可獲得壓力鋼管在運行過程中的振動、應(yīng)力、溫度、位移、地震等參數(shù)信息,這些信息經(jīng)過數(shù)據(jù)保存,可形成完備的壓力鋼管安全運行歷史數(shù)據(jù)。
對于一種算法的驗證,往往基于一定的數(shù)據(jù)集,而數(shù)據(jù)集的制作則需要進行數(shù)據(jù)的二次采樣、數(shù)據(jù)剔除和數(shù)據(jù)填補,并且需要對數(shù)據(jù)進行歸一化處理,這些工作一般是由人工完成,但對于實時在線運行的設(shè)備來講,用歷史數(shù)據(jù)制作的數(shù)據(jù)集往往只能進行事后的分析或基于歷史數(shù)據(jù)的預(yù)測,無法實現(xiàn)實時的預(yù)測預(yù)警。本文通過具體的工程實例,討論以實時在線的方式進行機器學(xué)習(xí)應(yīng)用的可行性。
采用北京十三陵抽水蓄能電站1號引水系統(tǒng)壓力鋼管的1#支管和2#支管在運行時所產(chǎn)生的數(shù)據(jù),進行智能分析。在工程試驗中,由于壓力鋼管健康狀況實時在線監(jiān)測的傳感器較多,且每個傳感器監(jiān)測的數(shù)據(jù)量較大,因此,本文僅提取對壓力鋼管安全運行安全相關(guān)性較大且隨動性較好的振動、應(yīng)力兩個參數(shù)進行數(shù)據(jù)讀取。
實時在線監(jiān)測系統(tǒng)為線上運行,產(chǎn)生的為連續(xù)數(shù)據(jù)且在不斷的增加,所以在進行數(shù)據(jù)的運算分析時應(yīng)進行數(shù)據(jù)提取操作。為保證特征數(shù)據(jù)不被漏掉,也最大可能的包含壓力鋼管在機組發(fā)電、抽水以及停機狀態(tài)下的參數(shù)信息,根據(jù)壓力鋼管的運行特性和電站開、關(guān)機的頻度信息,本次將以5 min作為采樣周期對數(shù)據(jù)庫信息進行提取和運算。
機器學(xué)習(xí)算法優(yōu)勢得益于數(shù)據(jù)集的標(biāo)準(zhǔn)化。而在線監(jiān)測系統(tǒng)實時感知的數(shù)據(jù)往往存在著一些缺失值,如傳感器故障、通訊延遲等現(xiàn)象,這將導(dǎo)致數(shù)據(jù)庫數(shù)據(jù)的數(shù)據(jù)缺失,存在缺失數(shù)據(jù)的數(shù)據(jù)集往往與機器學(xué)習(xí)不兼容,甚至獲得與期望值相反的結(jié)論,這就需要在機器學(xué)習(xí)算法的導(dǎo)入之前加入相關(guān)的前置運算,以實現(xiàn)數(shù)據(jù)集的標(biāo)準(zhǔn)化。
傳感器感知的數(shù)據(jù)以數(shù)字的形式存在于數(shù)據(jù)庫中,代表著壓力鋼管此刻運行的物理特征。數(shù)據(jù)處理前,將不完整的數(shù)據(jù)整行丟棄,可能會丟失有價值的時間切片。更好的策略則是估算缺失值,也就是從數(shù)據(jù)的已知部分推斷未知部分。估算缺失值的方法有很多,有單變量特征插補、多變量特征插補和最近鄰插補等等,每個估算方法均有特定的意義,在選擇估算缺失值的方法時,應(yīng)根據(jù)具體的應(yīng)用條件進行選擇。
對實時在線監(jiān)測系統(tǒng)來說,采用任何參與運算的估算均會影響到運行參數(shù)的時效性,所以在缺失值的插補時,可采用常數(shù)插補,即將缺失值用0來進行插補。
異常檢測(anomaly detection)是對不匹配預(yù)期模式或數(shù)據(jù)集中其他項目的項目、事件或觀測值的識別,異常也被稱為離群值、噪聲、偏差等。異常檢測是人工智能算法中機器學(xué)習(xí)算法的一種,它通過大量的測試值以檢測是否有異常值的存在,可應(yīng)用于各個行業(yè),如設(shè)備故障的檢測以及大型設(shè)備設(shè)施的實時在線監(jiān)測和發(fā)現(xiàn)。
異常檢測的算法是從數(shù)據(jù)集中學(xué)習(xí)數(shù)據(jù)特征,并為其設(shè)定“參考基準(zhǔn)值”,當(dāng)新進入的數(shù)據(jù)超過預(yù)定義為正常范圍的閾值時,則將新數(shù)據(jù)與“參考基準(zhǔn)值”偏離的程度作為輸出。監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)的方法均可用來進行異常監(jiān)測,但對于傳感器獲得的實時在線監(jiān)測數(shù)據(jù),無法采用監(jiān)督學(xué)習(xí)或半監(jiān)督學(xué)習(xí),應(yīng)采用無監(jiān)督學(xué)習(xí)的方法來進行智能分析。
無監(jiān)督學(xué)習(xí)異常檢測算法適用于異常數(shù)據(jù)過濾、未標(biāo)記數(shù)據(jù)篩選以及對嚴(yán)重不平衡數(shù)據(jù)的計算等場景。在這些場景中,都有一個共同的特征,即異常的數(shù)據(jù)量都是很少的部分,諸如:支持向量機、邏輯回歸等基于監(jiān)督或半監(jiān)督學(xué)習(xí)的分類算法都不適用。無監(jiān)督學(xué)習(xí)的異常檢測算法適用于有大量的正向樣本和大量負向樣本的數(shù)據(jù)集,有足夠的樣本讓算法去學(xué)習(xí)其特征,且未來新出現(xiàn)的樣本與訓(xùn)練樣本分布一致。
異常檢測的目的是找到數(shù)據(jù)集中與大多數(shù)數(shù)據(jù)不同的數(shù)據(jù),常用的算法可分為三類,第一類是基于統(tǒng)計學(xué)的方法來處理異常數(shù)據(jù),這種方法一般會構(gòu)建一個概率分布模型,并計算對象符合該模型的概率,把具有低概率的對象視為異常點;第二類是基于聚類的方法來做異常點檢測;第三類則是基于專門的異常檢測算法來運算,其目的極具針對性,這類算法的代表是單類支持向量機(One Class SVM) 和孤立森林(Isolation Forest)[9]。
工程應(yīng)用中,很多樣本無法找到負樣本,或即使有負樣本,該樣本個數(shù)也非常的少,會造成訓(xùn)練集的不平衡。如果人為制造一些負樣本或通過數(shù)據(jù)篩查整理出一些負樣本,也會因為負樣本的污染而無法達到預(yù)期的目標(biāo)。所以在只有正樣本而沒有負樣本的場景中,使用單分類算法則會更加合適。本項目采用的壓力鋼管健康狀態(tài)實時監(jiān)測數(shù)據(jù)均為正樣本,即該數(shù)據(jù)也為單樣本數(shù)據(jù)集。
人工智能的大部分算法對數(shù)據(jù)集的要求相對較高,數(shù)據(jù)集的質(zhì)量也是影響其算法準(zhǔn)確率的保障,所以一般用于訓(xùn)練的數(shù)據(jù)集均需要有標(biāo)簽。但壓力鋼管健康狀態(tài)實時監(jiān)測數(shù)據(jù)集沒有標(biāo)簽,也不可能對實時在線的數(shù)據(jù)進行一一標(biāo)注。對于沒有標(biāo)簽且為單樣本的數(shù)據(jù)集,只能采用單樣本分類算法。單樣本分類算法只關(guān)注與樣本的相似或者匹配程度,對偏離的未知數(shù)據(jù)不作評估。
孤立森林是一種非常高效的異常檢測算法,與隨機森林算法相似,但孤立森林每次選擇劃分屬性或劃分點(值)時都是隨機的,而不是根據(jù)信息增益或基尼指數(shù)來選擇[10]。
孤立森林算法通過隨機選擇一個特征來“隔離”觀察結(jié)果,然后在最大值和最小值之間隨機選擇一個分割值,所選特征的值,由于遞歸分區(qū)可以用樹結(jié)構(gòu)表示,所以分離樣本所需的分裂次數(shù)等于路徑從根節(jié)點到終止節(jié)點的長度,這個路徑長度在這些隨機樹的森林上平均,用于度量常態(tài)和實現(xiàn)我們的決策功能。當(dāng)隨機樹組成的森林共同產(chǎn)生更短的路徑長度時,它將很可能是異常。
孤立森林算法適用于連續(xù)數(shù)據(jù)的異常檢測,將異常定義為“容易被孤立的離群點”??衫斫鉃榉植枷∈枨译x密度高的群體較遠的點,在數(shù)據(jù)空間里面,分布稀疏的區(qū)域表示數(shù)據(jù)發(fā)生在此區(qū)域的概率很低,因此可認(rèn)為落在這些區(qū)域里的數(shù)據(jù)是異常的[11]。這就實現(xiàn)了實時數(shù)據(jù)的異常篩查。
孤立森林不定義數(shù)學(xué)模型也不對數(shù)據(jù)進行標(biāo)記,而是去查找哪些點容易被“孤立”,它使用了一套非常高效的策略,例如我們用一個隨機超平面來切割數(shù)據(jù)空間,切一次可以生成兩個子空間,之后我們再繼續(xù)用一個隨機超平面來切割每個子空間,循環(huán)下去,直到每個子空間里面只有一個數(shù)據(jù)點為止。直觀上來講,我們可以發(fā)現(xiàn)那些密度很高的簇是被切分很多次才會停止切割,但是那些密度很低的點很容易很早就停到一個子空間里了。
孤立森林算法得益于隨機森林的思想,與隨機森林由大量決策樹組成一樣,孤立森林也由大量的“樹”組成,但和決策樹不太一樣,其構(gòu)建過程也比決策樹簡單,是一個完全隨機的過程[12]。
如何分割數(shù)據(jù)空間是孤立森林算法的核心思想。由于切割是隨機的,所以需要用特定的方法(如蒙特卡洛方法)來得到一個收斂值,即反復(fù)從頭開始切,然后平均每次切的結(jié)果。
孤立森林由n個孤立樹組成,每棵孤立樹是一個二叉樹結(jié)構(gòu)。該算法分兩個階段,第一個階段需要訓(xùn)練出n棵孤立樹,組成孤立森林,然后將每個樣本點帶入森林中的每棵孤立樹,計算平均高度,之后再計算每個樣本點的異常值分?jǐn)?shù)。
孤立森林算法模型的第一階段算法步驟如下:
(1) 從訓(xùn)練數(shù)據(jù)中隨機選擇Ψ個樣本點作為樣本子集,放入樹的根節(jié)點。
(2) 隨機指定一個維度,在當(dāng)前節(jié)點數(shù)據(jù)中隨機產(chǎn)生一個切割點p。
(3) 以切割點生成一個超平面,然后將當(dāng)前節(jié)點數(shù)據(jù)空間劃分為2個子空間:把指定維度里小于p的數(shù)據(jù)放在當(dāng)前節(jié)點的左子節(jié)點,把大于等于p的數(shù)據(jù)放在當(dāng)前節(jié)點的右子節(jié)點。
(4) 在子節(jié)點中遞歸步驟(2)和步驟(3),不斷構(gòu)造新的子節(jié)點,直到子節(jié)點中只有一個數(shù)據(jù)或子節(jié)點已到達限定高度。
(5) 循環(huán)步驟(1)至步驟(4),直至生成n個孤立樹。
孤立森林算法模型的第二階段算法步驟如下:
獲得n個孤立樹之后,訓(xùn)練結(jié)束,然后用生成的數(shù)據(jù)來評估。用每一個數(shù)據(jù)點(xi)遍歷每一棵孤立樹,計算數(shù)據(jù)點在森林中的平均高度值h(xi),對所有點的平均高度做歸一化處理。異常值分?jǐn)?shù)的計算如式(1)所示:
(1)
(2)
式中:x為輸入的數(shù)據(jù);Ψ為子采樣大小;S為異常值的分?jǐn)?shù);E為樣本從樹的根節(jié)點到葉節(jié)點的過程中經(jīng)歷的邊的個數(shù);C為修正值,表示樣本構(gòu)建一個二叉樹的平均路徑長度;0.5772156649為歐拉常數(shù)。
通過計算,異常值分?jǐn)?shù)越小表示數(shù)據(jù)越為異常。
采用Python+Numpy+Sklearn+Matplotlib的開源組合框架進行數(shù)據(jù)處理并繪圖,首先通過Python連接數(shù)據(jù)庫,并對數(shù)據(jù)庫相對應(yīng)的數(shù)據(jù)通道進行二次數(shù)據(jù)采樣,并將采樣點以多維矩陣的形式保存在Numpy數(shù)組中。當(dāng)遇到數(shù)據(jù)缺失時,直接標(biāo)記為0。完成數(shù)據(jù)二次采樣后,即形成用于計算的數(shù)據(jù)集,不再進行數(shù)據(jù)的預(yù)處理。
將北京十三陵抽水蓄能電站1號引水系統(tǒng)壓力鋼管的1#和2#支管的“振動-應(yīng)力”兩個不同量綱作為數(shù)據(jù)的兩個維度進行運算,獲得1#、2#支管在X軸和Y軸方向上的四組計算數(shù)值,并在二維平面內(nèi)予以展示。
由于孤立森林算法每次選擇劃分屬性和劃分點時都是隨機的,為了數(shù)據(jù)能夠復(fù)現(xiàn),指定隨機數(shù)種子來生成偽隨機數(shù)。從相同的隨機數(shù)種子出發(fā),可以得到相同的隨機數(shù)序列[13]。
計算采用IsolationForest()函數(shù),該函數(shù)僅需要設(shè)置異常值比例和偽隨機數(shù),其它均采用默認(rèn)參數(shù),即:
contamination=0.00005;
random=np.random.RandomState(42)。
運算后結(jié)果如圖1—圖4所示。
本次運算采用配置為Core i5-9400F處理器的普通計算機,每個數(shù)據(jù)集均包含了13 000行數(shù)據(jù),運算時間分別為8.22 s、8.54 s、8.09 s和8.45 s,可見在運算速度方面,孤立森林有明顯的速度優(yōu)勢。從3.4小節(jié)中可視化結(jié)果看,黑色的點為正常點,紅色的點為計算出的異常點。通過查詢函數(shù)將異常點進行定位,可獲得四組異常點的時間坐標(biāo),四個數(shù)據(jù)集異常值的時間坐標(biāo)如表1所示。
圖1 1#支管X軸方向“振動-應(yīng)力”數(shù)據(jù)集異常檢測
圖2 1#支管Y軸方向“振動-應(yīng)力”數(shù)據(jù)集異常檢測
圖3 2#支管X軸方向“振動-應(yīng)力”數(shù)據(jù)集異常檢測
圖4 2#支管Y軸方向“振動-應(yīng)力”數(shù)據(jù)集異常檢測
表1 四組數(shù)據(jù)集的異常值時間坐標(biāo)
從表1可以看出,孤立森林算法計算后發(fā)現(xiàn)的異常點具有非常明顯的特征,四組異常值所處的時間范圍集中在晚上20:30時左右,且壓力鋼管均處于停機前30 min左右的發(fā)電狀態(tài)。作為抽水蓄能電站,停機前的工況是機組運行中對壓力鋼管最不利的工況,存在著流態(tài)的急劇變化和水錘影響[14-16],由此可以判斷,該實時在線監(jiān)測系統(tǒng)具有發(fā)現(xiàn)壓力鋼管異常狀態(tài)的能力。同時需要說明的是,本次發(fā)現(xiàn)的“異?!秉c只是通過調(diào)整contamination參數(shù)的值從壓力鋼管正常運行數(shù)據(jù)中抽取的,該“異常”點僅說明了壓力鋼管此時的工況發(fā)生了微小變化,并不說明壓力鋼管出現(xiàn)了故障。
孤立森林算法作為人工智能技術(shù)中的數(shù)據(jù)分析方法,它的特點是不需要對數(shù)據(jù)集進行標(biāo)注,能夠以在線的方式實現(xiàn)對壓力鋼管監(jiān)測數(shù)據(jù)的異常分析,這就為發(fā)現(xiàn)壓力鋼管運行時的異常表征和及時發(fā)現(xiàn)事故前的征兆信息提供了計算基礎(chǔ),從而對實現(xiàn)壓力鋼管的安全評估和預(yù)測預(yù)警提供技術(shù)手段。
根據(jù)水利水電工程壓力鋼管運行數(shù)據(jù)的結(jié)構(gòu)特征及數(shù)據(jù)特點,選擇孤立森林算法進行實時在線的分析具備工程實施的可行性。通過與采用OCSVM計算[17]的結(jié)果相比較,采用孤立森林計算獲取的異常值與采用OCSVM計算獲取的異常值高度的一致,說明孤立森林算法對運行中的設(shè)備異常具有較為可靠的發(fā)現(xiàn)能力。
人工智能技術(shù)中的每一類算法均有各自的特征和應(yīng)用范圍,孤立森林算法具有異常發(fā)現(xiàn)能力,并且對于數(shù)據(jù)量較大的數(shù)據(jù)集具備快速計算能力,但孤立森林由于不定義數(shù)學(xué)模型,所以對發(fā)現(xiàn)的“異?!秉c也不會進行評價和判斷,所以在使用該算法時,可作為實時數(shù)據(jù)的前置分析手段,對于如何將孤立森林發(fā)現(xiàn)的異常點進行評價,則需要用其它手段來共同完成。