人工智能中的很多應(yīng)用問題需要算法在每個時刻做出決策并執(zhí)行動作。對于圍棋,每一步需要決定在棋盤的哪個位置放置棋子,以最大可能的戰(zhàn)勝對手;對于自動駕駛算法,需要根據(jù)路況來確定當(dāng)前的行駛策略以保證安全的行駛到目的地;對于機械手,要驅(qū)動手臂運動以抓取到設(shè)定的目標物體。這類問題有一個共同的特點:要根據(jù)當(dāng)前的條件作出決策和動作,以達到某一預(yù)期目標。解決這類問題的機器學(xué)習(xí)算法稱為強化學(xué)習(xí)(reinforcement learning,RL)。雖然傳統(tǒng)的強化學(xué)習(xí)理論在過去幾十年中得到了不斷的完善,但還是難以解決現(xiàn)實世界中的復(fù)雜問題。 深度強化學(xué)習(xí)(DRL,deep reinforcement learning)是深度學(xué)習(xí)與強化學(xué)習(xí)相結(jié)合的產(chǎn)物,它集成了深度學(xué)習(xí)在視覺等感知問題上強大的理解能力,以及強化學(xué)習(xí)的決策能力,實現(xiàn)了端到端學(xué)習(xí)。深度強化學(xué)習(xí)的出現(xiàn)使得強化學(xué)習(xí)技術(shù)真正走向?qū)嵱茫靡越鉀Q現(xiàn)實場景中的復(fù)雜問題。從2013年DQN(深度Q網(wǎng)絡(luò),deep Q network)出現(xiàn)到目前為止,深度強化學(xué)習(xí)領(lǐng)域出現(xiàn)了大量的算法,以及解決實際應(yīng)用問題的論文。在這篇文章中,SIGAI將對深度強化學(xué)習(xí)的算法與應(yīng)用進行總結(jié)。整個綜述分為上下兩篇,本篇介紹強化學(xué)習(xí)的基本原理,深度強化學(xué)習(xí)的基本思想,以及基于價值函數(shù)的深度強化學(xué)習(xí)算法。下篇介紹基于策略的深度強化學(xué)習(xí)算法,基于搜索與監(jiān)督的深度強化學(xué)習(xí)算法,以及深度強化學(xué)習(xí)算法的應(yīng)用情況與未來的方向。 什么是強化學(xué)習(xí)強化學(xué)習(xí)[1]是一類特殊的機器學(xué)習(xí)算法,借鑒于行為主義心理學(xué)。與有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)的目標不同,算法要解決的問題是智能體(agent,即運行強化學(xué)習(xí)算法的實體)在環(huán)境中怎樣執(zhí)行動作以獲得最大的累計獎勵。例如,對于自動行駛的汽車,強化學(xué)習(xí)算法控制汽車的動作,保證安全行駛到目的地。對于圍棋算法,算法要根據(jù)當(dāng)前的棋局來決定如何走子,以贏得這局棋。對于第一個問題,環(huán)境是車輛當(dāng)前行駛狀態(tài)(如速度)、路況這樣的參數(shù)構(gòu)成的系統(tǒng)的抽象,獎勵是我們期望得到的結(jié)果,即汽車正確的在路面上行駛,到達目的地而不發(fā)生事故。 很多控制、決策問題都可以抽象成這種模型。和有監(jiān)督學(xué)習(xí)類似,強化學(xué)習(xí)也有訓(xùn)練過程,需要不斷的執(zhí)行動作,觀察執(zhí)行動作后的效果,積累經(jīng)驗形成一個模型。與有監(jiān)督學(xué)習(xí)不同的是,這里每個動作一般沒有直接標定的標簽值作為監(jiān)督信號,系統(tǒng)只給算法執(zhí)行的動作一個反饋,這種反饋一般具有延遲性,當(dāng)前的動作所產(chǎn)生的后果在未來才會完全體現(xiàn),另外未來還具有隨機性,例如下一個時刻路面上有哪些行人、車輛在運動,算法下一個棋子之后對手會怎么下,都是隨機的而不是確定的。當(dāng)前下的棋產(chǎn)生的效果,在一局棋結(jié)束時才能體現(xiàn)出來。 強化學(xué)習(xí)應(yīng)用廣泛,被認為是通向強人工智能/通用人工智能的核心技術(shù)之一。所有需要做決策和控制的地方,都有它的身影。典型的包括游戲與博弈,如打星際爭霸、Atari游戲: 算法需要根據(jù)當(dāng)前的游戲畫面和狀態(tài)決定其要執(zhí)行的動作,如按游戲的鍵盤、手柄,鼠標。 圍棋,象棋等棋類游戲: 算法需要根據(jù)當(dāng)前的棋局決定當(dāng)前該怎么走子。 自動駕駛系統(tǒng)/無人車: 算法需要根據(jù)當(dāng)前的路況,無人車自身的狀態(tài)(如速度、加速度)決定其行駛的行為,如控制方向盤,油門,剎車等。 機器人控制: 機器人要根據(jù)當(dāng)前所處的環(huán)境,自身的狀態(tài),決定其要執(zhí)行的動作。 所有這些問題總計起來都有一個特點,即智能體需要觀察環(huán)境和自身的狀態(tài),然后決定要執(zhí)行的動作,以達到想要的目標: 智能體是強化學(xué)習(xí)的動作實體。對于自動駕駛的汽車,環(huán)境是當(dāng)前的路況;對于圍棋,狀態(tài)是當(dāng)前的棋局。在每個時刻,智能體和環(huán)境有自己的狀態(tài),如汽車當(dāng)前位置和速度,路面上的車輛和行人情況。智能體根據(jù)當(dāng)前狀態(tài)確定一個動作,并執(zhí)行該動作。之后它和環(huán)境進入下一個狀態(tài),同時系統(tǒng)給它一個反饋值,對動作進行獎勵或懲罰,以迫使智能體執(zhí)行期望的動作。 強化學(xué)習(xí)是解決這種決策問題的一類方法。算法要通過樣本學(xué)習(xí)得到一個映射函數(shù),稱為策略函數(shù),其輸入是當(dāng)前時刻環(huán)境信息,輸出是要執(zhí)行的動作: 其中s為狀態(tài),a為要執(zhí)行的動作,狀態(tài)和動作分別來自狀態(tài)集合和動作集合。動作和狀態(tài)可以是離散的,如左轉(zhuǎn)30度、右轉(zhuǎn)30度,也可以是連續(xù)的實數(shù),如左轉(zhuǎn)30度、右轉(zhuǎn)30度。對于前者,動作和狀態(tài)集合是有限集,對于后者,是無限集。執(zhí)行動作的目標是要達到某種目的,如無人汽車安全的行駛,贏得本次圍棋比賽,用回報函數(shù)對此進行建模。 馬爾可夫決策過程 強化學(xué)習(xí)要解決的問題可以抽象成馬爾可夫決策過程(Markov Decision Process,簡稱MDP)。馬爾可夫過程的特點是系統(tǒng)下一個時刻的狀態(tài)由當(dāng)前時刻的狀態(tài)決定,與更早的時刻無關(guān)。與馬爾可夫過程不同的是,在MDP中系智能體可以執(zhí)行動作,從而改變自己和環(huán)境的狀態(tài),并且得到懲罰或獎勵。馬爾可夫決策過程可以表示成一個五元組: 其中S和A分別為狀態(tài)和動作的集合。假設(shè)t時刻狀態(tài)為st,智能體執(zhí)行動作a,下一時刻進入狀態(tài)st+1。這種狀態(tài)轉(zhuǎn)移與馬爾可夫模型類,不同的是下一時刻的狀態(tài)由當(dāng)前狀態(tài)以及當(dāng)前采取的動作決定,是一個隨機性變量,這一狀態(tài)轉(zhuǎn)移的概率為: 這是當(dāng)前狀態(tài)為s時行動作a,下一時刻進入狀態(tài)s'的條件概率。下一時刻的狀態(tài)與更早時刻的狀態(tài)和動作無關(guān),狀態(tài)轉(zhuǎn)換具有馬爾可夫性。有一種特殊的狀態(tài)稱為終止狀態(tài)(也稱為吸收狀態(tài)),到達該狀態(tài)之后不會再進入其他后續(xù)狀態(tài)。對于圍棋,終止狀態(tài)是一局的結(jié)束。 執(zhí)行動作之后,智能體會收到一個立即回報: 立即回報與當(dāng)前狀態(tài)、當(dāng)前采取的動作以及下一時刻的狀態(tài)有關(guān)。在每個時刻t,智能體選擇一個動作at執(zhí)行,之后進入下一狀態(tài)st+1,環(huán)境給出回報值。智能體從某一初始狀態(tài)開始,每個時刻選擇一個動作執(zhí)行,然后進入下一個狀態(tài),得到一個回報,如此反復(fù): 問題的核心是執(zhí)行動作的策略,它可以抽象成一個函數(shù)π,定義了在每種狀態(tài)時要選擇執(zhí)行的動作。這個函數(shù)定義了在狀態(tài)s所選擇的動作為: 這是確定性策略。對于確定性策略,在每種狀態(tài)下智能體要執(zhí)行的動作是唯一的。另外還有隨機性策略,智能體在一種狀態(tài)下可以執(zhí)行的動作有多種,策略函數(shù)給出的是執(zhí)行每種動作的概率: 即按概率從各種動作中隨機選擇一種執(zhí)行。策略只與當(dāng)前所處的狀態(tài)有關(guān),與時間點無關(guān),在不同時刻對于同一個狀態(tài)所執(zhí)行的策略是相同的。 強化學(xué)習(xí)的目標是要達到某種預(yù)期,當(dāng)前執(zhí)行動作的結(jié)果會影響系統(tǒng)后續(xù)的狀態(tài),因此需要確定動作在未來是否能夠得到好的回報,這種回報具有延遲性。對于圍棋,當(dāng)前走的一步棋一般不會馬上結(jié)束,但會影響后續(xù)的棋局,需要使得未來贏的概率最大化,而未來又具有隨機性,這為確定一個正確的決策帶來了困難。 選擇策略的目標是按照這個策略執(zhí)行后,在各個時刻的累計回報值最大化,即未來的預(yù)期回報最大。按照某一策略執(zhí)行的累計回報定義為: 這里使用了帶衰減系數(shù)的回報和。按照策略π,智能體在每個時刻t執(zhí)行的動作為: 其中γ稱為折扣因子,是[0, 1]之間的一個數(shù)。在每個時刻t執(zhí)行完動作at得到的回報為: 使用折扣因子是因為未來具有更大的不確定性,所以回報值要隨著時間衰減。另外如果不加上這種按照時間的指數(shù)級衰減會導(dǎo)致整個求和項趨向于無窮大。這里假設(shè)狀態(tài)轉(zhuǎn)移概率以及每個時刻的回報是已知的,算法要尋找最佳策略來最大化上面的累計回報。 如果每次執(zhí)行一個動作進入的下一個狀態(tài)是確定的,則可以直接用上面的累計回報計算公式。如果執(zhí)行完動作后進入的下一個狀態(tài)是隨機的,則需要計算各種情況的數(shù)學(xué)期望。類似于有監(jiān)督學(xué)習(xí)中需要定義損失函數(shù)來評價預(yù)測函數(shù)的優(yōu)劣,在強化學(xué)習(xí)中也需要對策略函數(shù)的優(yōu)劣進行評價。為此定義狀態(tài)價值函數(shù)的概念,它是在某個狀態(tài)s下,按照策略π執(zhí)行動作,累計回報的數(shù)學(xué)期望,衡量的是按照某一策略執(zhí)行之后的累計回報。狀態(tài)價值函數(shù)的計算公式為: 這是一個遞歸的定義,函數(shù)的自變量是狀態(tài)與策略函數(shù),將它們映射成一個實數(shù),每個狀態(tài)的價值函數(shù)依賴于從該狀態(tài)執(zhí)行動作后能到達的后續(xù)狀態(tài)的價值函數(shù)。在狀態(tài)s時執(zhí)行動作π(s),下一時刻的狀態(tài)s'是不確定的,進入每個狀態(tài)的概率為pπ(s)(s,s'),當(dāng)前獲得的回報是Rπ(s)(s,s'),因此需要對下一時刻所有狀態(tài)計算數(shù)學(xué)期望即概率意義上的均值,而總的回報包括當(dāng)前的回報,以及后續(xù)時刻的回報值之和即Vπ(s')。在這里R(s)表示當(dāng)前時刻獲得的回報。如果是非確定性策略,還要考慮所有的動作,這種情況的狀態(tài)價值函數(shù)計算公式為: 對于終止狀態(tài),無論使用什么策略函數(shù),其狀態(tài)價值函數(shù)為0。類似的可以定義動作價值函數(shù)。它是智能體按照策略π執(zhí)行,在狀態(tài)s時執(zhí)行具體的動作a后的預(yù)期回報,計算公式為: 動作價值函數(shù)除了指定初始狀態(tài)s與策略π之外,還指定了在當(dāng)前的狀態(tài)s時執(zhí)行的動作a。這個函數(shù)衡量的是按照某一策略,在某一狀態(tài)時執(zhí)行各種動作的價值。這個值等于在當(dāng)前狀態(tài)s下執(zhí)行一個動作后的立即回報Ra(s,s'),以及在下一個狀態(tài)s'時按照策略π執(zhí)行所得到的狀態(tài)價值函數(shù)Vπ(s')之和,此時也要對狀態(tài)轉(zhuǎn)移pa(s,s')概率求數(shù)學(xué)期望。狀態(tài)價值函數(shù)和動作值函數(shù)的計算公式稱為貝爾曼方程,它們是馬爾可夫決策過程的核心。 因為算法要尋找最優(yōu)策略,因此需要定義最優(yōu)策略的概念。因為狀態(tài)價值函數(shù)定義了策略的優(yōu)劣,因此我們可以根據(jù)此函數(shù)值對策略的優(yōu)劣進行排序。對于兩個不同的策略π和π',如果對于任意狀態(tài)s都有: 則稱策略π優(yōu)于策略π'。對于任意有限狀態(tài)和動作的馬爾可夫決策過程,都至少存在一個最優(yōu)策略,它優(yōu)于其他任何不同的策略。 一個重要結(jié)論是,所有的最優(yōu)策略有相同的狀態(tài)價值函數(shù)和動作價值函數(shù)值。最優(yōu)動作價值函數(shù)定義為: 對于狀態(tài)-動作對(s,a),最優(yōu)動作價值函數(shù)給出了在狀態(tài)s時執(zhí)行動作a,后續(xù)狀態(tài)時按照最優(yōu)策略執(zhí)行時的預(yù)期回報。找到了最優(yōu)動作價值函數(shù),根據(jù)它可以得到最優(yōu)策略,具體做法是在每個狀態(tài)時執(zhí)行動作價值函數(shù)值最大的那個動作: 因此可以通過尋找最優(yōu)動作價值函數(shù)而得到最優(yōu)策略函數(shù)。如果只使用狀態(tài)價值函數(shù),雖然能找到其極值,但不并知道此時所采用的策略函數(shù)。 最優(yōu)狀態(tài)價值函數(shù)和最優(yōu)動作價值函數(shù)都滿足貝爾曼最優(yōu)性方程。對于狀態(tài)價值函數(shù),有: 上式的意義是對任何一個狀態(tài)s,要保證一個策略π能讓狀態(tài)價值函數(shù)取得最大值,則需要本次執(zhí)行的動作a所帶來的回報與下一狀態(tài)s'的最優(yōu)狀態(tài)價值函數(shù)值之和是最優(yōu)的。對于動作價值函數(shù),類似的有: 其意義是要保證一個策略使得動作價值函數(shù)是最優(yōu)的,則需要保證在執(zhí)行完本動a之后,在下一個狀態(tài)s'所執(zhí)行的動作a'是最優(yōu)的。對于任意有限狀態(tài)和動作的馬爾可夫決策過程,貝爾曼最優(yōu)方程有唯一解,且與具體的策略無關(guān)??梢詫⒇悹柭顑?yōu)性方程看成一個方程組,每個狀態(tài)有一個方程,未知數(shù)的數(shù)量也等于狀態(tài)的數(shù)量。 時序差分算法如果能知道所有狀態(tài)的狀態(tài)轉(zhuǎn)移概率,以及回報值,則理論上可以用動態(tài)規(guī)劃算法求解,這是一種迭代法,從一個隨機設(shè)定的初始值開始,用某種規(guī)則進行迭代,直到收斂到狀態(tài)價值函數(shù)或者動作價值函數(shù)的極大值。迭代的規(guī)則一般是貝爾曼方程或貝爾曼最優(yōu)性方程。 但在很多實際應(yīng)用中,我們無法得到所有狀態(tài)的轉(zhuǎn)移概率,例如自動駕駛、圍棋,此時無法使用動態(tài)規(guī)劃算法求解,只能采用隨機算法,其核心思想是:從一個初始的隨機策略開始隨機的執(zhí)行一些動作,然后觀察回報和狀態(tài)轉(zhuǎn)移,以此估計價值函數(shù)的值,或者更新價值函數(shù)的值。形象的說,就是加大效果的動作的執(zhí)行力度,減小效果不好的動作的執(zhí)行力度。蒙特卡洛算法和時序差分算法是典型的代表,在這里我們重點介紹時序差分算法的一種實現(xiàn)-Q學(xué)習(xí)。 時序差分算法(Temporal Difference learning,簡稱TD學(xué)習(xí))[2]在執(zhí)行一個動作之后進行動作價值函數(shù)更新。TD算法無需依賴狀態(tài)轉(zhuǎn)移概率,直接通過生成隨機的樣本來計算。TD算法用貝爾曼方程估計價值函數(shù)的值,然后構(gòu)造更新項。其典型實現(xiàn)有SARSA算法和Q學(xué)習(xí)算法。 Q學(xué)習(xí)算法[3]是時序差分算法的一種,它估計每個動作價值函數(shù)的最大值,通過迭代可以直接找到Q函數(shù)的極值,從而確定最優(yōu)策略。Q學(xué)習(xí)訓(xùn)練算法的流程如下: 初始化,將所有非終止狀態(tài)的Q(s, a)初始化為任意值,終止狀態(tài)的初始化為0 實現(xiàn)時需要根據(jù)當(dāng)前的動作價值函數(shù)的估計值為每個狀態(tài)選擇一個動作來執(zhí)行,有3種方案。第1種是隨機選擇一個動作,稱為探索(exploration)。第2種是根據(jù)當(dāng)前的動作函數(shù)值選擇一個價值最大的動作執(zhí)行: 稱為利用(exploitation)。第3種是前兩者的結(jié)合,即ε-貪心策略。執(zhí)行完動作之后,進入狀態(tài)s',然后尋找狀態(tài)s'下所有動作的價值函數(shù)的極大值,構(gòu)造更新項。算法最終會收斂到動作價值函數(shù)的最優(yōu)值。 用于預(yù)測時,在每個狀態(tài)下選擇函數(shù)值最大的動作執(zhí)行,這就是最優(yōu)策略,具體實現(xiàn)時同樣可以采用ε-貪心策略。 具體實現(xiàn)時,將所有狀態(tài)、動作的Q(s, a)存儲在一個二維表格中,先初始化,然后通過此表格來確定一些動作執(zhí)行,然后更新表格的值,直到收斂。 深度強化學(xué)習(xí)的早期探索前面介紹的Q學(xué)習(xí)都只能用于狀態(tài)和動作的集合是有限的離散基且狀態(tài)和動作數(shù)量較少的情況,狀態(tài)和動作需要人工預(yù)先設(shè)計,Q函數(shù)值需要存儲在一個二維表格中。實際應(yīng)用中的場景可能會很復(fù)雜,很難定義出離散的狀態(tài);即使能夠定義,數(shù)量也非常大,無法用數(shù)組存儲。 對于強化學(xué)習(xí)來說,很多實際應(yīng)用問題的輸入數(shù)據(jù)是高維的,如圖像,聲音,算法要根據(jù)它們來選擇一個動作執(zhí)行以達到某一預(yù)期的目標。比如,對于自動駕駛算法,要根據(jù)當(dāng)前的畫面決定汽車的行駛方向和速度。經(jīng)典的強化學(xué)習(xí)算法如Q學(xué)習(xí)需要列舉出所有可能的情況(稱為狀態(tài),這是對當(dāng)前所處環(huán)境的抽象),然后進行迭代。Q學(xué)習(xí)的經(jīng)典實現(xiàn)是列舉出所有的狀態(tài)和動作,構(gòu)建Q函數(shù)表,這是一個二維的表,然后迭代計算各種狀態(tài)下執(zhí)行各種動作的預(yù)期回報的最大值。對于高維的輸入數(shù)據(jù),顯然是不現(xiàn)實的,因為如果直接以原始數(shù)據(jù)作為狀態(tài),維數(shù)太高,而且狀態(tài)數(shù)量太多。 一種解決方案是從高維數(shù)據(jù)中抽象出特征,作為狀態(tài),然后用強化學(xué)習(xí)建模,但這種做法很大程度上依賴于人工特征的設(shè)計。如從畫面中提取出目標的位置、速度等信息,也非常困難,這也是一個難題。 用一個函數(shù)來逼近價值函數(shù)或策略函數(shù)成為解決這個問題的一種思路,函數(shù)的輸入是原始的狀態(tài)數(shù)據(jù),函數(shù)的輸出是價值函數(shù)值或策略函數(shù)值。 在有監(jiān)督學(xué)習(xí)中,我們用神經(jīng)網(wǎng)絡(luò)來擬合分類或回歸函數(shù),同樣的,也可以用神經(jīng)網(wǎng)絡(luò)可來擬合強化學(xué)習(xí)中的價值函數(shù)和策略函數(shù),這就是深度強化學(xué)習(xí)的基本思想。 將神經(jīng)網(wǎng)絡(luò)與強化學(xué)習(xí)進行結(jié)合并不是一個新的想法,早在1995年就有人進行了這一的嘗試。首先是TD-gammon算法[4],這是一種用強化學(xué)習(xí)玩西洋雙陸棋的方法,取得了比人類選手更好的成績。這種方法采用了與Q學(xué)習(xí)類似的策略,用多層感知器模型來逼近狀態(tài)價值函數(shù)(V函數(shù)而不是Q函數(shù))。 對這個算法感興趣的話,可以閱讀文獻[4]。然而,后來將這種算法用于國際象棋,圍棋,西洋跳棋時,效果卻非常差。這使得人們認為TD-gammon算法只是一個特例,而不具有通用性。 后面的分析表明,將Q學(xué)習(xí)這樣的無模型強化學(xué)習(xí)算法(即不知道環(huán)境的狀態(tài)轉(zhuǎn)移概率,以及回報函數(shù))與非線性價值函數(shù)逼近結(jié)合使用時會導(dǎo)致Q網(wǎng)絡(luò)不收斂。即在訓(xùn)練時Q網(wǎng)絡(luò)無法收斂到Q函數(shù)的極大值。相比之下,用線性函數(shù)來逼近價值函數(shù),會有更好的收斂性。對于收斂性問題,文獻[5]有詳細的分析與證明。 深度學(xué)習(xí)出現(xiàn)之后,將深度神經(jīng)網(wǎng)絡(luò)用于強化學(xué)習(xí)是一個很自然的想法。深度神經(jīng)網(wǎng)絡(luò)能夠?qū)崿F(xiàn)端到端的學(xué)習(xí),直接從圖像,聲音等高維數(shù)據(jù)中學(xué)習(xí)得到有用的特征,這比人工設(shè)計的特征更為強大和通用。 在文獻[6]中,受限玻爾茲曼機被用于表示價值函數(shù),在文獻[7]中,被用于表示策略函數(shù)。神經(jīng)網(wǎng)絡(luò)用于Q學(xué)習(xí)時不收斂的問題被gradient temporal-difference算法部分解決。用非線性函數(shù)來學(xué)習(xí)一個固定的策略時,這些方法的收斂性是可以得到保證的,感興趣的可以閱讀文獻[]。用線性函數(shù)來近似價值函數(shù),采用Q學(xué)習(xí)訓(xùn)練,收斂性也可以得到保證,文獻[]對此有詳細的分析與論證。 文獻[8]提出了neural fitted Q-learning (NFQ)。這種方法優(yōu)化方程上面定義的目標函數(shù),采用 RPROP算法更新Q網(wǎng)絡(luò)的參數(shù)。需要強調(diào)的是,它采用了批量梯度下降法進行更新迭代,即每次進行梯度下降法迭代時使用了所有訓(xùn)練樣本,因此單次迭代的計算量太大。這種方法需要反復(fù)的對神經(jīng)網(wǎng)絡(luò)進行從頭開始的上百次的迭代,因此不適合訓(xùn)練大規(guī)模的神經(jīng)網(wǎng)絡(luò),因為效率太低。 NFQ也被用于現(xiàn)實世界中的控制任務(wù)[9]。以自動編碼器作為提取特征的網(wǎng)絡(luò),直接接收視覺輸入信號,然后將NFQ算法作用于提取出的特征表示。文獻[10]將Q學(xué)習(xí)與經(jīng)驗回放機制進行整合,采用簡單的神經(jīng)作為逼近器。這里還是用低維的狀態(tài)向量作為神經(jīng)網(wǎng)絡(luò)的輸入,而不是高維的圖像等原始數(shù)據(jù)。 深度學(xué)習(xí)取得了成功,在計算機視覺,語音識別領(lǐng)域,深度神經(jīng)網(wǎng)絡(luò)可以直接從場景數(shù)據(jù)如圖像、聲音中提取出高層特征,實現(xiàn)端到端的學(xué)習(xí),而無需再人工設(shè)計特征。一個很自然的想法是能否用深度學(xué)習(xí)來為強化學(xué)習(xí)的輸入原始數(shù)據(jù)進行建模。如果用神經(jīng)王來近似Q函數(shù),則網(wǎng)絡(luò)的輸入值為狀態(tài)數(shù)據(jù),如原始的游戲畫面,輸出值為在當(dāng)前狀態(tài)下執(zhí)行各種動作所得到的最大預(yù)期回報。訓(xùn)練樣本為狀態(tài),目標Q函數(shù)值對。但是將深度學(xué)習(xí)用于強化學(xué)習(xí)將面臨幾個挑戰(zhàn): 首先,深度學(xué)習(xí)需要大量的有標簽的訓(xùn)練樣本,而在強化學(xué)習(xí)中,算法要根據(jù)標量回報值進行學(xué)習(xí),這個回報值往往是稀疏的,即不是執(zhí)行每個動作都立刻能得到回報。例如對于打乒乓球這樣的游戲,只有當(dāng)自己或者對手失球時得分才會變化,此時才有回報,其他時刻沒有回報?;貓笾祹в性肼?,另外還具有延遲,當(dāng)前時刻的動作所得到的回報在未來才能得到體現(xiàn)。例如,在下棋時,當(dāng)前所走的一步的結(jié)果會延遲一段時間后才能得到體現(xiàn)。 第2個問題是有監(jiān)督學(xué)習(xí)一般要求訓(xùn)練樣本之間是相互獨立的,在強化學(xué)習(xí)中,經(jīng)常遇到的是前后高度相關(guān)的狀態(tài)序列。在某個狀態(tài)下執(zhí)行一個動作之后進入下一個狀態(tài),前后兩個狀態(tài)之間存在著明顯的概率關(guān)系,不是獨立的。 第3個問題是在強化學(xué)習(xí)中,隨著學(xué)習(xí)到新的動作,樣本數(shù)據(jù)的概率分布會發(fā)生變化,而在深度學(xué)習(xí)中,要求訓(xùn)練樣本的概率分布是固定的。 基于價值函數(shù)的算法基于價值函數(shù)的深度強化學(xué)習(xí)的典型代表是DQN(深度Q網(wǎng)絡(luò)),由DeepMind公司在2013年提出,2015年其改進型發(fā)表在Nature上。這種方法用卷積神經(jīng)網(wǎng)絡(luò)擬合價值函數(shù),一般是Q函數(shù)。網(wǎng)絡(luò)的輸入為原始場景數(shù)據(jù),如游戲的畫面圖像,輸出為在這種場景下執(zhí)行各種動作時所能得到的Q函數(shù)的極大值。 文獻[11]第一次提出了DQN算法,是深度強化學(xué)習(xí)真正意義上的開山之作。這篇文章用Atari游戲?qū)λ惴ㄟM行了測試。算法用深度卷積神經(jīng)網(wǎng)絡(luò)來擬合Q函數(shù),這個網(wǎng)絡(luò)稱為Q網(wǎng)絡(luò)。網(wǎng)絡(luò)的輸入為經(jīng)過處理后的游戲畫面(最近4幀游戲畫面),輸出為在這種狀態(tài)下執(zhí)行各種動作的Q函數(shù)值。網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示: 損失函數(shù)用神經(jīng)網(wǎng)絡(luò)的輸出值與Q學(xué)習(xí)每次迭代時的更新值構(gòu)造,是神經(jīng)網(wǎng)絡(luò)的輸出值與Q函數(shù)估計值之間的誤差,與Q學(xué)習(xí)中的更新項相同: 和Q學(xué)習(xí)類似,可以通過執(zhí)行動作來生成樣本。實現(xiàn)時,給定一個狀態(tài),用當(dāng)前的神經(jīng)網(wǎng)絡(luò)進行預(yù)測,得到所有動作的Q函數(shù),然后按照策略選擇一個動作執(zhí)行,得到下一個狀態(tài)以及回報值,以此構(gòu)造訓(xùn)練樣本。 確定網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù)之后,剩下的就是神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,與普通的有監(jiān)督學(xué)習(xí)不同,這里的訓(xùn)練樣本是通過不停的執(zhí)行動作而動態(tài)生成的。為了解決訓(xùn)練樣本之間存在相關(guān)性,以及樣本的概率分布不固定的問題,采用了經(jīng)驗回放機制,具體做法是,先把執(zhí)行動作構(gòu)造的訓(xùn)練樣本存儲到一個大的集合中,在訓(xùn)練Q網(wǎng)絡(luò)時每次從這個集合中隨機抽取出部分樣本作為訓(xùn)練樣本,以此打破樣本之間的相關(guān)性。 訓(xùn)練算法的流程如下: 一旦訓(xùn)練出了神經(jīng)網(wǎng)絡(luò),便可以得到任何畫面下要執(zhí)行的動作,這通過使用Q函數(shù)值和貪心策略來實現(xiàn),從而完成游戲的控制。 實驗結(jié)果證明了DQN的收斂性,作者對此也進行了細致的分析。文章分析了游戲片段的平均回報值,隨著迭代的進行,回報會升高,雖然有震蕩。另外還分析了動作價值函數(shù)值,即Q函數(shù)的均值。同樣的,隨著迭代的進行會升高,雖然會震蕩。 另外還在實驗中比較了DQN與其他各種算法,以及人類選手的性能。參加比較的算法有SARSA算法,采用人工設(shè)計的特征。Contingency算法,采用和SARSA相同的方法,但是通過學(xué)習(xí)部分屏幕的表達增強了特征,特征提取采用圖像處理方法如背景減除。人類的得分是人類玩兩小時的結(jié)果。在絕大部分游戲上,DQN超過了之前最好的算法,在部分游戲上,甚至超過了人類玩家的水平。 DQN實現(xiàn)了端到端學(xué)習(xí),無需人工提取狀態(tài)和特征,整合了深度學(xué)習(xí)與強化學(xué)習(xí),深度學(xué)習(xí)用于感知任務(wù)??梢越鉀Q復(fù)雜環(huán)境下的決策問題。方法具有通用性,可以用于各種不同的問題。 DQN在隨機嘗試執(zhí)行動作,生成訓(xùn)練樣本的過程中,需要用當(dāng)前的Q網(wǎng)絡(luò)來計算訓(xùn)練樣本的標簽值,這存在著自身依賴: 即Q值與Q學(xué)習(xí)的目標值r+γmaxa'Q(s',a')之間的相關(guān)性。為了解決此問題,文獻[12]對DQN進行了改進。它提出的算法和2013年DQN主要的不同是計算目標值是使用了另外一個Q網(wǎng)絡(luò),兩個網(wǎng)絡(luò)周期性的進行同步。 Q學(xué)習(xí)在第i次迭代時的損失函數(shù)為: 其中γ為折扣因子,θi為Q網(wǎng)絡(luò)在第次迭代時的參數(shù)值,為第第次迭代時用于計算目標值的Q網(wǎng)絡(luò)的參數(shù)值,這個神經(jīng)網(wǎng)絡(luò)稱為目標網(wǎng)絡(luò)。目標網(wǎng)絡(luò)與當(dāng)前的Q網(wǎng)絡(luò)分離開來,這是與2013年DQN最大的區(qū)別,當(dāng)前Q網(wǎng)絡(luò)的值在訓(xùn)練時每次都迭代更新,而目標網(wǎng)絡(luò)則周期性的從當(dāng)前Q網(wǎng)絡(luò)同步過來,每多次迭代執(zhí)行一次拷貝。系統(tǒng)結(jié)構(gòu)如下圖所示: 除了分析訓(xùn)練算法的收斂性、與其他算法以及人類進行比較之外,文獻[12]還對DQN學(xué)習(xí)到的表達進行了分析,正是由它支撐了算法在游戲環(huán)境中的成功表現(xiàn)。這通過使用一種對高維數(shù)據(jù)進行可視化的方法-t-SNE而實現(xiàn)。t-SNE可以將感知上相似的狀態(tài)通過DQN學(xué)習(xí)到的表達映射為相鄰的點。作者發(fā)現(xiàn),對于有些畫面,t-SNE對DQN學(xué)習(xí)得到的表示的投影結(jié)果非常相近,這些游戲畫面不相似,但Q函數(shù)值很相似,這意味著在這些畫面下要采用類似的動作。這與我們的觀點一致,神經(jīng)網(wǎng)絡(luò)可以從場景數(shù)據(jù)中學(xué)習(xí)得到支撐自適應(yīng)行為的表示,即不同的場景下可能會使用相同的行為。 文獻[13]提出了Double DQN(DDQN)算法。DDQN中有兩組不同的參數(shù),和θ和θ-。θ用于選擇對應(yīng)最大Q值的動作,θ-用于評估最優(yōu)動作的Q值。這兩組參數(shù)將動作選擇和策略評估分離,降低了過高估計Q值的風(fēng)險。DDQN 使用當(dāng)前值網(wǎng)絡(luò)的參數(shù)θ選擇最優(yōu)動作,用目標值網(wǎng)絡(luò)的參數(shù)θ-評估該最優(yōu)動作。實驗結(jié)果證明,DDQN能更準確的估計Q函數(shù)值,使得訓(xùn)練算法和訓(xùn)練得到的策略更為穩(wěn)定。 文獻[14]提出了基于優(yōu)先級采樣的DQN,是對經(jīng)驗回放機制的改進。在之前的DQN中,經(jīng)驗回放通過經(jīng)驗池中的樣本等概率隨機抽樣來獲得每次迭代時的訓(xùn)練樣本。顯然,這沒有利用每個樣本的重要性。文獻[14]的方法為經(jīng)驗池中的每個樣本計算優(yōu)先級,增大有價值的訓(xùn)練樣本在采樣時的概率。樣本的優(yōu)先級用時序差分算法的誤差項進行構(gòu)造,計算公式為: 這個值的絕對值越大,樣本在采樣時的概率越大。實驗結(jié)果證明這種算法有更快的訓(xùn)練速度,并且在運行時有更好的效果。 文獻[15]提出了基于競爭架構(gòu)的 DQN。其主要改進是將CNN卷積層之后的全連接層替換為兩個分支,其中一個分支擬合狀態(tài)價值函數(shù),另外一個分支擬合動作優(yōu)勢函數(shù)。最后將兩個分支的輸出值相加,形成Q函數(shù)值。實驗表明,這種改進能夠更準確的估計價值函數(shù)值。 DQN中的深度神經(jīng)網(wǎng)絡(luò)是卷積神經(jīng)網(wǎng)絡(luò),不具有長時間的記憶能力。為此,文獻[16]提出了一種整合了循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的DQN算法(DRQN)。這種方法在CNN的卷積層之后加入了循環(huán)層(LSTM單元),能夠記住之前的信息。 參考文獻 [1] Sutton, R. & Barto, A. Reinforcement Learning: An Introduction (MIT Press, 1998). [2] Richard Sutton. Learning to predict by the methods of temporal differences. Machine Learning. 3 (1): 9-44.1988. [3] Christopher JCH Watkins and Peter Dayan. Q-learning. Machine learning, 8(3-4):279–292, 1992. [4] Gerald Tesauro. Temporal difference learning and td-gammon. Communications of the ACM, 38(3):58–68, 1995. [5] Tsitsiklis J N, Van R B. An analysis of temporal-difference learning with function approximation. IEEE Transactions on Automatic Control, 1997, 42(5): 674-690 [6] Brian Sallans and Geoffrey E. Hinton. Reinforcement learning with factored states and actions. Journal of Machine Learning Research, 5:1063–1088, 2004. [7] Nicolas Heess, David Silver, and Yee Whye Teh. Actor-critic reinforcement learning with energy-based policies. In European Workshop on Reinforcement Learning, page 43, 2012. [8] Riedmiller M. Neural fitted q iteration-first experiences with a data efficient neural reinforcement learning method. Proceedings of the Conference on Machine Learning. Berlin, German, 2005: 317-328 [9] Sascha Lange and Martin Riedmiller. Deep auto-encoder neural networks in reinforcement learning. In Neural Networks (IJCNN), The 2010 International Joint Conference on, pages 1–8. IEEE, 2010. [10] Long-Ji Lin. Reinforcement learning for robots using neural networks. Technical report, DTIC Document, 1993. [11] Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Alex Graves, Ioannis Antonoglou. Playing Atari with Deep Reinforcement Learning. NIPS 2013. [12] Mnih, Volodymyr, et al. Human-level control through deep reinforcement learning. Nature. 518 (7540): 529-533, 2015. [13] Van H V, Guez A, Silver D. Deep reinforcement learning with double q-learning. Proceedings of the AAAI Conference on Artificial Intelligence. Phoenix, USA, 2016: 2094-2100. [14] Schaul T, Quan J, Antonoglou I, Silver D. Prioritized experience replay. Proceedings of the 4th International Conference on Learning Representations. San Juan, Puerto Rico, 2016:322-355. [15] Wang Z, Freitas N D, Lanctot M. Dueling network architectures for deep reinforcement learning. Proceedings of the International Conference on Machine Learning. New York, USA, 2016: 1995-2003. [16] Hausknecht M, Stone P. Deep recurrent q-learning for partially observable MDPs. arXiv preprint arXiv:1507.06527, 2015. |
|