戴玉寬,喻昕
南京工程學(xué)院,江蘇南京,211167
智能家居目前還是一個(gè)較為新興的產(chǎn)業(yè),雖然已經(jīng)走過(guò)了概念普及的階段,但是由于發(fā)展緩慢的問(wèn)題,各方面技術(shù)還不是很成熟。目前絕大多數(shù)的智能家居系統(tǒng)都是需要在移動(dòng)電子設(shè)備上安裝相應(yīng)的客戶端,人為地去設(shè)置和觸發(fā),來(lái)做到“代替遙控”,并不能做到完全的“智能”。同時(shí)也有一些廠商為了營(yíng)造噱頭,促進(jìn)產(chǎn)品的銷(xiāo)量,在新品上濫用“智能”之名,不僅對(duì)消費(fèi)者造成了一些誤導(dǎo),也影響了整體智能家居產(chǎn)業(yè)的發(fā)展環(huán)境[1]。
因此,智能家居產(chǎn)業(yè)的發(fā)展,需要智能化水平的不斷提高,來(lái)減少人為的干預(yù)[2]。這就需要系統(tǒng)擁有自學(xué)習(xí)的能力,這里需要有大量的傳感器來(lái)發(fā)揮作用,同時(shí)也需要一個(gè)合理且好用的人工智能系統(tǒng)作為“主腦”來(lái)通過(guò)不同的家電,對(duì)整體家居環(huán)境進(jìn)行智能化的控制。這樣才會(huì)給消費(fèi)者帶來(lái)“智能”的感受。
研究旨在從人工智能控制系統(tǒng)的角度出發(fā),通過(guò)使用BP神經(jīng)網(wǎng)絡(luò)算法,對(duì)智能家居領(lǐng)域進(jìn)行建模和分析,嘗試提升該領(lǐng)域的智能化程度。
BP神經(jīng)網(wǎng)絡(luò)是一種模擬人類(lèi)大腦認(rèn)識(shí)事物過(guò)程的一種網(wǎng)絡(luò)結(jié)構(gòu),由輸入層、隱藏層和輸入層三個(gè)層次的“神經(jīng)元”組成[3]。
BP神經(jīng)網(wǎng)絡(luò)算法由正向傳播、反向傳播以及權(quán)重更新三個(gè)過(guò)程組成。在正向傳播過(guò)程中,輸入信息從輸入層出發(fā),經(jīng)隱層單元處理后,傳至輸出層。每一層神經(jīng)元的狀態(tài)變化,只會(huì)影響到下一層神經(jīng)元的狀態(tài)。如果在輸出層沒(méi)有獲得期望輸出,則誤差信號(hào)被反轉(zhuǎn),即沿著神經(jīng)元的連接路徑返回,同時(shí)通過(guò)修改各層神經(jīng)元之間的連接權(quán)重,使誤差信號(hào)達(dá)到最小。直到神經(jīng)網(wǎng)絡(luò)輸出的誤差縮小到了設(shè)定的程度,或者訓(xùn)練到了預(yù)先設(shè)定的學(xué)習(xí)次數(shù)為止[4]。
該模型把一組樣本輸入輸出的函數(shù)問(wèn)題轉(zhuǎn)換為了一個(gè)非線性優(yōu)化問(wèn)題,并使用了優(yōu)化技術(shù)中最為普遍的梯度下降法。由于該算法本身并不是研究要點(diǎn),故不多贅述。
1.2.1 相關(guān)變量模型的建立
智能家居的用戶數(shù)量眾多,不同用戶會(huì)做出各種不同的行為,為了簡(jiǎn)化數(shù)學(xué)模型,研究需要將用戶在日常生活中的一系列環(huán)境變量進(jìn)行數(shù)據(jù)化和預(yù)處理,模型在初始階段可以簡(jiǎn)單地設(shè)立幾個(gè)不同的獨(dú)立項(xiàng)目,例如觀看電視節(jié)目、室內(nèi)溫濕度調(diào)節(jié)、室內(nèi)燈光模式、空調(diào)熱水器設(shè)置等。
系統(tǒng)采集的數(shù)據(jù)是通過(guò)布置在家庭環(huán)境中的,包括電器內(nèi)和電器外的傳感器,經(jīng)過(guò)分門(mén)別類(lèi)的收集得到的。這些數(shù)據(jù)一方面反映了當(dāng)前環(huán)境中客觀信息的變化,另一方面也反映了不同用戶之間行為習(xí)慣的差距。根據(jù)這些數(shù)據(jù),系統(tǒng)可以在一定程度上推測(cè)出當(dāng)前用戶所需的狀態(tài),自動(dòng)對(duì)相應(yīng)的家居產(chǎn)品進(jìn)行控制調(diào)節(jié),從而做到減少用戶的操作量,解放用戶雙手的效果。
整體建模首先要做的就是對(duì)各個(gè)數(shù)據(jù)的預(yù)處理。在一開(kāi)始缺乏實(shí)際數(shù)據(jù)的情況下,研究會(huì)使用一些模擬數(shù)據(jù)來(lái)訓(xùn)練一個(gè)相對(duì)通用性的神經(jīng)網(wǎng)絡(luò),以獲得部分基礎(chǔ)的參數(shù),這樣在后期用大量數(shù)據(jù)集進(jìn)行訓(xùn)練的時(shí)候就可以減少調(diào)參的步驟。首先考慮從某些特定的方面出發(fā),例如空調(diào)溫控模式的調(diào)整、家里照明設(shè)備的自動(dòng)開(kāi)關(guān)等等,來(lái)進(jìn)行基本的建模和訓(xùn)練。
經(jīng)過(guò)簡(jiǎn)短的頭腦風(fēng)暴之后,我總結(jié)了一些可能性的輸入層參數(shù),以空調(diào)系統(tǒng)為例,系統(tǒng)需要獲取到當(dāng)前房間各個(gè)位置的溫濕度、室外的溫濕度、當(dāng)前的季節(jié)、房間內(nèi)是否有人等。其中部分客觀數(shù)據(jù)不需要納入考慮,例如日期和時(shí)間。日期的學(xué)習(xí)周期太長(zhǎng),且日期與日期之間很難產(chǎn)生一些具體的共通性作為實(shí)際的參考,因此用日期作為參量來(lái)訓(xùn)練沒(méi)有太大意義;而系統(tǒng)自身的狀態(tài)原本就是跟隨時(shí)間的變化而變化,因此把時(shí)間再作為參數(shù)納入訓(xùn)練的話,是沒(méi)有必要的。
接下來(lái)就是用于訓(xùn)練時(shí)效果反饋的輸出層參數(shù),這些參數(shù)會(huì)作為當(dāng)前神經(jīng)網(wǎng)絡(luò)訓(xùn)練預(yù)測(cè)值的參考,來(lái)促使神經(jīng)元的參數(shù)進(jìn)行調(diào)整。輸出層的值同時(shí)關(guān)乎到之后各類(lèi)家居系統(tǒng)的控制,這里同樣還是以空調(diào)系統(tǒng)為例,當(dāng)前的系統(tǒng)要納入考慮的就是空調(diào)的溫度和風(fēng)速、空調(diào)的運(yùn)轉(zhuǎn)模式,以及掃風(fēng)模式等等。這樣就完成了原始變量模型的建立。
1.2.2 激活函數(shù)
由于神經(jīng)網(wǎng)絡(luò)需要有能夠近似于任何非線性函數(shù)的能力,因此需要使用一個(gè)激活函數(shù)來(lái)加入非線性因子。BP神經(jīng)網(wǎng)絡(luò)常用Sigmoid函數(shù)或線性函數(shù)來(lái)作為激活函數(shù),訓(xùn)練所用的數(shù)據(jù)需要把整個(gè)實(shí)數(shù)域的范圍映射到(0,1)區(qū)間內(nèi),因此采用Log-Sigmoid函數(shù),如下式:
其中e為自然對(duì)數(shù),x為實(shí)際的測(cè)量值,f(x)為參與神經(jīng)網(wǎng)絡(luò)訓(xùn)練的輸入值。由于Sigmoid函數(shù)也是可微的,所以也就能夠使用最速下降法來(lái)優(yōu)化各權(quán)值,使神經(jīng)網(wǎng)絡(luò)能夠進(jìn)行較為高效的迭代學(xué)習(xí)收斂[5]。
1.2.3 不可量化數(shù)據(jù)的處理
對(duì)于不可量化的數(shù)據(jù),經(jīng)過(guò)一些研究和思考,本文提出了幾種映射方案,其中比較典型的是以下兩種:
(1)用所有狀態(tài)對(duì)(0,1)區(qū)間做一個(gè)均分,例如空調(diào)有制冷、制熱、除濕、換氣四種模式,均分后對(duì)應(yīng)分別轉(zhuǎn)換為0.0001、0.3333、0.6666、0.9999,這些數(shù)據(jù)用于輸入。經(jīng)過(guò)模擬推測(cè)輸出的數(shù)據(jù)則會(huì)就近轉(zhuǎn)換到四種模式上。
(2)考慮到空調(diào)模式和當(dāng)前的季節(jié)有著密切的關(guān)系,由此其實(shí)不需要運(yùn)用到BP網(wǎng)絡(luò)預(yù)測(cè),直接根據(jù)夏季制冷、冬季制熱的常識(shí)來(lái)實(shí)現(xiàn)模式調(diào)節(jié)。
對(duì)第一種模式進(jìn)行了仔細(xì)研究并結(jié)合實(shí)際合理推測(cè)之后,判定該映射方式不合理。理由是空調(diào)的運(yùn)轉(zhuǎn)模式有著一段時(shí)間內(nèi)的高度趨同性,且邏輯較為簡(jiǎn)單,因此不適合用歷史數(shù)據(jù)來(lái)訓(xùn)練,否則會(huì)出現(xiàn)夏天訓(xùn)練的模型經(jīng)過(guò)秋天之后,在冬天一開(kāi)始會(huì)偏向制冷,反之冬天訓(xùn)練的模型在夏天會(huì)偏向制熱這種情況。因此針對(duì)這個(gè)數(shù)據(jù)選擇第二種模式,也就是直接通過(guò)常規(guī)邏輯,將數(shù)據(jù)和其他客觀參數(shù)直接掛鉤的方式。
訓(xùn)練過(guò)程中每一個(gè)不可量化數(shù)據(jù)都需要進(jìn)行逐個(gè)的考量,這樣大部分?jǐn)?shù)據(jù)都確立下了一種對(duì)應(yīng)模式。另外考慮到由于不同家居電器的模式和參數(shù)類(lèi)型大體都不一樣,例如空調(diào)和電視,由此將不同設(shè)備的神經(jīng)網(wǎng)絡(luò)分開(kāi)訓(xùn)練。
這里可以使用一個(gè)例子來(lái)說(shuō)明客觀條件轉(zhuǎn)化到數(shù)據(jù)的邏輯,假設(shè)用戶3月4日星期六16點(diǎn)20分開(kāi)啟了編號(hào)為2的空調(diào),制冷模式,溫度為26℃,此時(shí)室溫有3個(gè)測(cè)量點(diǎn),分別為28℃,27℃和28℃,紅外傳感器探測(cè)到房間內(nèi)有人。下面按照之前規(guī)定的邏輯把這些數(shù)據(jù)一一歸一化。
首先是前面的日期和時(shí)間,按照規(guī)定不進(jìn)行轉(zhuǎn)化;編號(hào)為2,用于判定具體使用的模型;制冷模式和季節(jié)直接相關(guān),也不會(huì)納入BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,因此神經(jīng)網(wǎng)絡(luò)的輸出端訓(xùn)練數(shù)據(jù)僅有一個(gè)設(shè)定的目標(biāo)溫度,而輸入數(shù)據(jù)則包括了房間內(nèi)的三個(gè)室溫測(cè)量點(diǎn),其中紅外傳感器作為一項(xiàng)不可量化的數(shù)據(jù),其目的是做到感應(yīng)式控制,在檢測(cè)到房間內(nèi)一段時(shí)間沒(méi)有人之后,系統(tǒng)可以根據(jù)用戶的設(shè)置,自動(dòng)關(guān)閉空調(diào)或者調(diào)高空調(diào)的溫度,以達(dá)到減少能源浪費(fèi)的效果。
這樣就轉(zhuǎn)化成功了一組樣本數(shù)據(jù),待研究已經(jīng)獲取到足夠多組的數(shù)據(jù)的時(shí)候,就可以把這些樣本數(shù)據(jù)作為訓(xùn)練的數(shù)據(jù)集,輸入到BP神經(jīng)網(wǎng)絡(luò)模型中進(jìn)行訓(xùn)練,其中一部分?jǐn)?shù)據(jù)可以作為期望輸出值來(lái)進(jìn)行誤差分析,來(lái)對(duì)當(dāng)前的神經(jīng)網(wǎng)絡(luò)的精度做出評(píng)估。這樣就可以建立起較為合理的數(shù)據(jù)集了。
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)包括網(wǎng)絡(luò)層數(shù)的設(shè)計(jì)和各層包括的神經(jīng)元數(shù)目的選取兩個(gè)方面。一個(gè)BP神經(jīng)網(wǎng)絡(luò)一定具有一個(gè)輸入層和一個(gè)輸出層,其中輸入層和輸出層節(jié)點(diǎn)的個(gè)數(shù)是由實(shí)際問(wèn)題本身決定的,因此,網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)重點(diǎn)與難點(diǎn)在于隱層結(jié)構(gòu)的設(shè)計(jì),即隱層的數(shù)量以及各隱層中神經(jīng)元的數(shù)量。
隱層結(jié)構(gòu)在很大程度上決定著B(niǎo)P網(wǎng)絡(luò)的訓(xùn)練速度和泛化能力。對(duì)于隱層的層數(shù),理論上已經(jīng)證明,只要隱層神經(jīng)元的數(shù)目足夠多,三層BP神經(jīng)網(wǎng)絡(luò)就能夠模擬任意復(fù)雜度的非線性映射[6]。因此,一般采用一個(gè)隱層的BP神經(jīng)網(wǎng)絡(luò)即可。對(duì)于隱層神經(jīng)元數(shù)目的選擇,我們采用一般的估算方法,估算公式如下:
其中l(wèi)為隱層神經(jīng)元數(shù)目,n為輸入層神經(jīng)元數(shù)目,m為輸出層神經(jīng)元數(shù)目,β為1~10之間的常數(shù),此處經(jīng)過(guò)實(shí)驗(yàn)設(shè)計(jì),隱層神經(jīng)元數(shù)目為10時(shí)效果最好。學(xué)習(xí)速率η的選擇比較重要,η值越大,權(quán)值的變化就越大,學(xué)習(xí)的收斂速度也就越快,但η值過(guò)大容易引起振蕩,即導(dǎo)致網(wǎng)絡(luò)不穩(wěn)定;較小的η值可以避免網(wǎng)絡(luò)的振蕩,但收斂速度慢。通常,需要調(diào)整η值使網(wǎng)絡(luò)中各神經(jīng)元的學(xué)習(xí)速度差不多,η的取值范圍一般為0.01~0.4。
研究對(duì)不同η值分別做了測(cè)試:使用相同的模擬數(shù)據(jù),在BP神經(jīng)網(wǎng)絡(luò)中各做了500次的迭代,記錄數(shù)據(jù),計(jì)算誤差值,并用Excel制作了趨勢(shì)更為明顯的對(duì)數(shù)曲線坐標(biāo)圖,結(jié)果如圖1所示。
從圖1可以看出,學(xué)習(xí)速率為0.01或0.05時(shí),神經(jīng)網(wǎng)絡(luò)的收斂速度較慢,對(duì)于實(shí)際所需的智能家居設(shè)備,若是要獲得較為精確的結(jié)果,其較低的算力很難滿足所需的訓(xùn)練次數(shù)。而在學(xué)習(xí)速率為0.4時(shí),神經(jīng)網(wǎng)絡(luò)的波動(dòng)顯得過(guò)大,特別是在圖上訓(xùn)練次數(shù)達(dá)到320次左右的時(shí)候,預(yù)測(cè)結(jié)果產(chǎn)生了超過(guò)20倍的誤差波動(dòng),因此盡管神經(jīng)網(wǎng)絡(luò)的收斂速度很快,但是結(jié)果不夠穩(wěn)定,很容易返回錯(cuò)誤的參數(shù),這樣就有可能導(dǎo)致家居系統(tǒng)的異常控制。因此綜上來(lái)看,學(xué)習(xí)速率為0.2時(shí),神經(jīng)網(wǎng)絡(luò)能夠兼顧收斂速度和穩(wěn)定性,是較為理想的一個(gè)參數(shù)。
至此,BP神經(jīng)網(wǎng)絡(luò)模型的設(shè)計(jì)基本已經(jīng)完成,隨后需要對(duì)該模型做出測(cè)試。
研究以Java語(yǔ)言為基礎(chǔ),完成了所有的BP神經(jīng)網(wǎng)絡(luò)構(gòu)建、訓(xùn)練以及測(cè)試。計(jì)算機(jī)處理器型號(hào)為Intel(R) Core(TM) i7-9750H@2.60GHz,安裝內(nèi)存為16G。
為驗(yàn)證算法的精度和穩(wěn)定性,研究選擇了2種不同家居產(chǎn)品的數(shù)據(jù)進(jìn)行訓(xùn)練和測(cè)試,具體數(shù)據(jù)集來(lái)自Kaggle平臺(tái)上的一個(gè)智能家居訓(xùn)練開(kāi)源數(shù)據(jù)集[7]。設(shè)定的訓(xùn)練的對(duì)象分別為空調(diào)和電燈,其中空調(diào)輸入數(shù)據(jù)為房間內(nèi)不同地點(diǎn)的幾個(gè)溫度信息,輸出為空調(diào)的設(shè)定溫度,是一個(gè)范圍為[16,30]的整數(shù)。電燈輸入數(shù)據(jù)為環(huán)境下幾個(gè)位置的亮度信息和聲音信息,輸出數(shù)據(jù)為開(kāi)或關(guān),值為1或0。上述兩個(gè)對(duì)象分別代表了不同類(lèi)型的訓(xùn)練數(shù)據(jù):一個(gè)是兩極化的0或者1,另一個(gè)則是具有一定范圍的整數(shù)。
模型訓(xùn)練完畢之后,針對(duì)每個(gè)神經(jīng)網(wǎng)絡(luò)又分別選取了15組新數(shù)據(jù)來(lái)進(jìn)行結(jié)果測(cè)試,以判斷神經(jīng)網(wǎng)絡(luò)模型的精確度是否能夠滿足日常家居生活當(dāng)中的智能化需求。
結(jié)果如圖2所示,從圖中可以看出目前的BP神經(jīng)網(wǎng)絡(luò)在理想情況下,善于處理結(jié)果種類(lèi)較少的情況,例如對(duì)于電燈測(cè)試中的二元結(jié)果,其能夠達(dá)到極高的預(yù)測(cè)準(zhǔn)確率,而在空調(diào)測(cè)試中,雖然整體趨勢(shì)沒(méi)有問(wèn)題,但在偏差較大的時(shí)候能夠達(dá)到±2~3℃,精度稍有欠缺。
由于傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)存在易于陷入局部最小值、收斂速度較慢、易引起震蕩等缺陷,此處考慮引入尋優(yōu)能力較強(qiáng)的遺傳模擬退火算法[8]來(lái)優(yōu)化BP神經(jīng)網(wǎng)絡(luò)。由于優(yōu)化算法本身并不是本次研究的重點(diǎn),此處僅介紹一下步驟。
首先要建立初始種群,這里可以使用實(shí)數(shù)編碼的方式。
隨后要建立一個(gè)合適的適應(yīng)度函數(shù),這里建立了如下的函數(shù):
其中yout為BP神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)輸出,y為目標(biāo)輸出。
隨后要經(jīng)過(guò)二元選擇、實(shí)數(shù)交叉、非均勻變異這三項(xiàng)操作來(lái)生成新的種群,通過(guò)“退火”將適應(yīng)度較高的個(gè)體保留,就這樣依次進(jìn)行下去,直到模型收斂,最后將收斂之后的解傳遞給BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,得到的模型誤差會(huì)更小,由此提高了預(yù)測(cè)的精度[9]。
隨后對(duì)優(yōu)化之后的算法進(jìn)行了同樣的空調(diào)測(cè)試來(lái)觀察效果。
從圖3我們可以看出,通過(guò)GSA-BP優(yōu)化之后的算法效果最好,所推測(cè)出的值可以極大程度地接近真實(shí)值,在數(shù)據(jù)理想化的情況下,其精度完全可以滿足實(shí)際需求。
為了提高當(dāng)前智能家居系統(tǒng)的智能化程度,提出一種BP神經(jīng)網(wǎng)絡(luò)優(yōu)化的智能家居控制系統(tǒng),提供控制系統(tǒng)自學(xué)習(xí)與自適應(yīng)的能力。
(1)對(duì)家居設(shè)備進(jìn)行參數(shù)的歸納,將傳感器等客觀數(shù)據(jù)視為輸入數(shù)據(jù),控制參數(shù)視為輸出數(shù)據(jù),得到基本模型。
(2)利用上述數(shù)據(jù)構(gòu)成訓(xùn)練用的數(shù)據(jù)集來(lái)訓(xùn)練BP神經(jīng)網(wǎng)絡(luò),測(cè)試結(jié)果說(shuō)明,訓(xùn)練的神經(jīng)網(wǎng)絡(luò)對(duì)于輸出范圍較小的情況,能夠達(dá)到很高的精度,而在輸出范圍較大,結(jié)果較復(fù)雜的時(shí)候,則會(huì)存在一定的誤差。
(3)在加入模擬退火算法來(lái)優(yōu)化之后,神經(jīng)網(wǎng)絡(luò)成功地達(dá)到了較高的精度,基本能夠滿足智能家居控制的需求。