史 勁
(長(zhǎng)沙民政職業(yè)技術(shù)學(xué)院,湖南 長(zhǎng)沙)
人工智能技術(shù)利于提升物聯(lián)網(wǎng)應(yīng)用效果,物聯(lián)網(wǎng)可為人工智能應(yīng)用提供數(shù)據(jù)基礎(chǔ)。由于神經(jīng)網(wǎng)絡(luò)具有非結(jié)構(gòu)數(shù)據(jù)壓縮能力,在人工智能物聯(lián)網(wǎng)系統(tǒng)中具有較高的應(yīng)用價(jià)值。然而人工智能物聯(lián)網(wǎng)向云端傳送傳感器數(shù)據(jù)后進(jìn)行神經(jīng)網(wǎng)絡(luò)訓(xùn)練及推理時(shí),可能出現(xiàn)帶寬不足、數(shù)據(jù)延遲、數(shù)據(jù)泄露等問(wèn)題,為化解這些問(wèn)題,需要構(gòu)建一個(gè)感知設(shè)備、霧設(shè)備和執(zhí)行設(shè)備聯(lián)合構(gòu)建而成的神經(jīng)網(wǎng)絡(luò)。
分散式人工智能物聯(lián)網(wǎng)體系屬于云霧混合架構(gòu),由三個(gè)層次構(gòu)成,一是終端設(shè)備層,二是霧處理層,三是云計(jì)算層,體系整體架構(gòu)詳見(jiàn)圖1。
1.1.1 終端設(shè)備層
終端設(shè)備層是物聯(lián)網(wǎng)體系的最底層結(jié)構(gòu),設(shè)置于物聯(lián)網(wǎng)網(wǎng)絡(luò)邊緣區(qū),其中涵蓋兩類設(shè)備,一是物聯(lián)網(wǎng)感知設(shè)備,其作用是向BP 神經(jīng)網(wǎng)絡(luò)輸入層映射,感知設(shè)備與輸入神經(jīng)元一一對(duì)應(yīng),感知設(shè)備負(fù)責(zé)收集信息數(shù)據(jù)并向霧處理層傳送。二是物聯(lián)網(wǎng)執(zhí)行設(shè)備。此設(shè)備與BP 神經(jīng)網(wǎng)絡(luò)輸出層為映射與被映射關(guān)系,執(zhí)行設(shè)備與輸出神經(jīng)元一一對(duì)應(yīng)。執(zhí)行設(shè)備會(huì)接收與處理來(lái)源于霧處理層的數(shù)據(jù),并根據(jù)數(shù)據(jù)信息指令采取相應(yīng)動(dòng)作。
1.1.2 霧處理層
這是云霧混合架構(gòu)的中間結(jié)構(gòu)層,包含多個(gè)網(wǎng)絡(luò)邊緣設(shè)備,如路由器、交換機(jī)等等。該層與BP 神經(jīng)網(wǎng)絡(luò)的隱藏層為映射與被映射關(guān)系。霧處理層的作用是接收處理終端設(shè)備層傳送的數(shù)據(jù)[1]。各霧設(shè)備中安裝的Docker 容器用于隱藏神經(jīng)元,Docker 容器自帶的容器技術(shù)可向孤立組分配裝單個(gè)操作系統(tǒng)管理資源以化解資源需求沖突,無(wú)需即時(shí)編譯,也不必進(jìn)行指令級(jí)模擬,可在無(wú)專門解釋機(jī)制的基礎(chǔ)上執(zhí)行CPU 給出的指令,可降低系統(tǒng)調(diào)用替換復(fù)雜性,提高容器創(chuàng)新或停止效率,并且具備資源占用量低的優(yōu)勢(shì)。
1.1.3 云計(jì)算層
云計(jì)算層是此體系的最高層次架構(gòu),由云服務(wù)器構(gòu)成。其作用是訓(xùn)練神經(jīng)網(wǎng)絡(luò)、存儲(chǔ)數(shù)據(jù)及霧設(shè)備、為執(zhí)行設(shè)備分配資源。云計(jì)算層利用關(guān)系型數(shù)據(jù)管理系統(tǒng)存儲(chǔ)數(shù)據(jù),以多種類型的表格作為數(shù)據(jù)存儲(chǔ)單元,能夠提升數(shù)據(jù)存儲(chǔ)與調(diào)用的靈活性,可提高數(shù)據(jù)利用效率。關(guān)系型數(shù)據(jù)管理系統(tǒng)采用的是標(biāo)準(zhǔn)化數(shù)據(jù)庫(kù)訪問(wèn)語(yǔ)言形式,不僅語(yǔ)言更加簡(jiǎn)潔,且具備在線DDL 更新功能,可為大型數(shù)據(jù)庫(kù)、多線程數(shù)據(jù)庫(kù)、多類型存儲(chǔ)引擎運(yùn)行提供支持。
1.2.1 分散式工作模式
分散式人工智能物聯(lián)網(wǎng)體系以分散式工作模式為主,感知、霧處理、執(zhí)行三類設(shè)備分別是BP 神經(jīng)網(wǎng)絡(luò)輸入層、隱藏層、輸出層的設(shè)置區(qū)域??稍跓o(wú)云參與下,由終端設(shè)備層、霧處理層共同完成神經(jīng)網(wǎng)絡(luò)訓(xùn)練及推理[2]。訓(xùn)練時(shí),感知設(shè)備會(huì)向霧設(shè)備傳送樣本數(shù)據(jù),霧設(shè)備接收后重新設(shè)定數(shù)據(jù)權(quán)重及閾值,再向執(zhí)行設(shè)備傳送處理后的數(shù)據(jù),再重復(fù)執(zhí)行這一訓(xùn)練,訓(xùn)練結(jié)束后可構(gòu)建出神經(jīng)網(wǎng)絡(luò)模型,并可開(kāi)始實(shí)施推理。推進(jìn)過(guò)程中,數(shù)據(jù)仍是自感知設(shè)備開(kāi)始依次向霧設(shè)備、執(zhí)行設(shè)備傳送,執(zhí)行設(shè)備完成數(shù)據(jù)處理后便可執(zhí)行相應(yīng)動(dòng)作指令。
1.2.2 集中式工作模式
BP 神經(jīng)網(wǎng)絡(luò)的輸入層、隱藏層與輸出層部署位置與分散式工作模式相同,但需在云上進(jìn)行神經(jīng)網(wǎng)絡(luò)訓(xùn)練,并由終端設(shè)備層與霧處理層聯(lián)合執(zhí)行推理任務(wù)。訓(xùn)練過(guò)程中,感知設(shè)備向云端發(fā)送收集數(shù)據(jù),由云端完成BP 神經(jīng)網(wǎng)絡(luò)算法部署進(jìn)而執(zhí)行模型訓(xùn)練任務(wù),之后可獲取神經(jīng)網(wǎng)絡(luò)新權(quán)重與新閾值。在云端支持下,可實(shí)現(xiàn)各項(xiàng)參數(shù)與相應(yīng)設(shè)備的對(duì)應(yīng)設(shè)置,并可重新確定霧設(shè)備及執(zhí)行設(shè)備閾值,還能合理分配輸入層至隱藏層、隱藏層至輸出層兩段的權(quán)重。推理時(shí)數(shù)據(jù)傳送、處理與指令執(zhí)行過(guò)程均與分散式工作模式相同。
云上霧處理層會(huì)向BP 神經(jīng)網(wǎng)絡(luò)的隱藏層產(chǎn)生映射,具備隱藏神經(jīng)元功能。而執(zhí)行設(shè)備,則能輸出神經(jīng)元,二者訓(xùn)練時(shí)均需要前向與后向計(jì)算。三層BP 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)詳見(jiàn)圖2。
圖2 三層BP 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
1.3.1 隱藏神經(jīng)元功能
前向計(jì)算時(shí),霧設(shè)備會(huì)接收感知設(shè)備所傳送的數(shù)據(jù),然后執(zhí)行數(shù)據(jù)輸入與輸出任務(wù),最后再執(zhí)行設(shè)備計(jì)算后的傳送數(shù)據(jù)。分別按照如下兩個(gè)公式進(jìn)行計(jì)算隱藏層第j 個(gè)神經(jīng)元的輸入與輸出值:
式中:wij表示的是輸入層中第i 個(gè)神經(jīng)元及隱藏層第j 個(gè)神經(jīng)元間的權(quán)重大小。而oi代表的是輸入層第i個(gè)神經(jīng)元的輸出值。
后向計(jì)算時(shí),霧設(shè)備在接收到執(zhí)行設(shè)備所傳送的數(shù)據(jù)之后,會(huì)計(jì)算權(quán)重及閾值變化,再與之前的權(quán)重及閾值相加得出新的權(quán)重與閾值。計(jì)算公式為:
式中:wkj表示的是輸出層的第k 個(gè)神經(jīng)元、隱藏層第j個(gè)神經(jīng)元間的權(quán)重大小;oj表示的是隱藏層第j 個(gè)神經(jīng)元輸出,而δk與η 分別代表第k 個(gè)神經(jīng)元的殘差及學(xué)習(xí)速率。推理過(guò)程中主要采取前向計(jì)算方式,同時(shí)霧設(shè)備還能存儲(chǔ)相應(yīng)數(shù)據(jù)。
1.3.2 輸出神經(jīng)元功能
前向計(jì)算過(guò)程中,各執(zhí)行設(shè)備會(huì)向霧設(shè)備傳送所收集的數(shù)據(jù),之后按照如下公式計(jì)算第k 個(gè)神經(jīng)元的輸入值與輸出值:
后向計(jì)算過(guò)程中,則是由各執(zhí)行設(shè)備以各訓(xùn)練樣本的期望輸出為依據(jù),按公式(7)與公式(8)對(duì)權(quán)重及閾值變化展開(kāi)計(jì)算,最后將計(jì)算結(jié)果與舊權(quán)重及閾值相加得到新權(quán)重及新閾值,最后利用公式(9)計(jì)算設(shè)備殘差,并將計(jì)算結(jié)果傳送給隱藏層。訓(xùn)練模型構(gòu)建后便可進(jìn)行推理,執(zhí)行設(shè)備接收霧設(shè)備傳送的數(shù)據(jù)后會(huì)展開(kāi)輸入值與輸出值計(jì)算,且執(zhí)行設(shè)備同樣能夠存儲(chǔ)數(shù)據(jù)。
Docker 容器間通信需要利用Socket 實(shí)現(xiàn),其是TCP/IP 網(wǎng)絡(luò)通信的基礎(chǔ)單元,為不同主機(jī)間進(jìn)程雙向通信的端點(diǎn),通信雙方共同約定利用Socket 中的函數(shù)進(jìn)行通信[3]。Socket 具有三種服務(wù)特征不一且所用協(xié)議不同的通信形式,詳見(jiàn)表1。
表1 不同Socket 通信形式對(duì)比
SOCK_RAM具備內(nèi)核處理未完成IP 數(shù)據(jù)包讀取功能,在其他協(xié)議傳送數(shù)據(jù)時(shí)需要利用SOCK_RAM進(jìn)行讀取?;赟ocket 通信時(shí),首先要利用服務(wù)器監(jiān)聽(tīng),再由客戶端發(fā)出請(qǐng)求,最后連接確認(rèn)。為降低網(wǎng)絡(luò)服務(wù)程序編寫的簡(jiǎn)潔性,可采用socket server 模塊編寫程序,首先創(chuàng)建服務(wù)類及請(qǐng)求處理類,對(duì)服務(wù)類Threaded Server 對(duì)象進(jìn)行實(shí)例化處理后,向其發(fā)送服務(wù)地址及請(qǐng)求處理類,最后利用serve forever 函數(shù)處理服務(wù)請(qǐng)求。在此過(guò)程中,操作系統(tǒng)會(huì)保護(hù)socket 連接,在服務(wù)器中斷3 s 后端口才會(huì)釋放。為防止服務(wù)器重啟時(shí)端口被占用,應(yīng)將服務(wù)器地址重用設(shè)置為True。
收集數(shù)據(jù)并向霧處理層傳送是感知設(shè)備的主要功能,由于感知設(shè)備數(shù)據(jù)采集與此設(shè)備軟硬件研究存在較深的關(guān)聯(lián),因而本研究只是對(duì)感知設(shè)備的數(shù)據(jù)發(fā)送功能及向霧設(shè)備送數(shù)據(jù)的功能進(jìn)行模擬,無(wú)法深入探討其功能實(shí)現(xiàn)過(guò)程。數(shù)據(jù)傳送需要利用client 函數(shù)、采用socket 通信而實(shí)現(xiàn),此時(shí)所用的client 函數(shù)即為客戶端函數(shù)client[4]。
霧設(shè)備有三個(gè)主要功能,一是數(shù)據(jù)處理,二是數(shù)據(jù)存儲(chǔ),三是數(shù)據(jù)傳送。其功能實(shí)現(xiàn)流程詳見(jiàn)圖3。
圖3 霧設(shè)備功能實(shí)現(xiàn)流程
霧設(shè)備以JSON 格式存儲(chǔ)來(lái)自于感知與執(zhí)行設(shè)備的數(shù)據(jù),此輕量級(jí)數(shù)據(jù)交換格式具有結(jié)構(gòu)簡(jiǎn)潔、層次清晰的特征,機(jī)器解析及生成相對(duì)便利,網(wǎng)絡(luò)傳輸更加高效[5]。數(shù)據(jù)處理時(shí)會(huì)判斷數(shù)據(jù)類型,采用不同方式處理前向與后向數(shù)據(jù),前向數(shù)據(jù)需判斷數(shù)據(jù)數(shù)量是否滿足,滿足條件時(shí)實(shí)施計(jì)算并輸出計(jì)算結(jié)果,并將結(jié)果存儲(chǔ)于output.json 文件中,之后調(diào)用客戶端函數(shù)client 并向執(zhí)行設(shè)備傳送輸出數(shù)據(jù)。而后向數(shù)據(jù)則是對(duì)數(shù)據(jù)數(shù)量是否不低于神經(jīng)網(wǎng)絡(luò)輸出層神經(jīng)元數(shù)量進(jìn)行判斷,符合要求時(shí)方可計(jì)算,并將變化前后權(quán)重加總,并在i_h_weight.json 文件中存儲(chǔ)新生成的權(quán)重。還要計(jì)算閾值變化,相加新舊閾值后將得到的閾值存儲(chǔ)于threshold.json 文件中,最后要將接收到的數(shù)據(jù)反饋給客戶端。霧設(shè)備功能實(shí)現(xiàn)所需模塊見(jiàn)表2。
表2 霧設(shè)備功能實(shí)現(xiàn)所需模塊
執(zhí)行設(shè)備功能實(shí)現(xiàn)時(shí),首先要接收霧設(shè)備傳送的數(shù)據(jù),并以JSON格式存儲(chǔ)于f_input.json文件之中,之后,判斷數(shù)據(jù)數(shù)量是否達(dá)到隱藏神經(jīng)元數(shù)量要求,滿足要求時(shí),展開(kāi)輸入計(jì)算,并在output.json 文件中存儲(chǔ)輸出數(shù)據(jù),再判斷采用的是集中式還是分散式工作模式,屬于后者則需要展開(kāi)神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練,分別計(jì)算設(shè)備殘差、權(quán)重變化值,之后在h_o_weight.json 文件中存儲(chǔ)新權(quán)重。再計(jì)算新閾值并存儲(chǔ)于threshold.json 文件中,然后將神經(jīng)元?dú)埐钆c對(duì)應(yīng)權(quán)重相乘,并將得出結(jié)果傳送給霧設(shè)備。最后,將數(shù)據(jù)反饋給客戶端。執(zhí)行設(shè)備功能實(shí)現(xiàn)流程見(jiàn)圖4。
圖4 執(zhí)行設(shè)備功能實(shí)現(xiàn)流程
人工智能與物聯(lián)網(wǎng)結(jié)合應(yīng)用是物聯(lián)網(wǎng)產(chǎn)業(yè)的發(fā)展趨勢(shì),為解決傳統(tǒng)人工智能物聯(lián)網(wǎng)系統(tǒng)面臨的問(wèn)題,本研究設(shè)計(jì)了基于分散式的人工智能物聯(lián)網(wǎng)體系,此體系由云計(jì)算層、霧處理層、終端設(shè)備層三部分構(gòu)成,具有集中式、分散式兩種工作模式,且要采取不同方式及流程實(shí)現(xiàn)通信功能、感知設(shè)備功能、霧設(shè)備功能、執(zhí)行設(shè)備功能,進(jìn)而完善分散式人工智能物聯(lián)網(wǎng)體系的基礎(chǔ)功能,為此體系科學(xué)應(yīng)用奠定基礎(chǔ)。