楊恩平 薛棟吉
(南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 南京 210000)
從2006 年,深度學(xué)習(xí)泰斗Hinton[1]提出深度置信網(wǎng)絡(luò)和新的訓(xùn)練方法,克服了神經(jīng)網(wǎng)絡(luò)遇到的瓶頸,到2013 年深度學(xué)習(xí)位列十大突破性科技之首,再到后來(lái)AlphaGo 橫空出世擊敗了人類(lèi)的圍棋大師,到現(xiàn)在人工智能的廣泛運(yùn)用。這些都是深度學(xué)習(xí)帶給我們的改變。深度學(xué)習(xí)目前在圖像識(shí)別、語(yǔ)音識(shí)別、文本處理和大數(shù)據(jù)分析方面已經(jīng)被廣泛應(yīng)用,在控制領(lǐng)域方面,深度學(xué)習(xí)也有一定的嘗試。不過(guò)目前主要突出的是對(duì)控制目標(biāo)識(shí)別和狀態(tài)特征提取方面,對(duì)于控制領(lǐng)域最核心也是最基礎(chǔ)的控制策略上,深度學(xué)習(xí)目前成果不多。
深度學(xué)習(xí)是由機(jī)器學(xué)習(xí)和多層神經(jīng)網(wǎng)絡(luò)發(fā)展而來(lái),其作為機(jī)器學(xué)習(xí)的一個(gè)重要的分支存在。在機(jī)器學(xué)習(xí)算法中,EM 算法[2]是對(duì)自動(dòng)控制領(lǐng)域方面具有重大貢獻(xiàn)的算法。有了該算法,就可以很方便地使用高斯混合模型(GMM)[3]來(lái)表示隱馬爾科夫模型(HMM)狀態(tài)與輸入之間的關(guān)系,從而開(kāi)發(fā)新的控制系統(tǒng)。在深度學(xué)習(xí)出來(lái)之前就有人通過(guò)多層神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了自適應(yīng)模糊邏輯控制系統(tǒng)[4]。
作為機(jī)器學(xué)習(xí)的分支,深度學(xué)習(xí)擁有更多的隱藏層和神經(jīng)元,并且提高了學(xué)習(xí)性能,通過(guò)深度學(xué)習(xí)算法可以解決很多常規(guī)神經(jīng)網(wǎng)絡(luò)解決不了的復(fù)雜問(wèn)題。本文就是來(lái)探索深度學(xué)習(xí)在控制策略上的應(yīng)用。目前韓國(guó)慶北大學(xué)的Cheon K[5]等用DBN網(wǎng)絡(luò)來(lái)代替PID 控制器進(jìn)行過(guò)研究,證明了深度學(xué)習(xí)算法可以用來(lái)代替PID 控制器來(lái)控制空載的直流電機(jī)。Levine S[6]等分別比較了單層、多層網(wǎng)絡(luò)和RNN 網(wǎng)絡(luò)在粗糙地形運(yùn)動(dòng)系統(tǒng)中的作用,研究表明,隨著實(shí)驗(yàn)樣本的增加,多層網(wǎng)絡(luò)和RNN 網(wǎng)絡(luò)性能均優(yōu)于單層神經(jīng)網(wǎng)絡(luò),證明了深度學(xué)習(xí)算法在控制策略中的優(yōu)勢(shì)。中科院自動(dòng)化研究所的王飛躍[7]提出了一種計(jì)算智能最優(yōu)控制:自適應(yīng)動(dòng)態(tài)規(guī)劃,其中利用了DNN網(wǎng)絡(luò)結(jié)構(gòu)作為其核心結(jié)構(gòu)。
本人由于研究無(wú)人機(jī)控制系統(tǒng),想探討將深度學(xué)習(xí)應(yīng)用于無(wú)人機(jī)控制[8~9]上的可能性,參考了機(jī)器人運(yùn)動(dòng)控制的資料[10],故本文研究了用深度置信網(wǎng)絡(luò)來(lái)模擬PID 控制器來(lái)控制帶負(fù)載的直流電機(jī),以仿真無(wú)人機(jī)懸停在空中的時(shí)候旋翼的控制。本文采用了Matlab/Simulink 進(jìn)行了仿真,證明了使用深度學(xué)習(xí)算法可以代替?zhèn)鹘y(tǒng)PID 控制器來(lái)控制帶負(fù)載的直流電機(jī)。
深度學(xué)習(xí)是常規(guī)神經(jīng)網(wǎng)絡(luò)的擴(kuò)展算法,其中隱藏層的數(shù)量和神經(jīng)元的數(shù)量比常規(guī)神經(jīng)網(wǎng)絡(luò)的要多。在控制系統(tǒng)中,傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)已得到充分證明,并用作控制器設(shè)計(jì),系統(tǒng)目標(biāo)識(shí)別,自動(dòng)調(diào)優(yōu)和狀態(tài)特征提取的工具。盡管深度學(xué)習(xí)比傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)更有效,但目前深度學(xué)習(xí)在控制領(lǐng)域的應(yīng)用還不普及,尤其是在大數(shù)據(jù)中。
目前有很多的深度學(xué)習(xí)網(wǎng)絡(luò)架構(gòu),比較常見(jiàn)的有基于受限玻爾茲曼機(jī)(RBM)的深度置信網(wǎng)絡(luò)(DBN)[11]、基于自動(dòng)編碼器(AE)的堆疊自動(dòng)編碼器(SAE)[12]、卷積神經(jīng)網(wǎng)絡(luò)(CNN)[13]、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)[14]等,在本實(shí)驗(yàn)中由于訓(xùn)練條件以及控制系統(tǒng)的特性決定選擇深度置信網(wǎng)絡(luò)(DBN)。
深度置信網(wǎng)絡(luò)(DBN)是有多個(gè)RBM 堆疊而成。把RBM 隱藏層的層數(shù)增加,可以得到深度玻爾茲曼機(jī)(DBM),當(dāng)把靠近可視層部分的網(wǎng)絡(luò)換成貝葉斯置信網(wǎng)絡(luò),而最遠(yuǎn)離可視層的部分使用RBM的時(shí)候,就可以得到DBN。
不同于傳統(tǒng)的人工神經(jīng)網(wǎng)絡(luò),DBN算法的訓(xùn)練過(guò)程分為兩個(gè)過(guò)程,即預(yù)訓(xùn)練和全局微調(diào)。DBN算法包括三個(gè)步驟如下,其中步驟1 和步驟2 是預(yù)訓(xùn)練過(guò)程,步驟3是微調(diào)過(guò)程。
步驟1:輸入數(shù)據(jù)進(jìn)入RBM 的可視層,然后考慮第一權(quán)重值,數(shù)據(jù)將被傳輸?shù)诫[藏層。
步驟2:第一層隱藏層成為第二層可視層,并通過(guò)考慮第二權(quán)重值將數(shù)據(jù)傳輸?shù)降诙[藏層。同樣,第二隱藏層成為第三可視層,并將數(shù)據(jù)傳輸?shù)降谌[藏層。以此類(lèi)推,逐層訓(xùn)練,直到將所有的RBM訓(xùn)練完畢。
步驟3:全局微調(diào)階段,以訓(xùn)練好的RBM 之間的權(quán)重和偏置作為深度信念網(wǎng)絡(luò)的初始權(quán)重和偏置,以數(shù)據(jù)的標(biāo)簽作為監(jiān)督信號(hào)計(jì)算網(wǎng)絡(luò)誤差,利用BP 算法計(jì)算各層誤差,使用梯度下降法完成各層權(quán)重和偏置的調(diào)節(jié)。
在預(yù)訓(xùn)練階段,只使用了輸入數(shù)據(jù),沒(méi)有使用數(shù)據(jù)標(biāo)簽,屬于無(wú)監(jiān)督的學(xué)習(xí),另外,在微調(diào)階段,是有監(jiān)督的學(xué)習(xí),可以根據(jù)具體的應(yīng)用場(chǎng)景換成不同的分類(lèi)器模型,不必是BP 網(wǎng)絡(luò)。具體的算法框架如圖1所示,這里采用的是三層的RBM。
圖1 深度置信網(wǎng)絡(luò)框架
本次實(shí)驗(yàn)設(shè)計(jì)主要分為三個(gè)部分,第一部分是深度學(xué)習(xí)控制器的設(shè)計(jì),主要是包括了數(shù)據(jù)采集過(guò)程和控制器設(shè)計(jì)過(guò)程;第二部分是直流電機(jī)的說(shuō)明,主要包括直流電機(jī)簡(jiǎn)單的建模過(guò)程;第三部分是深度學(xué)習(xí)控制器系統(tǒng)的介紹。
傳統(tǒng)的PID控制器控制直流電機(jī)的過(guò)程如圖2所示,系統(tǒng)的輸入為電壓v,輸出為轉(zhuǎn)速w,其中在期望電壓輸入到PID 控制器之前,會(huì)與之前的反饋值進(jìn)行做差,得到e(t)作為控制偏差再輸入到PID控制器中。本實(shí)驗(yàn)中,會(huì)對(duì)傳統(tǒng)PID 控制器系統(tǒng)進(jìn)行數(shù)據(jù)采集,采集對(duì)象為PID 控制器的輸入信號(hào)和PID 控制器輸出到直流電機(jī)的信號(hào),采集到的數(shù)據(jù)用于深度學(xué)習(xí)網(wǎng)絡(luò)的訓(xùn)練。
圖2 PID控制器控制直流電機(jī)過(guò)程圖
在得到了訓(xùn)練數(shù)據(jù)之后分別把PID 的輸入/輸出數(shù)據(jù)作為深度學(xué)習(xí)算法的輸入/目標(biāo)數(shù)據(jù),將深度學(xué)習(xí)控制器調(diào)整為能夠替換原始PID 控制器,如圖3所示。
圖3 深度學(xué)習(xí)控制器學(xué)習(xí)代替PID過(guò)程
最后再把PID 控制器去掉,使用訓(xùn)練好的深度學(xué)習(xí)網(wǎng)絡(luò)來(lái)控制直流電機(jī),并與PID 控制器的系統(tǒng)響應(yīng)圖做對(duì)比。
本文中采用DBN 網(wǎng)絡(luò)作為替代PID 控制器的深度學(xué)習(xí)網(wǎng)絡(luò),本網(wǎng)絡(luò)是基于Masayuki Tanaka[15]開(kāi)發(fā)的Deep Neural Network 工具箱的搭建的,由于原本該工具箱中的DBN 網(wǎng)絡(luò)是用作模式識(shí)別的工具,而本文中用來(lái)作為控制器工具,所以,在原來(lái)的基礎(chǔ)上進(jìn)行了一些修改,其中隱藏層由3 層組成,每層包含了50個(gè)神經(jīng)元。迭代次數(shù)設(shè)置的200次,學(xué)習(xí)率為0.01,丟失率為0.4。
在RBM 的選擇上,工具箱里面提供了多種RBM 可供選擇,包括:BBPRBM(Beta-Bernoulli 過(guò)程RBM)[16],GBRBM(Gaussian-Bernoulli RBM)和BBRBM(Bernoulli-Bernoulli RBM)。本文選擇了GBRBM 結(jié)構(gòu)的RBM,因?yàn)镚BRBM 中加入了高斯噪音的連續(xù)值,其可視層可以處理連續(xù)實(shí)值隨機(jī)變量。本文使用ReLU函數(shù)作為激活函數(shù)。
本文采用的直流電動(dòng)機(jī),其動(dòng)力學(xué)方程如下:
其中,J是轉(zhuǎn)子的慣性矩,Kt是電動(dòng)機(jī)轉(zhuǎn)矩常數(shù),i是電樞電流,b是電動(dòng)機(jī)粘性摩擦常數(shù),L是電感,R是電阻,Ke是電動(dòng)勢(shì)常數(shù)。具體直流電動(dòng)機(jī)的參數(shù)值如表1所示。
表1 直流電動(dòng)機(jī)參數(shù)表
本文在Matlab/Simulink 中進(jìn)行了系統(tǒng)設(shè)計(jì),如圖4,是給出了在Maltab/Simlink 環(huán)境下,深度學(xué)習(xí)控制器控制帶負(fù)載的直流電機(jī)系統(tǒng)圖。其中包含了轉(zhuǎn)矩?cái)_動(dòng)模塊、傳感器噪音模塊,模數(shù)轉(zhuǎn)換器模塊、深度學(xué)習(xí)控制器模塊和直流電機(jī)模塊。
圖4 深度學(xué)習(xí)控制器系統(tǒng)
本實(shí)驗(yàn)在Matlab/Simlink R2018b 中完成。一次實(shí)驗(yàn)過(guò)程的時(shí)間是t=10s,系統(tǒng)在第1s、第5s、第7s 發(fā)生變化,將10s 實(shí)驗(yàn)過(guò)程分割成3 段。在第1s的時(shí)候,系統(tǒng)的期望轉(zhuǎn)速?gòu)?變成了2,在第5s的時(shí)候,給系統(tǒng)加上了0.2 的轉(zhuǎn)矩?cái)_動(dòng),即為負(fù)載,在第7s 的時(shí)候,期望轉(zhuǎn)速?gòu)? 變成了-2,以測(cè)試在階躍信號(hào)下控制器的性能。
實(shí)驗(yàn)中,經(jīng)過(guò)反復(fù)調(diào)試計(jì)算,得到了比較滿(mǎn)意的PID 控制器的系統(tǒng)響應(yīng),如圖5,然后DBN 算法學(xué)習(xí)了該P(yáng)ID 控制器,從而得到了深度學(xué)習(xí)控制器,深度學(xué)習(xí)控制器系統(tǒng)響應(yīng)如圖6,為了更詳細(xì)地比較,在圖7 中顯示了PID 控制器和深度學(xué)習(xí)控制器的殘差圖,并在表2 中展示了在0~5s、5s~7s 和7s~10s 這3 個(gè)階段中,PID 控制器和深度學(xué)習(xí)控制器的RMSE值。
從圖5 和圖6 中可以看出,深度學(xué)習(xí)控制器可以模仿的與PID 控制器的效果幾乎一模一樣,肉眼已經(jīng)看不出來(lái)區(qū)別,可以得到在訓(xùn)練次數(shù)足夠的情況下,深度學(xué)習(xí)控制器可以代替PID 控制帶負(fù)載的直流電機(jī)。從圖7 中,可以發(fā)現(xiàn),在系統(tǒng)發(fā)生變化的過(guò)渡階段,深度學(xué)習(xí)控制器與PID 控制器的殘差相對(duì)較大,但是1.2s 之后殘差就都為零。另外,從表2 中可以得到,在任何階段,兩個(gè)控制器控制效果之間的RMSE變化都非常小,都是10-2數(shù)量級(jí),因此也可以證明深度學(xué)習(xí)控制器很好的控制帶負(fù)載的直流電機(jī)。
圖5 PID控制器的系統(tǒng)響應(yīng)
圖6 深度學(xué)習(xí)控制器的系統(tǒng)響應(yīng)
圖7 PID控制器和深度學(xué)習(xí)控制器殘差變化
表2 PID控制器和深度學(xué)習(xí)控制器RMSE值
本文設(shè)計(jì)了一種基于DBN 算法的深度學(xué)習(xí)控制器,用來(lái)控制帶負(fù)載的直流電機(jī),以探索在用深度學(xué)習(xí)控制器來(lái)代替PID 控制器的可能性。本文對(duì)PID 控制器和深度學(xué)習(xí)控制之間進(jìn)行了比較。事實(shí)證明,深度學(xué)習(xí)控制器在性能上與PID 控制器性能一樣優(yōu)秀,可以用來(lái)代替PID 控制器。本文研究的是增加了一個(gè)固定的負(fù)載,來(lái)模擬無(wú)人機(jī)懸停狀態(tài)下的工作狀態(tài),但是無(wú)人機(jī)的飛行過(guò)程中姿態(tài)是經(jīng)常變化的,而且控制算法中PID 也只是其中比較經(jīng)典的一種,未來(lái)可以研究深度學(xué)習(xí)控制器在面對(duì)線性負(fù)載和非線性負(fù)載的時(shí)候來(lái)代替?zhèn)鹘y(tǒng)控制器的可能性。