況立群,馮 利,韓 燮,賈炅昊,郭廣行
(1.中北大學 大數據學院,山西 太原 030051;2.北方自動控制技術研究所,山西 太原 030006;3.太原師范學院 地理科學學院,山西 太原 030006)
決策的主要任務是對諸多影響因素進行綜合分析,進而產生效益最好且所需付代價最小的可行方案。通常需要從多個角度來綜合考量,僅僅依靠人力決策將面臨著數據集龐大、模型設計復雜、預測準確性差、受人為因素影響大等問題。智能決策算法可有效解決上述問題,其可靠性高,受個人經驗和思維能力等主觀影響較小,面對龐大的數據計算問題通過計算機輔助決策也可迎刃而解。隨著計算機技術的發展和決策算法的逐漸成熟,智能決策算法被廣泛應用于醫療、教育、交通以及軍事等各個領域,智能決策系統在諸多領域中發揮著越來越重要的作用。
傳統的智能決策算法一般采用動態規劃、決策樹、遺傳算法等理論方法,陳建凱提出了區間值屬性的單調決策樹算法,有效提高了單調分類問題的計算效率。王輝等人提出了一種基于動態規劃的改進算法,提高了算法收斂速度和尋優能力。但在智能決策領域這些借助人工經驗的經典算法智能化程度通常較低,而且遺傳算法對新空間的探索能力有限,容易出現“早熟”問題;動態規劃占據過多的空間,對計算機資源造成浪費;決策樹受主觀性影響較大,可能導致決策失誤。
目前智能決策領域更多采用強化學習來驅動智能體決策行為,可有效彌補傳統決策算法所面臨的不足。雷瑩等人開發出一種合作Markov決策系統,提出了一種尋找最優策略對的學習算法,智能體可交替執行行為,實現多智能體之間任務協同的決策演練。強化學習中的經典算法Q-learning是一種離線策略的學習算法,根據策略所選取的動作與當前環境相互交互,產生相應的獎勵值以及下一步的狀態來不斷地更新Q表,得到更優的Q函數,從而探索出更優的應對環境新態勢的決策方案。然而,在空間和時間多樣化、復雜化的決策任務中,任務狀態已經龐大到無法通過Q表進行存儲,導致維度災難問題。
阿爾法圍棋是近幾年由Google DeepMind開發的基于深度強化學習的人工智能圍棋軟件,其通過與自身進行上千萬次的博弈來提升棋藝,擊敗了人類頂級圍棋棋手,而且在對弈的過程中竟運用了許多創新招式。這為該文研究智能決策算法提供了新的思路,即研究基于深度強化學習算法的深度神經網絡來解決維度災難問題。該文通過虛擬的對抗演練系統對智能決策算法進行驗證,智能體根據地圖數據、環境數據以及敵方的兵力布置等信息,利用雙深度Q網絡的深度強化學習算法與環境相互交互,不斷地試錯學習,在盡量躲避敵方火力覆蓋范圍的情況下,短時間確定敵軍目標,并以最優的策略壓制、殲滅敵軍,擊毀敵軍基地。該文應用于智能決策算法領域,為實施智能決策系統提供典型案例。
強化學習中的經典算法Q-Learning雖然可以求出最優策略,但是無法解決維度災難問題。該算法為了實現狀態動作函數的不斷迭代,將狀態動作函數的值儲存于內存中,但是計算機的內存空間又極其有限。假如在一個大小為50*50的地理場景中添加10個智能體,那么僅僅是智能體的位置就有約10種不同的情況,顯然大多數計算機都無法存儲如此巨大的狀態表。
深度Q網絡算法(deep Q network,DQN)是由Mnih等人將卷積神經網絡與傳統的強化學習中的Q學習算法相結合所提出的,使用神經網絡來表示價值近似函數,將深度學習的概念融入強化學習中,采用價值近似函數去對狀態價值函數Q進行近似估計,故而解決了Q-Learning算法的維度災難問題。
1.1.1 DQN模型結構
DQN的模型結構如圖1所示。

圖1 DQN模型結構
該模型運用的是Q-Learning的一種變種訓練深度卷積神經(CNN),算法模型的輸入是初始狀態信息,將該輸入信息離散化后經過CNN的非線性變換,最終在輸出層產生每個動作相應的Q值。
1.1.2 目標網絡
DQN采用近似表示值函數的優化目標,將值函數參數化表示為Q
(φ
(S
),A
,ω
),每次迭代的優化目標Q值為:
(1)


(2)
對式3中的參數ω
求偏導,得到的損失函數梯度為:
(3)
DQN采用增加目標網絡的方式降低了當前Q值和目標Q值的相關性,從而提高了算法穩定性。DQN訓練流程如圖2所示。

圖2 DQN訓練流程
1.1.3 記憶回放機制
與Q-Learning算法相比較,DQN還具備一個較大的優勢,DQN采用記憶回放機制訓練狀態價值網絡,因為狀態之間的關聯性較大,經驗回放可以打破樣本間彼此的關聯性,所以可以使神經網絡的訓練更加收斂和穩定,可有效地提高學習效率。
由于DQN在進行值函數優化目標時,動作選擇和策略評估都是基于目標值網絡的參數,因此DQN算法在學習過程中常常會出現過高估計Q值的問題,即每次迭代選取的都是下一個狀態中最大Q值所對應的動作。為了解決DQN算法在學習中估計值過高的問題,該文在DQN和雙Q-learning算法的基礎上提出一種雙深度Q網絡(double DQN,DDQN)算法,將動作選擇和策略評估分開進行,使用當前值網絡的參數來選擇最優動作,使用目標值網絡的參數來評估該最優動作,以便估計出更加準確的Q值,獲得更穩定有效的策略。DDQN的優化目標Q值為:

(4)
該文設計的DDQN算法詳細描述如下:
(1)初始化Q網絡參數ω
及目標Q網絡Q的參數ω
=ω
,并初始化所有狀態和動作所對應的價值Q。初始化經驗回放單元D。(2)fori
toT
,進行迭代。①初始化狀態序列中第一個狀態S,其特征向量為φ
(S
)。②將φ
(S
)作為Q網絡中的輸入,得到所有動作所對應輸出的Q值,再通過∈-貪婪法選擇對應的動作A。③在狀態S下選擇并執行當前動作A,得到下一個狀態的特征向量φ
(S
)以及獎勵R,判斷是否為終止狀態is_end。④將五元組{φ
(S
),A,R,φ
(S
),is_end}存入經驗回放單元D中。⑤令S
=S
。⑥從經驗回放單元D中采集m
個樣本,計算當前目標Q值y
,其中j
=1,2,…,m
,則:

i
%P
=1,則更新目標Q網絡參數ω
=ω
。⑨判斷S
是否為終止狀態,若是終止狀態則結束當前輪迭代,否則轉到步驟②。1.3.1 記憶回放單元的相關參數設置
該研究著眼于任務的復雜度,將記憶回放單元的大小設置為1 000,每次訓練神經網絡所用到的回放記憶單元的狀態個數為50個。在每次獲取到動作所對應的激勵值后,系統將執行動作前的智能體狀態、執行動作后的智能體狀態、動作和獎勵值插入記憶回放單元。若記憶回放單元已滿,則彈出當前存儲的最早的狀態。每次訓練神經網絡時將隨機在記憶回放單元中抽取50條記錄以完成對神經網絡的訓練。
1.3.2 神經網絡的初始化及更新
設隱藏層每層偏置b
的值為0.01,連接每層網絡的矩陣為,該研究使用正態分布初始化神經網絡的參數。隱藏層神經網絡的深度和廣度過大或者過小會使擬合的效果飽和或負增長,該研究根據當前任務的復雜度設置較為適中的神經網絡大小,以便該神經網絡在各種情況下都適用。后續實驗中由于大多數任務所經歷的狀態數集中在10 000以內,故將隱藏層的第一層廣度設置為2 500,之后每一層的廣度依次遞減,可有效節省計算時間和空間。為了驗證雙深度Q網絡算法的有效性,設計了一套虛擬的智能對抗演練系統,己方作戰單位智能體根據地圖數據、環境數據以及兵力部署等信息,利用DDQN算法在作戰環境交互試錯中不斷訓練學習,在盡量躲避敵方火力覆蓋范圍的情況下,短時間確定敵軍目標,并以最優的策略壓制、殲滅敵軍,擊毀敵軍基地。
由于執行算法程序比較耗費計算機資源,采用客戶/服務器模式可有效節省硬件開銷,提高數據處理能力與算法執行效率,系統總體架構如圖3所示。

圖3 系統總體架構
客戶端實現任務控制及決策推演結果折線圖的顯示。客戶端編輯任務指令,提交任務后系統會將任務表單信息序列化,使用HTTP協議發送給服務端。服務端則進行數據反序列化,建立任務工作目錄,并新建一個進程執行算法程序。算法決策過程同步更新到任務的工作目錄下。客戶端每隔3秒從服務器獲取算法決策結果,以更新算法推演折線圖。算法決策結束后,Unity3D程序根據客戶端的態勢信息以及服務端任務工作目錄的決策數據對智能體訓練結果進行可視化。
客戶端任務錄入采用數據綁定的方式,將View層和Model層的數據相互綁定,Model層的數據隨著用戶的鍵入而改變,同時重載JavaFx框架下的UnaryOperator類以實現對用戶輸入內容的限定,保證了系統的易用性與安全性。與此同時,系統采用動態創建控件的方式,以實現用戶可以根據需要動態地添加多個任務對象的信息。服務端在接收到客戶端傳來的反序列化后的任務數據后,會更新任務記錄表并創建以對應ID命名的文件夾,并持久化存儲相關任務數據信息。
智能決策系統包括任務管理模塊、算法決策模塊和可視化演示模塊。任務管理模塊實現客戶端任務控制等功能;算法決策模塊實現服務端創建工作目錄、算法推演等功能,對輸入的任務環境信息進行計算分析,最終訓練得到一個具備高智能行為的智能體模型,并輸出當前最優決策序列;可視化演示模塊根據環境態勢信息數據以及當前最優決策序列實現對算法推演結果進行可視化演示功能。系統功能模塊如圖4所示。

圖4 系統功能模塊
采用DDQN算法對輸入的數據進行處理后輸出決策數據,在算法完成一次迭代后,程序會更新迭代次數文件以支持客戶端顯示當前迭代進度,若當前迭代結果為最優解,則更新存儲算法推演結果的文件。系統決策訓練的總體控制流程如圖5所示。

圖5 算法決策總控流程
其中單個智能體特訓目的是在多智能體任務協同模型中,很難確保每個智能體均獲取到正向獎勵值的訓練問題。系統每隔一定輪數便驅使單個智能體獨立完成攻擊任務,這樣便盡可能地使每一個智能體都可以獲得正向的激勵。
與此同時,智能體探索特訓是指系統每隔一定輪數會以較高的隨機值訓練智能體,以此使智能體探索更多未知的情況,從而迭代出更優的解法。
獎勵函數的設計將直接影響智能體訓練的優劣程度,設置合理的獎勵參數對于智能決策系統尤為重要。
在本系統的決策任務中,當智能體對敵方基地實施攻擊并成功時,獎勵值為40 000,攻擊失敗獎勵值為-1 000;當智能體對敵方作戰單位實施攻擊并攻擊成功時,獎勵值為500,攻擊失敗獎勵值為-100;智能體機動過程中,若發生碰撞獎勵值為-1 000;若所處位置為敵方作戰單位可攻擊范圍內,獎勵值為-1 000;智能體更靠近敵方基地,獎勵值為100,否則獎勵值為0。
系統將每個智能體定義為一個獨立的訓練對象,每個智能體具備單獨的神經網絡,不同的智能體共用同一套環境以確保可以協同作戰。而敵方作戰單位則采用固定腳本方式來控制其行為,通過調整敵方作戰單位火力密度、抗毀傷能力、攻擊范圍以及地圖數據等方法改變戰場態勢,達到智能體在不同的任務態勢下進行訓練的目的。
該系統輸入為地圖、智能體、敵方作戰單位等元素的初始狀態數據,每個智能體的狀態定義如表1所示。

表1 智能體狀態數組定義
輸出包括智能體動作數據文件及算法迭代結果文件。該系統中的動作分為智能體的移動和攻擊動作。移動包括上、下、左、右、左上、右上、左下、右下八個動作,由編號0-7表示。攻擊動作又分為兩種,其一是對基地的攻擊動作,其編號為8,其二是對敵方作戰單位的攻擊動作,編號從9開始,總個數為敵方作戰單位的數量,分別對應智能體攻擊敵方各個作戰單位的動作。
算法完成一次迭代后會更新迭代次數文件以支持客戶端顯示當前迭代進度,若當前迭代結果是最優解,則更新當前最優步數的結果文件。
可視化演示程序根據任務管理客戶端傳來的數據對各個對象的屬性進行初始化。若存在多個種類相同的對象,則調用Unity的Instantiate方法完成對象的復制與實例化。
智能體的移動采用Unity的Navigation尋路功能實現。Navigation尋路功能可以控制移動對象的轉向、移動速度等,將小尺度的移動細節利用Navigation處理可以降低代碼的復雜度,同時也會使演示動畫更加流暢自然。
(1)任務信息。
通過客戶端界面新建任務,可編輯地圖初始信息。任務創建后點擊單個任務,客戶端會再次請求服務器,獲取該任務詳細信息,如圖6所示。

圖6 任務詳細信息界面
(2)算法推演結果。
客戶端每隔三秒會向服務器發送請求獲取對應任務的演算情況,以刷新算法演算過程的迭代折線圖。DQN算法訓練折線圖如圖7(a)所示。

圖7 DQN和DDQN算法訓練折線圖
相同的環境態勢,更換DDQN算法重新對神經網絡進行訓練,DDQN算法訓練折線圖如圖7(b)所示。
在初始態勢相同的情況下,分別使用DQN算法和DDQN算法對神經網絡依次進行訓練,訓練結束后,通過對兩個算法的訓練折線圖進行比較,可以觀察到DDQN算法訓練迭代到200余次,步數穩定在40步左右,相反,DQN算法訓練結果步數上下浮動較大,訓練結果不能夠有效收斂。實驗結果顯示,DDQN算法較DQN算法更穩定有效,更適用于該研究。
(3)可視化演示。
算法演算結束后,執行Unity程序對演算結果進行可視化,演示中第一人視角如圖8所示。

圖8 第一人稱視角
該文研究了基于強化學習的智能決策算法,并在虛擬智能對抗演練系統中進行了驗證。驗證系統集成了客戶/服務端、可視化演示和深度強化學習算法,智能體通過訓練學習能夠在短時間內確定目標,并以較快的時間壓制、殲滅目標,同時避免在敵方火力覆蓋范圍內行動,有效降低了智能體的毀傷程度。該文設計的DDQN決策算法有望在策略游戲、對抗演練、任務方案評估等領域發揮作用。
同時,該算法還有進一步的完善空間,在多智能體任務協同中沒有將整個訓練環境視為一個訓練對象,而是將每個智能體定義為一個獨立的訓練對象,使各個智能體共用同一個訓練環境來達到任務協同的目的。這種方法雖然大幅提高了計算速度,但是會導致某些智能體訓練不充分而使決策結果接近最優值卻無法達到最優值。此外,對于復雜的任務環境,需要考慮針對于不同決策目標的諸多因素。