劉 明,黃繼風(fēng),高 海
(上海師范大學(xué)信息與機電工程學(xué)院,上海201418)
實踐證明,人類行為識別技術(shù)在智能家居領(lǐng)域起著至關(guān)重要的作用.例如,更準(zhǔn)確地識別用戶的行為及其變化,使智能家居系統(tǒng)更好地為用戶提供相關(guān)幫助[1].傳統(tǒng)的行為識別方法側(cè)重于使用可穿戴式運動傳感器,如加速度計和陀螺儀來獲取用戶數(shù)據(jù).大量的已有研究[2-4]證明,加速度計與陀螺儀等運動傳感器能夠很好地識別單獨個體的動作,但無法獲取個體之外的其他信息,難以識別個體與整體環(huán)境之間的復(fù)雜交互行為.因此,研究人員開始嘗試使用圖像傳感器或聲音傳感器[5-10]來獲取用戶數(shù)據(jù),并對其行為進(jìn)行識別.
雖然基于圖像或聲音傳感器的方法均可以獲取個體與整體環(huán)境間交互的信息,能夠識別更復(fù)雜的交互行為,但是價格較高,且容易受到安裝位置、燈光、死角、像素等諸多限制.基于聲音傳感器的行為識別方法價格低廉,容易部署,不會受到燈光及死角等問題的影響,更適合于家庭環(huán)境應(yīng)用.研究人員提出了多種基于聲學(xué)的行為識別方法,從單一的可穿戴設(shè)備[6]到整體傳感器系統(tǒng)[7-8].然而,這些方法都需要對訓(xùn)練數(shù)據(jù)進(jìn)行逐幀標(biāo)注,標(biāo)注過程繁瑣,且容易受主觀因素影響,訓(xùn)練數(shù)據(jù)較少.此外,由于每個人的行為聲音存在一定差異,導(dǎo)致這些方法的準(zhǔn)確率依然較差.為了使模型能夠更準(zhǔn)確地識別特定用戶的行為,研究人員嘗試將特定用戶的行為作為訓(xùn)練數(shù)據(jù)來調(diào)整模型[9-10],這些方法需要用戶多次重復(fù)相同的行為,嚴(yán)重依賴于特定用戶的數(shù)據(jù),且只能保證對特定用戶的行為進(jìn)行準(zhǔn)確識別,泛化能力較差.
本文作者提出一種基于整體環(huán)境的聲音識別方法,能夠識別11 種常見的室內(nèi)行為,不需要人工收集訓(xùn)練數(shù)據(jù)或逐幀標(biāo)注,也不需要通過獲取特定用戶提供數(shù)據(jù)來調(diào)整模型.用數(shù)據(jù)集以及Google AudioSet數(shù)據(jù)集[11]中的YouTube 視頻聲音片段,提取embedding 特征及原始數(shù)據(jù)的梅爾頻譜圖特征作為訓(xùn)練集.由于數(shù)據(jù)集的量級較大,分類間嚴(yán)重不平衡.采用了深度強化學(xué)習(xí)方法來動態(tài)地控制每一批次數(shù)據(jù)的分布,用以解決數(shù)據(jù)不平衡問題.將數(shù)據(jù)批次作為強化學(xué)習(xí)中的環(huán)境的狀態(tài),將識別結(jié)果作為智能體的動作,把對各個行為的識別錯誤率函數(shù)作為執(zhí)行動作后獲取的獎勵信號,最終實現(xiàn)用戶的行為識別.
傳統(tǒng)的行為識別方法使用可穿戴運動傳感器,此類設(shè)備可以在智能手機[3-4]、智能手表[12-14]及可穿戴傳感器板[2]上靈活實施.KWAPISZ 等[3]的方法僅要求對象攜帶智能手機,可識別用戶步行、慢跑、上下樓、坐姿和站姿.THOMAZ 等[12]提出使用智能手表中的3 軸加速度計來檢測對象是否正在進(jìn)餐.RAVI等[2]將傳感器板安裝在人體內(nèi),實現(xiàn)簡單的運動行為識別.這些工作的重點均對非常簡單的行為動作進(jìn)行識別,可以通過增加傳感器的數(shù)量,識別更復(fù)雜的行為.然而,基于多傳感器的訓(xùn)練數(shù)據(jù)集數(shù)量較少,且識別過程需要占用大量計算資源,基于復(fù)雜傳感器陣列的識別方法難以實現(xiàn).
由于傳統(tǒng)方法的局限性,研究人員提出聲學(xué)行為識別方法.YATANI 等[15]提出使用藍(lán)牙麥克風(fēng),從人類咽喉中收集聲學(xué)數(shù)據(jù),識別進(jìn)食、說話和咳嗽等與咽喉運動相關(guān)的行為.THOMAZ 等[6]通過使用腕式聲學(xué)傳感器識別人類的進(jìn)食行為.隨著智能手機的發(fā)展,智能手機的聲學(xué)傳感器也越來越多地被用于行為識別任務(wù).一款名為AmbientSense 的Android 應(yīng)用[7],可對23 種簡單的生活環(huán)境的進(jìn)行分類.CHEN等[8]提供一種基于聲學(xué)傳感器的行為識別方法,從原始聲音數(shù)據(jù)中提取出梅爾頻率倒譜系數(shù)(MFCC)特征,并對6 種浴室中的常見行為進(jìn)行識別.這些工作都需要收集用于訓(xùn)練的數(shù)據(jù),并對原始聲音數(shù)據(jù)進(jìn)行逐幀標(biāo)注,部分模型需要特定用戶多次重復(fù)相同的行為后,才能獲取足夠的數(shù)據(jù)進(jìn)行準(zhǔn)確識別.
HWANG 等[16]開發(fā)了一個平臺用于收集用戶的聲音數(shù)據(jù),使用基于MFCC 特征的高斯直方圖生成全局K近鄰分類器,以識別基本的聲音場景.但是,該方案仍然需要收集用戶數(shù)據(jù),且識別性能很大程度上取決于已有訓(xùn)練集的大小和質(zhì)量.NGUYEN 等[9]利用半監(jiān)督學(xué)習(xí)方法將在線FreeSound 數(shù)據(jù)與用戶自己的錄音結(jié)合起來,在手動過濾離群值之后,從123 個FreeSound 聲音片段提取MFCC 特征,并進(jìn)行半監(jiān)督高斯混合模型(GMM)訓(xùn)練.
FreeSound 是一個聲音數(shù)據(jù)樣本存儲庫,有超過4.0×105聲音片段.SALAMON 等[17]從FreeSound 數(shù)據(jù)庫中選擇的18.5 h的城市聲音片段,建立了UrbanSound數(shù)據(jù)庫.S?GER等[18]在聲音的標(biāo)簽中添加形容詞和動詞,改進(jìn)了FreeSound 數(shù)據(jù)庫,并建立了AudioPairBank 數(shù)據(jù)集.ROSSI 等[10]基于高斯混合模型從FreeSound 數(shù)據(jù)庫提取MFCC 特征,并進(jìn)行環(huán)境識別,然而,由于訓(xùn)練集的大小有限(23 個行為分類僅有4 678 個聲音樣本),分類準(zhǔn)確率僅為38%,在手動過濾38%的樣本作為異常值后,分類準(zhǔn)確率達(dá)到了57%.
Google發(fā)布的聲音數(shù)據(jù)集AudioSet[11]共分為527類,所有聲音片段長度均為10 s,其標(biāo)簽為10 s內(nèi)該聲音片段中發(fā)生的所有事件,而非逐幀標(biāo)注.AudioSet數(shù)據(jù)集還提供VGGish 模型[19]提取的embedding 特征.VGGish模型將原始聲音數(shù)據(jù)按秒轉(zhuǎn)換為特征,并使用主成分分析(PCA),僅保留前128個PCA 系數(shù).一個128 維的embedding 特征向量代表1 s 的聲音片段,因此數(shù)據(jù)集內(nèi)的每個聲音片段為10 個128 維的embedding特征向量.
強化學(xué)習(xí)是近年來機器學(xué)習(xí)領(lǐng)域的研究熱點之一,是一種用自主學(xué)習(xí)的數(shù)學(xué)模型,在很多算法中起著重要的作用[20].它無需標(biāo)簽,僅僅需要執(zhí)行動作后的獎勵信號決定如何與一個動態(tài)且未知的環(huán)境進(jìn)行交互,以期將累計獎勵最大化[21].深度學(xué)習(xí)與強化學(xué)習(xí)結(jié)合,構(gòu)成了深度強化學(xué)習(xí),比如:基于深度強化學(xué)習(xí)方法的Atari2600 游戲[22]、戰(zhàn)勝了人類世界冠軍的圍棋程序AlphaGo[23]等.
在對模型進(jìn)行訓(xùn)練之前,需要先考慮如何從AudioSet數(shù)據(jù)集中選擇可以用于行為識別的標(biāo)簽,并將其與預(yù)測的行為進(jìn)行關(guān)聯(lián).FreeSound 數(shù)據(jù)庫以及AudioSet數(shù)據(jù)集中并不能同時找到所有典型的室內(nèi)行為.此外,將識別目標(biāo)限制在常見行為,且聲音容易獲取并識別的范圍內(nèi),某些標(biāo)簽未被選中,比如“睡覺”、“坐臥”、“站立”及“房間里沒有人”等.鑒于并非所有家庭都飼養(yǎng)寵物,沒有選擇任何寵物相關(guān)的類別.由于兩大數(shù)據(jù)庫對標(biāo)簽的分類設(shè)計無法與我們要識別的目標(biāo)行為絕對匹配,則采用間接匹配方法,確定與目標(biāo)行為密切相關(guān)的對象及其整體環(huán)境,并選擇這些對象和環(huán)境代表需要識別的目標(biāo)行為.例如,使用“water tap(水龍頭聲)”和“sink(水槽流水聲)”分別代表“洗手”和“洗臉”,因為這2個特征都與使用洗手池有關(guān),且非常相似.
基于上述考慮,確定了11 項常見室內(nèi)行為,將它們與13 個標(biāo)簽相關(guān)聯(lián).表1 展示了目標(biāo)行為與AudioSet標(biāo)簽之間的關(guān)聯(lián).
類別不平衡是機器學(xué)習(xí)領(lǐng)域中的一個常見的問題,具體表現(xiàn)為:數(shù)據(jù)集中某一個或幾個分類樣本的數(shù)量遠(yuǎn)低于其他分類,AudioSet類別間的分布嚴(yán)重不平衡.圖1 展示了數(shù)據(jù)集中每個類別樣本的原始數(shù)量之比例.由圖1 可以看出,演奏音樂的樣本占了近50%,這將導(dǎo)致預(yù)測結(jié)果嚴(yán)重傾向于量級高的分類,嚴(yán)重影響模型的識別性能,因此針對該問題,使用深度強化學(xué)習(xí)方法控制每一數(shù)據(jù)批次的分布,避免模型的訓(xùn)練受到數(shù)據(jù)分布不平衡的影響.
表1 AudioSet標(biāo)簽與行為的對照表
圖1 AudioSet中各分類樣本的大致分布
在強化學(xué)習(xí)中,對于當(dāng)前輸入狀態(tài)s,機器在某種策略π的指引下選擇動作a=π(s),采用狀態(tài)-動作值函數(shù)(Q值函數(shù))評估策略,其數(shù)學(xué)模型為:
其中,r為獎勵值;t為當(dāng)前行動的步數(shù);γ為衰減系數(shù),取值范圍為[0,1],是用來保證長期累積獎勵能夠趨于收斂.對式(1)進(jìn)一步推導(dǎo)可得Bellman方程:
其中,s'為狀態(tài)s下執(zhí)行動作a后轉(zhuǎn)移到的新狀態(tài);r為狀態(tài)s執(zhí)行動作a后轉(zhuǎn)移至s'時獲取的獎勵;a'為根據(jù)新的狀態(tài)所作出的新動作強化,學(xué)習(xí)任務(wù)中策略的改進(jìn)與值函數(shù)的改進(jìn)是一致的.根據(jù)式(2)求得Q(s,a)后,以策略替換π,Bellman方程變換為:
其中'Q'(s''a')為使用最優(yōu)策略π'時,所產(chǎn)生的期望累積獎勵.
每一輪中迭代的損失函數(shù)為:
其中,目標(biāo)值為:
由于在實際應(yīng)用中,對于值函數(shù)的估計太過樂觀,將yi其中的目標(biāo)改為:
本研究的深度強化學(xué)習(xí)方法總體框架如圖2 所示.該方法主要由2 個部分構(gòu)成:環(huán)境和智能體.其中,環(huán)境每次提供一定批次的數(shù)據(jù)作為狀態(tài),智能體根據(jù)狀態(tài),識別其中包括的行為,并執(zhí)行動作;環(huán)境結(jié)合樣本真實分類及智能體發(fā)出的動作進(jìn)行評價,將評價信號作為智能體獎勵信號,更新參數(shù).同時,環(huán)境如繼續(xù)提供下一批次數(shù)據(jù),則根據(jù)智能體對當(dāng)前批次樣本的識別錯誤率的比例,決定下一批次提供數(shù)據(jù)的比例.
圖2 深度強化學(xué)習(xí)流程圖
具體流程如下:
1)訓(xùn)練開始時,環(huán)境將包含多個數(shù)據(jù)樣本的批次作為狀態(tài)提供給智能體,其中各個行為的分類比例相同.
2)智能體接收到狀態(tài)后,對其中的每個數(shù)據(jù)樣本進(jìn)行識別,得出其包含的行為類別,作為動作提交給環(huán)境.
3)當(dāng)環(huán)境接收到智能體提交的動作后,計算各行為類別的識別錯誤率,并將其作為獎勵值.假設(shè)行為共分K 個類,智能體對各行為的識別錯誤率分別為C1'C2'…'CK.獎勵函數(shù)共分為兩個部分,第一個部分為對各個分類的錯誤率平方和的負(fù)值;第二部分為最低與最高分類錯誤率的差值,差值越大,說明模型的分類不平衡情況越嚴(yán)重.由此,
如果智能體連續(xù)對多個批次的預(yù)測識別錯誤率均低于預(yù)先設(shè)定的閾值,則停止訓(xùn)練;否則,決定下一批次提供的數(shù)據(jù)樣本的分類比例.假設(shè)每批次提供N 個樣本,則下一批次提供的第k個分類的樣本數(shù)
深度學(xué)習(xí)網(wǎng)絡(luò)是卷積神經(jīng)網(wǎng)絡(luò)(CNN)與長短期記憶(LSTM)網(wǎng)絡(luò)的結(jié)合,其輸入共分為兩個部分:1)原始數(shù)據(jù)的梅爾頻譜圖,統(tǒng)一截取為1 024×512 的格式;2)embedding 特征,格式為10×128,第一個維度代表時間,第二個維度代表特征.為了方便使用2維卷積神經(jīng)網(wǎng)絡(luò),將數(shù)據(jù)樣本的格式轉(zhuǎn)換為3維,并使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)一步提取與時間及特征均相關(guān)的更抽象的關(guān)系.為了防止梯度爆炸的同時,保留更加精細(xì)的特征,網(wǎng)絡(luò)結(jié)構(gòu)中未使用池化層,僅在卷積層后進(jìn)行批量歸一化,使用LSTM 網(wǎng)絡(luò)提取時序相關(guān)的信息,網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示,輸出層參考KONG 等[24]提出的attention model 層,以實現(xiàn)網(wǎng)絡(luò)的多分類預(yù)測功能.
圖3 智能體內(nèi)部神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
該深度強化學(xué)習(xí)模型在Ubuntu 16.04 系統(tǒng)平臺上訓(xùn)練和測試,基于Google 的TensorFlow 框架,使用Keras深度學(xué)習(xí)程序包與Python 3.6開發(fā)軟件,使用NVDIA GTX 1070加速實驗.
選取樣本51 360 條,其中訓(xùn)練集樣本數(shù)量為45 310 條,測試集樣本數(shù)量為6 050 條.數(shù)據(jù)的原始形式為以10 s 為單位的聲音片段,訓(xùn)練數(shù)據(jù)集為音頻的梅爾頻譜圖,以及使用VGGish 模型從原始數(shù)據(jù)集中提取的embedding 特征,embedding 特征數(shù)據(jù)的信號采樣統(tǒng)一為128 Hz.模型訓(xùn)練參數(shù)如下:學(xué)習(xí)率為0.000 1,mini-batch 大小為64,迭代次數(shù)為1 000,衰減系數(shù)γ 為0.9,采用Adam 算法訓(xùn)練網(wǎng)絡(luò),損失函數(shù)為分類交叉熵.
在訓(xùn)練集上進(jìn)行10 次交叉驗證,將其取平均值作為最終測試結(jié)果,驗證模型的泛化能力.本方法與傳統(tǒng)的合成少數(shù)類過采樣技術(shù)(SMOTE)方法在相同網(wǎng)絡(luò)結(jié)構(gòu)下,總體分類準(zhǔn)確率如表2所示.
從表2 可以看出,在解決分類不均衡問題上,本方法比SMOTE 方法效果更好.采用不同結(jié)構(gòu)及過采樣解決方法在分類準(zhǔn)確率上相差較大,說明神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程中,學(xué)習(xí)到了一些特征,有助于降低數(shù)據(jù)不平衡對模型帶來的影響.
實驗結(jié)果如圖4 所示,本方法的總體識別準(zhǔn)確率達(dá)到了87.5%,對每個行為的識別準(zhǔn)確率均超過了83%.
表2 本方法與過采樣方法的分類準(zhǔn)確率結(jié)果對比
由于AudioSet 數(shù)據(jù)集本身存在的分類嚴(yán)重不平衡問題,本文作者設(shè)計了基于深度強化學(xué)習(xí)思想的訓(xùn)練方法,對于每一批次的預(yù)測結(jié)果,動態(tài)地調(diào)整下一批次的數(shù)據(jù)分類占比,避免了由數(shù)據(jù)集的分類不平衡問題對模型分類效果造成的影響.通過大量交叉實驗證明,本方法的總體分類準(zhǔn)確度達(dá)到87.5%,對所有分類的準(zhǔn)確度都在83%以上.相較于SMOTE 方法,本方法準(zhǔn)確率達(dá)到預(yù)期效果,且不需要采集用戶數(shù)據(jù),能夠達(dá)到對聲學(xué)行為進(jìn)行分類的目的.
圖4 在測試集上的識別結(jié)果