王 闖,沈蘇彬
(1.南京郵電大學 物聯(lián)網學院,江蘇 南京 210003;2.南京郵電大學 通信與信息工程學院,江蘇 南京 210003)
隨著物聯(lián)網設備的增多,由傳感器,嵌入式設備產生的結構化、非結構化或者半結構化的數據日益增多。這些具有高容量(Volume),高速度(Velocity)和多類型(Variety)的“3V”特點的數據可以稱之為大數據[1]。處理這些數據以及如何從這些數據中挖掘出有價值的知識使物聯(lián)網能夠智能化地提供服務和可靠的決策已經成為急需解決的問題與挑戰(zhàn)[2]。鑒于深度神經網絡具有高效的數據特征提取與分析能力,現已被廣泛應用在智能家居等物聯(lián)網應用中[3-4]。
目前大多數物聯(lián)網設備的計算能力有限,通常將傳感器采集到的數據傳輸到云計算中心進行分析處理。物聯(lián)網應用通常需要基于數據提供實時服務,并且通常依賴于低存儲和計算能力有限的設備,以及帶寬有限的網絡連接,因此,需要將數據計算從云計算中心轉移到物聯(lián)網邊緣設備,實現近傳感器計算和近傳感器智能,在資源受限的嵌入式設備中運行機器學習甚至深度學習程序[5]。由于嵌入式設備資源受限,部署深度神經網絡應用通常會面臨以下三個主要問題:(1)嵌入式設備的計算能力有限,無法滿足終端設備的實時性要求;(2)嵌入式設備的存儲空間較小,不能提供足夠的存儲空間來存儲程序運行所需的數據;(3)運行深度神經網絡過程中由于需要大量的數值計算與頻繁的數據讀取,高額的能耗會大幅減少設備的工作時長。因此一般采用特征剪枝和權重量化等方式對模型進行壓縮[6],在嵌入式設備上使用壓縮后的深度學習網絡模型,但是會造成系統(tǒng)準確率下降;而把傳感器數據輸入到云端的大型深度神經網絡中,還需要解決通信延遲和隱私方面的問題。
文中將神經網絡進行劃分,淺層部分部署到物聯(lián)網邊緣設備上構成邊緣智能體,深層部分部署到云服務器上構成云端智能體。邊緣與云端智能體構成系統(tǒng)合作的多智能體系統(tǒng),在保證分類推理準確率的前提下,使用邊緣設備承擔深度神經網絡的淺層部分推理,減少數據傳輸帶來的延遲和保護用戶隱私。
邊緣計算是與云計算相對的一種計算模型或服務。云計算強調依托服務器豐富的計算資源將數據進行集中式處理,而邊緣計算是將物聯(lián)網嵌入式設備生成的數據在物聯(lián)網中進行本地處理。
作為緩解資源擁塞升級的策略,邊緣計算已成為滿足物聯(lián)網和本地化計算需求的技術熱點[7],將計算壓力從集中式數據中心卸載到分布在網絡上的許多計算節(jié)點,可以減少數據傳輸帶來的延遲[8]。邊緣計算模型不僅可降低數據所需的網絡帶寬,同時能較好地保護隱私數據,降低終端敏感數據隱私泄露的風險[9]。
深度神經網絡成功的原因之一是它們能夠在連續(xù)的非線性層上學習更高級別的特征表示。隨著硬件技術和機器學習方法的進步,可以培養(yǎng)更深層次的網絡,這些網絡進一步提高了機器分類的性能[10]。ImageNet的挑戰(zhàn)可以說明神經網絡層數的發(fā)展趨勢,因為最先進的方法已經從8層(AlexNet)發(fā)展到19層(VGGNet),并且在四年的時間內推進到152層(ResNet)[11-12]。然而,向更深層網絡的發(fā)展極大地增加了前饋推理所需的時延和計算資源[13]。
使用深度神經網絡處理復雜任務時,通常需要構建層數較深的網絡模型來增強模型對數據特征的提取能力。雖然增加深度神經網絡的網絡層數可以在一定程度上提高網絡模型處理數據的能力,但也會導致深度神經網絡的計算量與參數數量急劇增加,由此導致應用深度神經網絡的物聯(lián)網設備需要配置強大的計算能力和巨大的存儲空間。
多智能體系統(tǒng)是多個智能體組成的集合,它的目標是將大而復雜的系統(tǒng)建設成小的、彼此互相通信和協(xié)調的、易于管理的系統(tǒng)。智能體通常分為完全合作式、完全競爭式、混合關系式三種類型[14]。
在智能物聯(lián)網環(huán)境下,每個設備可視為一個智能體,智能體在單獨行動的同時,也要學會與其他的智能體進行交互協(xié)作,提高物聯(lián)網提供智能化服務的能力。
深度神經網絡由網絡層組成,因此可以在邊緣設備上部署經過壓縮優(yōu)化的淺層神經網絡,在云服務器設備上部署深層神經網絡,以此構建一個如圖1所示的混合云端與終端的基于分布式計算層級的分布式深度神經網絡。物聯(lián)網邊緣設備和云服務器組成一個合作式的多智能體系統(tǒng)。分布式深度神經網絡是具有中間分支結構的神經網絡。通常情況下,在深度神經網絡的早期階段學習的特征可以正確地推斷出數據總體的大部分,因此在主網絡上設置分支讓分類準確的數據提前退出可以減少時延和計算資源。分布式深度神經網絡通過中間分支劃分為淺層和深層兩個部分。
圖1 層級的分布式深度神經網絡
在數據分類中,希望分類模型在訓練數據上學到的預測數據分布與真實數據分布越相近越好,如果退出點的分類結果信息熵越小,則說明該分支的退出點的分類器對于正確標記該測試樣本的預測結果置信度越高。合作式多智能體整體通常需要最大化全局的期望回報,在分支點設置信息熵閾值來評估分支點的分類效果。當分支點的分類信息熵小于閾值時,深度神經網絡的推理執(zhí)行可以在本地終端上完成分類并退出,進行快速的局部推斷;當大于所設定的閾值,需要進一步進行額外處理時,中間數據可以傳輸至云服務器端,進一步利用云端的深層深度神經網絡進行處理,以提高系統(tǒng)的表現精度。
將一個在終端設備上的小型神經網絡模型(更少的參數)和一個在云上的大型神經網絡模型(更多的參數)組合起來。終端設備上的小型神經網絡模型可以快速地初始化數據提取,并分析出這個模型是否是滿足要求的。另外,終端設備還可以通過云端的大型神經網絡模型執(zhí)行進一步的程序并完成最終的分類。神經網絡的中間層輸出可以設計為比傳感器輸入小得多(例如,來自攝像機的原始圖像),因此可以減少終端設備和云端之間所需的網絡通信。此外,由于使用了從終端設備處理數據的方法代替原始傳輸數據的方法,該系統(tǒng)可以更好地保護個人隱私。
(1)
(2)
通過解決與出口點相關聯(lián)的損失函數的加權和的聯(lián)合優(yōu)化問題來訓練具有分支結構的神經網絡。一旦網絡被訓練,模型利用分支出口允許樣本提前退出,從而降低推理成本。在每個分支出口,使用分類結果的信息熵作為分類的置信度的度量。如果測試樣本的熵低于學習閾值,意味著分類器在預測中是有效的,則樣本在該出口點處以預測結果離開網絡,并且不由較高網絡層處理。如果熵值高于閾值,則該出口點處的分類器被認為是不可靠的,并且樣本繼續(xù)到網絡中的下一個出口點。如果樣本到達最后一個出口點,這是主神經網絡的最后一層,它總是執(zhí)行分類。
通過在整個網絡的某些位置添加退出分支(簡稱分支)來修改標準深度網絡結構。這些早期退出分支允許在網絡的早期階段準確分類的樣本提前退出,對于淺層網絡不能準確分類的數據則需要更深層的網絡進行分類。
對于分類任務,通常使用交叉熵損失函數作為目標函數。交叉熵是香農信息論中的一個重要概念,主要用于度量兩個概率分布間的差異性信息,也就是交叉熵的值越小,兩個概率分布越接近。在分支網絡訓練過程中,先通過 SoftMax 函數對網絡層的輸出值進行歸一化處理,再對其歸一化處理后的值進行計算得到交叉熵值,作為神經網絡的損失函數。
將損失函數用公式進行如下表達:
(3)
(4)
網絡層輸出z表達為:
z=fexitn(x;θ)
(5)
對于分支網絡模型,采用集中式學習、分布式部署執(zhí)行的策略,集中式的學習方法用來處理環(huán)境不穩(wěn)定性問題以及考慮多智能體的聯(lián)合動作效應,需要各個退出點的損失函數值乘以其權重來進行聯(lián)合優(yōu)化。將ωn定義為每個分支模型的權重,N為所有退出點的數量,因此其最終損失函數表達式為:
(6)
該算法在前饋過程中,訓練數據集通過網絡,包括主支路和支路,記錄神經網絡在所有出口點的輸出,并計算出神經網絡的誤差。在反向傳播中,誤差通過網絡傳遞回來,并使用梯度下降更新權重。使用隨機梯度下降算法Adam進行模型訓練。
當測試樣本在訓練好的分支網絡模型上進行測試時,最終會經過網絡層的計算,在退出點產生一個輸出結果z,使用SoftMax函數對其輸出進行歸一化,生成一個0~1之間的所有類概率集,其中每個類標簽的預測概率定義為ys,所有可能的類標簽集合定義為S,則將該退出點的樣本輸出信息熵定義為:
(7)
卷積神經網絡的基本結構由輸入層、卷積層、池化層、全連接層及輸出層構成。卷積層由多個特征面組成,每個特征面由多個神經元組成,它的每一個神經元通過卷積核與上一層特征面的局部區(qū)域相連,卷積核是一個權值矩陣。深度神經網絡的卷積層通過卷積操作提取輸入的不同特征,第l層卷積層提取低級特征如邊緣、線條、角落,更高層的卷積層提取更高級的特征。
池化層緊跟在卷積層之后,同樣由多個特征面組成,它的每一個特征面唯一對應于其上一層的一個特征面,不會改變特征面的個數。池化層是神經網絡的重要組成部分,通過減少卷積層之間的連接,降低運算復雜程度,同時改善結果,使結構不容易出現過擬合。
在神經網絡結構中,經多個卷積層和池化層后,連接著一個或多個的全連接層。全連接層中的每個神經元與其前一層的所有神經元進行全連接。全連接層可以整合卷積層或者池化層中具有類別區(qū)分性的局部信息。為了提升神經網絡的性能,全連接層每個神經元的激勵函數一般采用ReLU函數。最后一層全連接層的輸出值被傳遞給一個輸出層,可以采用SoftMax邏輯回歸進行分類。
圖2中在層級粒度上顯示了Alex Net運行時的情況。根據每個層在網絡中的類型和位置,每一層的運行時間和輸出數據大小也有所不同。卷積層和池化層的延遲相對較小,而全連接層的延遲較高。卷積層和池化層主要位于網絡的前端,而完全連接層則位于后端,原始數據經過卷積層和池化層到達后端遠遠小于原始數據。將卷積神經網絡分區(qū)執(zhí)行,在邊緣設備中執(zhí)行神經網絡的淺層部分,其余部分在具有更多計算資源的云服務器執(zhí)行。
圖2 Alex Net各層運行時延與輸出
多智能體系統(tǒng)是一組自主的,相互作用的實體,它們共享一個共同的環(huán)境,利用傳感器感知,并利用執(zhí)行器作動。多智能體系統(tǒng)提供了分布式數據處理的視角,在智能家居數據分類中為了提高識別的響應速度以及節(jié)省網絡帶寬,分類任務會優(yōu)先在本地邊緣設備的模型上進行,僅當本地識別結果的置信度不滿足置信度閾值時,才考慮是否請求到云服務器進行計算。當訓練好任務需求的分支網絡時,同時為分支網絡中的不同神經網絡層的時延和輸出數據量大小訓練回歸模型,以此估算神經網絡層在邊緣設備上和云服務器上的運行時延;回歸模型將被用于尋找出符合任務時延需求的退出點以及模型切分點。
深度神經網絡的最佳劃分點取決于其拓撲結構,它體現在每一層的計算延時和輸出數據大小的變化上,此外網絡帶寬不同導致數據從邊緣段傳輸到云端時的傳輸時延不同。在特定網絡帶寬B下,該神經網絡模型有N個分割點,ETi為第i層在邊緣設備上的運行時間,CTi為第i層在云服務器上的運行時間,Oi為第i層輸出計算邊緣設備和云服務器的總運行時間。
(8)
在神經網絡模型運行時,遍歷計算不同分割點的運行總時間,以min(Ti)為邊緣端智能體與云端智能體的協(xié)同合作策略,將深度神經網絡劃分部署。
實驗使用Raspberry Pi 3b模擬智能家居邊緣設備,具有1 GB運行內存,運行debian 9操作系統(tǒng)。使用個人計算機模擬云服務器,該計算機具有CPU I7-8750、GPU GTX-1060Ti以及16 GB內存運行Ubuntu 18操作系統(tǒng)。
Chainer是一個專門為高效研究和開發(fā)深度學習算法而設計的開源框架。目前大多數深度學習框架都是基于Define-and-Run的方案,而Chainer采用Define-by-Run的方案,神經網絡定義在運行時即時定義,允許網絡動態(tài)更改,可以更加靈活地構建神經網絡[15]。實驗使用分布式深度學習開源框架Chainer來構建具有分支的卷積神經網絡。
用于測試分支神經網絡分類效果的數據集為開源數據集,CIFAR-10數據集。CIFAR-10數據集被劃分成了5個用于訓練的數據子集和1個用于測試的數據子集,每個子集均包含10 000張圖片。測試集的圖片是從每個類別中隨機挑選的1 000張圖片組成的,訓練集則以隨機的順序將剩下的50 000張圖片進行分組。不過一些訓練集可能出現包含某一類圖片比其他類的圖片數量多的情況。訓練集包含來自每一類的5 000張圖片,一共50 000張訓練圖片。官方給出了多個CIFAR-10數據集的版本,文中測試實驗使用CIFAR-10 python版本。
根據神經網絡每層的運行時延,輸出數據大小以及實際的網絡帶寬在訓練好的分支神經網絡模型上得出最佳分割點,將網絡模型劃分部署在Raspberry Pi 3b和個人計算機上。對比直接部署在計算機上的神經網絡模型,所需時延以及準確率如圖3所示。
圖3 分區(qū)AlexNet網絡和AlexNet運行時延
當數據在Raspberry Pi 3b中滿足提前推出點要求時,模型推理結束減少運行時延。在相同準確度要求的情況下,具有分支退出點的深度神經網絡相比較于原神經網絡模型所需的推理時間顯著減小,提高了智能家居用戶圖像數據的處理效率,并且不需要將用戶的原始圖像數據傳輸到云端,保障了用戶的隱私安全。
對于具有多個分支出口點的AlexNet網絡,在不同帶寬的情況下,劃分點變化如圖4所示。
圖4 最佳退出點劃分點
可以看到,隨著帶寬的增加,最佳出口點會變得更低。在擁有足夠帶寬的情況下,神經網絡模型的更多部分將會被劃分到云服務器中運行。此外在帶寬良好的情況下,由于邊緣部分只執(zhí)行少量的推理,大部分數據不會在邊緣退出,會在云服務器中執(zhí)行進一步推理。在沒有足夠帶寬的情況下,最佳出口點會變得更高,神經網絡模型的更多部分將會被劃分到邊緣設備中執(zhí)行,由于邊緣部分的神經層數增加了推理結果的準確性,大部分數據會在邊緣結束推理,少部分需要在云服務器中進一步執(zhí)行。
物聯(lián)網的數據日益增加,使用深度神經網絡等數據挖掘技術可以提取物聯(lián)網數據中的潛在知識或模式,使物聯(lián)網能夠提供智能化的服務。受到網絡帶寬有限的影響,以云計算為中心的數據處理方法不能滿足物聯(lián)網實時性提供服務的要求,并且將用戶數據傳輸到云計算中心增加了用戶隱私泄露的風險。
文中使用邊緣計算進行數據處理,降低云計算中心的計算負載,減緩網絡帶寬的壓力;針對用于對圖像分類處理的卷積神經網絡,利用添加提前退出分支使神經網絡在邊緣設備對數據進行處理;搭建了具有分支結構的卷積神經網絡進行仿真實現,驗證了所提方案的有效性。邊緣計算并非旨在完全取代集中式的基于云計算的基礎架構,而是對現有云計算平臺的有效補充。隨著5G通信等相關技術的應用,高效的邊緣協(xié)同數據處理值得進一步的研究和改進。