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