高建清, 陳星娥
(福建江夏學(xué)院 電子信息科學(xué)學(xué)院, 福建 福州 350108)
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展, 各種智能產(chǎn)品在家庭環(huán)境中得到廣泛應(yīng)用。 在智能家居中, 通過(guò)非視覺(jué)傳感器而不是攝像頭來(lái)采集數(shù)據(jù)和識(shí)別用戶(hù)的行為, 有助于消除用戶(hù)隱私方面的顧慮, 也不受光線(xiàn)條件的影響。 而人口老齡化也是當(dāng)前社會(huì)面臨的問(wèn)題, 提高智能家居環(huán)境中的用戶(hù)行為識(shí)別的效率和準(zhǔn)確性, 可以提升老年人的用戶(hù)體驗(yàn), 減少護(hù)理成本[1-4]。
基于傳感器的用戶(hù)行為識(shí)別主要有數(shù)據(jù)驅(qū)動(dòng)和知識(shí)驅(qū)動(dòng)兩種方法[5]。 常見(jiàn)的數(shù)據(jù)驅(qū)動(dòng)方法包括樸素貝葉斯( Naive Bayes)、 支持向量機(jī)(SVM)、 隱馬爾可夫模型(HMM)、 條件隨機(jī)場(chǎng)(CRF)以及神經(jīng)網(wǎng)絡(luò)(Neural Network) 等。 鞏莉提出了一種基于改進(jìn)的支持向量機(jī)模型( CSSVM)的日常行為識(shí)別算法, 比單獨(dú)核函數(shù)的性能更好[6]。 仝鈺采用了基于特征合并的條件隨機(jī)場(chǎng)行為識(shí)別方法, 提高了模型訓(xùn)練效率和行為識(shí)別的準(zhǔn)確性[3]。 包曉安等提出了一種以基于長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM) 改進(jìn)的遞歸神經(jīng)網(wǎng)絡(luò)模型, 預(yù)測(cè)準(zhǔn)確度高于誤差反向傳播神經(jīng)網(wǎng)絡(luò)(BP)模型與遞歸神經(jīng)網(wǎng)絡(luò)(RNN)模型[7]。 薛銘龍等提出一種引入懲罰項(xiàng)的隨機(jī)森林算法, 具有更高的分類(lèi)精度與噪聲魯棒性[8]。 數(shù)據(jù)驅(qū)動(dòng)方法能夠處理不確定性和時(shí)間信息, 但需要大量數(shù)據(jù)集進(jìn)行訓(xùn)練和學(xué)習(xí)。 知識(shí)驅(qū)動(dòng)方法通過(guò)構(gòu)建日常行為領(lǐng)域知識(shí)庫(kù), 采用本體或者規(guī)則的形式進(jìn)行行為建模和推理。 Chen 等在領(lǐng)域?qū)<蚁闰?yàn)知識(shí)的基礎(chǔ)上, 使用基于邏輯的方法進(jìn)行行為識(shí)別[9]。 蘇雷等改進(jìn)了馬爾可夫邏輯網(wǎng)絡(luò)中勢(shì)函數(shù)的計(jì)算方法, 對(duì)于包含錯(cuò)誤的數(shù)據(jù)集也能達(dá)到較高的準(zhǔn)確率[10]。 知識(shí)驅(qū)動(dòng)方法易于理解和使用, 但是不能處理不確定性和時(shí)間信息。
近年來(lái), 在計(jì)算機(jī)視覺(jué)、 音頻和語(yǔ)音識(shí)別等應(yīng)用中, 深度學(xué)習(xí)技術(shù)已經(jīng)超過(guò)了其他機(jī)器學(xué)習(xí)算法[11]。 深度學(xué)習(xí)是神經(jīng)網(wǎng)絡(luò)方法的總稱(chēng), 它基于對(duì)原始數(shù)據(jù)的學(xué)習(xí)表示, 包含多個(gè)隱藏層。 針對(duì)序列化的數(shù)據(jù)常用的神經(jīng)網(wǎng)絡(luò)有RNN[5]、 LSTM 以及門(mén)控循環(huán)單元(GRU)[12], GRU 比LSTM 結(jié)構(gòu)更簡(jiǎn)單, 訓(xùn)練速度更快, 因此本文提出一種基于GRU的神經(jīng)網(wǎng)絡(luò)模型來(lái)進(jìn)行用戶(hù)行為的識(shí)別。
新一代的循環(huán)神經(jīng)網(wǎng)絡(luò)GRU, 是RNN 體系結(jié)構(gòu)的一種變體, 使用門(mén)控制機(jī)制來(lái)控制和管理神經(jīng)網(wǎng)絡(luò)中細(xì)胞之間的信息流, 解決了傳統(tǒng)RNN 的梯度消失或者爆炸問(wèn)題。 GRU 的結(jié)構(gòu)允許網(wǎng)絡(luò)自適應(yīng)地從大量數(shù)據(jù)序列中捕獲依賴(lài)項(xiàng),而不丟棄序列早期部分的信息。 GRU 與LSTM很相似, 但是去掉了細(xì)胞狀態(tài), 直接使用隱藏狀態(tài)來(lái)進(jìn)行信息的傳遞。 GRU 只包含重置門(mén)和更新門(mén), 其單元網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。
圖1 GRU 單元網(wǎng)絡(luò)結(jié)構(gòu)
重置門(mén)用于決定遺忘先前信息的程度, 如圖1 中的rt, rt向前傳播的計(jì)算如式(1) 所示:
式(1)中: σ 為激活函數(shù), 例如sigmoid 函數(shù), 用來(lái)將值壓縮到0 和1 之間, 為0 則表示這部分信息會(huì)被遺忘, 而為1 則表示信息會(huì)被保存下來(lái);ht-1是前一步的隱藏狀態(tài)值, xt為當(dāng)前的輸入數(shù)據(jù), Wr為重置門(mén)的連接參數(shù)矩陣。
更新門(mén)用于決定要忘記哪些信息和哪些新信息需要被保留, 如圖1 中的zt, zt向前傳播的計(jì)算如式(2)所示:
式(2)中, Wz為更新門(mén)的連接參數(shù)矩陣。
候選集ht?的計(jì)算方法如式(3) 所示:
式(3)中, Wh為候選集連接參數(shù)矩陣, tanh 函數(shù)用來(lái)將值始終限制在-1 和1 之間。
下一步的隱藏狀態(tài)值ht的計(jì)算方法如式(4)所示:
式(5)中, Wo為輸出連接參數(shù)矩陣。
智能家居用戶(hù)行為識(shí)別過(guò)程一般包括數(shù)據(jù)采集、 數(shù)據(jù)預(yù)處理、 模型建立與訓(xùn)練、 行為識(shí)別5個(gè)步驟。 數(shù)據(jù)集可以通過(guò)傳感器設(shè)備進(jìn)行采集,也可以采用公開(kāi)的數(shù)據(jù)集。 原始數(shù)據(jù)需要經(jīng)過(guò)預(yù)處理, 解決數(shù)據(jù)冗余、 缺失、 格式非法等問(wèn)題。此外, 由于使用模型的不同, 提取的數(shù)據(jù)特征也會(huì)不相同, 數(shù)據(jù)也必須經(jīng)過(guò)處理后才能輸入模型。 對(duì)于數(shù)據(jù)序列的分割處理, 常見(jiàn)的方法有基于行為的窗口、 基于時(shí)間的窗口以及基于傳感器的窗口[6], 本文采用了基于時(shí)間的窗口分割方法。
美國(guó)華盛頓大學(xué)的CASAS 數(shù)據(jù)集[13]( http:∥casas.wsu.edu / datasets/)是一種公開(kāi)的基于傳感器的智能家居用戶(hù)行為數(shù)據(jù)集, 本文選取其中的Milan 數(shù)據(jù)集作為實(shí)驗(yàn)數(shù)據(jù)。 該數(shù)據(jù)集記錄了一位女性志愿者和一條狗在公寓里面3 個(gè)月期間的日常行為傳感器數(shù)據(jù), 其中包含門(mén)、 運(yùn)動(dòng)以及溫度3 種類(lèi)型的傳感器共33 個(gè), 包含Master-Bedroom-Activity、 Bed-to-Toilet、 Sleep、 Morning-Meds、 Watch- TV、 Kitchen- Activity、 Chores、Leave- Home、 Read、 Guest- Bathroom、 Master-Bathroom、 Desk-Activity、 Eve- Meds、 Meditate 以及Dining-Rm-Activity 共15 種行為, 其數(shù)據(jù)格式如圖2 所示。
圖2 Milan 數(shù)據(jù)集格式
數(shù)據(jù)集中的行為標(biāo)注為文本形式不利于分類(lèi)處理, 因此對(duì)所有的行為依次采用0 到14 進(jìn)行編號(hào)。 每一種行為的標(biāo)注有開(kāi)始和結(jié)束時(shí)間, 而行為識(shí)別重點(diǎn)關(guān)注的是行為何時(shí)開(kāi)始執(zhí)行。 數(shù)據(jù)中所有包含“begin” 的行為標(biāo)注的時(shí)間點(diǎn)就是行為的觸發(fā)時(shí)刻, 提取出所有這些時(shí)刻的行為數(shù)據(jù), 并把行為編號(hào)作為樣本的標(biāo)簽值。
數(shù)據(jù)集中出現(xiàn)了3 種異常的傳感器數(shù)據(jù)“ON0” “ON`” “O”, 需要全部替換為“ON”。門(mén)和運(yùn)動(dòng)的傳感器記錄數(shù)據(jù)包含打開(kāi)狀態(tài)的“ON” 和 “ OPEN”、 關(guān)閉狀態(tài)的 “ OFF” 和“CLOSE”, 全部轉(zhuǎn)為數(shù)值表示, 打開(kāi)狀態(tài)用1表示, 關(guān)閉狀態(tài)用0 表示。 而溫度傳感器的數(shù)據(jù)是實(shí)際溫度值, 需要進(jìn)行歸一化處理, 采用式(6)進(jìn)行計(jì)算:
式(6)中: t 為當(dāng)前時(shí)間的溫度值, tmax和tmin分別為數(shù)據(jù)集中的最大溫度值和最小溫度值。 換算后的溫度值再與閾值0.5 比較, 大于閾值的為1,否則為0。
接著, 對(duì)于兩個(gè)行為之間的各個(gè)時(shí)間點(diǎn)的傳感器數(shù)據(jù)進(jìn)行合并處理, 以33 維的特征值來(lái)表示, 每個(gè)特征值為1 或者0。 合并后只保留行為觸發(fā)時(shí)刻的傳感器值, 與行為標(biāo)簽一一對(duì)應(yīng), 而其他時(shí)刻只做傳感器值的更新。 經(jīng)過(guò)處理后的某個(gè)時(shí)刻的傳感器數(shù)據(jù)用xt表示, 則xt={s0, s1,…, sm} , 其中0 ≤m ≤32, sm的值為1 或者0。樣本數(shù)據(jù)用at表示, 則at={xt, yt} , 其中0 ≤yt≤14, 表示該時(shí)刻對(duì)應(yīng)的行為編號(hào)。
基于GRU 的行為識(shí)別神經(jīng)網(wǎng)絡(luò)模型包含了2 層的GRU 神經(jīng)網(wǎng)絡(luò), 128 個(gè)隱藏節(jié)點(diǎn), 以及一個(gè)全連接層, 如圖3 所示。 GRU 神經(jīng)網(wǎng)絡(luò)對(duì)序列數(shù)據(jù)進(jìn)行預(yù)測(cè)時(shí), 可以設(shè)定序列數(shù)據(jù)的窗口大小, 本文選取的窗口大小為3。 如果用Xt表示當(dāng)前的輸入數(shù)據(jù), Yt表示當(dāng)前期望輸出, 則Xt={at-2, at-1, at}, Yt={yt} 。 因此, 輸入層的數(shù)據(jù)為1*3*33 的三維張量, 也就是每批一個(gè)樣本, 樣本里面有3 個(gè)時(shí)間點(diǎn)的33 維的傳感器特征值。 GRU 神經(jīng)網(wǎng)絡(luò)輸出的隱藏狀態(tài)的值作為下一步的部分輸入數(shù)據(jù), 實(shí)現(xiàn)網(wǎng)絡(luò)的記憶功能,而當(dāng)前的網(wǎng)絡(luò)輸出結(jié)果通過(guò)Softmax 函數(shù)實(shí)現(xiàn)離散化概率分布, 再通過(guò)全連接層輸出1*15 的二維張量。 輸出二維張量中的第二維的15 個(gè)數(shù)值,表示每一種行為的預(yù)測(cè)概率, 最大值的下標(biāo)即為預(yù)測(cè)結(jié)果, 也就是對(duì)應(yīng)行為的編號(hào)。
圖3 基于GRU 的行為識(shí)別神經(jīng)網(wǎng)絡(luò)模型
因?yàn)槭嵌喾诸?lèi)輸出, 所以網(wǎng)絡(luò)模型預(yù)測(cè)效果的衡量采用了交叉熵?fù)p失函數(shù), 該網(wǎng)絡(luò)模型訓(xùn)練2 000 步的loss 值的變化情況如圖4 所示, 可見(jiàn)網(wǎng)絡(luò)模型的loss 值在500 步左右就能很快地下降到較低點(diǎn), 對(duì)于訓(xùn)練集已經(jīng)能夠達(dá)到較好的預(yù)測(cè)結(jié)果。 網(wǎng)絡(luò)的梯度更新規(guī)則采用了RMSProp 優(yōu)化器, 克服在更新中擺動(dòng)幅度過(guò)大的問(wèn)題, 進(jìn)一步加快收斂速度。
圖4 loss 值變化曲線(xiàn)圖
通過(guò)對(duì)Milan 數(shù)據(jù)集的預(yù)處理, 并去掉剛開(kāi)始時(shí)部分傳感器未有值的數(shù)據(jù), 得到22 278 個(gè)樣本數(shù)據(jù)。 按照時(shí)間順序選取其中的20%作為測(cè)試數(shù)據(jù), 剩下的80%作為訓(xùn)練數(shù)據(jù), 測(cè)試和訓(xùn)練的樣本個(gè)數(shù)分別為455 和1 823。
為了測(cè)試行為識(shí)別的效果, 本文采用Precision、 Recall、 F-Measure 和Accuracy 等4 個(gè)指標(biāo)來(lái)衡量, 各個(gè)指標(biāo)的計(jì)算方法如下:
式(6) ~(9) 中: TP 代表正確識(shí)別的個(gè)數(shù)、 FP代表錯(cuò)誤識(shí)別的個(gè)數(shù)、 FN 代表沒(méi)有識(shí)別出的個(gè)數(shù), Total 為總的樣本數(shù)。 Precision、 Recall 和FMeasure3 個(gè)指標(biāo)是先對(duì)每一個(gè)行為的識(shí)別結(jié)果進(jìn)行計(jì)算, 然后再按照每一個(gè)行為的樣本比例進(jìn)行加權(quán)平均, 而Accuracy 指標(biāo)是對(duì)所有行為的識(shí)別結(jié)果進(jìn)行計(jì)算。
實(shí)驗(yàn)環(huán)境采用python 開(kāi)發(fā)語(yǔ)言, 結(jié)合pytorch神經(jīng)網(wǎng)絡(luò)框架來(lái)實(shí)現(xiàn)基于GRU 的行為識(shí)別神經(jīng)網(wǎng)絡(luò)模型算法( 本文算法) 和RNN 算法, 使用Sklearn 機(jī)器學(xué)習(xí)工具包來(lái)實(shí)現(xiàn)Naive Bayes 與SVM 算法。 GRU 和RNN 算法的輸入窗口大小為3, 輸入特征維數(shù)input- size 為33, 批次大小batch-size 為1, dropout 為0.2, 隱層單元個(gè)數(shù)hidden-size 為128, 層數(shù)num- layers 為2, 輸入大小output- size 為15, 學(xué)習(xí)率learn- rate 為0.0003。 Naive Bayes 算法采用多項(xiàng)式模型, 參數(shù)alpha 設(shè)置為1.0。 SVM 算法采用高斯核函數(shù)和一對(duì)多策略, C 值為1.0, gamma 值為0.5。
4 種算法對(duì)各種行為識(shí)別的F-Measure 值如圖5 所示, Naive Bayes 有5 種行為未能識(shí)別,SVM 有3 種行為未能識(shí)別, 而RNN 算法和GRU只有兩種行為不能識(shí)別。 本文算法有7 種行為的識(shí)別效果優(yōu)于其他方法, 而RNN 算法和SVM 算法都只有3 種行為的識(shí)別效果比其他方法好。 4種算法的平均識(shí)別效果如表 1 所示, 從Precision、 Recall、 F-Measure 和Accuracy 等4 個(gè)衡量指標(biāo)來(lái)看, 本文算法都比其他算法更好。
表1 四種方法的識(shí)別效果對(duì)比
圖5 4 種方法的各種行為識(shí)別的F-Measure 值對(duì)比
基于GRU 的行為識(shí)別神經(jīng)網(wǎng)絡(luò)模型能夠記憶具有時(shí)序特征的傳感器數(shù)據(jù), 通過(guò)對(duì)預(yù)處理后的智能家居行為數(shù)據(jù)集的對(duì)比實(shí)驗(yàn), 本文算法的識(shí)別效果優(yōu)于Naive Bayes、 SVM 以及RNN 算法。采用神經(jīng)網(wǎng)絡(luò)方法可以不用通過(guò)先驗(yàn)知識(shí)去分析和提取數(shù)據(jù)特征, 適應(yīng)性更強(qiáng), 但是也存在訓(xùn)練時(shí)間較長(zhǎng)的問(wèn)題。 本文算法和RNN 訓(xùn)練2000 步的用時(shí)分別為7 h 和9 h 左右, 而Naive Bayes 與SVM 在1 s 以?xún)?nèi)就能完成。 此外, 本文只研究了智能家居環(huán)境中的單用戶(hù)行為的識(shí)別方法, 下一步將繼續(xù)改進(jìn)模型, 進(jìn)行多用戶(hù)行為以及異常行為等方面的識(shí)別研究。