謝 敏 ,劉秋明 ,肖 賀 ,劉述民
(1. 江西省防汛(水利)信息中心,江西 南昌 330009;2. 江西理工大學(xué)軟件工程學(xué)院,江西 南昌 330031)
水位/水深是刻畫水流、水體變化的水情要素和重要參數(shù),是水文監(jiān)測中最為常規(guī)的監(jiān)測要素,也是防洪、抗旱、水資源綜合利用、水情信息監(jiān)測、水文數(shù)據(jù)預(yù)報等工作的基礎(chǔ)數(shù)據(jù)[1]12。近年來,國家在防汛抗旱方面針對中小河流的水位信息感知要求在逐步提高,同時進行水位監(jiān)測的傳感器也從早期功能單一、簡單化的儀器逐步被數(shù)字控制智能設(shè)備替換。常見的水位監(jiān)測儀器有多種形式,如浮子式、雷達式、超聲波式、壓力式水位計,以及電子水尺等[2]157。為有效進行防汛減災(zāi)和水資源管理,國家對于水位計的數(shù)據(jù)準確度和精度都有嚴格的要求[3]。
但是,數(shù)字型水位傳感器經(jīng)過長時間使用會產(chǎn)生一定的零點及量程漂移(通常是時漂和溫漂),同時生態(tài)環(huán)境和天氣因素也會對傳感器產(chǎn)生影響,如果更換傳感器會帶來許多不便和較大成本。目前國內(nèi)水利部門普遍采用十米水位試驗臺[4]對浮子式和壓力式水位計(主要包括給排水、水位測井和標準量測系統(tǒng)等部分)進行校準,利用水位測井中的水位升降模擬實際場景,同時高精度水位量測系統(tǒng)提供標準水位數(shù)據(jù)以便于校準。但在對超聲波、雷達式等非接觸式水位計進行校準時,十米水位試驗臺方式存在一定的局限性。十米水位試驗臺測量內(nèi)徑為 1.2 m,有效測量深度為10m,適用于波束角a≈6° 范圍內(nèi)的非接觸式水位計校準。但是,目前雷達式和超聲波式水位計采用10m 作為有效測量范圍進行計算,且波束角范圍約為 12°[1]48,所需要的最小測井內(nèi)徑大小約為D=10×tan 6°×2 ≈ 2.1 m,因此,十米水位試驗臺可能無法滿足校準需求。為保障非接觸式水位計監(jiān)測結(jié)果的準確性,并以低成本校準測量數(shù)據(jù),提出一種基于機器學(xué)習(xí)的校準算法,該算法利用誤差輾轉(zhuǎn)遞送,構(gòu)建 Boosting 模型,逐步迭代,減少觀測誤差。
非接觸式水位計采用波的反射原理,綜合反射延時及波速得到水位計探頭和水面的相對距離,以測量環(huán)境中的水位數(shù)據(jù)為基礎(chǔ)值,依據(jù)設(shè)定公式推導(dǎo)出被測量水位信息[5]。其中,距離計算公式為
式中:Z為水位計探頭至水面距離;v為聲波、電磁波或光波的傳輸速度;t為水位計的探頭發(fā)送波與接收波的時延[6]。
從超聲波水位計超聲波的空間傳輸性質(zhì)看,超聲波發(fā)送時受氣溫、相對濕度和大氣壓力等外界環(huán)境因素影響較大。相關(guān)研究實驗表明,氣溫對于超聲波傳輸?shù)挠绊懽畲螅纱水a(chǎn)生的超聲波傳輸速度的波動范圍約為 7%。因此,現(xiàn)有的超聲波水位計在工作時,必須考慮空間溫度的影響,通過多次試驗得到溫度和誤差的擬合結(jié)果,并修正水位測量數(shù)據(jù)的結(jié)果,但對超聲波水位計內(nèi)部進行測溫得到的溫度不能代表超聲波發(fā)射路徑上的環(huán)境溫度。以10m量程舉例,若超聲波水位計溫度測量產(chǎn)生的誤差為1°,可能導(dǎo)致2cm 水位測量結(jié)果誤差[7]。另外,超聲波水位計安裝不規(guī)范也會使測量數(shù)據(jù)不準確,主要是由于設(shè)備安裝水平度不夠平整帶來的超聲波發(fā)射角度的變化,因此安裝超聲波水位計時,需要盡量保證發(fā)射波束和被測量表面成垂直狀態(tài)。但是,現(xiàn)實環(huán)境中,由于風(fēng)力的影響,設(shè)備支架會發(fā)生振動和搖動,振動影響比較容易處理,而搖動可導(dǎo)致水位計探頭出現(xiàn)θ度傾角,將會引起測量結(jié)果誤差。若設(shè)備傾斜時的測量水位高度結(jié)果為Z1,而水位高度實際距離為Z0,則水位高度測量結(jié)果誤差 ΔZ可以表示為
以量程為10m 的水位計為例,如果傾角為 5°,根據(jù)式 (2) 計算出的最大測量誤差達到 0.038 m,且隨著測量范圍的增大,所產(chǎn)生的測量誤差也會越大[8]。
張駿等[9]提出一種集成 Boosting 學(xué)習(xí)算法,Boosting 算法基于迭代思想,本質(zhì)是基于同一個測試集采用不同的分類效果較弱的分類器,再集合這些弱分類器構(gòu)成一個分類效果相對較強的分類器。楊浩等[10]提出基于 Boosting 算法的 Adaboost 的單層決策樹模型,能夠基于大量弱分類器構(gòu)建強分類器。針對非接觸式水位計存在測量誤差的問題,利用機器學(xué)習(xí)方法的水位計實時校準算法,即通過采集前期歷史水位高度誤差數(shù)據(jù)樣本及其周邊環(huán)境數(shù)據(jù)(包括風(fēng)速、溫濕度、PM10 等數(shù)據(jù)),構(gòu)建神經(jīng)網(wǎng)絡(luò)模型,將采集數(shù)據(jù)輸入該模型進行訓(xùn)練,融合水位計的環(huán)境參數(shù),利用訓(xùn)練后的模型預(yù)測當前采集到的水位高度誤差值,并利用誤差輾轉(zhuǎn)遞送的水位計數(shù)據(jù)進行實時校準,可提高水位計的精度和準確度?;跈C器學(xué)習(xí)方法的水位計實時校準算法,非常適用于無法直接構(gòu)建強分類的場景,可為構(gòu)建強分類器提供一種普適和有效的新思路。
水位高度校準算法流程如下:1)首先對模型初始化,然后將最新時間段的標準的和水位計采集的數(shù)據(jù)導(dǎo)入模型中,利用改進謝別德插值算法對采集的標準數(shù)據(jù)進行處理[11],得到與水位計設(shè)備采樣頻率及分辨力相等的標準插值數(shù)據(jù);2)將經(jīng)過插值后的標準的及水位計設(shè)備的數(shù)據(jù),置入構(gòu)建好的 Boosting 模型;3)基于上一次模型得出的誤差數(shù)據(jù),對本次 Boosting 模型輸出的數(shù)據(jù)結(jié)果進行校準,保留校準值;4)等待標準數(shù)據(jù)的更新,利用該標準數(shù)據(jù)更新校準的誤差值,并將更新誤差輾轉(zhuǎn)遞送給下一次模型。
Boosting 模型使用基于單層決策樹的 AdaBoost模型,訓(xùn)練數(shù)據(jù)集輸出校準值,其算法流程如圖 1所示。
圖1 Boosting 模型算法流程圖
利用誤差輾轉(zhuǎn)遞送的水位測量數(shù)據(jù)實時校準算法步驟如下:
1)模型建立。利用多次實驗得到的全部信息確定模型參數(shù)誤差,并將初始值定為 0。模型每次使用的訓(xùn)練數(shù)據(jù)集大小為45000條,為使總體誤差得到有效控制,多次校準后的誤差小值足夠多,從而提高模型可接受信賴度,誤差影響率控制為 0.1,但由于模型數(shù)據(jù)集過大會產(chǎn)生數(shù)據(jù)過擬合,因此確定每次校準的數(shù)據(jù)為15個。
2)數(shù)據(jù)實時校準。實時采集最新時間段標準的和設(shè)備測量的數(shù)據(jù),并保存至實時數(shù)據(jù)庫,利用改進謝別德插值算法對采集的標準數(shù)據(jù)采樣頻率進行處理,根據(jù)最小二乘法求解每個節(jié)點的節(jié)函數(shù)Qk(x,y),推導(dǎo)出改進謝別德函數(shù)D[f](x,y),最后,利用牛頓插值法求得改進謝別德函數(shù)值數(shù)據(jù),公式如下:
式中:Rw表示插值區(qū)域內(nèi)節(jié)函數(shù)可以影響的半徑;dk表示待插值點與其領(lǐng)域內(nèi)第k個點之間的歐幾里得距離。
3)模型訓(xùn)練。將插值后的標準的及設(shè)備測量的數(shù)據(jù)置入構(gòu)建好的基于單層決策樹的 Adaboost 模型中,首先訓(xùn)練數(shù)據(jù)中的每一個樣本,并給每個樣本賦予一定權(quán)重,權(quán)重系數(shù)構(gòu)成向量W,然后通過迭代計算得到數(shù)據(jù)集的錯誤率,其中本次樣本的權(quán)重根據(jù)上一次分類的對錯情況進行重新調(diào)整,將本次的錯誤率與之前的錯誤信息不斷進行比較和更新,最后得到錯誤率最小的單層決策樹。對于決策樹算法,通過大量數(shù)據(jù)集樣本的分析描述一個水位數(shù)據(jù)分類規(guī)則,根據(jù)決策樹模型得到新數(shù)據(jù)分類結(jié)果。根據(jù)算法流程,可以得到?jīng)Q策樹算法的時間復(fù)雜度為O(NlogN×d)(N表示數(shù)據(jù)集中的樣本數(shù),d表示數(shù)據(jù)的維數(shù))。使用輾轉(zhuǎn)遞送的方法,采集最新一次的標準數(shù)據(jù)以更新校準誤差,將誤差遞送給下一次模型。
4)誤差更新。利用格拉布斯準則去除m個數(shù)據(jù)的誤差,對結(jié)果取均值檢測每一個異常值,并迭代更新誤差值直到?jīng)]有異常值。如果某個測量值的殘余誤差Vi的絕對值滿足 |Vi|>Gg(Gg表示第g次迭代的誤差平均值的絕對值),則可以推斷出該誤差結(jié)果較大,需要剔除,即若某個測量值xi對應(yīng)的殘余誤差Vi滿足下列條件時,該數(shù)據(jù)會被去除掉:
式中:n表示測試的次數(shù);x表示n次采集數(shù)據(jù)的平均值;a為顯著性水平,通常取 0.01 或 0.05;σ(x)為對應(yīng)測量數(shù)據(jù)組發(fā)生“棄真”錯誤的概率函數(shù)。
根據(jù)校準算法理念,本研究采集贛江某監(jiān)測點1個月的水位數(shù)據(jù),采用 SEBAPuls20 雷達水位計作為自建點采集設(shè)備,測量范圍為 0~35 m,測量精度為 ±2cm,輸出 4~20 mA 電流信號,水位數(shù)據(jù)采樣為1次/h。校準算法仿真結(jié)果如圖2所示,其中藍色曲線為自建點采集設(shè)備實際采樣的水位數(shù)據(jù)值,黑色曲線為標準設(shè)備采樣值,紅色曲線為誤差輾轉(zhuǎn)遞送的強學(xué)習(xí)算法的校準值。從圖中可以看出,自建監(jiān)測點和標準設(shè)備采集數(shù)據(jù)存在一定的誤差,利用校準算法能夠減小自建點和標準設(shè)備采集的誤差,且能夠很好地擬合標準設(shè)備的采樣值,雖然校準之后的數(shù)據(jù)與標準數(shù)據(jù)也有一定偏差,但校準數(shù)據(jù)滿足標準規(guī)定的10cm 精度指標要求[2]157,從而可減少人工校準設(shè)備的工作量。
圖2 校準算法仿真結(jié)果
本研究圍繞現(xiàn)有非接觸式水位計測量技術(shù)和誤差產(chǎn)生的原因,利用機器學(xué)習(xí)的思路和方法解決了非接觸式水位計誤差校準的問題。通過搭建神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練歷史數(shù)據(jù)集,發(fā)現(xiàn)非接觸式水位計測量值與環(huán)境因素存在一定的關(guān)聯(lián)。水位測量誤差校準算法結(jié)果表明,該算法能夠融合環(huán)境因素的影響且很好地擬合水位測量誤差,并逐步逼近標準設(shè)備采集的數(shù)據(jù)值。與傳統(tǒng)校準方法相比,本研究提出的校準方案將前端設(shè)備校準移到后端軟件層面,為非接觸式水位計校準提供新思路,大大提高了校準工作效率。