?
如今,機器學(xué)習(xí)(Machine Learning,ML)和人工智能(Artificial Intelligence,AI)的相關(guān)算法越來越深度地融合到了我們的社會與生活中,并且在金融科技、醫(yī)療保健、以及交通運輸?shù)雀鱾€方面起到了關(guān)鍵性的驅(qū)動與促進作用。如果說20世紀下半葉,人類得益于以互聯(lián)網(wǎng)為基礎(chǔ)架構(gòu)的計算力和連通性總體進步的話,那么人類在21世紀正在逐步走向由智能計算和智能機器的迭代。其中,以深度學(xué)習(xí)(Deep Learning,DL)為首的此類新型的計算范式通常屬于“監(jiān)督學(xué)習(xí)(supervised learning)”的范疇。其對應(yīng)的應(yīng)用--深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN),在疾病分類、圖像分割、以及語音識別等高科技系統(tǒng)和應(yīng)用方面,都取得了令人興奮進步和驚人的成功。
不過,深度神經(jīng)網(wǎng)絡(luò)系統(tǒng)往往需要大量的訓(xùn)練數(shù)據(jù),以及已知答案的帶標(biāo)簽樣本,才能正常地工作。并且,它們目前尚無法完全模仿人類學(xué)習(xí)和運用智慧的方式。幾乎所有的AI專家都認為:僅僅增加基于深度神經(jīng)網(wǎng)絡(luò)系統(tǒng)的規(guī)模和速度,是永遠不會產(chǎn)生真正的“類人(human-like)”AI系統(tǒng)的。 因此,人們開始轉(zhuǎn)向那些“監(jiān)督學(xué)習(xí)”以外的ML和AI計算范式和算法,試圖順應(yīng)人類的學(xué)習(xí)過程曲線。該領(lǐng)域研究的最廣泛的當(dāng)屬--強化學(xué)習(xí)(Reinforcement Learning,RL)。在本文中,我們通過相關(guān)知識和算法的介紹,和您簡要地討論了如何將深度學(xué)習(xí)和強化學(xué)習(xí)融合在一起,產(chǎn)生所謂深度強化學(xué)習(xí)(Deep Reinforcement Learning,DRL),這一強大的AI系統(tǒng)。
什么是深度強化學(xué)習(xí)? 眾所周知,人類擅長解決各種挑戰(zhàn)性的問題,從低級的運動控制(如:步行、跑步、打網(wǎng)球)到高級的認知任務(wù)(如:做數(shù)學(xué)題、寫詩、交談)。而強化學(xué)習(xí)則旨在使用軟、硬件之類的代理(具體含義請見下文),通過明確的定義、合理的設(shè)計等相關(guān)算法,來模仿人類的此類行為。也就是說,這種學(xué)習(xí)范式的目標(biāo)不是以簡單的輸入/輸出方式(如:獨立的深度學(xué)習(xí)系統(tǒng)),來映射帶有標(biāo)簽的示例,而是要建立一種策略,通過幫助智能化的代理,以某種順序進行動作(具體含義請見下文),從而實現(xiàn)某項最終目標(biāo)。
圖片來源:《機器學(xué)習(xí)有哪些類型》(請參見-- https://towardsdatascience.com/what-are-the-types-of-machine-learning-e2b9e5d1756f)
其實,強化學(xué)習(xí)是一些面向目標(biāo)(goal-oriented)的算法,它們能夠?qū)W習(xí)如何實現(xiàn)復(fù)雜的目標(biāo),或通過多個步驟沿著某個特定維度來實現(xiàn)目標(biāo)的最大化。下面是強化學(xué)習(xí)在實際應(yīng)用中的三種示例:
讓一個棋盤游戲的獲勝率最大化。
讓財務(wù)模擬某筆交易的最大收益。
在復(fù)雜的環(huán)境中,保障機器人在移動過程中的錯誤行徑最小。
如下圖所示,其基本想法是:代理通過傳感器接收來自所處環(huán)境中的輸入數(shù)據(jù),使用強化學(xué)習(xí)的算法對其進行處理,然后采取相應(yīng)的行動以達到預(yù)定的目標(biāo)??梢?,這與人類在日常生活中的行為非常相似。
資料來源:《強化學(xué)習(xí)的簡介》(請參見--http://incompleteideas.net/book/bookdraft2017nov5.pdf) 深度強化學(xué)習(xí)中的基本定義 我們在開展后續(xù)討論之前,了解強化學(xué)習(xí)中所涉及和使用到的各種關(guān)鍵術(shù)語是非常實用的。其中包括:
代理(Agent):一種軟、硬件機制。它通過與周圍環(huán)境的交互,來采取相應(yīng)的措施。例如:一架正在送貨的無人機,或是視頻游戲中引導(dǎo)超級瑪麗前進的程序。當(dāng)然,算法本身也屬于代理。
動作(Action):代理可以采取的各種可能性動作。雖然動作本身具有一定的不言自明性(self-explanatory),但是我們?nèi)孕枰尨砟軌驈囊幌盗须x散的、且可能的動作中予以選擇。
環(huán)境(Environment):外界環(huán)境與代理之間存在著相互作用,以及做出響應(yīng)的關(guān)系。環(huán)境將代理當(dāng)前的狀態(tài)和動作作為輸入,并將代理的獎勵(具體含義請見下文)和下一個狀態(tài)作為輸出。
狀態(tài)(State):狀態(tài)是代理自行發(fā)現(xiàn)的、具體且直接的情況,包括:特定的地點、時刻、以及將代理與其他重要事物相關(guān)聯(lián)的瞬時配置。例如:一個棋盤在某個特定時刻的棋子布局。
獎勵(Reward):獎勵是一種反饋,我們可以據(jù)此衡量代理在給定狀態(tài)下各種動作的成敗。例如:在下棋游戲中,吃掉對手的象這一重要的動作會得到某種獎勵,而贏得整個游戲則會獲得更大的獎勵。負獎勵(Negative rewards)有著相反的含義,例如:下輸了一盤棋。
折扣因子(Discount factor):折扣因子是一個乘數(shù)。由代理發(fā)現(xiàn)的未來獎勵乘以該因子,以減弱此類獎勵針對代理當(dāng)前動作選擇的累積影響。這是強化學(xué)習(xí)的核心,也就是通過逐漸降低未來獎勵的值,以便對最近的動作給予更多的權(quán)值。這對于基于“延遲動作(delayed action)”原理的范式而言,是至關(guān)重要的。
策略(Policy):它是代理用來根據(jù)當(dāng)前狀態(tài)確定下一步動作的策略。它能夠?qū)⒉煌臓顟B(tài)映射到各種動作上,以承諾最高的獎勵。
值(Value):它被定義為在特定的策略下,當(dāng)前狀態(tài)帶有折扣的長期預(yù)期獎勵(并非短期獎勵)。
Q值(Q-value)或動作值(action-value):與“值”的不同之處在于,Q值需要一個額外的參數(shù),也就是當(dāng)前的動作。它是指一個動作在特定的策略下,由當(dāng)前狀態(tài)產(chǎn)生的長期獎勵。
常見的數(shù)學(xué)(算法)框架 在解決強化學(xué)習(xí)的相關(guān)問題時,我們經(jīng)常會用到如下的數(shù)學(xué)框架: 馬爾可夫決策過程(Markov Decision Process,MDP):幾乎所有的強化學(xué)習(xí)問題都可以被構(gòu)造為MDP。MDP中的所有狀態(tài)都具有“馬爾可夫”屬性,即:未來僅取決于當(dāng)前狀態(tài),而非狀態(tài)的歷史,這一事實。 Bellman方程(Bellman Equations):它是一組將值函數(shù)分解為即時獎勵加上折扣未來值的方程。 動態(tài)編程(Dynamic Programming,DP):如果當(dāng)系統(tǒng)模型(代理+環(huán)境)完全已知時,根據(jù)Bellman方程,我們就可以使用動態(tài)編程,來迭代評估值函數(shù),并改進相應(yīng)的策略。
值迭代(Value iteration):這是一種算法,它通過迭代式地改進對于值的估計,以計算出具有最佳狀態(tài)值的函數(shù)。該算法先將值函數(shù)初始化為任意隨機值,然后重復(fù)更新Q值和值函數(shù)的各個值,直到它們收斂為止。
策略迭代(Policy iteration):由于代理僅關(guān)注尋找最優(yōu)的策略,而最優(yōu)策略有時會在價值函數(shù)之前就已經(jīng)收斂了。因此,策略迭代不應(yīng)該重復(fù)地改進值函數(shù)的估算,而需要在每一步上重新定義策略,并根據(jù)新的策略去計算出值來,直到策略收斂為止。 Q學(xué)習(xí)(Q-learning):作為一種無模型(model-free)學(xué)習(xí)算法的示例,它并不會假定代理對于狀態(tài)的轉(zhuǎn)換和獎勵模型已經(jīng)了如指掌,而是“認為”代理將通過反復(fù)的試驗,來發(fā)現(xiàn)正確的動作。因此,Q學(xué)習(xí)的基本思想是:在代理與環(huán)境交互過程中,通過觀察Q值函數(shù)的樣本,以接近“狀態(tài)-動作對(state-action pairs)”的Q函數(shù)。這種方法也被稱為時分學(xué)習(xí)(Time-Difference Learning)。
上圖是一個通過Q學(xué)習(xí)(即:嘗試和錯誤觀察),來解決強化學(xué)習(xí)問題的示例(請參見-- https://gym.openai.com/envs/MountainCar-v0)。在示例所處環(huán)境中,動力學(xué)和模型,即運動的整體物理原理,都是未知的。 Q學(xué)習(xí)所存在的問題 Q學(xué)習(xí)是解決強化學(xué)習(xí)相關(guān)問題的一種簡單而強大的方法。
從理論上講,我們可以在不引入其他數(shù)學(xué)復(fù)雜性的情況下,將其延伸到各種大而復(fù)雜的問題上。其實,Q學(xué)習(xí)可以借助遞歸方程來完成,其中: Q(s,a):Q值函數(shù) s:狀態(tài) s',s'':未來狀態(tài) a:動作 γ:折現(xiàn)率 對于小的問題,我們可以從對所有的Q值(Q-values)做出任意假設(shè)開始,通過反復(fù)的試驗,Q表(Q-table)不斷得以更新,進而讓政策逐漸趨于一致。由于更新和選擇動作是隨機執(zhí)行的,因此最優(yōu)的策略可能并不代表全局最優(yōu),但它可以被用于所有實際的目的。 不過,隨著問題規(guī)模的增加,針對某個大問題所構(gòu)造并存儲一組Q表,將很快成為一個計算性的難題。例如:在象棋或圍棋之類的游戲中,可能的狀態(tài)數(shù)(即移動的順序)與玩家需要提前計算的步數(shù),成指數(shù)式的增長。因此:
保存和更新該表所需的內(nèi)存量,將隨著狀態(tài)數(shù)的增加而增多。
探索每個狀態(tài),進而創(chuàng)建Q表所需的時間,將變得無法預(yù)知。
針對上述問題,我們需要用到諸如深度Q學(xué)習(xí)(Deep-Q learning)之類的技術(shù),并使用機器學(xué)習(xí)來試著解決。 深度Q學(xué)習(xí) 顧名思義,深度Q學(xué)習(xí)不再維護一張大型的Q值表,而是利用神經(jīng)網(wǎng)絡(luò)從給定的動作和狀態(tài)輸入中去接近Q值函數(shù)。在一些公式中,作為輸入的狀態(tài)已經(jīng)被給出,而所有可能的動作Q值都作為輸出被產(chǎn)生。此處的神經(jīng)網(wǎng)絡(luò)被稱為Deep-Q–Network(DQN),其基本思想如下圖所示:
圖片來源:在Python中使用OpenAI Gym進行深度Q學(xué)習(xí)的入門(請參見--https://www.analyticsvidhya.com/blog/2019/04/introduction-deep-q-learning-python/)
不過DQN在使用的時候有一定的難度。而在傳統(tǒng)的深度學(xué)習(xí)算法中,由于我們對輸入樣本進行了隨機化處理,因此輸入的類別在各種訓(xùn)練批次之間,都是非常均衡且穩(wěn)定的。在強化學(xué)習(xí)中,搜索會在探索階段(exploration phase)不斷被改進,進而不斷地更改輸入和動作的空間。此外,隨著系統(tǒng)逐漸加深對于環(huán)境的了解,Q的目標(biāo)值也會自動被更新。簡而言之,對于簡單的DQN系統(tǒng)而言,輸入和輸出都是經(jīng)常變化的。
為了解決該問題,DQN引入了體驗重播(experience replay)和目標(biāo)網(wǎng)絡(luò)(target network)的概念來減緩變化,進而以受控且穩(wěn)定的方式逐步學(xué)習(xí)Q表。 其中,體驗重播在特定的緩沖區(qū)中存儲一定量的狀態(tài)動作獎勵值(例如,最后有一百萬個)。而對于Q函數(shù)的訓(xùn)練,它使用來自緩沖區(qū)的隨機樣本的小批量來完成。因此,訓(xùn)練樣本不但是隨機的,并且能夠表現(xiàn)得更接近傳統(tǒng)深度學(xué)習(xí)中監(jiān)督學(xué)習(xí)的典型情況。這有點類似于系統(tǒng)具有高效的短期記憶,我們在探索未知環(huán)境時可以用到它。 此外,DQN通常使用兩個網(wǎng)絡(luò)來存儲Q值。
一個網(wǎng)絡(luò)不斷被更新,而另一個網(wǎng)絡(luò)(即:目標(biāo)網(wǎng)絡(luò))與第一個網(wǎng)絡(luò)以固定的間隔進行同步。我們使用目標(biāo)網(wǎng)絡(luò)來檢索Q值,以保證目標(biāo)值的變化波動較小。 深度強化學(xué)習(xí)的實際應(yīng)用 進行Atari游戲 成立于2010年的DeepMind(請參見--https://deepmind.com/)是一家位于倫敦的初創(chuàng)公司。該公司于2014年被Google的母公司Alphabet所收購,并成功地將卷積神經(jīng)網(wǎng)絡(luò)(CNN)和Q學(xué)習(xí)結(jié)合起來用于訓(xùn)練。它為深度強化學(xué)習(xí)領(lǐng)域做出了開拓性貢獻。例如:某個代理可以通過原始像素的輸入(如某些感知信號),來進行Atari游戲。欲知詳情,請參見--https://deepmind.com/research/publications/playing-atari-deep-reinforcement-learning)
圖片來源:DeepMind在arXiV上有關(guān)Atari的文章(2013年)(請參見--https://arxiv.org/pdf/1312.5602v1.pdf)。
Alpha Go和Alpha Go Zero 3000多年前起源于中國的圍棋,憑借著其復(fù)雜性,被稱為AI最具挑戰(zhàn)性的經(jīng)典游戲。標(biāo)準(zhǔn)的AI處理方法是:使用搜索樹(search tree)來測試所有可能的移動和位置。但是,AI無法處理大量棋子的可能性移動,或評估每個可能性棋盤位置的強度。 借助深度強化學(xué)習(xí)的技術(shù)和新穎的搜索算法,DeepMind開發(fā)了AlphaGo,這是第一個擊敗了人類職業(yè)圍棋選手的計算機程序,第一個擊敗了圍棋世界冠軍的程序,也可以說是歷史上最強的圍棋選手。
Alpha Go的升級版本被稱為Alpha Go Zero。該系統(tǒng)源于一個對圍棋規(guī)則一無所知的神經(jīng)網(wǎng)絡(luò)。該神經(jīng)網(wǎng)絡(luò)通過與功能強大的搜索算法相結(jié)合,不斷和自己下棋,與自己進行對抗。在重復(fù)進行游戲的過程中,神經(jīng)網(wǎng)絡(luò)會通過持續(xù)調(diào)整和更新,來預(yù)測下棋的步驟,并最終成為游戲的贏家。通過不斷的迭代,升級后的神經(jīng)網(wǎng)絡(luò)與搜索算法重新組合,以提升系統(tǒng)的性能,并不斷提高與自己對弈的水平。
圖片來源:從零開始的Alpha Go Zero(請參見--https://deepmind.com/blog/article/alphago-zero-starting-scratch)
在石油和天然氣行業(yè)中的應(yīng)用 荷蘭皇家殼牌公司一直在其勘探和鉆探工作中通過強化學(xué)習(xí)的部署,以降低高昂的天然氣開采成本,并改善整個供應(yīng)鏈中的多個環(huán)節(jié)。那些經(jīng)過了歷史鉆探數(shù)據(jù)訓(xùn)練的深度學(xué)習(xí)算法,以及基于物理學(xué)的高級模擬技術(shù),讓天然氣鉆頭在穿過地表后,能夠智能地移動。深度強化學(xué)習(xí)技術(shù)還能夠?qū)崟r地利用來自鉆頭的機械數(shù)據(jù)(如:壓力和鉆頭的溫度),以及地表下的地震勘測數(shù)據(jù)。自動駕駛 雖然不是主流應(yīng)用,但是深度強化學(xué)習(xí)在自動駕駛汽車的各種挑戰(zhàn)性問題上,也發(fā)揮著巨大的潛力。其中包括:
車輛控制
坡道合并
個人駕駛風(fēng)格的感知
針對安全超車的多目標(biāo)強化學(xué)習(xí)
總結(jié) 深度增強學(xué)習(xí)是真正可擴展的通用人工智能(Artificial general intelligence,AGI),是AI系統(tǒng)的最終發(fā)展方向。在實際應(yīng)用中,它催生了諸如Alpha Go之類的智能代理,實現(xiàn)了自行從零開始學(xué)習(xí)游戲規(guī)則(也就是人們常說的:外部世界的法則),而無需進行明確的訓(xùn)練和基于規(guī)則的編程。我們樂觀地認為,深度增強學(xué)習(xí)的未來和前景將是一片光明。
編輯:黃飛
?
評論
查看更多