一、強化學(xué)習(xí)的概念和主要用途
1.什么是強化學(xué)習(xí)?
強化學(xué)習(xí)(Reinforcement Learning)是機器學(xué)習(xí)的一個非常重要的分支身坐,其核心思想是實驗者構(gòu)建一個完整的實驗環(huán)境邑茄,在該環(huán)境中通過給予被實驗者一定的觀測值和回報等方法來強化或鼓勵被實驗者的一些行動,從而以更高的可能性產(chǎn)生實驗者所期望的結(jié)果或目標(biāo)堕绩。從以上對強化學(xué)習(xí)的描述中策幼,我們可以看出強化學(xué)習(xí)一定會涉及到被實驗者(也稱為智能體,Agent)奴紧、實驗者構(gòu)建的環(huán)境(也就是系統(tǒng)環(huán)境特姐,System Environment)、被實驗者的觀測值(也稱為環(huán)境狀態(tài)黍氮,State)唐含、被實驗者的行動(Action)和回報(也稱為獎勵或反饋,Reward)這五個關(guān)鍵要素沫浆。?
舉一個經(jīng)典的心理學(xué)實驗來進(jìn)一步解釋強化學(xué)習(xí)所涉及到的這幾個關(guān)鍵要素捷枯。這個實驗就是巴浦洛夫的狗,在實驗中每次實驗者都對著狗搖鈴鐺专执,并給它一點食物淮捆。久而久之,鈴鐺和食物的組合就潛移默化地影響了狗的行動本股,此后每次對著狗搖鈴鐺攀痊,狗就會不由自主的流口水,并期待實驗者能給它食物拄显,通過這樣的方法苟径,實驗者就讓狗學(xué)會了鈴鐺和食物之間的關(guān)系,這算作是強化學(xué)習(xí)的一個簡單的例子躬审。
從這個例子中我們不光能看出強化學(xué)習(xí)所涉及到的以上描述的五個關(guān)鍵要素棘街,并且還能得到一個包含這五個關(guān)鍵要素的高度抽象的強化學(xué)習(xí)的框架,那就是:?在經(jīng)典的強化學(xué)習(xí)中盒件,智能體是要和實驗者構(gòu)建的系統(tǒng)環(huán)境完成一系列的交互蹬碧,主要包含以下三項內(nèi)容:?
1. 在每一時刻,環(huán)境都處于一種狀態(tài)炒刁,智能體能得到環(huán)境當(dāng)前狀態(tài)的觀測值恩沽;?2. 智能體根據(jù)當(dāng)前環(huán)境狀態(tài)的觀測值,并結(jié)合自己歷史的行為準(zhǔn)則(一般稱為策略翔始,Policy)做出行動罗心;?3. 智能體做出的這個行動又繼而會使環(huán)境狀態(tài)發(fā)生一定的改變里伯,同時智能體又會獲取到新的環(huán)境狀態(tài)的觀測值和這個行動所帶來的回報,當(dāng)然這個回報既可以是正向的也可以是負(fù)向的渤闷,這樣智能體就會根據(jù)新的狀態(tài)觀測值和回報來繼續(xù)做出新的行動疾瓮,直至達(dá)到實驗者所期望的目標(biāo)為止。?因此飒箭,高度抽象的強化學(xué)習(xí)的框架所包含的整個過程如圖1所示:
????圖1 強化學(xué)習(xí)的過程表示
所以狼电,站在智能體的角度,強化學(xué)習(xí)的目標(biāo)就是最大化所獲得的回報弦蹂。但是這個目標(biāo)有些抽象肩碟,因此我們需要把這個目標(biāo)變得更容易量化。這時不得不講強化學(xué)習(xí)的兩個顯著的特點凸椿,一是不斷試錯削祈,根據(jù)環(huán)境狀態(tài)做出行動的智能體有時得到較多回報,有時回報又比較少脑漫,甚至還有可能得到負(fù)值的回報髓抑,因此智能體需要根據(jù)回報的多少不斷調(diào)整自己的策略以獲得盡可能多的回報,這個過程中就需要智能體不斷嘗試應(yīng)對環(huán)境狀態(tài)的各種可能的行動优幸,并收集對應(yīng)的回報吨拍,只有借助這些反饋信息智能體才能更好地完成學(xué)習(xí)任務(wù);二是看重長期回報劈伴,而不追逐短期的得分(例如密末,圍棋游戲中為了最終戰(zhàn)勝對方,游戲中可能會做出一些被對方吃掉棋子的看似不好的行動)跛璧,這通常就需要智能體和系統(tǒng)環(huán)境進(jìn)行長時間的交互严里,所以追求長期回報就需要多探索和不斷嘗試,也有可能遇到更多的失敗追城。
基于強化學(xué)習(xí)這兩個特點刹碾,我們在評價強化學(xué)習(xí)算法的優(yōu)劣時,除了常規(guī)的衡量指標(biāo)(比如座柱,算法效果迷帜、穩(wěn)定性和泛化性)以外,還需重點關(guān)注另一個指標(biāo)色洞,就是學(xué)習(xí)時間戏锹。由于強化學(xué)習(xí)與不斷試錯和看重長期回報相關(guān),所以學(xué)習(xí)時間一般也可由強化學(xué)習(xí)算法嘗試和探索的次數(shù)代替火诸。?因此锦针,根據(jù)以上一系列的描述,強化學(xué)習(xí)可以簡潔地歸結(jié)為:根據(jù)環(huán)境狀態(tài)园细、行動和回報割以,不斷試錯學(xué)習(xí)出最佳的策略來讓智能體做出行動,并以最終結(jié)果為目標(biāo)典唇,不只看某個行動當(dāng)下帶來的回報馋吗,而更要看到這個行動未來所能帶來的潛在回報焕盟。
2.強化學(xué)習(xí)能用來干什么?
強化學(xué)習(xí)主要是用來解決一系列決策問題的宏粤,因為它可以在復(fù)雜脚翘、不確定的環(huán)境中學(xué)習(xí)如何實現(xiàn)我們所設(shè)定的目標(biāo)。強化學(xué)習(xí)的應(yīng)用場景非常廣商架,幾乎包含了所有需要做決策的問題堰怨,比如控制機器人的電機來執(zhí)行特定的任務(wù)、無人駕駛中在當(dāng)前道路狀態(tài)上做出最該執(zhí)行的行動(如加減速和轉(zhuǎn)換方向等)蛇摸、商品定價和庫存管理以及玩視頻游戲或棋牌游戲。其中灿巧,掀起強化學(xué)習(xí)研究熱潮的當(dāng)屬大名鼎鼎的AlphaGo赶袄,它是由谷歌公司的DeepMind團(tuán)隊結(jié)合了策略網(wǎng)絡(luò)(Policy Network)、估值網(wǎng)絡(luò)(Value Network)與蒙特卡洛搜索樹(Monte Carlo Tree Search)抠藕,實現(xiàn)的具有超高水平的進(jìn)行圍棋對戰(zhàn)的深度強化學(xué)習(xí)程序饿肺,自打問世就一舉戰(zhàn)勝人類世界圍棋冠軍李世石,并一戰(zhàn)成名盾似。?
其中敬辣,強化學(xué)習(xí)中兩類重要的方法分別是策略迭代法(Policy-Based 或 Policy Gradients)和價值迭代法(Value-Based 或 Q-Learning)。這兩種方法的主要區(qū)別在Policy-Based方法直接預(yù)測在某個環(huán)境狀態(tài)下應(yīng)該采取的行動零院,而Value-Based方法預(yù)測在某個環(huán)境狀態(tài)下所有行動的期望價值(也就是Q值)溉跃,之后選擇Q值最高的行動來執(zhí)行。一般來說告抄,Value-Based方法適合僅有少量離散取值的行動的問題撰茎,而Policy-Based方法則更加通用,適合可采取行動的種類非常多或有連續(xù)取值的行動的問題打洼。
二龄糊、機器學(xué)習(xí)幾類常見算法的辨析
有監(jiān)督學(xué)習(xí)是一種經(jīng)典的機器學(xué)習(xí)方法,其核心思想是通過一定數(shù)量的訓(xùn)練樣本學(xué)習(xí)出一個能根據(jù)給定的輸入得到對應(yīng)輸出的模型募疮,值得一提的是炫惩,這些訓(xùn)練樣本包含了一對對輸入和已知輸出的數(shù)據(jù),有監(jiān)督學(xué)習(xí)就是使用這樣一對對輸入和輸出數(shù)據(jù)來計算出模型的參數(shù)(比如阿浓,連接權(quán)重和學(xué)習(xí)率等參數(shù))他嚷,從而完成模型的學(xué)習(xí)。因此,從學(xué)習(xí)的目標(biāo)來看爸舒,有監(jiān)督學(xué)習(xí)是希望學(xué)習(xí)得到的模型能根據(jù)給定的輸入得到相應(yīng)的輸出蟋字,而強化學(xué)習(xí)是希望智能體根據(jù)給定的環(huán)境狀態(tài)得到能使回報最大化的行動。?
以上描述中我們知道扭勉,有監(jiān)督學(xué)習(xí)的效果除了依賴訓(xùn)練樣本數(shù)據(jù)鹊奖,更依賴于從數(shù)據(jù)中提取的特征,因為這類算法是需要從訓(xùn)練數(shù)據(jù)中計算出每個特征和預(yù)測結(jié)果之間的相關(guān)度涂炎≈揖郏可以毫不夸張地說,同樣的訓(xùn)練樣本數(shù)據(jù)使用不同的表達(dá)方式會極大地影響有監(jiān)督學(xué)習(xí)的效果唱捣,一旦有效解決了數(shù)據(jù)表達(dá)和特征提取的問題两蟀,很多有監(jiān)督學(xué)習(xí)問題也就解決了90%。但是對于許多有監(jiān)督學(xué)習(xí)問題來說震缭,特征提取并不是一件簡單的事情赂毯。在一些復(fù)雜的問題中,需要通過人工的方式來設(shè)計有效的特征集合拣宰,這樣不光要花費很多的時間和精力党涕,而且有時依賴人工的方式不能很好地提取出本質(zhì)特征。那么是否能依賴計算機來進(jìn)行自動提取特征呢巡社?深度學(xué)習(xí)就應(yīng)運而生膛堤,深度學(xué)習(xí)基本上是深層人工神經(jīng)網(wǎng)絡(luò)的一個代名詞,其在圖像識別晌该、語音識別肥荔、自然語言處理以及人機博弈等領(lǐng)域的工業(yè)界和學(xué)術(shù)界均有非常出色的應(yīng)用和研究,因此深度學(xué)習(xí)是有監(jiān)督學(xué)習(xí)的一個重要分支朝群。深度學(xué)習(xí)解決的核心問題有二個燕耿,一是可以像其他有監(jiān)督學(xué)習(xí)一樣學(xué)習(xí)特征和預(yù)測結(jié)果之間的關(guān)聯(lián),二是能自動將簡單特征組合成更加復(fù)雜的特征潜圃。也就是說缸棵,深度學(xué)習(xí)能從數(shù)據(jù)中學(xué)習(xí)出更加復(fù)雜的特征表達(dá),使得神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練中的連接權(quán)重學(xué)習(xí)變得更加簡單有效谭期,如圖2所示堵第。
在圖3中,深度學(xué)習(xí)展示了解決圖像識別問題的樣例隧出,可以看出深度學(xué)習(xí)是從圖像像素的基礎(chǔ)特征中逐漸組合出線條踏志、邊、角胀瞪、簡單形狀和復(fù)雜形狀等復(fù)雜特征的针余。因此饲鄙,深度學(xué)習(xí)是能一層一層地將簡單特征逐步轉(zhuǎn)化成更加復(fù)雜的特征,從而使得不同類別的圖像更加可分圆雁。
????圖2 深度學(xué)習(xí)和傳統(tǒng)有監(jiān)督學(xué)習(xí)流程比較
????圖3 深度學(xué)習(xí)在圖像識別問題上的算法流程樣例?
此外忍级,將深度學(xué)習(xí)和強化學(xué)習(xí)結(jié)合起來的深度強化學(xué)習(xí)更是近年來的研究熱點,比如無人駕駛伪朽、機器人自主任務(wù)執(zhí)行和人工智能打游戲等轴咱。深度強化學(xué)習(xí)本質(zhì)上也是神經(jīng)網(wǎng)絡(luò),只不過是在前幾層中使用了卷積神經(jīng)網(wǎng)絡(luò)等深度學(xué)習(xí)算法來對攝像頭捕獲的圖像進(jìn)行識別烈涮、處理和分析朴肺,相當(dāng)于能讓智能體看得見環(huán)境并正確識別周圍物體,之后再通過強化學(xué)習(xí)算法來預(yù)測出最該執(zhí)行的一系列動作來使得回報最大化坚洽,從而完成既定的任務(wù)戈稿。?
在人工智能領(lǐng)域還有一種機器學(xué)習(xí)算法同樣很重要,那就是無監(jiān)督學(xué)習(xí)讶舰,這類算法是在沒有訓(xùn)練樣本數(shù)據(jù)的情況下鞍盗,對沒有標(biāo)定輸出標(biāo)簽的數(shù)據(jù)進(jìn)行分析并建立合適的模型以給出問題解決方案的,常見的無監(jiān)督學(xué)習(xí)算法包括將樣本特征變量降維的數(shù)據(jù)轉(zhuǎn)換和把樣本劃歸到不同分組的聚類分析跳昼。?
因此橡疼,從以上對各類算法的描述中可以看出,強化學(xué)習(xí)跟有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)均有所不同庐舟。強化學(xué)習(xí)既不像有監(jiān)督學(xué)習(xí)那樣有非常明確的學(xué)習(xí)目標(biāo)(一個輸入對應(yīng)的就是一個確定的輸出),也不像無監(jiān)督學(xué)習(xí)那樣完全沒有學(xué)習(xí)目標(biāo)住拭,而強化學(xué)習(xí)的目標(biāo)一般是不明確的挪略,因為在一定的環(huán)境狀態(tài)下能獲得最大回報的行動可能有很多。所以滔岳,這幾類機器學(xué)習(xí)算法在學(xué)習(xí)目標(biāo)的明確性上有本質(zhì)的區(qū)別杠娱。此外,從時間維度上看谱煤,強化學(xué)習(xí)和有監(jiān)督學(xué)習(xí)輸出的意義不同摊求。有監(jiān)督學(xué)習(xí)主要看重的是輸入和輸出的匹配程度,如果輸入和輸出匹配刘离,那么學(xué)習(xí)的效果就是比較好的室叉,即便存在輸入序列到輸出序列的映射,有監(jiān)督學(xué)習(xí)也希望每一時刻的輸出都能和其輸入對應(yīng)上硫惕,比如茧痕,以俄羅斯方塊游戲為例,如果采用有監(jiān)督學(xué)習(xí)進(jìn)行訓(xùn)練恼除,那么有監(jiān)督學(xué)習(xí)模型就會以每一幀游戲畫面或狀態(tài)作為輸入踪旷,對應(yīng)的輸出當(dāng)然也是確定的,要么移動方塊,要么翻轉(zhuǎn)方塊令野;但是這種學(xué)習(xí)方式實際上有些死板舀患,因為要想最終獲得更多分?jǐn)?shù),其操作序列當(dāng)然不止一種气破。
然而聊浅,強化學(xué)習(xí)主要看重的卻是回報最大化,在智能體與環(huán)境交互過程中堵幽,并不是每一個行動都會獲得回報狗超,當(dāng)智能體與環(huán)境完成了一次完整的交互后,會得到一個行動序列朴下,但在序列中哪些行動為最終的回報產(chǎn)生了正向的貢獻(xiàn)努咐,哪些行動產(chǎn)生了負(fù)向的貢獻(xiàn),有時確實很難界定殴胧,比如渗稍,以圍棋游戲為例,為了最終戰(zhàn)勝對方团滥,智能體在游戲中的某些行動可能會走一些不好的招法竿屹,讓對方吃掉棋子,這是為達(dá)成最終目標(biāo)而做出的犧牲灸姊,很難判定行動序列中的這些行動是優(yōu)是劣拱燃。因此,強化學(xué)習(xí)的優(yōu)勢就在于學(xué)習(xí)過程中被強制施加的約束更少力惯,影響行動的反饋雖然不如有監(jiān)督學(xué)習(xí)直接了當(dāng)碗誉,但是卻能降低問題抽象的難度,而且還更看重行動序列所帶來的的整體回報父晶,而不是單步行動的即時收益哮缺。?
實際上,有一種學(xué)習(xí)方法的目標(biāo)和強化學(xué)習(xí)一致甲喝,都是最大化長期回報值尝苇,但其學(xué)習(xí)過程和有監(jiān)督學(xué)習(xí)類似,收集大量的單步?jīng)Q策的樣本數(shù)據(jù)埠胖,并讓模型學(xué)習(xí)這些單步?jīng)Q策的邏輯糠溜,這類機器學(xué)習(xí)算法被稱為“模仿學(xué)習(xí)”。如圖4所示押袍,模仿學(xué)習(xí)的執(zhí)行流程為:?(1)尋找一些“專家系統(tǒng)”代替智能體和環(huán)境的交互過程诵冒,得到一系列的交互序列;?(2)假設(shè)這些交互序列為對應(yīng)環(huán)境狀態(tài)下的“標(biāo)準(zhǔn)答案”谊惭,就可以使用有監(jiān)督學(xué)習(xí)讓模型去學(xué)習(xí)這些數(shù)據(jù)汽馋,從而完成將環(huán)境狀態(tài)和專家采取的行動相對應(yīng)的工作侮东。
????圖4 模仿學(xué)習(xí)的執(zhí)行流程圖?
模仿學(xué)習(xí)在一些問題上可以獲得比較好的效果,但也有其弊端豹芯,那就是:?(1)必須要在問題領(lǐng)域中存在一個專家悄雅,所有的訓(xùn)練樣本數(shù)據(jù)都通過專家系統(tǒng)和環(huán)境交互產(chǎn)生;?(2)必須要有足夠多數(shù)量的訓(xùn)練樣本數(shù)據(jù)铁蹈,否則很難學(xué)習(xí)出一個效果好的行動策略模型宽闲;?(3)必須確保學(xué)習(xí)得到的模型擁有足夠的泛化性,否則在實際使用中遇到一些訓(xùn)練樣本中沒有出現(xiàn)的觀測值握牧,導(dǎo)致泛化能力不夠的智能體出現(xiàn)重大決策失誤容诬;?為了解決以上存在的問題,模仿學(xué)習(xí)需要從訓(xùn)練樣本和模型兩方面入手沿腰。但實際上這三個問題在現(xiàn)實中都不太容易解決览徒,因此模仿學(xué)習(xí)的難度并不小,這才使得研究潮流大部分都集中在強化學(xué)習(xí)上颂龙,就是希望強化學(xué)習(xí)能夠解決模仿學(xué)習(xí)無法解決的問題习蓬。綜上所述,人工智能領(lǐng)域中幾類常見算法之間的關(guān)系如下圖5所示:
????圖5 人工智能中幾類算法之間的關(guān)系圖?
現(xiàn)如今在工業(yè)界和學(xué)術(shù)界措嵌,受到人們廣泛關(guān)注的機器學(xué)習(xí)計算框架就是谷歌公司在2015年11月9日正式開源的TensorFlow躲叼。相比其他的機器學(xué)習(xí)開源計算工具而言,TensorFlow計算框架能夠很好地支持深度學(xué)習(xí)和強化學(xué)習(xí)等多種機器學(xué)習(xí)算法的實現(xiàn)企巢。TensorFlow既是實現(xiàn)機器學(xué)習(xí)算法的接口枫慷,也是執(zhí)行機器學(xué)習(xí)算法的框架,其在很多方面都有優(yōu)異的表現(xiàn)浪规,比如開發(fā)人員設(shè)計神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的代碼簡潔性和分布式機器學(xué)習(xí)算法的執(zhí)行效率以及將訓(xùn)練好的模型部署的便利性流礁。
此外,在強化學(xué)習(xí)中還要用到的另一個重要框架就是Gym以及在此框架上實現(xiàn)的算法集合Baselines罗丰。Gym是一個集成了眾多強化學(xué)習(xí)實驗環(huán)境的平臺,在該平臺上研究人員可以很方便地搭建起強化學(xué)習(xí)所需要的仿真環(huán)境再姑,從而集中精力完成行動策略學(xué)習(xí)的主要工作萌抵。Baselines則基于TensorFlow和Gym實現(xiàn)了一些經(jīng)典的強化學(xué)習(xí)算法≡疲總而言之绍填,Gym實現(xiàn)了強化學(xué)習(xí)中和系統(tǒng)環(huán)境這個關(guān)鍵要素相關(guān)的功能,而Baselines實現(xiàn)了與智能體這個關(guān)鍵要素相關(guān)的功能栖疑。?以上內(nèi)容就是對強化學(xué)習(xí)的定義讨永、高度抽象的框架、特點遇革、主要用途卿闹、強化學(xué)習(xí)與其他幾類主要機器學(xué)習(xí)算法的本質(zhì)區(qū)別以及機器學(xué)習(xí)常用的搭建環(huán)境等內(nèi)容的精要概述揭糕。