處理移動端傳感器時序數(shù)據(jù)的深度學(xué)習(xí)框架:DeepSense
DeepSense 是一種在端設(shè)備上運行的深度學(xué)習(xí)框架,它可以在本地獲取需要處理的傳感器數(shù)據(jù),并且在不上傳到云端的情況下對這些數(shù)據(jù)應(yīng)用深度學(xué)習(xí)模型,如卷積神經(jīng)網(wǎng)絡(luò)或門控循環(huán)神經(jīng)網(wǎng)絡(luò)等。
DeepSense 是一種在移動設(shè)備上運行的深度學(xué)習(xí)框架,可以根據(jù)來自移動傳感器(例如,運動傳感器)的數(shù)據(jù)進行回歸和分類任務(wù)。分類任務(wù)的一個例子是異構(gòu)人體活動識別(HHAR),即基于運動傳感器測量數(shù)據(jù)來檢測某人可能在進行哪些活動(步行,騎車,站立等等)。另一個例子是生物特征運動分析,即從步態(tài)識別出用戶。回歸任務(wù)的一個例子是利用加速度測量數(shù)據(jù)來跟蹤汽車的位置并推斷汽車以后的位置。
與***進的框架相比,DeepSense 特別提供了一個估計量(estimator),該估計量的跟蹤誤差遠小于汽車跟蹤問題的誤差,并且明顯優(yōu)于 HHAR 和用戶識別任務(wù)方面的***進的算法。
盡管我們一般將多數(shù)移動應(yīng)用程序轉(zhuǎn)移到遠程云處理,但是轉(zhuǎn)移過程對時間延遲要求很高,而且高傳感器采樣頻率(如加速器,陀螺儀)導(dǎo)致數(shù)據(jù)傳輸難以支撐,因此我們更希望在本地設(shè)備上執(zhí)行大型傳感器任務(wù)。因此,我們通過在兩種不同類型的智能設(shè)備上針對所有三項任務(wù)的適度能耗和低開銷進行測試,展現(xiàn)了在移動設(shè)備上實現(xiàn)和部署 DeepSense 的可行性。
對于許多潛在的應(yīng)用程序來說,本地處理也是保護隱私的一個重要組成部分。所以現(xiàn)在很多研究者對于這種端設(shè)備上的深度學(xué)習(xí)很感興趣。本文作者深入了解了 DeepSense 的工作原理,并重點給我們介紹該框架的核心網(wǎng)絡(luò)設(shè)計,其余的評估細節(jié)等我們應(yīng)該很容易從論文中找到。
處理單傳感器數(shù)據(jù)
我們先考慮單個傳感器(最終我們希望構(gòu)建應(yīng)用程序,將多個傳感器的數(shù)據(jù)組合起來)。單傳感器可以提供多維測量,例如運動傳感器,它會沿著 x、y 和 z 軸報告運動。我們每隔一段時間(即時間序列)收集這三個維度中的傳感器讀數(shù),我們可以用如下形式表示:
我們要在寬度為τ的非重疊窗口中處理數(shù)據(jù)。將時間序列樣本中的數(shù)據(jù)點數(shù)除以τ可以得到總的窗口數(shù)。例如,如果我們有 5 秒的運動傳感器數(shù)據(jù),并打算將它們劃分為持續(xù) 0.25 秒的窗口,那么我們將得到 20 個窗口。
在頻率維度上對時間序列數(shù)據(jù)中尋找模式比在時間維度上更好,所以下一步是將 T 窗口中的每一個小窗口通過傅立葉變換傳遞給 f 頻率分量(frequency components),每個頻率分量具有大小和相位。每個窗口得到一個 d x 2f 階的矩陣。
我們有了這些 T,就可以將所有數(shù)據(jù)打包到一個 d x 2f x T 的 3 階張量。
將所有的信息都很好地封裝在單個張量中這一點是很方便實現(xiàn)的,但實際上我們將在 t 維中逐層處理(一次一個窗口)。每個 d x 2f 窗口切片通過卷積神經(jīng)網(wǎng)絡(luò)組件包括三個階段,如下圖所示:
首先,我們使用二維卷積濾波器捕捉局部頻率域各維度之間的交互。然后輸出通過一維卷積濾波器層來捕獲高級關(guān)系。***一個濾波器層的輸出被展平以產(chǎn)生傳感器特征向量。
整合多傳感器數(shù)據(jù)
按照上述應(yīng)用程序使用每 K 個傳感器的流程。我們現(xiàn)在有了 K 個傳感器特征向量,我們可以把它打包成一個具有 K 行的矩陣。
然后傳感器特征矩陣通過與我們剛剛看到結(jié)構(gòu)相同的第二個卷積神經(jīng)網(wǎng)絡(luò)組件傳送。也就是說,二維卷積濾波層后面是兩個一維向量層。***,我們將***一個濾波器的輸出壓平為整合后的傳感器特征向量。窗口寬度τ附加在在該矢量的末端。
對于每個卷積層,DeepSenses 學(xué)習(xí) 64 個濾波器,并使用 ReLU 作為激活函數(shù)。另外,在每層施加批量歸一化以減少內(nèi)部協(xié)變量(covariate)的變化。
現(xiàn)在一個時間窗口有組合的傳感器特征向量。并且我們需要對所有 T 窗口重復(fù)上述過程。
所以現(xiàn)在我們有 T 個組合的傳感器特征向量,每個都學(xué)習(xí)窗口內(nèi)的相互作用。當然,跨時間窗口學(xué)習(xí)窗口之間的關(guān)系也很重要。為了做到這一點,T 特征向量被饋送到 RNN 中。關(guān)于這一點,我想我們已經(jīng)準備好了一張示例圖來說明問題。
作者在 RNN 層中采用了門控循環(huán)單元(GRU)而不是 LSTM。
GRU 在各種任務(wù)中表現(xiàn)出與 LSTM 相似的性能,同時具有更簡單的結(jié)構(gòu),這降低了移動應(yīng)用程序的網(wǎng)絡(luò)復(fù)雜性。
DeepSense 使用兩層的堆疊式 GRU 結(jié)構(gòu)。當有新的時間窗口時,此結(jié)構(gòu)可以逐增地(incrementally)運行,從而更快地處理流式數(shù)據(jù)。
將其全部數(shù)據(jù)輸出到輸出層
循環(huán)層的輸出是一系列 T 向量, 每個時間窗口一個 T 向量。
對于回歸類任務(wù)(例如,預(yù)測汽車位置),輸出層是所有向量之上的全連接層,這些全連接層共享用于學(xué)習(xí)的權(quán)重和偏置項
,從而學(xué)習(xí)
。
對于分類任務(wù),將單個矢量組成一個固定長度的單矢量以便進一步處理。我們可以使用類似注意力網(wǎng)絡(luò)學(xué)習(xí)的加權(quán)平均值一樣的技巧,但是在本文中,通過取時間的平均值(累加向量并除以 T)可以獲得優(yōu)異的結(jié)果。最終特征向量被傳送到 softmax 層以生成最終類別預(yù)測分數(shù)。
自定義目前的應(yīng)用程序
遵從以下步驟將 DeepSense 打磨成適合特定的移動測繪和計算任務(wù)的系統(tǒng):
- 確定傳感器的輸入個數(shù) k,將輸入預(yù)處理到一組 d x 2f x T 張量中。
- 確定任務(wù)類型并選擇合適的輸出層。
- 可選擇自定義成本函數(shù)?;貧w任務(wù)的默認成本函數(shù)是均方誤差,分類任務(wù)默認的成本函數(shù)是交叉熵誤差。
對于評估中的活動識別(HHAR)和用戶識別任務(wù),使用默認成本函數(shù)。對于汽車位置跟蹤任務(wù),使用負對數(shù)似然函數(shù)(詳見 4.2 節(jié))。
主要成果
以下是 DeepSense 相對于傳感器融合和 eNav 算法在汽車跟蹤任務(wù)上的準確度。地圖輔助準確度欄顯示了位置被映射到地圖最近道路段時得到的準確度。
DeepSense 在 HHAR 任務(wù)上優(yōu)于其它方法 10%。
在用戶識別任務(wù)上優(yōu)于其它方法 20%。
我們通過三個具有代表性的移動端測量任務(wù)評估了 DeepSense,DeepSense 的性能遠遠高于現(xiàn)有***技術(shù)的基準,同時仍然通過在移動和嵌入式平臺上適度的能耗和低延遲的表現(xiàn)證明其移動端部署的可行性。
評估任務(wù)主要集中在運動傳感器上,但該方法還可以應(yīng)用于許多其他類型的傳感器,包括麥克風(fēng)、路由器、氣壓計和光傳感器等。