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