王 悅, 陳建平, 傅啟明1,, 吳宏杰1,, 陸 悠1,
1(蘇州科技大學(xué) 電子與信息工程學(xué)院, 蘇州 215009)
2(蘇州科技大學(xué) 江蘇省建筑智慧節(jié)能重點(diǎn)實(shí)驗(yàn)室, 蘇州 215009)
3(蘇州科技大學(xué) 蘇州市移動(dòng)網(wǎng)絡(luò)技術(shù)與應(yīng)用重點(diǎn)實(shí)驗(yàn)室, 蘇州 215009)
4(珠海米棗智能科技有限公司, 珠海 519031)
可持續(xù)發(fā)展和低碳經(jīng)濟(jì)逐漸成為這一代人最重要的挑戰(zhàn)之一[1].斯帕思(Jamm Gustare Spath)認(rèn)為: “可持續(xù)發(fā)展就是轉(zhuǎn)向更清潔、更有效的技術(shù)——盡可能接近“零排放”或“密封式”, 工藝方法——盡可能減少能源和其他自然資源的消耗”[2].因此, 如何減少能源消耗及碳排放量是實(shí)現(xiàn)可持續(xù)發(fā)展和低碳經(jīng)濟(jì)需要考慮的現(xiàn)實(shí)問(wèn)題.據(jù)統(tǒng)計(jì), 在世界能源消耗和二氧化碳排放方面, 建筑占比較高.例如, 2018年美國(guó)和歐洲的建筑業(yè)分別占能源消耗的39%和40%, 二氧化碳排放量占比則分別為38%和36%[3].建筑作為主要的能源消耗者,其中電能是主要的消耗部分.美國(guó)能源部(DOE) 2018年1月報(bào)告的最新月度電力數(shù)據(jù)表明, 商業(yè)和住宅建筑的電力消耗占美國(guó)所有發(fā)電量的77.5%[4].所以降低建筑電力能源消耗和減少建筑碳排放至關(guān)重要.建筑負(fù)荷曲線是指建筑物電力負(fù)荷隨時(shí)間的變化曲線.建筑負(fù)荷曲線預(yù)測(cè)有很多作用, 如建筑節(jié)能策略診斷(識(shí)別不必要的浪費(fèi))、改善供應(yīng)管理以及需求響應(yīng)規(guī)劃和定價(jià)[5].因此建筑負(fù)荷曲線預(yù)測(cè)對(duì)于合理減少能源消耗發(fā)揮著重要的作用.
由于建筑負(fù)荷曲線預(yù)測(cè)可以產(chǎn)生有用的信息并且應(yīng)用范圍很廣, 早在20世紀(jì)60年代就已經(jīng)開(kāi)始了能源預(yù)測(cè)性能方法的研究[6].2015年Fonseca等人提出了一個(gè)綜合模型來(lái)描述社區(qū)和城區(qū)的時(shí)空建筑能耗模式.該模型使用空間(使用地理信息系統(tǒng)、地理信息系統(tǒng)的建筑位置)和時(shí)間(h)維度分析計(jì)算了住宅、商業(yè)和工業(yè)部門(mén)的電力和溫度需求[7], 然而, 在模擬時(shí), 用戶可能未提供準(zhǔn)確詳細(xì)的輸入數(shù)據(jù), 導(dǎo)致最終的預(yù)測(cè)性能偏差.另一方面, 數(shù)據(jù)驅(qū)動(dòng)的建筑能耗預(yù)測(cè)模型不需要有關(guān)模擬建筑的詳細(xì)數(shù)據(jù), 而是從真實(shí)數(shù)據(jù)中學(xué)習(xí)并進(jìn)行預(yù)測(cè), 因此, 近年來(lái)數(shù)據(jù)驅(qū)動(dòng)的能源消耗預(yù)測(cè)得到了大量的研究關(guān)注[8], 2017年方濤濤等人對(duì)于傳統(tǒng)神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)精度低的問(wèn)題, 提出一種BP-Adaboost的預(yù)測(cè)算法, 該方法將多個(gè)神經(jīng)網(wǎng)絡(luò)組成為一個(gè)強(qiáng)預(yù)測(cè)器, 其有效提高了能耗預(yù)測(cè)精度[9].2020年鄒峰等人提出一種DGQL的預(yù)測(cè)算法, 其通過(guò)將生成對(duì)抗網(wǎng)絡(luò)與Q學(xué)習(xí)相結(jié)合以提升能耗預(yù)測(cè)精度[10].現(xiàn)實(shí)中短期能耗預(yù)測(cè)任務(wù)中往往已知部分前序時(shí)刻數(shù)據(jù), 要求預(yù)測(cè)后序能耗序列值, 面對(duì)如何利用已知能耗序列提升預(yù)測(cè)精度的問(wèn)題, 利用LSTM網(wǎng)絡(luò)的解決方案效果較好.不過(guò)由于其后序能耗值與前序能耗值有相當(dāng)大的關(guān)系,模型通常在前序能耗值的基礎(chǔ)上預(yù)測(cè)后序能耗值, 如果前序能耗值誤差較大, 后序能耗值在此基礎(chǔ)上預(yù)測(cè)也會(huì)有較大誤差, 因此該模型往往會(huì)由于一個(gè)預(yù)測(cè)值的誤差導(dǎo)致后序預(yù)測(cè)值整體的誤差.總之, 在建筑能耗預(yù)測(cè)研究領(lǐng)域, 研究者們提出各種不同的方法去預(yù)測(cè)建筑能耗以提升建筑能耗精度或者降低預(yù)測(cè)模型的使用復(fù)雜度.
本文在GAN (Generative Adversarial Networks)的基礎(chǔ)上提出了基于強(qiáng)化學(xué)習(xí)的生成對(duì)抗網(wǎng)絡(luò)(Reinforcement learning-based Generative Adversarial Networks, Re-GAN)算法, 并用于建筑節(jié)能預(yù)測(cè)問(wèn)題, 以進(jìn)行高精度能耗序列預(yù)測(cè).Re-GAN算法在GAN的基礎(chǔ)上進(jìn)行改進(jìn), 用強(qiáng)化學(xué)習(xí)優(yōu)化GAN, 即把GAN的過(guò)程描述為一個(gè)MDP過(guò)程.具體方法為: 將GAN中的生成器作為強(qiáng)化學(xué)習(xí)中的Agent, 將GAN中的判別器輸出作為強(qiáng)化學(xué)習(xí)中的獎(jiǎng)賞函數(shù).訓(xùn)練時(shí), 該算法用真實(shí)能耗序列訓(xùn)練網(wǎng)絡(luò); 預(yù)測(cè)時(shí), 該算法可以選擇通過(guò)向模型輸入已知真實(shí)值作為預(yù)測(cè)值, 以提升待預(yù)測(cè)序列中之后時(shí)刻能耗預(yù)測(cè)值的準(zhǔn)確度.模型通常將在前序能耗值的基礎(chǔ)上預(yù)測(cè)后序能耗值, 所以如果前序能耗值誤差較大,后序能耗值在此基礎(chǔ)上預(yù)測(cè)也會(huì)有較大誤差, 但由于該算法中生成器的目標(biāo)是生成整體誤差更小的能耗序列, 因此面對(duì)單個(gè)預(yù)測(cè)值誤差對(duì)后序預(yù)測(cè)值的誤差影響, 該方法可較大限度地避免誤差累計(jì).實(shí)驗(yàn)表明, 相較于多層感知機(jī)(MLP)、門(mén)控循環(huán)神經(jīng)網(wǎng)絡(luò)(GRU)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)等模型, 本文所提出模型可以較為準(zhǔn)確的捕捉到能耗曲線的起伏變化、有效的消除顯著誤差的影響, 是一種有效的建筑能耗預(yù)測(cè)方法.
自2014年Goodfellow提出生成對(duì)抗網(wǎng)絡(luò)GAN以來(lái)[11], 許多研究學(xué)者加入其中, 并將其主要應(yīng)用于音樂(lè)、詩(shī)歌生成等方面.同時(shí), 又在其基礎(chǔ)上提出條件生成對(duì)抗網(wǎng)絡(luò)(CGAN)[12]、深度卷積神經(jīng)網(wǎng)絡(luò)(DCGAN)[13]、Wasserstein生成對(duì)抗網(wǎng)絡(luò)(WGAN)[14]、序列生成對(duì)抗網(wǎng)絡(luò)(SeqGAN)[15]等.GAN起源于二人零和博弈: 在利益之和不變的情況下, 兩個(gè)智能體互相提升自己能力以期待獲得更高的利益, 當(dāng)兩個(gè)智能體都發(fā)現(xiàn)改變自己策略不能獲得更多利益時(shí), 博弈結(jié)束, 最終的結(jié)果是兩個(gè)智能體的能力均有提升, 達(dá)到納什均衡[16].
GAN的目的是在提供真實(shí)數(shù)據(jù)的情況下訓(xùn)練生成器和判別器, 使生成器生成更貼近真實(shí)數(shù)據(jù)分布的生成數(shù)據(jù).GAN模型如圖1所示, 其包含兩個(gè)智能體:生成器Generator (生成器G)和判別器Discriminator(判別器D).
圖1 生成對(duì)抗網(wǎng)絡(luò)
生成器G負(fù)責(zé)將其隨機(jī)產(chǎn)生的多維向量z轉(zhuǎn)化為與Xreal相同數(shù)據(jù)格式的Xg數(shù)據(jù)集.Xreal數(shù)據(jù)集需要事先提供, 如: 統(tǒng)一格式的圖片、統(tǒng)一格式的詩(shī)歌、統(tǒng)一格式的音樂(lè)等, 統(tǒng)一格式指的是輸入電腦的數(shù)據(jù)尺寸大小, 例如將圖片作為Xreal數(shù)據(jù)集, 則可統(tǒng)一格式為RGB模式下的64×64像素.
判別器D負(fù)責(zé)判別數(shù)據(jù)真假與否.真實(shí)數(shù)據(jù)集Xreal和生成器生成的Xg數(shù)據(jù)集共同作為判別器D的輸入.假設(shè)x為Xreal或Xg數(shù)據(jù)集的一條數(shù)據(jù), 判別器D在不知x所屬數(shù)據(jù)集的情況下對(duì)其打分.打分高低依賴(lài)于判別器D判別出的x與真實(shí)數(shù)據(jù)相似程度.即x與Xreal數(shù)據(jù)集越接近, 分?jǐn)?shù)越高; 否則分?jǐn)?shù)較低.
生成器G的目標(biāo)是使生成數(shù)據(jù)被判別器D判別為真; 而判別器D的目標(biāo)是對(duì)輸入數(shù)據(jù)能夠進(jìn)行準(zhǔn)確分類(lèi), 即屬于Xreal數(shù)據(jù)集的數(shù)據(jù)被判高分、屬于Xg數(shù)據(jù)集的數(shù)據(jù)被判低分.
強(qiáng)化學(xué)習(xí)(Reinforcement Learning, RL)通過(guò)與場(chǎng)景交互, 在動(dòng)作空間中選取合適的動(dòng)作去應(yīng)對(duì)以獲取最大的獎(jiǎng)賞.
強(qiáng)化學(xué)習(xí)模型如圖2所示, Agent在一定程度上能夠感知環(huán)境Environment的部分狀態(tài), 感知到的狀態(tài)稱(chēng)之為State, 此時(shí)Agent需要產(chǎn)生可以影響環(huán)境的動(dòng)作Action, 產(chǎn)生動(dòng)作Action之后Agent會(huì)收到由環(huán)境給與的反饋Reward.由于Agent產(chǎn)生了可以影響環(huán)境的動(dòng)作, 因此環(huán)境產(chǎn)生變化, Agent會(huì)獲得新的環(huán)境狀態(tài),此時(shí)又可在新?tīng)顟B(tài)的基礎(chǔ)上產(chǎn)生新的動(dòng)作以此循環(huán)與環(huán)境進(jìn)行交互, 直到達(dá)到設(shè)定的結(jié)束條件即可結(jié)束交互.
圖2 強(qiáng)化學(xué)習(xí)
由于在交互初期已設(shè)定好一個(gè)或多個(gè)與環(huán)境狀態(tài)有關(guān)的目標(biāo), 此目標(biāo)不斷訓(xùn)練Agent使Agent可獲取整個(gè)交互的最大獎(jiǎng)賞.因此, 訓(xùn)練后的Agent不應(yīng)只考慮當(dāng)前單個(gè)動(dòng)作的獎(jiǎng)賞Reward, 還應(yīng)考慮整體交互的獎(jiǎng)賞和, 使得整體獎(jiǎng)賞值最大.即Agent選取動(dòng)作不僅看重當(dāng)前獎(jiǎng)賞值Reward, 更應(yīng)看重長(zhǎng)期整體的獎(jiǎng)賞值.
將GAN網(wǎng)絡(luò)應(yīng)用于建筑能耗預(yù)測(cè)的傳統(tǒng)模式基本為: 將大量統(tǒng)一格式的能耗序列作為Xreal數(shù)據(jù)集,GAN中生成器G將自身隨機(jī)產(chǎn)生的多維向量轉(zhuǎn)化成和Xreal數(shù)據(jù)集一樣長(zhǎng)度的序列, 生成器生成的能耗序列組成Xg數(shù)據(jù)集.作為GAN中的判別器, 其只能接收完整的序列數(shù)據(jù)進(jìn)行判別并給出得分, 判別器接受完整的序列數(shù)據(jù)進(jìn)行判別, 若分?jǐn)?shù)接近于1則更偏向于認(rèn)為是來(lái)自真實(shí)數(shù)據(jù)集Xreal, 若分?jǐn)?shù)接近于0則更偏向于認(rèn)為是來(lái)自生成器G.在不斷訓(xùn)練后, 使得生成序列分布接近真實(shí)能耗序列分布.
由于GAN的預(yù)測(cè)輸出格式是固定的完整能耗序列, 若在生成過(guò)程中已知能耗序列中部分?jǐn)?shù)據(jù)x1:k={t1,t2,···,tk}(k為已知能耗數(shù)據(jù)的數(shù)量), 要求預(yù)測(cè)之后時(shí)刻能耗數(shù)據(jù)tk+1或者 {tk+1,tk+2,···,tn}(n為能耗序列的標(biāo)準(zhǔn)長(zhǎng)度), 這種情況只是通過(guò)GAN應(yīng)用到建筑能耗預(yù)測(cè)的傳統(tǒng)模式是無(wú)法做到的, 因?yàn)槟P鸵?guī)定的生成器G是沒(méi)有輸入, 生成器只是根據(jù)自己隨機(jī)生成的向量去轉(zhuǎn)化為統(tǒng)一格式且分布和真實(shí)數(shù)據(jù)相似的生成序列.所以, 面對(duì)當(dāng)前序列中已有的部分時(shí)刻能耗資源,如何將其利用使預(yù)測(cè)值精度更高是該研究的出發(fā)點(diǎn).
Re-GAN方法通過(guò)將強(qiáng)化學(xué)習(xí)與GAN相結(jié)合, 用真實(shí)能耗序列訓(xùn)練網(wǎng)絡(luò), 且可以通過(guò)向模型輸入待預(yù)測(cè)序列中已知的部分前序值以提升待預(yù)測(cè)序列中之后時(shí)刻預(yù)測(cè)值的準(zhǔn)確度.在此之前, GAN結(jié)合強(qiáng)化學(xué)習(xí)的方法主要運(yùn)用于文本生成、音樂(lè)生成等, 如SeqGAN[15].
面對(duì)建筑能耗預(yù)測(cè)問(wèn)題, 劃分一個(gè)時(shí)間長(zhǎng)度并將其時(shí)間內(nèi)的能耗值數(shù)量作為建筑能耗序列的標(biāo)準(zhǔn)長(zhǎng)度.若已知部分真實(shí)能耗序列要求預(yù)測(cè)未來(lái)能耗值, 提出了Re-GAN算法, 該方法建模如下:
(1)若將n作為序列的標(biāo)準(zhǔn)長(zhǎng)度, 則真實(shí)能耗序列表示為:xreal={T1,T2,···,Tn},Xreal表示真實(shí)能耗數(shù)據(jù)集;
(2)則由生成器生成的序列表示為:xg={t1,t2,···,tn};Xg表示生成能耗數(shù)據(jù)集;
(3)在生成器生成能耗值的過(guò)程中, 若k代表已知能耗序列的長(zhǎng)度, 則已知的生成能耗序列表示為:x1:k={t1,t2,···,tk},k∈ [1,n], 則完整的生成能耗序列表示為:x1:n={t1,t2,···,tn}, 易知x1:n=xg.
如圖3所示, 在強(qiáng)化學(xué)習(xí)中Agent作為智能體決策時(shí), 環(huán)境是當(dāng)前已知的能耗序列x1:k; 接收到的狀態(tài)是當(dāng)前已知能耗序列x1:k, 做出的下一個(gè)動(dòng)作是下一時(shí)刻的能耗預(yù)測(cè)值即tk+1(將[tmin,tmax]按照等間隔劃分且間隔數(shù)自定,tk+1在其中取值); 由此可推出Agent做出選擇動(dòng)作tk+1以后, 環(huán)境變?yōu)閤1:k+1={t1,t2,···,tk+1},返回給Agent的狀態(tài)是x1:k+1, 之后Agent再選擇動(dòng)作tk+2, 環(huán)境又被變?yōu)閤1:k+2; 直到選擇最后一個(gè)動(dòng)作tn時(shí),環(huán)境變?yōu)閤1:n={t1,t2,···,tn}, Agent結(jié)束與環(huán)境的交互,獲得完整生成序列x1:n.此時(shí)此完整序列xg=x1:n作為生成器的輸出.由于生成器需要Reward作為選擇每個(gè)動(dòng)作的獎(jiǎng)賞以?xún)?yōu)化網(wǎng)絡(luò), 因此設(shè)定GAN中判別器的輸出作為Reward.
圖3 強(qiáng)化學(xué)習(xí)的網(wǎng)絡(luò)結(jié)構(gòu)
如圖4所示, 將GAN中的生成器作為強(qiáng)化學(xué)習(xí)中的Agent, 將GAN中判別器的輸出作為強(qiáng)化學(xué)習(xí)中的獎(jiǎng)賞.由于判別器D只接受和真實(shí)序列格式一樣的序列, 則Agent只有將序列生成完畢、獲得完整的生成序列xg時(shí), 判別器D才會(huì)接收xg返回給Agent相應(yīng)的Reward.
圖4 Re-GAN算法的網(wǎng)絡(luò)結(jié)構(gòu)
由于GAN模型的目標(biāo)函數(shù)可以表示為式(1), 原文章已證明其收斂[11].公式左邊加項(xiàng)為判別器判別真實(shí)數(shù)據(jù)集數(shù)據(jù)的分值, 越接近于1代表判別器更認(rèn)為來(lái)自于真實(shí)數(shù)據(jù)集; 公式右邊加項(xiàng)為判別器判別生成器生成數(shù)據(jù)的分值與1的差距(D(x)∈[0,1]).訓(xùn)練過(guò)程分為兩個(gè)步驟交替循環(huán), 在保持生成器G不變的情況下, 優(yōu)化判別器使目標(biāo)函數(shù)值更大; 接下來(lái)在保證判別器D不變的情況下, 優(yōu)化生成器使目標(biāo)函數(shù)值更小.
由此得出判別器D的損失函數(shù)如式(2), 當(dāng)判別器對(duì)來(lái)自真實(shí)數(shù)據(jù)集的數(shù)據(jù)判別分?jǐn)?shù)越高、生成數(shù)據(jù)集的數(shù)據(jù)判別分?jǐn)?shù)越低時(shí), 表明判別器判別能力越好, 同時(shí)損失函數(shù)的值也越小.判別器的具體流程如圖5所示.
圖5 Re-GAN的判別器
根據(jù)式(2)可得出生成器的損失函數(shù)如式(3)所示, 判別器對(duì)生成的能耗數(shù)據(jù)判別分?jǐn)?shù)越高, 生成器的損失函數(shù)值越小, 同時(shí)表明生成器的生成的數(shù)據(jù)更加接近真實(shí)數(shù)據(jù).
但由于生成器G的訓(xùn)練依賴(lài)于判別器D提供的評(píng)判分?jǐn)?shù), 如何利用強(qiáng)化學(xué)習(xí)訓(xùn)練生成器生成完整能耗序列以及如何利用判別器評(píng)判分?jǐn)?shù)優(yōu)化生成器,這一系列問(wèn)題正是強(qiáng)化學(xué)習(xí)與GAN結(jié)合的難點(diǎn).
由于GAN中優(yōu)化生成器的方法是使損失函數(shù)更小, 即使Ex~Xg[D(x)]的值更大, 且在強(qiáng)化學(xué)習(xí)中要求使Agent即生成器獲得的整體獎(jiǎng)賞更大, 因此對(duì)于生成序列, 將D(x)作為整體獎(jiǎng)賞.整體獎(jiǎng)賞D(x)更大時(shí), Agent的獎(jiǎng)賞R更大, 同時(shí)使生成器gloss的損失函數(shù)更小.
由此, 若定義Gθ是網(wǎng)絡(luò)參數(shù)為θ的生成器G, 則求的過(guò)程被轉(zhuǎn)化為求的過(guò)程, 由于Rθ具有隨機(jī)性(生成器和判別器均有隨機(jī)性), 所以通過(guò)整體獎(jiǎng)賞的期望值來(lái)判定Gθ的生成能力的優(yōu)良, 即轉(zhuǎn)化訓(xùn)練目標(biāo)為如式(4)所示,τ=x1:n表示生成序列的一種可能性或者說(shuō)生成器生成的一個(gè)完整序列, 每種τ出現(xiàn)的可能性依賴(lài)于θ,Gθ的期望獎(jiǎng)賞計(jì)算方法是將生成器所有可能出現(xiàn)的τ的獎(jiǎng)賞與每種τ出現(xiàn)的概率相乘并求和.實(shí)際訓(xùn)練過(guò)程中是讓生成器參數(shù)不變的情況下生成M個(gè)τ, 然后求所有τ的獎(jiǎng)賞均值.
由于對(duì)生成器采用策略梯度的方法, 將更新后的參數(shù)表示為θ*, 因此,η表示為更新參數(shù)θ*的步長(zhǎng)或?qū)W習(xí)率.則在梯度下降過(guò)程中,,其中, 學(xué)習(xí)率η為超參數(shù), 在訓(xùn)練時(shí)需提前設(shè)置, 而網(wǎng)絡(luò)參數(shù)θ的取值依賴(lài)于的求解.
此外, 由于R(τ)的取值與θ無(wú)關(guān), 因此在式(4)的基礎(chǔ)上求概率梯度, 得式(5).其中, 求解梯度的數(shù)值需轉(zhuǎn)化為對(duì)數(shù)形式, 并將其中所有可能出現(xiàn)的τ的獎(jiǎng)賞與每種τ出現(xiàn)的概率相乘并求和的過(guò)程轉(zhuǎn)化為采樣M次τ求均值的過(guò)程.其中首先求解梯度的數(shù)值轉(zhuǎn)化為對(duì)數(shù)形式, 然后最后一步將其中所有可能出現(xiàn)的τ的獎(jiǎng)賞與每種τ出現(xiàn)的概率相乘并求和的過(guò)程轉(zhuǎn)化為采樣M次τ求均值的過(guò)程.
如圖6所示, 在已知序列x1:k的情況下生成器一步步生成每個(gè)序列點(diǎn), 其中每一行生成器生成一個(gè)序列點(diǎn).如圖中第一行表示, 在已知序列x1:k作為State的基礎(chǔ)上產(chǎn)生動(dòng)作tk+1, 其選擇概率是P(tk+1|x1:k,θ).此時(shí)下一個(gè)狀態(tài)是確定的為x1:k+1, 相應(yīng)下一個(gè)動(dòng)作概率為P(tk+2|x1:k+1,θ), 直至最后一個(gè)動(dòng)作概率為P(tn|x1:n-1,θ),因此實(shí)際應(yīng)用時(shí)獲得的是已知序列x1:k, 而訓(xùn)練網(wǎng)絡(luò)則是從0開(kāi)始生成序列, 因此, 此時(shí)可得式(6)和式(7).
圖6 Re-GAN的生成器
如果用整體序列的獎(jiǎng)賞R(τ)代表該序列中每一個(gè)動(dòng)作的好壞稍有不妥, 故采用蒙特卡洛搜索[17]的方法,R(ti|x1:i-1)表示在x1:i-1狀態(tài)下產(chǎn)生ti所達(dá)到的下一個(gè)狀態(tài)的好壞程度.
由于下一個(gè)狀態(tài)必是x1:i, 因此R(ti|x1:i-1)=R(x1:i),此時(shí)定義即在x1:i狀態(tài)下采樣出J個(gè)完整序列并求其獎(jiǎng)賞均值.將R(x1:i)代入公式可得式(8), 并根據(jù)式(9)更新網(wǎng)絡(luò)參數(shù)θ.
Re-GAN算法需要預(yù)訓(xùn)練判別器D, 之后訓(xùn)練過(guò)程分為兩個(gè)步驟以交替循環(huán)訓(xùn)練, 第一步在保持生成器G不變的情況下, 優(yōu)化判別器使目標(biāo)函數(shù)值更大; 接下來(lái)在保證判別器D不變的情況下, 優(yōu)化生成器使目標(biāo)函數(shù)值更小.由于生成器較判別器不易收斂, 所以設(shè)置訓(xùn)練一次判別器后再訓(xùn)練g_steps次生成器.下面給出詳細(xì)的Re-GAN算法流程, 如算法1所示.
算法1.基于強(qiáng)化學(xué)習(xí)的生成對(duì)抗網(wǎng)絡(luò)算法1.預(yù)訓(xùn)練判別器D;2.初始化 Gθ、Dβ的權(quán)值;3.令 θ'=θ;4.For(i=1; i<= epochs; i++){5.#訓(xùn)練判別器D 6.將xreal中的采樣序列和生成器G的生成序列混合;7.訓(xùn)練判別器D以最小化dloss;8.#訓(xùn)練生成器G 9.For(j=1; j<=g_steps; j++){10.利用Gθ生成序列x1:n;11.For(k=1; k<= n; k++){12.利用Gθ計(jì)算R(x1:k)13.}images/BZ_164_701_1455_755_1489.png14.采用梯度下降方法利用 優(yōu)化Gθ;15.θ'=θ;16.}17.}
算法1給出模型的訓(xùn)練過(guò)程, 主要包括了初始化和循環(huán)訓(xùn)練判別器、生成器過(guò)程.其中生成器由循環(huán)神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)、判別器由全連接神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn).初始化生成器和判別器的超參數(shù)后進(jìn)行模型訓(xùn)練.模型訓(xùn)練是一個(gè)逐步地優(yōu)化過(guò)程, 在此模型中每次訓(xùn)練分為兩步, 先訓(xùn)練判別器, 之后訓(xùn)練生成器.
通常生成器較判別器不易收斂, 所以設(shè)置訓(xùn)練一次判別器后再訓(xùn)練g_steps次生成器.訓(xùn)練判別器時(shí)注意需要將生成器G的參數(shù)設(shè)置為不可跟蹤, 這樣生成器的生成數(shù)據(jù)分布固定, 且真實(shí)數(shù)據(jù)的分布必然固定,以此才可訓(xùn)練判別器優(yōu)化判別能力, 否則極有可能在優(yōu)化判別器的同時(shí)使生成器的生成能力降低[18].
訓(xùn)練生成器的過(guò)程也是求 ?Rˉθ的過(guò)程, 以通過(guò)來(lái)更新生成器Gθ, 由于其中的R(x1:i)對(duì)于求梯度來(lái)說(shuō)是一個(gè)系數(shù)且較難計(jì)算(每個(gè)R(x1:i)的時(shí)間復(fù)雜度為J), 所以對(duì)于序列x1:n, 先將R(x1:i)求出, 再用式(8)求梯度以?xún)?yōu)化生成器網(wǎng)絡(luò).
本文實(shí)驗(yàn)環(huán)境為Python 3.6, tensorflow-gpu 1.12,NVIDIA GFORCE GTX980, Windows 10操作系統(tǒng).實(shí)驗(yàn)所用的數(shù)據(jù)集來(lái)自建筑數(shù)據(jù)基因組項(xiàng)目[19], 在共享的507棟建筑性能相關(guān)數(shù)據(jù)集中, 每棟建筑數(shù)據(jù)包括整棟建筑每小時(shí)的電表數(shù)據(jù)和各種特征元數(shù)據(jù), 如總建筑面積、主要用途類(lèi)型、天氣信息和行業(yè).本文選取其中一棟建筑唐寧街綜合大樓的數(shù)據(jù)進(jìn)行實(shí)驗(yàn)(https://platform.carbonculture.net/assets/10-downing-street/).
唐寧街綜合大樓是一棟四層的一級(jí)和二級(jí)磚砌的格魯吉亞排屋, 其中唐寧街10號(hào)分享其可持續(xù)發(fā)展數(shù)據(jù), 以便每個(gè)人都能幫助確定新的儲(chǔ)蓄并提出改進(jìn)建議.選取其2012年1月1日至2018年12月31日共6年的數(shù)據(jù)作為本文實(shí)驗(yàn)中的真實(shí)數(shù)據(jù)集, 將其中2012年至2017年的數(shù)據(jù)作為訓(xùn)練集、2018年的數(shù)據(jù)作為測(cè)試集(能耗數(shù)據(jù)按小時(shí)采集, 每天24次).
圖7展示的是2017年1月共31天的能耗數(shù)據(jù)、圖8展示的是2017年1月8日至1月14日共7天的能耗數(shù)據(jù), 橫坐標(biāo)是時(shí)間單位, 縱坐標(biāo)是全樓用電, 用WBE (the Whole-Building Electricity)表示, 其中可以明顯看出工作日與能耗之間的大致關(guān)系.
圖7 2 017.1.1-2 017.1.31能耗實(shí)際值
圖8 2 017.1.8-2 017.1.14能耗實(shí)際值
按照所選取訓(xùn)練集, 將其轉(zhuǎn)化為按天為單位的能耗曲線, 其行表示為該棟建筑的每一天, 列為該棟建筑一天中24小時(shí)的能耗值.首先使用LoadShape模型和相關(guān)的Python庫(kù), 通過(guò)刪除總異常值和填充小間隙來(lái)清理每個(gè)儀表數(shù)據(jù)集.
本文關(guān)注基于時(shí)間序列的能耗數(shù)據(jù)變化, 且為了固定模型學(xué)習(xí)中的預(yù)測(cè)范圍, 故通過(guò)每年的峰值負(fù)荷標(biāo)準(zhǔn)化建筑的日負(fù)荷曲線, 并將真實(shí)能耗數(shù)據(jù)值進(jìn)行歸一化處理, 處理后數(shù)據(jù)范圍是[0,1].用表示單個(gè)真實(shí)能耗數(shù)據(jù),Tmax代表年能耗數(shù)據(jù)(刪除總異常值后)的最大值,Tmin代表年能耗數(shù)據(jù)(刪除總異常值后)的最小值.那么歸一化后的數(shù)據(jù)Tk可表示為式(10):
本文將Re-GAN與MLP、GRU和CNN進(jìn)行比對(duì).且不同方法對(duì)應(yīng)的訓(xùn)練數(shù)據(jù)集均為預(yù)處理之后的訓(xùn)練集, 以體現(xiàn)實(shí)驗(yàn)的公平性.
選取平均絕對(duì)百分比誤差MAPE和均方根誤差RMSE作為評(píng)價(jià)指標(biāo), 其表達(dá)式為式(11)和式(12):
其中,n表示預(yù)測(cè)能耗序列的長(zhǎng)度,Tk和tk分別表示每個(gè)序列點(diǎn)的真實(shí)能耗值和預(yù)測(cè)能耗值.MAPE范圍是[0, +∞),MAPE為0表示為完美模型,MAPE越大表示預(yù)測(cè)效果越差.同時(shí)MAPE公式要求真實(shí)數(shù)據(jù)不能存在等于0的情況, 從圖7可以看出能耗值不存在等于0的情況且能耗數(shù)據(jù)極小值不為0, 因此此評(píng)價(jià)標(biāo)準(zhǔn)可用.此外, 將數(shù)據(jù)去歸一化處理后用RMSE評(píng)估, 這時(shí)RMSE評(píng)價(jià)標(biāo)準(zhǔn)可直觀的表示預(yù)測(cè)的平均誤差數(shù)值, 比如RMSE=5, 可以認(rèn)為預(yù)測(cè)序列相比真實(shí)序列平均差5.MAPE和RMSE都是數(shù)值越小表示能耗預(yù)測(cè)結(jié)果越準(zhǔn)確.
本文對(duì)唐寧街綜合大樓的數(shù)據(jù)集進(jìn)行訓(xùn)練, 將2012年-2017年的數(shù)據(jù)作為訓(xùn)練集, 2018年的數(shù)據(jù)作為測(cè)試集.為了研究本文Re-GAN算法的預(yù)測(cè)效果, 設(shè)置MLP、GRU、CNN幾種算法作為對(duì)比.
表1為4種算法在相同訓(xùn)練集上的預(yù)測(cè)誤差.通過(guò)表1可知, 4種算法在相同訓(xùn)練集上預(yù)測(cè)結(jié)果的RMSE值比較接近, 說(shuō)明它們對(duì)訓(xùn)練集數(shù)據(jù)具有相似的數(shù)據(jù)擬合效果.而后通過(guò)檢驗(yàn)在測(cè)試集上的預(yù)測(cè)效果比較各個(gè)算法的泛化能力.
表1 不同方法下預(yù)測(cè)的誤差對(duì)比(訓(xùn)練集)
表2為4種算法在相同測(cè)試集上的預(yù)測(cè)誤差.通過(guò)表2可知, 各個(gè)模型在測(cè)試集上的預(yù)測(cè)準(zhǔn)確度有較大的差別, 實(shí)驗(yàn)選取5個(gè)星期的能耗數(shù)據(jù)進(jìn)行預(yù)測(cè), 發(fā)現(xiàn)MLP、GRU、CNN、Re-GAN方法最終預(yù)測(cè)結(jié)果的RMSE均值分別為5.50、4.42、4.34、2.67.Re-GAN方法較其他預(yù)測(cè)方法在MAPE上分別降低了5.91%、4.11%、3.9%; 相比于其他方法在RMSE上分別降低了51.45%、39.59%、38.48%.綜合分析, Re-GAN方法在MAPE和RMSE指標(biāo)上都有明顯的下降, 且具有較好的泛化性能, 表明在預(yù)測(cè)過(guò)程中整體預(yù)測(cè)精度和模型性能都有較大的提升.
表2 不同方法下預(yù)測(cè)的誤差對(duì)比(測(cè)試集)
分析得出, 采用GRU方法預(yù)測(cè)能耗數(shù)據(jù)在訓(xùn)練集上雖然有很高的訓(xùn)練精度, 但是在面對(duì)未學(xué)習(xí)過(guò)的數(shù)據(jù)集(測(cè)試集)時(shí)表現(xiàn)的效果不是很理想, 泛化能力較差.一部分原因是循環(huán)神經(jīng)網(wǎng)絡(luò)一個(gè)序列位置的輸出受之前預(yù)測(cè)值的影響, 誤差極有可能累計(jì)或者很有可能發(fā)生相位偏移, 從而導(dǎo)致預(yù)測(cè)準(zhǔn)確度不高.采用CNN方法預(yù)測(cè)的平均絕對(duì)百分比誤差和均方根誤差相較于GRU均有所降低, 但預(yù)測(cè)效果仍有待提高.
Re-GAN算法從整體時(shí)間序列角度出發(fā), 以強(qiáng)化學(xué)習(xí)中的獎(jiǎng)賞為目標(biāo), 試圖獲得更高的總獎(jiǎng)賞值.值得注意的是即使出現(xiàn)準(zhǔn)確度較低的一個(gè)點(diǎn), 下一個(gè)預(yù)測(cè)值也不會(huì)受太大的影響, 因?yàn)榇藭r(shí)模型選取的下一個(gè)預(yù)測(cè)能耗值是為獲取更高的獎(jiǎng)賞總和, 即模型受之前單個(gè)預(yù)測(cè)值誤差的影響較小.因此在面對(duì)峰值時(shí)Re-GAN算法預(yù)測(cè)效果更好.
表3為Re-GAN算法在相同測(cè)試集上不同輸入量的誤差對(duì)比.通過(guò)表3可知, 用Re-GAN方法輸入不同數(shù)量的輸入值其預(yù)測(cè)精度也會(huì)有所不同.
表3 Re-GAN方法不同輸入量誤差對(duì)比(測(cè)試集)
Re-GAN算法增加了利用已知真實(shí)能耗數(shù)據(jù)提升預(yù)測(cè)精度的功能.在不同已知輸入序列條件下,MAPE值也有不同, 如表3所示, “8個(gè)”代表在Re-GAN方法下輸入前8個(gè)小時(shí)已知值, 同理, “12個(gè)”“16個(gè)”代表在Re-GAN方法下輸入前12個(gè)小時(shí)、前16個(gè)小時(shí)的已知值.因此在Re-GAN方法下輸入0小時(shí)已知值、輸入8個(gè)小時(shí)已知值、輸入12個(gè)小時(shí)已知值和輸入16個(gè)小時(shí)已知值的MAPE均值分別為6.25%、5.90%、5.70%、5.13%.可以得知: 本文算法下已知輸入序列越多,MAPE誤差均值越小.
總體來(lái)看, 與MLP、GRU、CNN相比, Re-GAN在MAPE和RMSE評(píng)價(jià)指標(biāo)上均具有明顯的下降, 同時(shí)輸入已知序列更能降低預(yù)測(cè)的誤差.表明在預(yù)測(cè)過(guò)程中Re-GAN方法具有更高的預(yù)測(cè)性能和穩(wěn)定性, 是一種可行的建筑能耗預(yù)測(cè)方法.
為了更清晰直觀的表示各算法的預(yù)測(cè)效果, 圖9展示了2018年3月12日用不同方法預(yù)測(cè)能耗的對(duì)比圖, 此時(shí)Re-GAN無(wú)輸入數(shù)據(jù).
根據(jù)圖9可知Re-GAN算法預(yù)測(cè)的能耗序列更接近于真實(shí)能耗序列值, 預(yù)測(cè)效果較好, GRU算法在峰值處能耗值稍有延遲, MLP預(yù)測(cè)效果較差, 雖然可以預(yù)測(cè)出能耗曲線的起伏變化, 但其預(yù)測(cè)值稍低且峰值處不明顯.CNN效果僅次于Re-GAN, 在能耗曲線上有偏離但起伏狀態(tài)能準(zhǔn)確地捕捉到.因此, 相較于其他模型,Re-GAN模型可以較為準(zhǔn)確的捕捉到能耗曲線的起伏變化, 有效的消除顯著誤差的影響, 是一種有效的建筑能耗預(yù)測(cè)方法.
圖9 不同方法下預(yù)測(cè)值與真實(shí)值的對(duì)比(2 018.3.21)
本文提出了一種將強(qiáng)化學(xué)習(xí)與GAN結(jié)合的Re-GAN算法能耗預(yù)測(cè)模型, 該模型將GAN中的生成器作為強(qiáng)化學(xué)習(xí)中的智能體Agent、將GAN中的判別器作為強(qiáng)化學(xué)習(xí)中的獎(jiǎng)賞函數(shù), 其中Agent每一序列點(diǎn)的預(yù)測(cè)目標(biāo)都是使序列整體的誤差更小.根據(jù)模型的特點(diǎn)可通過(guò)輸入已知能耗數(shù)據(jù)提升預(yù)測(cè)準(zhǔn)確度.本文將Re-GAN算法和MLP、GRU、CNN這3種方法進(jìn)行對(duì)比, 提出的預(yù)測(cè)模型能夠獲得更小的預(yù)測(cè)誤差,且隨著已知能耗數(shù)據(jù)的增加預(yù)測(cè)誤差更小.
本文的預(yù)測(cè)對(duì)象主要是長(zhǎng)度較短的能耗序列, 然而, 對(duì)于較長(zhǎng)的能耗序列, 算法存在以下兩個(gè)問(wèn)題:(1)收斂速度慢; (2)對(duì)計(jì)算機(jī)內(nèi)存要求較高.下一步,將考慮對(duì)這些問(wèn)題進(jìn)行解決, 同時(shí)不斷完善能耗預(yù)測(cè)模型.當(dāng)前, 利用強(qiáng)化學(xué)習(xí)優(yōu)化GAN并用于能耗預(yù)測(cè)是一個(gè)值得研究的方向, 進(jìn)一步優(yōu)化使其具有更強(qiáng)的通用性應(yīng)該會(huì)獲得更有價(jià)值的結(jié)果.