張玉虎,鄭皎凌,蒲 良,田 超
(1.成都信息工程大學(xué) 軟件工程學(xué)院,成都 610225;2.中鐵電氣化局集團有限公司,北京 100036)
在城市不斷發(fā)展的今天,每時每刻都在不斷產(chǎn)生車輛軌跡數(shù)據(jù),海量的軌跡數(shù)據(jù)能夠挖掘城市車輛移動特性[1],具有很大的研究價值,能夠為許多應(yīng)用領(lǐng)域提供有效信息。例如紅綠燈優(yōu)化[2]、路網(wǎng)預(yù)測[3-4]、交通擁堵分析[5-6]等。
現(xiàn)有車輛軌跡數(shù)據(jù)廣泛采用基于位置的服務(wù)來記錄移動數(shù)據(jù),然而用戶可能不會允許服務(wù)提供者連續(xù)地收集移動位置信息,服務(wù)提供商之間的數(shù)據(jù)共享也存在很高的障礙,這些記錄下來的移動數(shù)據(jù)非常稀疏且記錄的時間分布不均勻,將會不可避免的使得下游應(yīng)用的性能下降,即使這些數(shù)據(jù)具有較高的用戶覆蓋率和很長的追蹤時間[7]。例如由于數(shù)據(jù)的稀疏性問題,用戶只會訪問少數(shù)幾個地點,這樣就無法判斷用戶的興趣位置[8],且這類使用基于位置服務(wù)的數(shù)據(jù)往往局限于某一個領(lǐng)域[9],無法覆蓋到道路上所有的車輛數(shù)據(jù),所以迫切需要一個更加豐富且可訪問的車輛移動數(shù)據(jù)。
隨著城市道路卡口覆蓋率不斷提高,每天將會產(chǎn)生海量的車輛移動數(shù)據(jù)。如此豐富的車輛移動數(shù)據(jù),推動著研究人員去使用城市道路卡口收集的大規(guī)模數(shù)據(jù)來重構(gòu)車輛軌跡。然而使用城市道路卡口產(chǎn)生的車輛移動數(shù)據(jù)來恢復(fù)車輛軌跡仍然十分具有挑戰(zhàn)性,因為車輛在城市道路中穿行的過程中并不一定會被道路卡口攝像頭連續(xù)拍攝,這樣記錄下來的車輛移動軌跡仍然稀疏且用戶在前后2個卡口攝像頭之間的移動軌跡具有非常大的不確定性。現(xiàn)有的解決方法是使用卡口收集的大規(guī)模視頻和圖像數(shù)據(jù),通過對視頻中的車輛圖片聚集來還原車輛的移動軌跡[10]。然而由于卡口視頻和圖像數(shù)據(jù)中包含了大量的用戶隱私數(shù)據(jù),大多時候無法直接處理原始數(shù)據(jù),而是通過對原始數(shù)據(jù)脫敏處理后生成的車輛移動的文本數(shù)據(jù)來還原車輛軌跡。
研究發(fā)現(xiàn),車輛軌跡數(shù)據(jù)往往具有一定的周期性和重復(fù)性特征。通過分析長期的歷史軌跡數(shù)據(jù)能有助于預(yù)測用戶的下一個位置[11]。但是現(xiàn)實生活中的歷史數(shù)據(jù)的周期性特征往往無法有效從大量的歷史車輛移動數(shù)據(jù)中提取。一種方法是從多個歷史軌跡中篩選出最常訪問的位置作為候選位置[12],但是歷史上最受歡迎的位置不一定是所有時間上都缺少的地點,車輛的流動具有很強的不確定性,無法使用一個固定的位置代表車輛缺少的地點。
針對上述問題,本文提出了一種基于卡口上下文和全局時間嵌入[13]的車輛軌跡重構(gòu)方法,使用多頭自我注意力[14]和動態(tài)卷積[15]組成的混合注意力學(xué)習(xí)卡口上下文之間的關(guān)系,將語言表示模型引入到軌跡處理當(dāng)中。靈感來源于Bert (bidirectional encoder representation from transformers)中引入的掩碼語言模型(masked language model,MLM)[16],通過使用上下文所提供的單詞預(yù)測被掩蓋單詞。車輛移動數(shù)據(jù)中包含了車輛通過每一個卡口的數(shù)據(jù),其中每一條車輛軌跡中的卡口和車輛軌跡之間的關(guān)系類似于單詞和句子之間的關(guān)系。
車輛軌跡還原模型的主要步驟包括:① 獲取城市道路卡口記錄的車輛數(shù)據(jù)生成車輛歷史軌跡,并掩蓋掉其中部分卡口數(shù)據(jù);② 對車輛軌跡數(shù)據(jù)中的上下文進行學(xué)習(xí);③ 推測出其中被掩蓋的真實卡口編號數(shù)據(jù)以重構(gòu)車輛軌跡。即根據(jù)輸入的車輛歷史軌跡[t1,t2,t3,t4,…,tn],通過動態(tài)掩蓋其中部分卡口數(shù)據(jù)生成車輛軌跡[t1,
城市道路卡口和車輛軌跡中的其他卡口關(guān)聯(lián)性可以定義為:
(1)
其中,Context(ti)={t1,…,ti-1,ti+1,…,tn}表示和卡口ti出現(xiàn)在同一條軌跡中的其他卡口。然后,利用最大對數(shù)似然對軌跡建模,目標函數(shù)為:
F=logp(ti|Context(ti))
(2)
在此模型中,對于每一條軌跡中被掩蓋的卡口ti,都希望F最大。
定義1(車輛歷史軌跡)。車輛歷史軌跡定義為Tj={ti|i=1,2,3,…,n},1≤j≤n,其中ti={Cid,Sid,Lon,Lat,Time},Cid為車輛編號,Sid表示卡口編號,Lon表示卡口經(jīng)度坐標,Lat表示卡口緯度坐標,j為時間步大小。
由于卡口生成的車輛移動數(shù)據(jù)是一系列按照時間順序排序且攜帶了車輛編號、卡口編號、地理坐標和被拍攝時間信息的軌跡點,這些數(shù)據(jù)在時間上是連續(xù)的,為了生成符合模型的輸入,需要將車輛移動數(shù)據(jù)按照不同的時間步長將連續(xù)時間車輛移動數(shù)據(jù)拆解,如果在同一個時間步長內(nèi)具有多個卡口數(shù)據(jù),使用在這個時間步長內(nèi)的第一個卡口數(shù)據(jù)。例如T1是指將卡口生成的車輛移動數(shù)據(jù)按照以1分鐘為時間步長取每一個時間步長內(nèi)的第一個卡口數(shù)據(jù)生成的車輛軌跡,T1中的ti是編號為Cid的車輛在時間為Time經(jīng)過經(jīng)緯度為Lon,Lat的編號為Sid的卡口。
定義2(車輛掩蓋軌跡)。給定一個目標車輛Cid的歷史軌跡[t1,t2,t3,t4,…,tn],被掩蓋后的車輛軌跡則可能為[t1,,〈masked〉,t2,t3,〈masked〉,…,tn]。其中〈masked〉指代被掩蓋的卡口數(shù)據(jù)。
卡口生成的車輛軌跡在輸入模型進行學(xué)習(xí)前,需要將車輛軌跡中的部分卡口數(shù)據(jù)進行隨機掩蓋,為了實現(xiàn)更多的掩蓋策略,本文使用動態(tài)掩碼方式對車輛軌跡進行掩蓋。在訓(xùn)練前生成固定數(shù)量和方式的掩蓋策略無法覆蓋多樣的缺失卡口序列,改為在每一次向模型輸入一個新的序列之前隨機生成一個新的掩蓋策略,則能覆蓋更多序列。
針對車輛移動軌跡中的周期性、重復(fù)性特征和城市道路卡口上下文關(guān)系構(gòu)建的系統(tǒng)框圖如圖1所示。將歷史車輛卡口軌跡中的卡口向量化表示,為了模擬更多的軌跡缺失片段,使用動態(tài)掩蓋方法對卡口生成的車輛移動軌跡進行遮蓋。為了捕獲車輛軌跡的周期性和重復(fù)性特征,使用局部時間嵌入和全局時間嵌入獲取局部時序信息和全局時序信息,這樣可以更好地重構(gòu)車輛軌跡。最后,使用混合注意力學(xué)習(xí)軌跡上下文中已知卡口的序列來預(yù)測被掩蓋的卡口信息。
圖1 算法流程框圖
車輛在每一天中的相同時間從起點卡口到終點卡口的選擇很有可能會是相似的,且車輛移動軌跡數(shù)據(jù)中記錄的車輛通過每一個卡口的時間數(shù)據(jù)代表了車輛軌跡中的時間信息,通過獲取不同卡口和時間之間的關(guān)系,將有助于恢復(fù)缺失的卡口,然而車輛軌跡中時間信息和不同卡口之間往往存在著復(fù)雜的時間關(guān)聯(lián)性,無法簡單的通過規(guī)則來描述其中的關(guān)系,為了將不同時間的卡口上下文情景區(qū)分開,獲取車輛移動數(shù)據(jù)中的周期性和重復(fù)性特征,使用局部時間編碼和全局時間編碼,將車輛軌跡中所有時間數(shù)據(jù)嵌入。
2.1.1局部時間嵌入
沿用自然語言處理中單詞的上下文說法形容車輛軌跡中不同卡口之間的關(guān)系。由于車輛軌跡中卡口上下文之間存在先后的關(guān)系,為了表示每一條車輛軌跡中卡口的局部上下文關(guān)系,將其中的局部位置進行編碼嵌入。具體來說,對于每一條車輛移動數(shù)據(jù)使用固定位置嵌入,使用Transformer[14]中的位置編碼 (position embedding,PE)對車輛移動數(shù)據(jù)中的局部時間進行編碼,計算公式如下:
(3)
其中,pos表示卡口數(shù)據(jù)在整個車輛軌跡中的位置,1jd,j代表第j個維度,d代表嵌入的維度。將車輛中所有卡口的位置進行嵌入,使得原始的輸入數(shù)據(jù)獲得更多的上下文信息。
2.1.2全局時間嵌入
為了獲取車輛軌跡中的周期性和重復(fù)性特征,單一使用局部時間嵌入不能捕獲長時間車輛移動數(shù)據(jù)的全部特征,因為在不同時間下每一個卡口的語義和上下文信息是不同的,為了捕獲長時間車輛軌跡中的特征,本文使用全局時間嵌入將層次時間信息進行嵌入,其中每一個全局時間嵌入使用一個可學(xué)習(xí)且詞典大小有限的時間嵌入 (time embedding,TE)表示,當(dāng)類別為小時時,詞典大小為24。例如軌跡中的一個卡口記錄時間在早上7點,則將7隨機初始化為詞典大小為24、嵌入維度為d的嵌入向量并隨模型的學(xué)習(xí)不斷更新,計算公式如下:
(4)
其中,p代表的是某一個類型的全局時間戳。在長時間的車輛移動數(shù)據(jù)中,不同的時間戳類型,如小時、周、月、節(jié)假日等數(shù)據(jù),將車輛移動軌跡中不同位置、不同時間類型的時間戳嵌入后相加,使得每一個卡口數(shù)據(jù)中包含的更多時間信息被充分利用。在使用全局時間嵌入時,本文使用一天中的某一個小時和一周中的某一天2種時間戳進行嵌入。將卡口編號Sid隨機初始化為維度為d、字典大小為576的向量u,學(xué)習(xí)模塊輸入計算如圖2所示。
將卡口編號嵌入后的向量、局部時間嵌入和全局時間嵌入結(jié)合,得到輸入到學(xué)習(xí)模塊中的向量,計算方式如下:
xi=ui+PE(i, j)+vi
(5)
其中,1≦i≦n,1≦j≦d,xi為卡口ti輸入到學(xué)習(xí)模塊中的向量。
圖2 學(xué)習(xí)模塊輸入向量
2.2.1自我注意力
自注意力機制能夠有效地從時間序列數(shù)據(jù)中學(xué)習(xí)復(fù)雜的模式和變化,例如通過使用Transformer模型學(xué)習(xí)流感疾病的時間序列來預(yù)測流感疾病在未來的變化[17]。本文為了還原車輛軌跡中被掩蓋卡口的Sid數(shù)據(jù),使用Transformer中的編碼模塊讓卡口學(xué)習(xí)不同上下文的關(guān)系,以提高車輛軌跡還原的準確性。單個頭下的軌跡注意力機制如圖3所示。
圖3 單個頭下的軌跡注意力機制
本文使用雙向注意力機制計算不同時隙之間的相關(guān)性。例如,當(dāng)前車輛軌跡生成嵌入向量中的時隙q和時隙p在h頭下的相關(guān)性計算方式如下:
(6)
(7)
(8)
其中,Wv∈Rdk×d同樣是一個變換矩陣。雙向自我注意力機制能夠獲取車輛軌跡中前后卡口信息,從而更精準地推斷缺失位置的卡口信息。但是車輛軌跡中含有多種復(fù)雜的關(guān)系,通過使用多頭注意力機制進行計算能夠獲取多種關(guān)系的信息,計算方式如下:
(9)
其中,‖是concatenation(·)方法,H是總的頭部的數(shù)量。通過在每一個頭下學(xué)習(xí)到不同的關(guān)系,并將每一個頭下面的注意力機制都組合起來,得到能表達更多車輛軌跡信息的數(shù)據(jù)。最后計算所有輸入車輛軌跡中的時隙和同一軌跡中的其他時隙的相關(guān)性,更新時隙的嵌入向量,雙向自我注意力中有H個自我注意的頭,則Q、K和V嵌入向量被均勻地分割為dk=d/H維度,輸入向量的雙向自我注意力輸出計算方式如下:
(10)
2.2.2混合注意力
多頭注意力模塊中,所有注意力頭的查詢都作用于整個輸入序列,從全局角度生成注意力聚焦的信息。但在車輛軌跡中每一個時間步的卡口和相鄰時間步的卡口關(guān)系顯然更加緊密,卷積操作能夠有效提取局部上下文信息[18-20],使得預(yù)測的結(jié)果更加準確。本文使用動態(tài)卷積提取卡口之間的局部關(guān)系,動態(tài)卷積如圖4所示。
圖4 動態(tài)卷積
將輸入的維度從d映射到2d,然后使用門控線性激活函數(shù)計算輸入,將一半的輸入使用sigmoid函數(shù)計算后和剩下的一半輸入進行點積操作。使用輕量級卷積建模局部的依賴關(guān)系,輕量級卷積是參數(shù)共享的深度卷積,輕量級卷積將權(quán)重和通道維度綁定,可以將卷積核簡化為W∈Rk,輕量級卷積計算公式如下:
(11)
其中,卷積核被記為W∈Rk,x為輸入向量,即車輛軌跡的嵌入向量,k為卷積核的寬度,i為深度卷積輸出的第i個位置,c為輸出的維度數(shù),輕量級卷積計算時,卷積核的參數(shù)都是固定的,不利于獲取卡口的多樣性,但可以利用函數(shù)動態(tài)生成卷積核,動態(tài)卷積的計算公式如下:
(12)
其中,x為輸入向量,在計算位置i時使用了一個位置相關(guān)的卷積核Wf=f(xi),f是一個具有可學(xué)習(xí)權(quán)重的線性模型,最后使用Softmax歸一化每一個卡口的每一維。為了將全局信息和局部信息結(jié)合,使用concatenation方法將多頭自我注意力生成的全局信息和動態(tài)卷積信息結(jié)合生成混合注意力信息,如圖5所示。
計算公式如下:
(13)
其中,‖是concatenation(·)方法,SelfAttn(·)為自我注意力模塊的輸出,DynamicConv(·)為動態(tài)卷積模塊的輸出,最后將生成的混合注意力信息輸入到前饋層進行處理。
圖5 混合注意力
2.2.3前饋網(wǎng)絡(luò)
為了保持每一個位置的原有信息,在之后加入一個標準的殘差連接并使用層歸一化將網(wǎng)絡(luò)中的隱藏層變?yōu)闃藴实恼龖B(tài)分布。最后使用兩層線性映射并在中間加上激活函數(shù)進行計算,計算方式如下:
X=Relu(XW1+b1)W2+b2
(14)
其中,X為混合注意力網(wǎng)絡(luò)的結(jié)果輸出,W1∈Rd×dff,W2∈Rdff×d是變換矩陣,Relu(z)=max(0,z)是非線性激活函數(shù)。
通過疊加多個Transformer的編碼結(jié)構(gòu),學(xué)習(xí)車輛軌跡中不同卡口之間的上下文關(guān)系和卡口之間的相關(guān)性,用于獲取不同時間、不同位置的卡口語義信息。
在最后一層編碼器的輸出上加入一個全連接的Softmax層,計算出被掩蓋位置的卡口,輸出所有卡口Sid是被掩蓋的真實卡口Sid的概率,將概率最高的卡口選為被掩蓋位置的輸出。最后僅在被掩蓋位置上的輸出概率分布和真實標簽之間使用交叉熵損失函數(shù)計算損失,計算方式如下:
(15)
其中,N為樣本總數(shù),M為卡口總數(shù),a為被掩蓋真實卡口的編號。當(dāng)a=s時,yas= 1,否則yas= 0,pas為第a個還原軌跡中被掩蓋的卡口編號屬于s的預(yù)測概率。同時使用Adam優(yōu)化器[21]進行梯度優(yōu)化,通過小批量的隨機訓(xùn)練得到梯度的變化并優(yōu)化模型的權(quán)重。
通過對原始的卡口數(shù)據(jù)進行處理得出,車輛在2個相鄰卡口的通行時間在2 min以內(nèi)的數(shù)據(jù)占比為61.91%,表明絕大多數(shù)車輛能在2 min以內(nèi)通過2個相鄰卡口。本文在生成階段使用以2 min為間隔獲取卡口,將總數(shù)大于6的卡口集合作為車輛的原始軌跡。實驗使用算法1計算原始的車輛軌跡,算法1詳細如下:
算法1:生成車輛軌跡
輸入:城市道路卡口記錄的數(shù)據(jù)
輸出:車輛軌跡T2
1:TList← 城市道路卡口記錄的數(shù)據(jù)
2:TList← 城市道路卡口記錄的數(shù)據(jù)按照Cid聚集
3:fori(iinTList)do
4:i← 將聚集的卡口記錄數(shù)據(jù)按照時間排序
5:time← {i中第一個卡口記錄的時間,0}
6:k← 0
8: forj(jini) do
9: iftime[1]< 2 do
10:time[1]←j中記錄的時間-time[0]
11: end if
12: iftime[1]> 2 andtime[1]< 4 do
14:time← {j中記錄的時間,0}
15: end if
16: iftime[1]>2 andtime[1]> 4 do
18:k←k+ 1
20: end if
23: end if
24:time← {j中記錄的時間,0}
25: end if
26: end for
27: end for
在學(xué)習(xí)階段,通過掩蓋其中的卡口來學(xué)習(xí)車輛原始軌跡中的卡口和前后卡口之間的聯(lián)系,在真實預(yù)測階段使用Argmax計算最終輸出中概率最大的卡口的Sid為被掩蓋卡口的Sid。還原出來的車輛軌跡中的卡口集合使用Hidden Markov map matching算法[22],將卡口集合和實際地圖匹配,還原出車輛的真實地圖軌跡。車輛軌跡重構(gòu)算法詳細如下:
算法2:GT-Recovery
輸入:城市道路卡口記錄的數(shù)據(jù)
輸出:被掩蓋的卡口Sid數(shù)據(jù)
1:T2← 使用算法1生成車輛軌跡
2:TTrain←T2中前21天數(shù)據(jù)為訓(xùn)練集
3:TTest,←T2中后7天數(shù)據(jù)為測試集
4: 使用多頭注意力和動態(tài)卷積實現(xiàn)混合注意力
5:學(xué)習(xí)模型編碼層數(shù)為3,混合注意力中頭數(shù)為4
6:Train← 將TTest按照每一次的訓(xùn)練的大小隨機抽取其中的車輛軌跡生成學(xué)習(xí)模型的訓(xùn)練集
7: fori(iinTrain) do
8: 使用動態(tài)掩蓋生成軌跡i的掩蓋策略
9:X← 通過式(5)計算車輛的輸入向量
10: forj(jin 3) do
11:MixAttn← 通過式(13)計算混合注意力網(wǎng)絡(luò)的輸出
12:X← 使用殘差連接和歸一化計算混合注意力網(wǎng)絡(luò)的輸出
13:X← 通過式(15)計算前饋網(wǎng)絡(luò)輸出
14:X← 使用殘差連接和歸一化計算混合注意力網(wǎng)絡(luò)的輸出
15:X← 使用Softmax計算每一個卡口是掩蓋卡口的可能性。計算的結(jié)果中可能性最大的卡口Sid為目標結(jié)果。
16: 使用式(16)計算損失
17: 使用Adam進行梯度優(yōu)化
18: end for
使用中國四川某市的576個城市交通卡口攝像頭所采集的車輛移動數(shù)據(jù)。數(shù)據(jù)記錄了2020年10月所有卡口拍攝到的記錄。由于卡口攝像頭拍攝的視頻數(shù)據(jù)含有海量的敏感信息,所有的視頻數(shù)據(jù)都被處理為結(jié)構(gòu)化的文本數(shù)據(jù),每天所采集的過車數(shù)據(jù)量大小為106級,車輛移動數(shù)據(jù)如表1所示。由于道路上攝像頭經(jīng)緯度的敏感性,其中經(jīng)緯度信息不做展示。
表1 車輛移動數(shù)據(jù)
在將數(shù)據(jù)投入模型進行訓(xùn)練之前,對車輛移動數(shù)據(jù)進行預(yù)處理。首先,由于城市道路卡口大多安置在交叉路口上,車輛在通過卡口時可能會被多次記錄,因此,在預(yù)處理時只保留車輛軌跡中相鄰且重復(fù)的最后一個卡口數(shù)據(jù)。其次,將車輛軌跡中速度異常的卡口進行刪除。最后,以2 min為時間步選擇出車輛軌跡中卡口數(shù)量大于6的車輛軌跡來進行軌跡還原。本文經(jīng)過預(yù)處理后共有420 000條車輛軌跡。
3.2.1實驗環(huán)境
本文模型使用Tensorflow實現(xiàn),在Linux服務(wù)器上訓(xùn)練。該服務(wù)器的具體配置參數(shù)為:Ubuntu 18.04 LTS操作系統(tǒng),GPU型號為I7-7700K,2條12 G顯存的Nvidia RTX 2080Ti顯卡。
3.2.2實驗細節(jié)
實驗的評價指標是根據(jù)被還原的卡口來進行計算的,使用Recall@k作為標準[9,12],如果正確的卡口能以最大概率恢復(fù),則Recall@1等于1,否則等于0。最終的Recall@k是所有測試用例的平均值,Recall@k值越大,表明模型的性能越好。
為了評估性能,遮住部分車輛軌跡中的卡口數(shù)據(jù),并將遮住的卡口作為真實值進行恢復(fù),屏蔽其中30%的位置,掩蓋車輛軌跡中1到6個卡口進行車輛軌跡的恢復(fù)。數(shù)據(jù)集按照時間劃分,將最后一周中的82 000條車輛軌跡作為測試集,前面的338 000條車輛軌跡作為訓(xùn)練集。模型訓(xùn)練時隨機讀取車輛軌跡進行學(xué)習(xí)。使用的模型由3層含有混合注意力的編碼器構(gòu)成,卡口嵌入維度為256,每一個編碼器由4頭自我注意力和動態(tài)卷積組成。
3.3.1不同算法性能
Top算法[12]是一種簡單的基于計數(shù)的方法,在恢復(fù)時將其中最流行的位置用于恢復(fù)軌跡。
History算法[11]使用歷史軌跡的每個時間段中最常被訪問的位置來恢復(fù)軌跡。
RF算法[11]使用基于特征的機器學(xué)習(xí)方法。提取各軌跡的缺失時隙,并將缺失時隙的前后位置作為特征,訓(xùn)練隨機森林分類器來進行恢復(fù)。
為了方便表達,使用GT-Recovery表示本文中的模型。從表2中可以分析出,傳統(tǒng)的基于規(guī)則的模型均無法達到較高的準確率,雖然直覺上歷史數(shù)據(jù)中經(jīng)常被訪問的地點有助于恢復(fù)車輛的移動軌跡,但是由于車輛移動的不確定性,傳統(tǒng)的方法無法準確捕獲車輛復(fù)雜的移動規(guī)律,單純基于規(guī)則就無法準確恢復(fù)車輛軌跡。通過使用混合注意力機制編碼層,可以更好地捕獲車輛軌跡的移動特征,并較為準確地還原車輛軌跡中缺少的卡口。通過實驗對比,使用基于卡口上下文學(xué)習(xí)和全局時間嵌入的模型能更好地還原車輛軌跡,證明了本文提出的方法能更有效地捕獲車輛的移動方式、周期性特征和重復(fù)性特征。
表2 實驗結(jié)果指標
3.3.2消融實驗
測試了所有模塊對最終結(jié)果準確率的影響,將模型中不同模塊去掉,觀察準確率的變化情況,結(jié)果如表3所示。其中GT-Recovery-G表示減去全局時間的結(jié)果,GT-Recovery-D表示減去動態(tài)掩蓋后的結(jié)果,GT-Recovery-M表示減去局部上下文信息后的結(jié)果。分析可知,GT-Recovery優(yōu)于所有的去掉模塊后的結(jié)果,其中去掉全局時間后下降最多。對比GT-Recovery模型和GT-Recovery-G模型發(fā)現(xiàn),在車輛軌跡嵌入時加入時間信息能夠降低最后恢復(fù)的不確定性,提高還原的準確性。然而比較GT-Recovery-M模型和GT-Recovery模型,可以發(fā)現(xiàn)加入局部上下文信息后的提升有限,這是由于軌跡中的卡口數(shù)量較少,主要依賴軌跡全局信息恢復(fù)軌跡中缺失的卡口。
表3 消融實驗結(jié)果指標
3.3.3不同缺失程度下的性能
通過測試模型在不同卡口缺失率下的恢復(fù)被掩蓋卡口的性能,驗證模型是否能夠處理不同缺失率的情況,分別研究了卡口被掩蓋的概率在30%~50%、50%~70%和70%~90%時的卡口恢復(fù)情況,掩蓋其中的卡口時不會掩蓋第一個和最后一個卡口數(shù)據(jù)。通過表4可以看出,隨著車輛卡口缺失率的上升,卡口還原的準確率在不斷下降,但還原準確率下降的趨勢卻不明顯。一是為保證軌跡的原始通行信息,本文保留了車輛軌跡的起點卡口和終點卡口,且能被卡口連續(xù)記錄的車輛軌跡較少,通過計算測試數(shù)據(jù)得出,車輛卡口軌跡中的卡口數(shù)量在6~8時占比為82.26%,在保留車輛起點卡口和終點卡口后,卡口缺失率在30%~90%的實際缺失的卡口數(shù)量差距并不明顯。二是由于大多數(shù)車輛在通過具有相同起點和終點的卡口對時選擇的路徑是相似的,但實驗結(jié)果表明,通過嵌入車輛軌跡的周期性和重復(fù)性特征,使用本文的模型還原車輛軌跡中缺失的卡口數(shù)據(jù)時,在數(shù)據(jù)缺失率增大的情況下,仍然具有更好的還原準確性。
表4 不同缺失率下的實驗結(jié)果指標
3.3.4不同嵌入維度下的性能
本文研究了嵌入維度數(shù)d、多頭自我注意力機制的頭數(shù)H和基于混合注意力機制的編碼層數(shù)L對于車輛軌跡還原性能的影響,圖6中顯示了不同的嵌入維度在車輛軌跡還原中準確率的變換,在嵌入維度不斷增加的情況下,還原的準確率也在逐步提高,在嵌入維度大于256后,最終的還原性能趨于穩(wěn)定,使用大于256維度的嵌入,準確率將不會有巨大的提高,所以選擇256作為模型的嵌入維度。圖7中顯示了不同自我注意力機制的頭部數(shù)量和不同數(shù)量的編碼層對于模型性能的影響,從圖中可以得到,使用頭部數(shù)量的多少對于最終還原的準確率影響不大,但使用更多的基于混合注意力機制的編碼層能獲得更好的還原準確率。通過對最終還原效果和效率的權(quán)衡,本文模型在訓(xùn)練時使用3層由4個頭部數(shù)量的多頭自我注意力模塊和動態(tài)卷積模塊組成的混合注意力模塊構(gòu)成的編碼層。
圖6 不同嵌入維度下的還原準確率
圖7 不同頭數(shù)和編碼層數(shù)下的還原準確率
利用城市中覆蓋率不斷提升的卡口攝像頭生成的數(shù)據(jù),對車輛軌跡進行還原,提出了一種基于卡口上下文和全局時間嵌入的城市車輛軌跡還原方法。使用全局時間嵌入和局部時間嵌入結(jié)合的方法,捕獲車輛軌跡移動中的周期性特征,使用動態(tài)掩碼語言模型模擬車輛軌跡在不同缺失率情況下的數(shù)據(jù),將嵌入后的數(shù)據(jù)通過編碼層中的混合注意力對車輛軌跡中的卡口上下文進行分析和學(xué)習(xí)。最后對比生成的結(jié)果和被掩蓋結(jié)果,結(jié)果表明,模型能夠更加有效地捕獲車輛的復(fù)雜移動特征并能夠較為準確地將被掩蓋的車輛軌跡進行還原。但是由于城市卡口在記錄通行車輛時具有很大的不確定性,車輛無法在一定時間步長內(nèi)被多個卡口連續(xù)記錄,使得車輛軌跡數(shù)據(jù)量不夠大。在未來的工作中,將會考慮更多不同數(shù)據(jù)對于車輛軌跡還原的影響,探尋影響車輛移動模型的更多因素。