楊恩平 薛棟吉
(南京理工大學計算機科學與工程學院 南京 210000)
從2006 年,深度學習泰斗Hinton[1]提出深度置信網絡和新的訓練方法,克服了神經網絡遇到的瓶頸,到2013 年深度學習位列十大突破性科技之首,再到后來AlphaGo 橫空出世擊敗了人類的圍棋大師,到現在人工智能的廣泛運用。這些都是深度學習帶給我們的改變。深度學習目前在圖像識別、語音識別、文本處理和大數據分析方面已經被廣泛應用,在控制領域方面,深度學習也有一定的嘗試。不過目前主要突出的是對控制目標識別和狀態特征提取方面,對于控制領域最核心也是最基礎的控制策略上,深度學習目前成果不多。
深度學習是由機器學習和多層神經網絡發展而來,其作為機器學習的一個重要的分支存在。在機器學習算法中,EM 算法[2]是對自動控制領域方面具有重大貢獻的算法。有了該算法,就可以很方便地使用高斯混合模型(GMM)[3]來表示隱馬爾科夫模型(HMM)狀態與輸入之間的關系,從而開發新的控制系統。在深度學習出來之前就有人通過多層神經網絡實現了自適應模糊邏輯控制系統[4]。
作為機器學習的分支,深度學習擁有更多的隱藏層和神經元,并且提高了學習性能,通過深度學習算法可以解決很多常規神經網絡解決不了的復雜問題。本文就是來探索深度學習在控制策略上的應用。目前韓國慶北大學的Cheon K[5]等用DBN網絡來代替PID 控制器進行過研究,證明了深度學習算法可以用來代替PID 控制器來控制空載的直流電機。Levine S[6]等分別比較了單層、多層網絡和RNN 網絡在粗糙地形運動系統中的作用,研究表明,隨著實驗樣本的增加,多層網絡和RNN 網絡性能均優于單層神經網絡,證明了深度學習算法在控制策略中的優勢。中科院自動化研究所的王飛躍[7]提出了一種計算智能最優控制:自適應動態規劃,其中利用了DNN網絡結構作為其核心結構。
本人由于研究無人機控制系統,想探討將深度學習應用于無人機控制[8~9]上的可能性,參考了機器人運動控制的資料[10],故本文研究了用深度置信網絡來模擬PID 控制器來控制帶負載的直流電機,以仿真無人機懸停在空中的時候旋翼的控制。本文采用了Matlab/Simulink 進行了仿真,證明了使用深度學習算法可以代替傳統PID 控制器來控制帶負載的直流電機。
深度學習是常規神經網絡的擴展算法,其中隱藏層的數量和神經元的數量比常規神經網絡的要多。在控制系統中,傳統的神經網絡已得到充分證明,并用作控制器設計,系統目標識別,自動調優和狀態特征提取的工具。盡管深度學習比傳統的神經網絡更有效,但目前深度學習在控制領域的應用還不普及,尤其是在大數據中。
目前有很多的深度學習網絡架構,比較常見的有基于受限玻爾茲曼機(RBM)的深度置信網絡(DBN)[11]、基于自動編碼器(AE)的堆疊自動編碼器(SAE)[12]、卷積神經網絡(CNN)[13]、循環神經網絡(RNN)[14]等,在本實驗中由于訓練條件以及控制系統的特性決定選擇深度置信網絡(DBN)。
深度置信網絡(DBN)是有多個RBM 堆疊而成。把RBM 隱藏層的層數增加,可以得到深度玻爾茲曼機(DBM),當把靠近可視層部分的網絡換成貝葉斯置信網絡,而最遠離可視層的部分使用RBM的時候,就可以得到DBN。
不同于傳統的人工神經網絡,DBN算法的訓練過程分為兩個過程,即預訓練和全局微調。DBN算法包括三個步驟如下,其中步驟1 和步驟2 是預訓練過程,步驟3是微調過程。
步驟1:輸入數據進入RBM 的可視層,然后考慮第一權重值,數據將被傳輸到隱藏層。
步驟2:第一層隱藏層成為第二層可視層,并通過考慮第二權重值將數據傳輸到第二隱藏層。同樣,第二隱藏層成為第三可視層,并將數據傳輸到第三隱藏層。以此類推,逐層訓練,直到將所有的RBM訓練完畢。
步驟3:全局微調階段,以訓練好的RBM 之間的權重和偏置作為深度信念網絡的初始權重和偏置,以數據的標簽作為監督信號計算網絡誤差,利用BP 算法計算各層誤差,使用梯度下降法完成各層權重和偏置的調節。
在預訓練階段,只使用了輸入數據,沒有使用數據標簽,屬于無監督的學習,另外,在微調階段,是有監督的學習,可以根據具體的應用場景換成不同的分類器模型,不必是BP 網絡。具體的算法框架如圖1所示,這里采用的是三層的RBM。

圖1 深度置信網絡框架
本次實驗設計主要分為三個部分,第一部分是深度學習控制器的設計,主要是包括了數據采集過程和控制器設計過程;第二部分是直流電機的說明,主要包括直流電機簡單的建模過程;第三部分是深度學習控制器系統的介紹。
傳統的PID控制器控制直流電機的過程如圖2所示,系統的輸入為電壓v,輸出為轉速w,其中在期望電壓輸入到PID 控制器之前,會與之前的反饋值進行做差,得到e(t)作為控制偏差再輸入到PID控制器中。本實驗中,會對傳統PID 控制器系統進行數據采集,采集對象為PID 控制器的輸入信號和PID 控制器輸出到直流電機的信號,采集到的數據用于深度學習網絡的訓練。

圖2 PID控制器控制直流電機過程圖
在得到了訓練數據之后分別把PID 的輸入/輸出數據作為深度學習算法的輸入/目標數據,將深度學習控制器調整為能夠替換原始PID 控制器,如圖3所示。

圖3 深度學習控制器學習代替PID過程
最后再把PID 控制器去掉,使用訓練好的深度學習網絡來控制直流電機,并與PID 控制器的系統響應圖做對比。
本文中采用DBN 網絡作為替代PID 控制器的深度學習網絡,本網絡是基于Masayuki Tanaka[15]開發的Deep Neural Network 工具箱的搭建的,由于原本該工具箱中的DBN 網絡是用作模式識別的工具,而本文中用來作為控制器工具,所以,在原來的基礎上進行了一些修改,其中隱藏層由3 層組成,每層包含了50個神經元。迭代次數設置的200次,學習率為0.01,丟失率為0.4。
在RBM 的選擇上,工具箱里面提供了多種RBM 可供選擇,包括:BBPRBM(Beta-Bernoulli 過程RBM)[16],GBRBM(Gaussian-Bernoulli RBM)和BBRBM(Bernoulli-Bernoulli RBM)。本文選擇了GBRBM 結構的RBM,因為GBRBM 中加入了高斯噪音的連續值,其可視層可以處理連續實值隨機變量。本文使用ReLU函數作為激活函數。
本文采用的直流電動機,其動力學方程如下:

其中,J是轉子的慣性矩,Kt是電動機轉矩常數,i是電樞電流,b是電動機粘性摩擦常數,L是電感,R是電阻,Ke是電動勢常數。具體直流電動機的參數值如表1所示。

表1 直流電動機參數表
本文在Matlab/Simulink 中進行了系統設計,如圖4,是給出了在Maltab/Simlink 環境下,深度學習控制器控制帶負載的直流電機系統圖。其中包含了轉矩擾動模塊、傳感器噪音模塊,模數轉換器模塊、深度學習控制器模塊和直流電機模塊。

圖4 深度學習控制器系統
本實驗在Matlab/Simlink R2018b 中完成。一次實驗過程的時間是t=10s,系統在第1s、第5s、第7s 發生變化,將10s 實驗過程分割成3 段。在第1s的時候,系統的期望轉速從0變成了2,在第5s的時候,給系統加上了0.2 的轉矩擾動,即為負載,在第7s 的時候,期望轉速從2 變成了-2,以測試在階躍信號下控制器的性能。
實驗中,經過反復調試計算,得到了比較滿意的PID 控制器的系統響應,如圖5,然后DBN 算法學習了該PID 控制器,從而得到了深度學習控制器,深度學習控制器系統響應如圖6,為了更詳細地比較,在圖7 中顯示了PID 控制器和深度學習控制器的殘差圖,并在表2 中展示了在0~5s、5s~7s 和7s~10s 這3 個階段中,PID 控制器和深度學習控制器的RMSE值。
從圖5 和圖6 中可以看出,深度學習控制器可以模仿的與PID 控制器的效果幾乎一模一樣,肉眼已經看不出來區別,可以得到在訓練次數足夠的情況下,深度學習控制器可以代替PID 控制帶負載的直流電機。從圖7 中,可以發現,在系統發生變化的過渡階段,深度學習控制器與PID 控制器的殘差相對較大,但是1.2s 之后殘差就都為零。另外,從表2 中可以得到,在任何階段,兩個控制器控制效果之間的RMSE變化都非常小,都是10-2數量級,因此也可以證明深度學習控制器很好的控制帶負載的直流電機。

圖5 PID控制器的系統響應

圖6 深度學習控制器的系統響應

圖7 PID控制器和深度學習控制器殘差變化

表2 PID控制器和深度學習控制器RMSE值
本文設計了一種基于DBN 算法的深度學習控制器,用來控制帶負載的直流電機,以探索在用深度學習控制器來代替PID 控制器的可能性。本文對PID 控制器和深度學習控制之間進行了比較。事實證明,深度學習控制器在性能上與PID 控制器性能一樣優秀,可以用來代替PID 控制器。本文研究的是增加了一個固定的負載,來模擬無人機懸停狀態下的工作狀態,但是無人機的飛行過程中姿態是經常變化的,而且控制算法中PID 也只是其中比較經典的一種,未來可以研究深度學習控制器在面對線性負載和非線性負載的時候來代替傳統控制器的可能性。