隋遠(yuǎn) 段然 王維圳
(1.南京萊斯網(wǎng)信技術(shù)研究院有限公司 江蘇省南京市 210000 2.北京金交規(guī)劃設(shè)計(jì)有限公司 北京市 100000)
水上交通監(jiān)管的核心是對(duì)船舶行為的監(jiān)管,隨著人類經(jīng)濟(jì)的發(fā)展,以及人類對(duì)海洋、江河、湖泊的開發(fā)和利用,水上交通活動(dòng)日益繁忙、復(fù)雜,傳統(tǒng)基于人工監(jiān)管的方法在日益復(fù)雜的環(huán)境下變得越來(lái)越被動(dòng)。在國(guó)際海事組織(IMO)和國(guó)際航標(biāo)協(xié)會(huì)(IALA)等組織努力下,船舶自動(dòng)識(shí)別系統(tǒng)(AIS)概念正式提出并強(qiáng)制船只安裝使用,我國(guó)的通航船舶也基本得到安裝,并累積了長(zhǎng)時(shí)段、大范圍的海量AIS 數(shù)據(jù)[1],如何從海量的數(shù)據(jù)中獲取有用信息,用于替代或輔助人工對(duì)海上船舶行為進(jìn)行監(jiān)控,已經(jīng)成為當(dāng)前水上交通研究和應(yīng)用領(lǐng)域所面臨的重要問題[2][3]。
機(jī)器學(xué)習(xí)研究的主要內(nèi)容是關(guān)于在計(jì)算機(jī)上從數(shù)據(jù)中產(chǎn)生模型的算法,即學(xué)習(xí)算法。利用學(xué)習(xí)算法可以從經(jīng)驗(yàn)數(shù)據(jù)中產(chǎn)生模型,從而改善系統(tǒng)自身的性能[4]。在水上交通監(jiān)管領(lǐng)域,也開展了眾多利用機(jī)器學(xué)習(xí)方法對(duì)船舶歷史航跡數(shù)據(jù)訓(xùn)練的研究,主要包括貝葉斯網(wǎng)絡(luò)、神經(jīng)網(wǎng)絡(luò)算法和密度聚類算法等。貝葉斯網(wǎng)絡(luò)是一種推理模型,它通過條件概率來(lái)度量事件發(fā)生的可能性,已經(jīng)被廣泛用于異常行為檢測(cè)。神經(jīng)網(wǎng)絡(luò)是一種應(yīng)用類似于大腦神經(jīng)突出聯(lián)結(jié)結(jié)構(gòu)進(jìn)行信息處理的算法,具有良好的非線性學(xué)習(xí)能力。密度聚類算法從樣本密度的角度來(lái)考察樣本之間的可連接性,在水上交通監(jiān)管領(lǐng)域主要用來(lái)聚類出水域范圍內(nèi)船舶的主要航行軌跡。這些研究取得了豐富的成果,但在研究成果轉(zhuǎn)化為商用系統(tǒng)的過程中,依然存在一些挑戰(zhàn)。
(1)海量數(shù)據(jù)的處理能力?;跈C(jī)器學(xué)習(xí)的方法,對(duì)數(shù)據(jù)渴求很高,隨著AIS 系統(tǒng)的普及,船舶行為數(shù)據(jù)越來(lái)越多,但如何處理這些海量的船舶航行行為數(shù)據(jù)是工程化系統(tǒng)必須解決的問題;
(2)數(shù)據(jù)可靠性要求高。船舶航行相關(guān)數(shù)據(jù)的積累越來(lái)越多,但是該數(shù)據(jù)多為非標(biāo)注數(shù)據(jù),直接使用會(huì)對(duì)航行規(guī)則訓(xùn)練帶來(lái)干擾,影響系統(tǒng)的監(jiān)管預(yù)警效果;
(3)滿足實(shí)時(shí)性系統(tǒng)要求。機(jī)器學(xué)習(xí)的訓(xùn)練模型規(guī)模大,判斷預(yù)警也較基于規(guī)則的判斷預(yù)警更加復(fù)雜,在轉(zhuǎn)化為商用系統(tǒng)時(shí),如何提高系統(tǒng)監(jiān)測(cè)效率達(dá)到實(shí)際應(yīng)用的要求,也是一大難點(diǎn)。
基于船舶航跡學(xué)習(xí)的水上交通智能監(jiān)管系統(tǒng)支持對(duì)監(jiān)管水域內(nèi)所有在航船舶進(jìn)行監(jiān)測(cè),對(duì)船舶位置異常、速度異常、航向異常、AIS 信號(hào)異常、船舶航行特征與上報(bào)類型不符等行為自動(dòng)檢測(cè)并及時(shí)生成告警信息并反饋給監(jiān)管人員。系統(tǒng)采用分層結(jié)構(gòu)設(shè)計(jì),層內(nèi)高內(nèi)聚、層間低耦合,訓(xùn)練和監(jiān)管可異地部署,訓(xùn)練層輸出訓(xùn)練模型供監(jiān)管層使用。數(shù)據(jù)接入層的數(shù)據(jù)包括覆蓋整個(gè)監(jiān)管水域的海量船舶航行行為數(shù)據(jù)、監(jiān)管水域的電子海圖數(shù)據(jù)、水域內(nèi)通航環(huán)境數(shù)據(jù)以及系統(tǒng)實(shí)時(shí)接入的船舶航跡數(shù)據(jù);數(shù)據(jù)訓(xùn)練層通過建設(shè)分布式大數(shù)據(jù)治理平臺(tái),完成對(duì)海量船舶航行行為數(shù)據(jù)的治理,本系統(tǒng)面向海量無(wú)標(biāo)注的船舶AIS 航跡數(shù)據(jù),不適合需要先驗(yàn)概率的貝葉斯網(wǎng)絡(luò)和需要大量標(biāo)注的神經(jīng)網(wǎng)絡(luò)算法,因此采用了基于密度聚類的無(wú)監(jiān)督學(xué)習(xí)方法對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練,來(lái)去除異常數(shù)據(jù)的干擾,生成與船舶實(shí)際航行情況更加吻合的船舶航行模型;監(jiān)管預(yù)警層利用多進(jìn)程并行處理技術(shù)實(shí)現(xiàn)對(duì)全水域船舶的實(shí)時(shí)監(jiān)管及預(yù)警信息生成,最后通過顯示終端將水上交通態(tài)勢(shì)展現(xiàn)給水上交通監(jiān)管人員。
基于船舶航跡學(xué)習(xí)的水上交通智能監(jiān)管系統(tǒng)由船舶航行模型訓(xùn)練中心、船舶行為自動(dòng)監(jiān)測(cè)中心、水上交通態(tài)勢(shì)顯示終端三部分組成。
(1)船舶航行模型訓(xùn)練中心主要功能是挖掘船舶正常航行、系泊和作業(yè)規(guī)律,訓(xùn)練生成對(duì)應(yīng)的規(guī)則模型。具體功能包括對(duì)海量船舶航跡數(shù)據(jù)進(jìn)行治理,船舶航跡數(shù)據(jù)包含船舶類型、船舶水上移動(dòng)通信業(yè)務(wù)標(biāo)識(shí)碼(Maritime Mobile Service Identify,唯一標(biāo)志一艘船舶,以下簡(jiǎn)稱“MMSI”)、船舶名稱、航跡點(diǎn)位置、速度、航向、時(shí)間戳等信息,數(shù)據(jù)治理去除船舶航跡位置、速度、方向突變的點(diǎn),并補(bǔ)齊船舶缺失的航跡點(diǎn);基于無(wú)監(jiān)督式機(jī)器學(xué)習(xí)方法對(duì)船舶航跡數(shù)據(jù)分區(qū)域進(jìn)行航行規(guī)則訓(xùn)練;生成可供監(jiān)測(cè)中心加載的船舶航行模型。
(2)船舶行為自動(dòng)監(jiān)測(cè)中心主要功能是利用船舶航行模型對(duì)實(shí)時(shí)航跡進(jìn)行異常檢測(cè)并生成預(yù)警信息。具體功能包括加載船舶航行模型;對(duì)實(shí)時(shí)接入的AIS 設(shè)備上報(bào)的船舶實(shí)時(shí)航跡數(shù)據(jù)船舶航跡數(shù)據(jù)進(jìn)行平滑和預(yù)測(cè)處理,降低因接入數(shù)據(jù)異常導(dǎo)致的不良影響;利用航行模型檢測(cè)船舶航行異常;根據(jù)異常信息生成及管理預(yù)警信息。
(3)水上交通態(tài)勢(shì)顯示終端為系統(tǒng)使用人員提供豐富的人機(jī)對(duì)話能力和預(yù)警信息展示能力。具體功能包括標(biāo)準(zhǔn)格式電子海圖顯示操作,通航環(huán)境和船舶目標(biāo)態(tài)勢(shì)展現(xiàn),在海圖上顯示觸發(fā)報(bào)警的船舶和告警的原因、等級(jí)等信息,根據(jù)工作人員響應(yīng),確認(rèn)或否定告警,并將相應(yīng)操作反饋給船舶行為自動(dòng)監(jiān)測(cè)中心。
本文基于無(wú)監(jiān)督機(jī)器學(xué)習(xí)方法對(duì)船舶歷史航跡數(shù)據(jù)分區(qū)域進(jìn)行船舶航行模型訓(xùn)練,該方法首先對(duì)船舶軌跡進(jìn)行Douglas-Peucker算法[5](以下簡(jiǎn)稱DP 算法),進(jìn)行數(shù)據(jù)壓縮,得到船舶航跡線段,然后使用基于密度的聚類方法(Density-Based Spatial Clustering of Applications with Noise,以下簡(jiǎn)稱DBSCAN)[6]聚類得到船舶航行的關(guān)鍵軌跡,最后對(duì)聚類后船舶軌跡在全水域進(jìn)行網(wǎng)格離散聚合,生成船舶在不同區(qū)域的船舶航行模型。該模型與實(shí)際船舶航行情況較為相符,監(jiān)管預(yù)警的準(zhǔn)確度更高,但其復(fù)雜計(jì)算是巨大的挑戰(zhàn),尤其是無(wú)監(jiān)督的DBSCAN 算法,需要計(jì)算每?jī)蓷l線段之間的軌跡距離,以渤海南部水域三年歷史數(shù)據(jù)為例,船舶航跡數(shù)據(jù)共計(jì)約3T,約7 億條航跡段,即使經(jīng)過DP 算法壓縮,航跡段數(shù)量也達(dá)到十萬(wàn)級(jí),計(jì)算量巨大。
本文設(shè)計(jì)使用分布式框架進(jìn)行分布式計(jì)算來(lái)實(shí)現(xiàn)模型訓(xùn)練學(xué)習(xí)需要的算法,如圖1所示,分布式框架由主控服務(wù)器和多個(gè)從屬服務(wù)器構(gòu)成,當(dāng)向分布式集群提交任務(wù)時(shí),提交任務(wù)的那臺(tái)機(jī)器為主控服務(wù)器。當(dāng)分布式程序運(yùn)行計(jì)算時(shí),計(jì)算將會(huì)提交到集群中的各服務(wù)器中進(jìn)行DBSCAN 聚類計(jì)算,每個(gè)運(yùn)算節(jié)點(diǎn)啟動(dòng)的進(jìn)程被稱為是從屬服務(wù)器。具體流程如下:
圖1:分布式數(shù)據(jù)處理架構(gòu)
(1)執(zhí)行計(jì)算前,為了防止數(shù)據(jù)傾斜應(yīng)首先在主控服務(wù)器對(duì)數(shù)據(jù)進(jìn)行劃分。本文根據(jù)地理坐標(biāo)對(duì)數(shù)據(jù)進(jìn)行劃分,劃分時(shí)交替循環(huán)選擇一組數(shù)據(jù)的經(jīng)度或緯度,取中值作為分割點(diǎn),將數(shù)據(jù)劃分為組數(shù)與計(jì)算單元數(shù)相同,確保分布式每個(gè)計(jì)算單元中數(shù)據(jù)盡可能接近且數(shù)量盡可能相同。
(2)主控服務(wù)器為每一個(gè)從屬服務(wù)器分配計(jì)算任務(wù),并設(shè)置其對(duì)應(yīng)數(shù)據(jù)所在存儲(chǔ)位置。在各個(gè)從屬服務(wù)器的計(jì)算單元中,使用相同的參數(shù)對(duì)其數(shù)據(jù)進(jìn)行單獨(dú)的DBSCAN 聚類運(yùn)算,獲得各個(gè)計(jì)算單元的聚類結(jié)果。
(3)從屬服務(wù)器將聚類子結(jié)果返回給主控服務(wù)器進(jìn)行合并,得到DBSCAN 的最終聚類結(jié)果。具體而言,DBSCAN 算法中計(jì)算兩點(diǎn)之間的距離、排序,離散化網(wǎng)格編號(hào)等計(jì)算量巨大的操作,都可以很好的使用分布式框架實(shí)現(xiàn),從而可以大大降低耗時(shí),平均速度提升約20 倍。
以渤海南部水域?yàn)槔騼?nèi)實(shí)時(shí)航行船舶的數(shù)量可達(dá)到數(shù)千艘級(jí)別,系統(tǒng)運(yùn)行時(shí)需要同時(shí)對(duì)水域內(nèi)全部船舶的各類報(bào)文進(jìn)行接收、解析、分類、處理與存儲(chǔ),并與船舶航行模型進(jìn)行比較計(jì)算,整個(gè)過程計(jì)算量巨大。本系統(tǒng)采用基于多進(jìn)程負(fù)載均衡的并行處理技術(shù)提升系統(tǒng)實(shí)時(shí)監(jiān)測(cè)的效率。
如圖2 可以看出,實(shí)時(shí)處理由船舶模型加載、報(bào)文處理進(jìn)程、異常檢測(cè)進(jìn)程、告警生成管理四個(gè)模塊組成。其中異常檢測(cè)處理進(jìn)程需要進(jìn)行檢測(cè)類型匹配、異常檢測(cè)判斷、報(bào)文與告警管理等工作,隨著實(shí)時(shí)船舶報(bào)文數(shù)量的增加和船舶航行模型復(fù)雜度的增大,計(jì)算量大大提高,容易形成系統(tǒng)瓶頸。因此本系統(tǒng)將創(chuàng)建多個(gè)異常檢測(cè)處理進(jìn)程,報(bào)文處理進(jìn)程對(duì)報(bào)文對(duì)應(yīng)的船舶進(jìn)行進(jìn)程索引,如果該船舶報(bào)文沒有進(jìn)程處理,則根據(jù)選擇一個(gè)報(bào)文緩存隊(duì)列最少的異常檢測(cè)處理進(jìn)程進(jìn)行報(bào)文處理,如果所有進(jìn)程緩存隊(duì)列都為空,則利用哈希算法選擇一個(gè)檢測(cè)進(jìn)程處理。船舶航跡信息、模型信息、預(yù)警信息由每個(gè)檢測(cè)進(jìn)程獨(dú)立維護(hù),最終將產(chǎn)生的預(yù)警信息發(fā)送給告警生成管理模型,生成告警消息。
圖2:多進(jìn)程處理程序結(jié)構(gòu)圖
基于船舶航跡學(xué)習(xí)的水上交通智能監(jiān)管系統(tǒng)已完成開發(fā)并利用渤海南部海域2018~2020 三年的共計(jì)約3T,約7 億條歷史航跡數(shù)據(jù),訓(xùn)練生成該水域的船舶航行模型,包括船舶速度模型、位置模型、航向模型、船舶類型航行特征模型以及AIS 信號(hào)模型。模型訓(xùn)練時(shí)使用三臺(tái)16 核CPU、128GB 內(nèi)存,2TB 硬盤的Linux 服務(wù)器作為訓(xùn)練集群,部署分布式計(jì)算框架,使用本文提出的基于分布式框架的機(jī)器學(xué)習(xí)技術(shù)完成模型訓(xùn)練。實(shí)驗(yàn)結(jié)果如表1所示,在上述軟硬件條件下,模型訓(xùn)練可以在三小時(shí)內(nèi)完成。
表1:模型訓(xùn)練耗時(shí)表
將監(jiān)測(cè)系統(tǒng)部署在4 核CPU,16GB 內(nèi)存,1TB 硬盤的Linux服務(wù)器上,系統(tǒng)接入渤海南部水域的船舶AIS 實(shí)時(shí)數(shù)據(jù),開啟4 個(gè)異常檢測(cè)處理子線程完成實(shí)船功能測(cè)試,測(cè)試結(jié)果如表2所示。系統(tǒng)船舶航跡的模擬數(shù)據(jù)進(jìn)行性能測(cè)試,各處理進(jìn)程無(wú)報(bào)文積壓,預(yù)警信息生成時(shí)間為秒級(jí),測(cè)試結(jié)果如表2所示。
表2:自動(dòng)監(jiān)測(cè)性能表
針對(duì)基于水上交通規(guī)則設(shè)置預(yù)警效率不高的問題,本文設(shè)計(jì)實(shí)現(xiàn)了基于機(jī)器學(xué)習(xí)的水上交通安全監(jiān)管預(yù)警的系統(tǒng),具有智能化程度更高、預(yù)警誤報(bào)率低的優(yōu)點(diǎn),在海事部門部署運(yùn)行期間,系統(tǒng)預(yù)警準(zhǔn)確率、處理容量、實(shí)際使用效果三方面都達(dá)到了預(yù)期目標(biāo)。