![強(qiáng)化學(xué)習(xí) 課件全套 余欣航 第1-8章 強(qiáng)化學(xué)習(xí)概述- 基于模型的強(qiáng)化學(xué)習(xí)基礎(chǔ)_第1頁(yè)](http://file4.renrendoc.com/view2/M00/27/1C/wKhkFmY7KuaARbrYAAEVifCgFWQ504.jpg)
![強(qiáng)化學(xué)習(xí) 課件全套 余欣航 第1-8章 強(qiáng)化學(xué)習(xí)概述- 基于模型的強(qiáng)化學(xué)習(xí)基礎(chǔ)_第2頁(yè)](http://file4.renrendoc.com/view2/M00/27/1C/wKhkFmY7KuaARbrYAAEVifCgFWQ5042.jpg)
![強(qiáng)化學(xué)習(xí) 課件全套 余欣航 第1-8章 強(qiáng)化學(xué)習(xí)概述- 基于模型的強(qiáng)化學(xué)習(xí)基礎(chǔ)_第3頁(yè)](http://file4.renrendoc.com/view2/M00/27/1C/wKhkFmY7KuaARbrYAAEVifCgFWQ5043.jpg)
![強(qiáng)化學(xué)習(xí) 課件全套 余欣航 第1-8章 強(qiáng)化學(xué)習(xí)概述- 基于模型的強(qiáng)化學(xué)習(xí)基礎(chǔ)_第4頁(yè)](http://file4.renrendoc.com/view2/M00/27/1C/wKhkFmY7KuaARbrYAAEVifCgFWQ5044.jpg)
![強(qiáng)化學(xué)習(xí) 課件全套 余欣航 第1-8章 強(qiáng)化學(xué)習(xí)概述- 基于模型的強(qiáng)化學(xué)習(xí)基礎(chǔ)_第5頁(yè)](http://file4.renrendoc.com/view2/M00/27/1C/wKhkFmY7KuaARbrYAAEVifCgFWQ5045.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章強(qiáng)化學(xué)習(xí)概述目錄馬爾可夫決策過(guò)程(MDP)MDP的分類強(qiáng)化學(xué)習(xí)強(qiáng)化學(xué)習(xí)的應(yīng)用有監(jiān)督學(xué)習(xí)(supervised
learning)數(shù)據(jù)集中的樣本帶有標(biāo)簽,有明確目標(biāo)回歸和分類無(wú)監(jiān)督學(xué)習(xí)(unsupervised
learning)數(shù)據(jù)集中的樣本沒(méi)有標(biāo)簽聚類、降維、概率密度估計(jì)、生成模型構(gòu)建強(qiáng)化學(xué)習(xí)(reinforcementlearning)序列決策的過(guò)程,通過(guò)過(guò)程模擬和觀察來(lái)不斷學(xué)習(xí),提高決策能力例如:AlphaGo機(jī)器學(xué)習(xí)的分類強(qiáng)化學(xué)習(xí)的元素
智能體環(huán)境時(shí)間序列
馬爾可夫過(guò)程
馬爾可夫過(guò)程
若用馬爾可夫過(guò)程來(lái)描述一個(gè)人上學(xué)的經(jīng)歷:如果一個(gè)人就讀于重點(diǎn)中學(xué),那么他考上重點(diǎn)大學(xué)的概率也比較大如果擁有重點(diǎn)大學(xué)的學(xué)歷,那么找到一份好工作的概率也比較大馬爾可夫過(guò)程馬爾可夫決策過(guò)程在讀于普通中學(xué)的前提下:如果很努力學(xué)習(xí),則考取重點(diǎn)大學(xué)的概率就會(huì)相對(duì)變高如果沉迷于打游戲、不花心思到學(xué)習(xí)上,那么考取重點(diǎn)大學(xué)的概率就會(huì)變得很低站在自身的角度來(lái)看待求學(xué)的經(jīng)歷,考取重點(diǎn)大學(xué)的概率并不只是“客觀的規(guī)律”決定的,也有“主觀能動(dòng)性”的成分馬爾可夫決策過(guò)程馬爾可夫決策過(guò)程(MarkovDecisionProcess,MDP)還需要定義動(dòng)作與獎(jiǎng)勵(lì)若將獎(jiǎng)勵(lì)定義為求學(xué)經(jīng)歷中獲得的“幸福感”:在中學(xué)采取“努力學(xué)習(xí)”的動(dòng)作,可能因?yàn)橥娴臅r(shí)間更少,而只有較低的“幸福感”,但這幫助我們考上了更好的大學(xué),這個(gè)更好的狀態(tài)有助于未來(lái)獲得更多的“幸福感”要在“先苦后甜”與“及時(shí)行樂(lè)”中進(jìn)行取舍,選擇正確的動(dòng)作方式,以獲得最幸福的人生狀態(tài)動(dòng)作下一個(gè)狀態(tài)MDP的定義
目標(biāo):最大化效用
終止?fàn)顟B(tài)
馬爾可夫過(guò)程與MDP的對(duì)比馬爾可夫過(guò)程客觀規(guī)律宏觀性質(zhì)例如遍歷定理(研究的是某個(gè)微粒在無(wú)窮長(zhǎng)的時(shí)間內(nèi)是否“肯定”會(huì)經(jīng)歷某個(gè)狀態(tài),或無(wú)窮次經(jīng)歷某個(gè)狀態(tài))、強(qiáng)遍歷定理(不同狀態(tài)之間的概率分布是否“肯定”會(huì)收斂于一個(gè)穩(wěn)定的分布)MDP具體的問(wèn)題主觀操作求解如何對(duì)一個(gè)具體的問(wèn)題采取措施,使得獲得的效果最好工程中很多實(shí)際問(wèn)題適合被定義為MDP而非馬爾可夫過(guò)程MDP的分類MDP的分類方式根據(jù)狀態(tài)與動(dòng)作是否連續(xù)進(jìn)行分類根據(jù)環(huán)境是否已知進(jìn)行分類根據(jù)環(huán)境的隨機(jī)性或確定性進(jìn)行分類根據(jù)環(huán)境的時(shí)齊性進(jìn)行分類根據(jù)時(shí)間的連續(xù)性進(jìn)行分類根據(jù)MDP是否退化進(jìn)行分類動(dòng)作連續(xù)與離散的MDP動(dòng)作是連續(xù)變量,則策略的求解類似于機(jī)器學(xué)習(xí)訓(xùn)練回歸模型的過(guò)程動(dòng)作是離散變量,則策略的求解類似于機(jī)器學(xué)習(xí)訓(xùn)練分類模型的過(guò)程Refer:https://jacklee.work狀態(tài)與動(dòng)作離散的MDP
狀態(tài)是連續(xù)或是離散也很重要,決定了模型的形式:象棋的動(dòng)作與狀態(tài)數(shù)量有限,且離散(不存在中間狀態(tài))狀態(tài):棋盤的局勢(shì),各棋子的位置動(dòng)作:下一步落子的方式獎(jiǎng)勵(lì):吃掉對(duì)方棋子的價(jià)值,如兵1分、馬4分等只將勝利設(shè)為得到獎(jiǎng)勵(lì),中間吃子不算目標(biāo):尋找最佳走棋策略,以獲得最大效用
狀態(tài)連續(xù)、動(dòng)作離散的MDP例如“黃金礦工”游戲中:狀態(tài)連續(xù):黃金、石頭、鉆石、炸藥桶的位置動(dòng)作離散:放炸彈、下鉤、等待狀態(tài)與動(dòng)作連續(xù)的MDP
自動(dòng)駕駛可以定義為一個(gè)狀態(tài)和動(dòng)作都是連續(xù)的問(wèn)題:狀態(tài)連續(xù):傳感器捕捉到的當(dāng)前路況圖像動(dòng)作連續(xù):操作方向盤、踩油門、剎車等動(dòng)作,方向盤轉(zhuǎn)動(dòng)的角度與加速度都是連續(xù)的環(huán)境已知的MDP(model-base)
環(huán)境已知的MDP:最優(yōu)控制
列夫·龐特里亞金理查德·貝爾曼完成最優(yōu)控制理論的開(kāi)創(chuàng)性工作環(huán)境未知的MDP(model-free)
確定性環(huán)境的MDP例如一個(gè)簡(jiǎn)單的MDP:對(duì)于一個(gè)MDP,當(dāng)其S、A、P、R
都確定之后,應(yīng)該有一個(gè)最佳策略,是一個(gè)“狀態(tài)→動(dòng)作”形式的映射,它到底是一個(gè)什么樣的映射呢?狀態(tài):圓所處的位置動(dòng)作:圓左移或者右移獎(jiǎng)勵(lì):到達(dá)五角星獲得的獎(jiǎng)勵(lì)確定性環(huán)境的MDP最佳策略很簡(jiǎn)單,即一直向右移動(dòng)環(huán)境是“確定”的,即在給定狀態(tài)采取給定動(dòng)作,下一步的狀態(tài)與獎(jiǎng)勵(lì)是完全確定的此時(shí)MDP的最佳策略對(duì)應(yīng)的動(dòng)作是常量?。ú挥酶鶕?jù)狀態(tài)確定)狀態(tài):圓所處的位置動(dòng)作:圓左移或者右移獎(jiǎng)勵(lì):到達(dá)五角星獲得的獎(jiǎng)勵(lì)隨機(jī)性環(huán)境的MDP
MDP的時(shí)齊性
MDP的時(shí)齊性
時(shí)齊與否在于對(duì)“時(shí)間”性質(zhì)的定義:時(shí)齊MDP中的“時(shí)間”是一種“相對(duì)的”度量標(biāo)尺,例如“一年”、“一個(gè)回合”非時(shí)齊MDP中的“時(shí)間”是“絕對(duì)的”歷史度量,例如“公元2018年”或者“第100個(gè)回合”非時(shí)齊性環(huán)境:房?jī)r(jià)的“水漲船高”
時(shí)齊性對(duì)策略的影響
時(shí)齊性對(duì)策略的影響當(dāng)環(huán)境為確定、時(shí)齊時(shí),則策略為“動(dòng)作=常量”當(dāng)環(huán)境為隨機(jī)、時(shí)齊時(shí),則策略為“狀態(tài)→動(dòng)作”形式當(dāng)環(huán)境為確定、非時(shí)齊時(shí),則策略為“時(shí)間→動(dòng)作”形式當(dāng)環(huán)境為隨機(jī)、非時(shí)齊時(shí),則策略為“時(shí)間、策略→動(dòng)作”形式狀態(tài):圓所處的位置動(dòng)作:圓左移或者右移獎(jiǎng)勵(lì):到達(dá)五角星獲得的獎(jiǎng)勵(lì)效用與終止?fàn)顟B(tài)對(duì)于時(shí)齊性的影響
時(shí)齊MDP的分類
時(shí)間的連續(xù)性
連續(xù)時(shí)間的MDP
退化的MDP
多臂老虎機(jī)問(wèn)題(Multi-ArmedBandit)
多臂老虎機(jī)問(wèn)題是退化的MDP
上下文老虎機(jī)(ContextualBandit)
多臂老虎機(jī)上下文老虎機(jī)一般強(qiáng)化學(xué)習(xí)問(wèn)題策略的形式當(dāng)環(huán)境為確定、時(shí)齊時(shí),則策略為“動(dòng)作=常量”當(dāng)環(huán)境為隨機(jī)、時(shí)齊時(shí),則策略為“狀態(tài)→動(dòng)作”形式當(dāng)環(huán)境為確定、非時(shí)齊時(shí),則策略為“時(shí)間→動(dòng)作”形式當(dāng)環(huán)境為隨機(jī)、非時(shí)齊時(shí),則策略為“時(shí)間、策略→動(dòng)作”形式模型的形式當(dāng)動(dòng)作是連續(xù)變量時(shí),可以將策略定義為線性模型或神經(jīng)網(wǎng)絡(luò)模型等回歸模型而當(dāng)動(dòng)作是分類變量時(shí),則可以將策略定義為神經(jīng)網(wǎng)絡(luò)、表格或其它分類模型狀態(tài)、動(dòng)作(非時(shí)齊情況下還是時(shí)間)決定了模型的輸入輸出思考
強(qiáng)化學(xué)習(xí)強(qiáng)化學(xué)習(xí)解決的問(wèn)題對(duì)于生產(chǎn)、生活、辦公等領(lǐng)域的實(shí)際問(wèn)題,例如游戲AI或機(jī)器人控制,一般會(huì)被轉(zhuǎn)化為一個(gè)環(huán)境未知非退化MDP求解環(huán)境未知非退化MDP非常困難:需要擁有環(huán)境,并與環(huán)境交互產(chǎn)生大量的數(shù)據(jù)利用這些數(shù)據(jù)去尋找一個(gè)能夠最大化效用的策略強(qiáng)化學(xué)習(xí):擁有環(huán)境假定擁有環(huán)境,可以自主地選擇與環(huán)境交互的方式,從環(huán)境中產(chǎn)生“需要的數(shù)據(jù)”例如MAB問(wèn)題中可以自由選擇操控桿的老虎機(jī)可以不斷從環(huán)境中獲取數(shù)據(jù),以訓(xùn)練Agent使其取得更大的效用以象棋為例
模仿學(xué)習(xí)
模仿學(xué)習(xí)
改進(jìn)的方法:與人類專家進(jìn)行交互
DAgger
(DatasetAggregation)
模仿學(xué)習(xí)的局限模仿學(xué)習(xí)僅僅“擁有數(shù)據(jù)”,不能自由產(chǎn)生數(shù)據(jù)要在多步的MDP中找出一個(gè)比較好的策略,如果不能自由產(chǎn)生數(shù)據(jù),是難以實(shí)現(xiàn)的強(qiáng)化學(xué)習(xí)則能夠從環(huán)境中產(chǎn)生我們需要的數(shù)據(jù),并針對(duì)性地學(xué)習(xí)Exploration-ExploitationDilemma如何產(chǎn)生數(shù)據(jù)的一個(gè)重要原則是Exploration-ExploitationDilemma,它的原則是要讓產(chǎn)生的數(shù)據(jù)盡量接近當(dāng)前認(rèn)為的最佳策略,但同時(shí)又不能太過(guò)接近,而要保證分布足夠?qū)挕?shù)據(jù)具有足夠的多樣性為了簡(jiǎn)單起見(jiàn),會(huì)首先在退化的MDP(MAB問(wèn)題)中討論它,然后再擴(kuò)展到非退化MDP的情況中從數(shù)據(jù)中學(xué)習(xí)最佳策略
強(qiáng)化學(xué)習(xí)的難點(diǎn)強(qiáng)化學(xué)習(xí)問(wèn)題的難點(diǎn)(環(huán)境未知、非退化)環(huán)境未知的難點(diǎn)(MAB)非退化的難點(diǎn)(最優(yōu)控制)強(qiáng)化學(xué)習(xí):通向強(qiáng)人工智能的重要途徑弱人工智能:不需要具有人類完整的認(rèn)知能力,甚至是完全不具有人類所擁有的感官認(rèn)知能力,只要設(shè)計(jì)得看起來(lái)像有智慧就可以了強(qiáng)人工智能:具備執(zhí)行一般智能行為的能力,通常把人工智能和意識(shí)、感性、知識(shí)、自覺(jué)等人類的特征互相連接強(qiáng)化學(xué)習(xí)更接近現(xiàn)實(shí)中生命體的學(xué)習(xí)方式,更加“智能”有的研究者認(rèn)為,“強(qiáng)化學(xué)習(xí)是通向強(qiáng)人工智能的重要路徑”本體論在古典時(shí)代,哲學(xué)家們更加關(guān)注的是世界的本質(zhì)畢達(dá)哥拉斯的“萬(wàn)物皆數(shù)”,德謨克利特的“原子論”,柏拉圖的“理念論”都是對(duì)于世界的不同認(rèn)識(shí)方式,都在追求能夠“更加正確”地認(rèn)識(shí)世界這些以尋求世界本質(zhì)為目的的理論均被稱作“本體論”本體論:有監(jiān)督學(xué)習(xí)的思維方式有監(jiān)督學(xué)習(xí)思維方式與“本體論”相同,目標(biāo)是尋找客觀的規(guī)律,“學(xué)習(xí)知識(shí)”或者“認(rèn)識(shí)世界”學(xué)習(xí)方法:通過(guò)擬合現(xiàn)實(shí)中產(chǎn)生的數(shù)據(jù),對(duì)誤差進(jìn)行優(yōu)化誤差小意味著“正確”,誤差大意味“錯(cuò)誤”,當(dāng)達(dá)到了百分之百的正確率的時(shí)候,“預(yù)測(cè)誤差”就降低為0,意味著已經(jīng)“完全正確”而沒(méi)有可以再提升的地方認(rèn)識(shí)論在近代,哲學(xué)經(jīng)歷了重要的“從本體論向認(rèn)識(shí)論”的轉(zhuǎn)向其代表是康德對(duì)于“本體”與“現(xiàn)象”的劃分,通俗的說(shuō)就是“真實(shí)世界”和“我看到的世界”是兩個(gè)不同的東西,在此基礎(chǔ)上,康德認(rèn)為“真實(shí)世界”是不重要的,“我看到的世界”才是值得關(guān)注的重點(diǎn)德國(guó)哲學(xué)家叔本華繼承以及進(jìn)一步發(fā)展了康德的理論,他將“我看到的世界”稱之為“表象”,而將人的本能稱作“意志”,并且認(rèn)為“表象”是“意志”外化出來(lái)的簡(jiǎn)而言之,他認(rèn)為人對(duì)于世界的認(rèn)識(shí)是被人的目的所支配的,或者說(shuō),“我怎么認(rèn)識(shí)世界”是受到“我的目標(biāo)是什么”所支配的目的支配我們對(duì)于世界的認(rèn)識(shí)如果把人的“目的”、“目標(biāo)”或“追求”,也就是叔本華所說(shuō)的“意志”定義為“最大化效用”,那么人應(yīng)該是時(shí)刻在“追求最大化效用”的動(dòng)機(jī)支配下的,所有的能力都是為了滿足這個(gè)動(dòng)機(jī)的手段“正確認(rèn)識(shí)世界”其實(shí)也是一種能力,本質(zhì)上也是“追求最大化效用”。在某些具體的場(chǎng)景中的應(yīng)用,如果追求不同,認(rèn)識(shí)到的世界也會(huì)不同認(rèn)識(shí)論:強(qiáng)化學(xué)習(xí)的思維方式總的來(lái)說(shuō),強(qiáng)化學(xué)習(xí)的過(guò)程就像是在“最大化效用”的目標(biāo)支配下去探索環(huán)境,選擇環(huán)境中對(duì)自己有用的知識(shí)加以學(xué)習(xí),這個(gè)過(guò)程更加強(qiáng)調(diào)人的“主觀能動(dòng)性”在認(rèn)識(shí)世界、改造世界中起到的重要作用強(qiáng)化學(xué)習(xí)比起有監(jiān)督學(xué)習(xí)或無(wú)監(jiān)督學(xué)習(xí)更加接近一個(gè)生命體的學(xué)習(xí)過(guò)程、更加具有智能性、更加接近“強(qiáng)人工智能”強(qiáng)化學(xué)習(xí)的應(yīng)用軌跡追蹤強(qiáng)化學(xué)習(xí)在高維控制問(wèn)題(諸如機(jī)器人等)中的應(yīng)用已經(jīng)是學(xué)術(shù)界和工業(yè)界共同的研究課題2017年,伯克利發(fā)布的強(qiáng)化學(xué)習(xí)方法可以讓機(jī)器人17分鐘就學(xué)會(huì)軌跡跟蹤汽車制造機(jī)器人通過(guò)深度強(qiáng)化學(xué)習(xí)可以記住對(duì)象并獲得知識(shí),并訓(xùn)練自己快速而精確地完成這項(xiàng)工作特斯拉超級(jí)工廠的四大制造環(huán)節(jié):沖壓生產(chǎn)線、車身中心、烤漆中心和組裝中心有超過(guò)150名機(jī)器人參與工作,整個(gè)工廠幾乎都是機(jī)器人自動(dòng)駕駛自動(dòng)駕駛的人工智能包含了感知、決策和控制三個(gè)方面強(qiáng)化學(xué)習(xí)可以解決駕駛過(guò)程中的決策問(wèn)題Wayve公司的自動(dòng)駕駛汽車無(wú)需3D地圖也無(wú)需規(guī)則,讓汽車從零開(kāi)始在二十分鐘內(nèi)學(xué)會(huì)如何自動(dòng)駕駛提升ICU搶救效率血液化驗(yàn)指標(biāo)可以提供搶救病人的關(guān)鍵信息,但過(guò)于頻繁的化驗(yàn)有加重病情的危險(xiǎn),也會(huì)增加治療的費(fèi)用來(lái)自普林斯頓大學(xué)的一個(gè)研究團(tuán)隊(duì)設(shè)計(jì)了一個(gè)機(jī)器學(xué)習(xí)系統(tǒng),可以在減少化驗(yàn)頻率的同時(shí)優(yōu)化關(guān)鍵治療的開(kāi)展時(shí)間強(qiáng)化學(xué)習(xí)算法在這個(gè)機(jī)器學(xué)習(xí)系統(tǒng)中發(fā)揮了關(guān)鍵性的作用Refer:
Pixabay改進(jìn)惡性腦瘤放化療2018年,來(lái)自MITMediaLab的研究人員開(kāi)發(fā)出了一個(gè)新型人工智能模型,將強(qiáng)化學(xué)習(xí)應(yīng)用到現(xiàn)有的給藥方案上,反復(fù)調(diào)整膠質(zhì)母細(xì)胞瘤患者化療和放療的藥物劑量,在縮小腫瘤的同時(shí)找到盡可能最小的給藥劑量和頻率,最終發(fā)現(xiàn)最佳治療方案,改善患者生活質(zhì)量Refer:/cancer/article/6797圖像修復(fù)圖像修復(fù)是指恢復(fù)圖像損失的部分并基于背景信息將它們重建的技術(shù)CVPR2018上商湯科技發(fā)表了一篇論文《CraftingaToolchainforImageRestorationbyDeepReinforcementLearning》,提出了基于深度強(qiáng)化學(xué)習(xí)的RL-Restore算法,解決具有復(fù)雜混合失真的圖像復(fù)原問(wèn)題Refer:/TextTranslation/1564強(qiáng)化推薦在靜態(tài)場(chǎng)景之下,用戶的行為特征在與系統(tǒng)的交互過(guò)程中保持穩(wěn)定不變一類有代表性的工作是基于上下文多臂老虎機(jī)的推薦系統(tǒng),它的發(fā)展為克服推薦場(chǎng)景中的冷啟動(dòng)問(wèn)題提供了行之有效的解決方案AlphaGo2016年,谷歌的AlphaGo利用CNN模型戰(zhàn)勝李世乭,首次在圍棋項(xiàng)目中戰(zhàn)勝人類頂尖棋手AlphaGo的完全自我博弈加強(qiáng)版AlphaZero——一個(gè)從零開(kāi)始自學(xué)國(guó)際象棋、將棋和圍棋的系統(tǒng),它最終在這三個(gè)領(lǐng)域都打敗了世界最頂尖的程序:4小時(shí)就打敗了國(guó)際象棋的最強(qiáng)程序Stockfish!2小時(shí)就打敗了日本將棋的最強(qiáng)程序Elmo!8小時(shí)就打敗了與李世乭對(duì)戰(zhàn)的AlphaGov18!AlphaStar2018年1月25日,谷歌旗下DeepMind開(kāi)發(fā)的人工智能(AI)程序AlphaStar完成《星際爭(zhēng)霸2》的首秀首選通過(guò)上百萬(wàn)份玩家天梯錄像自我學(xué)習(xí),然后進(jìn)入互相訓(xùn)練賽模式進(jìn)行學(xué)習(xí)2018年12月,AlphaStar先后擊敗了DeepMind公司里的最強(qiáng)玩家DaniYogatama以及職業(yè)玩家TLO和MaNa第二章Bandit問(wèn)題
目錄
Bandit問(wèn)題多臂老虎機(jī)問(wèn)題(Multi-ArmedBandit,MAB)
多臂老虎機(jī)問(wèn)題是退化的MDP
多臂老虎機(jī)問(wèn)題(Multi-ArmedBandit)
如何使累積獎(jiǎng)勵(lì)最大?滿足伯努利分布:只取0(吐出硬幣)或1(未吐出硬幣)簡(jiǎn)單策略
搖臂編號(hào)10.720.530.240.150.8最佳操作是選擇第5個(gè)搖臂期望獎(jiǎng)勵(lì)估計(jì)表簡(jiǎn)單策略的缺點(diǎn)
貪心策略(greedy)
搖臂編號(hào)10.720.530.240.150.8搖臂編號(hào)10.720.530.240.150.82期望獎(jiǎng)勵(lì)估計(jì)表進(jìn)行第1次游戲選擇5號(hào)搖臂進(jìn)行操作,得到1枚硬幣
期望獎(jiǎng)勵(lì)估計(jì)表貪心策略的缺點(diǎn)總是選擇當(dāng)前概率最大的搖臂進(jìn)行操作,而真正中獎(jiǎng)概率高的搖臂可能是那些當(dāng)前估計(jì)概率低的搖臂!在有限游戲次數(shù)下,是堅(jiān)持在當(dāng)前中獎(jiǎng)概率高的搖臂下操作(利用),還是嘗試別的搖臂(探索)呢?如何在探索和利用之間進(jìn)行平衡,稱為探索利用困境(exploration-exploitationdilemma)探索與利用平衡生活中的探索與利用去經(jīng)常光顧的咖啡館喝咖啡(利用)嘗試去其它咖啡館,或許會(huì)喝到更喜歡的咖啡(探索)在MAB問(wèn)題基礎(chǔ)上增加狀態(tài)的ContextualBandit問(wèn)題經(jīng)常被用于廣告推薦Agent不斷選擇商品推送給顧客,并通過(guò)反饋判斷其喜歡什么商品只有通過(guò)不斷試驗(yàn),才能逐步了解顧客,推送準(zhǔn)確的商品但這個(gè)過(guò)程中,如果推送了顧客不喜歡的產(chǎn)品,必然會(huì)造成經(jīng)濟(jì)損失Refer:/news/201704/c9wvaAoGb39f8OBt.html生活中的探索與利用臨床試驗(yàn)利用:試驗(yàn)期間盡可能有效地治療患者探索:通過(guò)研究確定最佳治療方法在線廣告利用:堅(jiān)持至今效果最好的廣告探索:目標(biāo)是使用點(diǎn)擊率收集有關(guān)廣告效果的信息生活中的探索與利用探索利用困境強(qiáng)化學(xué)習(xí)中,經(jīng)常會(huì)考慮另外一種設(shè)定,即先將Agent在特定的環(huán)境上訓(xùn)練好,然后再考察它的效果例如要訓(xùn)練一個(gè)玩游戲的Agent,可以先用它在電腦上訓(xùn)練很多輪,然后再看它能達(dá)到何種性能唯一目標(biāo)是在訓(xùn)練完畢之后它能拿出足夠好的表現(xiàn)而其在訓(xùn)練中的表現(xiàn)是完全不重要的!這樣的話,還需不需要exploitation?有監(jiān)督學(xué)習(xí)與強(qiáng)化學(xué)習(xí)的區(qū)別有監(jiān)督學(xué)習(xí)中,訓(xùn)練與測(cè)試必須嚴(yán)格分開(kāi),而評(píng)價(jià)算法的標(biāo)準(zhǔn)必須是測(cè)試誤差而非訓(xùn)練誤差強(qiáng)化學(xué)習(xí)中,直接針對(duì)未知環(huán)境學(xué)習(xí)最佳策略,訓(xùn)練與測(cè)試都是在同一個(gè)環(huán)境進(jìn)行,訓(xùn)練誤差與測(cè)試誤差不必嚴(yán)格分開(kāi)需要結(jié)合現(xiàn)實(shí)中的具體情況,去定義問(wèn)題是“邊訓(xùn)練邊測(cè)試”還是“先訓(xùn)練后測(cè)試”算法的成本任何的算法都要考慮成本在“先訓(xùn)練后測(cè)試”的情形下,所考慮的成本主要是用到了多少數(shù)據(jù)例如在訓(xùn)練玩游戲的Agent時(shí),訓(xùn)練的成本是它訓(xùn)練的輪數(shù),而不是訓(xùn)練時(shí)它的表現(xiàn)在“邊訓(xùn)練邊測(cè)試”的情形下,所考慮的成本不只是數(shù)據(jù)的成本,也和數(shù)據(jù)的內(nèi)容有關(guān)例如在多臂老虎機(jī)問(wèn)題中,訓(xùn)練的主要成本是損失的金幣玩多臂老虎機(jī)的時(shí)候,究竟是否需要考慮贏輸金幣的多少?關(guān)鍵要確定目標(biāo)!重新定義MAB問(wèn)題
重新定義MAB問(wèn)題在前50次模擬中,得出如下估計(jì)結(jié)果:接下來(lái)還應(yīng)該認(rèn)為各個(gè)搖臂都有相同可能是最佳搖臂嗎應(yīng)該認(rèn)為第1、2、5號(hào)搖臂更有可能是最佳搖臂搖臂編號(hào)實(shí)驗(yàn)次數(shù)10.71020.51030.21040.11050.810將接下來(lái)50次試驗(yàn)的機(jī)會(huì)平均分配給第1、2、5號(hào)搖臂,得到如下結(jié)果:上述結(jié)果可以認(rèn)為,第1和第5兩個(gè)搖臂更可能是最佳搖臂重新定義MAB問(wèn)題搖臂編號(hào)實(shí)驗(yàn)次數(shù)10.762720.582630.21040.11050.7827重新定義MAB問(wèn)題將最后50次試驗(yàn)機(jī)會(huì)平均分配給第1和第5號(hào)搖臂,得到如下結(jié)果:根據(jù)右表的結(jié)果可以認(rèn)為,
第5號(hào)搖臂更可能是最佳搖臂!搖臂編號(hào)實(shí)驗(yàn)次數(shù)10.755220.582630.21040.11050.7952
利用的意義
反映了exploitation的基本思想利用的意義
探索與利用
探索和利用
探索率的選擇如果將其設(shè)計(jì)得太高(即更傾向于“探索”)會(huì)導(dǎo)致較少選擇“看起來(lái)是最好”的搖臂如果將其設(shè)計(jì)得太低(即更傾向于“利用”)則會(huì)導(dǎo)致不能充分探索環(huán)境以及時(shí)發(fā)現(xiàn)“最好”的搖臂應(yīng)該如何選擇探索率呢?
初步探索次數(shù)的選擇
ε遞減策略(ε-greedywithεdecayed)
Boltzmann策略
在“先訓(xùn)練再測(cè)試”的設(shè)定下,ε-greedy并不是一個(gè)高效的算法假設(shè)先對(duì)每個(gè)搖臂各試驗(yàn)10次(即一共試驗(yàn)了50次),得到:第1號(hào)搖臂比起第3號(hào)搖臂更有可能是最佳搖臂但是在ε-greedy算法中,并沒(méi)有體現(xiàn)出第1與第3號(hào)搖臂的不同—只要它們不是“當(dāng)前認(rèn)為最佳”的搖臂,在它們上面分配的次數(shù)就是一樣多的搖臂編號(hào)實(shí)驗(yàn)次數(shù)10.71020.51030.21040.11050.810回顧上節(jié)給出的算法結(jié)果:最后不僅需要選擇一個(gè)最好的搖臂,還要盡力比較所有候選的搖臂不應(yīng)該根據(jù)搖臂能夠帶來(lái)多大的收益來(lái)對(duì)每一個(gè)搖臂分配實(shí)驗(yàn)次數(shù),而應(yīng)該根據(jù)它“有多大可能是最佳的搖臂”搖臂編號(hào)實(shí)驗(yàn)次數(shù)10.755220.582630.21040.11050.7952
Boltzmann策略
Boltzmann策略
Boltzmann策略上置信界策略(UCB)UCB策略(UpperConfidenceBound)
UCB策略
UCB策略的理解
UCB策略的理解
總結(jié)
實(shí)踐案例:多臂老虎機(jī)問(wèn)題策略實(shí)現(xiàn)案例簡(jiǎn)介利用Python實(shí)現(xiàn)多臂老虎機(jī)問(wèn)題的4種策略:隨機(jī)選擇、ε-greedy、Boltzmann和UCB搖臂的個(gè)數(shù)為5,真實(shí)的獎(jiǎng)勵(lì)概率分別為0.2、0.4、0.7、0.5、0.2進(jìn)行1000次游戲,記錄下每種策略的累積獎(jiǎng)勵(lì)、各個(gè)搖臂的期望獎(jiǎng)勵(lì)估計(jì)和操作次數(shù),進(jìn)行比較和分析,在保證累積獎(jiǎng)勵(lì)的情況下,選擇穩(wěn)定性最好策略第三章最優(yōu)控制
目錄價(jià)值的定義動(dòng)態(tài)規(guī)劃算法LQR控制案例:利用策略迭代和值迭代求解迷宮尋寶問(wèn)題價(jià)值的定義最優(yōu)控制問(wèn)題
AgentEnvironment三連棋游戲井字形棋盤一方在棋盤上畫○,一方在棋盤上畫×,交替進(jìn)行某一時(shí)刻,棋盤上同一直線出現(xiàn)三個(gè)○或三個(gè)×,即為獲勝棋盤被填滿還未分出勝負(fù),則記為平局游戲規(guī)則由人類玩家和電腦進(jìn)行對(duì)戰(zhàn):人類玩家畫○,電腦畫×,每次游戲都從人類玩家開(kāi)始當(dāng)棋盤某一直線上有兩個(gè)○,且剩下位置是空的,電腦會(huì)在這個(gè)位置畫×,阻止人類獲勝如果人類玩家不能在一步之內(nèi)取勝,電腦會(huì)等概率隨機(jī)選擇一個(gè)空位置畫×定義MDP
求解最優(yōu)策略:第一步走中間
求解最優(yōu)策略:第一步走中間
求解最優(yōu)策略:第一步走中間
平局勝利勝利平局平局平局
v
求解最優(yōu)策略:第一步走中間
求解最優(yōu)策略:第一步走角落
求解最優(yōu)策略:第一步走角落
求解最優(yōu)策略:第一步走角落○×○×○○×○○×○○×○
求解最優(yōu)策略:第一步走角落
求解最優(yōu)策略:第一步走角落
三連棋游戲最優(yōu)策略
“價(jià)值”的思想
中間狀態(tài)的“價(jià)值”中間狀態(tài)的“價(jià)值”初始狀態(tài)也屬于中間狀態(tài)“中間狀態(tài)”
“中間狀態(tài)”
狀態(tài)-價(jià)值-最佳動(dòng)作表狀態(tài)價(jià)值最佳動(dòng)作0.9160.66610.33走角落走對(duì)角走中間(必勝)走對(duì)角策略下?tīng)顟B(tài)的價(jià)值
狀態(tài)的價(jià)值
價(jià)值的計(jì)算
動(dòng)態(tài)規(guī)劃的思想將大的問(wèn)題拆分成若干個(gè)比較小的問(wèn)題,分別求解這些小問(wèn)題,再用這些小問(wèn)題的結(jié)果來(lái)解決大問(wèn)題這種拆分是在時(shí)間維度上的,稱為時(shí)間差分(Temporal
Difference,TD),即利用下一時(shí)刻狀態(tài)的價(jià)值計(jì)算當(dāng)前時(shí)刻狀態(tài)的價(jià)值,直到計(jì)算出所有狀態(tài)的價(jià)值動(dòng)態(tài)規(guī)劃算法
通過(guò)策略求解狀態(tài)價(jià)值策略評(píng)估
策略評(píng)估
雅克比迭代法
策略提升
策略迭代法
值迭代法
策略迭代與值迭代
誤差很大的價(jià)值誤差一般的價(jià)值誤差很小的價(jià)值殊途同歸策略迭代值迭代
Bellman方程
Bellman方程
LQR控制連續(xù)狀態(tài)動(dòng)作的MDP
基本的LQR問(wèn)題
基本的LQR問(wèn)題
問(wèn)題的解(T=1)
問(wèn)題的解
LQR控制器
LQR控制器
LQR控制器
LQR控制器
LQR控制器
LQR控制器
LQR控制器
向前迭代向前迭代向前迭代向前迭代LQR控制器
總結(jié)最優(yōu)控制可以解決環(huán)境完全已知的MDP問(wèn)題狀態(tài)-動(dòng)作離散且環(huán)境已知的MDP問(wèn)題:策略迭代:通過(guò)不斷進(jìn)行策略評(píng)估和策略改進(jìn),直至策略收斂,從而得到最佳策略,由于迭代速度快,適合狀態(tài)空間較小的情況值迭代:通過(guò)迭代計(jì)算最佳狀態(tài)價(jià)值,從最佳狀態(tài)價(jià)值中提取出最佳策略,由于計(jì)算量少,適合狀態(tài)空間較大的情況狀態(tài)-動(dòng)作連續(xù)且環(huán)境已知的MDP問(wèn)題:LQR:解決狀態(tài)轉(zhuǎn)移關(guān)系為線性且有時(shí)間限制的MDP問(wèn)題iLQR:解決狀態(tài)轉(zhuǎn)移關(guān)系為非線性且有時(shí)間限制的MDP問(wèn)題案例:利用策略迭代和值迭代求解迷宮尋寶問(wèn)題案例介紹迷宮尋寶問(wèn)題:在一個(gè)5×5的棋盤中,超級(jí)瑪麗位于棋盤左上角的方格內(nèi),可以向上、下、左、右四個(gè)方向移動(dòng),每回合移動(dòng)一次記為1步寶藏位于棋盤最下層中間的方格內(nèi),超級(jí)瑪麗找到寶藏則游戲結(jié)束目標(biāo)是讓超級(jí)瑪麗以最少的步數(shù)找到寶藏利用策略迭代和值迭代求解迷宮尋寶問(wèn)題的最佳策略第四章基于價(jià)值的強(qiáng)化學(xué)習(xí)
目錄狀態(tài)-動(dòng)作價(jià)值函數(shù)SarsaQ-learningDQN狀態(tài)-動(dòng)作價(jià)值函數(shù)環(huán)境已知的MDP問(wèn)題
環(huán)境未知的MDP問(wèn)題
與環(huán)境交互
如何學(xué)習(xí)
時(shí)間差分學(xué)習(xí)(Temporal-Differencelearning)
狀態(tài)-動(dòng)作價(jià)值函數(shù)的引入
狀態(tài)-動(dòng)作價(jià)值函數(shù)
SarsaSarsa
估計(jì)作為目標(biāo)值預(yù)測(cè)值Q表(Q-table)
…-2102-1101-1……Q表Sarsa算法流程
Sarsa舉例
Step1:初始化Q表上下左右開(kāi)始0000一個(gè)香蕉0000空區(qū)域0000兩個(gè)香蕉0000炸彈區(qū)域0000三個(gè)香蕉0000
Q表
上下左右開(kāi)始0000.1一個(gè)香蕉0000空區(qū)域0000兩個(gè)香蕉0000炸彈區(qū)域0000三個(gè)香蕉0000Q表Step5:利用Q表求出最佳策略上下左右開(kāi)始-11.5-12一個(gè)香蕉-1-301空區(qū)域-130-1兩個(gè)香蕉0-1-1-3炸彈區(qū)域0000三個(gè)香蕉0000Q表中狀態(tài)??所在行的最大值所對(duì)應(yīng)的動(dòng)作??即為當(dāng)前狀態(tài)下的最佳策略Q表n-stepSarsa
Q-learningQ-learning
目標(biāo)值預(yù)測(cè)值Q-learning算法流程
Q-learning舉例
Step1:初始化Q表上下左右開(kāi)始0000一個(gè)香蕉0000空區(qū)域0000兩個(gè)香蕉0000炸彈區(qū)域0000三個(gè)香蕉0000
Q表Step2:狀態(tài)??下選擇動(dòng)作??
上下左右開(kāi)始0000.1一個(gè)香蕉0000空區(qū)域0000兩個(gè)香蕉0000炸彈區(qū)域0000三個(gè)香蕉0000Q表Step4:利用Q表求出最佳策略上下左右開(kāi)始-11.5-12一個(gè)香蕉-1-301空區(qū)域-130-1兩個(gè)香蕉0-1-1-3炸彈區(qū)域0000三個(gè)香蕉0000
Q表Q-learning與SarsaSarsa和Q-learning是兩種常用的無(wú)模型強(qiáng)化學(xué)習(xí)算法兩種算法均基于Q表,適合狀態(tài)和動(dòng)作離散的問(wèn)題Sarsa中從環(huán)境產(chǎn)生數(shù)據(jù)的策略和更新Q值的策略相同(on-policy);Q-learning中從環(huán)境產(chǎn)生數(shù)據(jù)的策略和更新Q值策略不同(off-policy)Q-learning通常收斂更快,實(shí)際中更常用懸崖尋路問(wèn)題目標(biāo)是從起點(diǎn)移動(dòng)到終點(diǎn)可以采取上、下、左、右四種動(dòng)作進(jìn)行移動(dòng)到達(dá)除懸崖以外的方格獎(jiǎng)勵(lì)為-1到達(dá)懸崖獎(jiǎng)勵(lì)為-100并返回起點(diǎn)離開(kāi)方格的動(dòng)作會(huì)保持當(dāng)前狀態(tài)不動(dòng)并獎(jiǎng)勵(lì)-1懸崖尋路問(wèn)題:Q-learning和Sarsa的表現(xiàn)Q-leaning:沿著最短路徑進(jìn)行Q值的學(xué)習(xí),容易進(jìn)入懸崖,導(dǎo)致每次迭代的累積獎(jiǎng)勵(lì)較少迭代速度較快Sarsa:沿著較長(zhǎng)但安全的路徑進(jìn)行Q值的學(xué)習(xí),每次迭代的累積獎(jiǎng)勵(lì)較多迭代速度較慢Q-learningSarsaDQNQ表的局限性在Q-learning和Sarsa中,狀態(tài)和動(dòng)作離散,使用Q表來(lái)保存Q值當(dāng)狀態(tài)或動(dòng)作數(shù)量很大或者為連續(xù)值時(shí),使用Q表不再有效吃豆人馬里奧兄弟
值函數(shù)近似
Q表值函數(shù)近似
Q-tableDeepQNetwork一種結(jié)合了深度學(xué)習(xí)和Q-learning的強(qiáng)化學(xué)習(xí)算法適合狀態(tài)數(shù)量很大,動(dòng)作數(shù)量較少的問(wèn)題,例如Atari游戲使用深度神經(jīng)網(wǎng)絡(luò)近似Q值MnihV,KavukcuogluK,SilverD,etal.Playingatariwithdeepreinforcementlearning[J].arXivpreprintarXiv:1312.5602,2013.DeepQNetwork
如何訓(xùn)練
DQN算法流程
DQN的改進(jìn)使用神經(jīng)網(wǎng)絡(luò)近似Q值時(shí),強(qiáng)化學(xué)習(xí)過(guò)程并不穩(wěn)定甚至?xí)l(fā)散,主要原因有:數(shù)據(jù)存在一定相關(guān)性數(shù)據(jù)非平穩(wěn)分布目標(biāo)Q值和預(yù)測(cè)Q值存在參數(shù)聯(lián)系針對(duì)上述問(wèn)題,后續(xù)學(xué)者對(duì)DQN做出了一些改進(jìn):經(jīng)驗(yàn)回放(experiencereplay):應(yīng)對(duì)數(shù)據(jù)相關(guān)性和非平穩(wěn)分布問(wèn)題目標(biāo)網(wǎng)絡(luò)(targetnetwork):引入新網(wǎng)絡(luò)計(jì)算目標(biāo)Q值,減輕與預(yù)測(cè)Q值的參數(shù)聯(lián)系MnihV,KavukcuogluK,SilverD,etal.Human-levelcontrolthroughdeepreinforcementlearning[J].Nature,2015,518(7540):529.經(jīng)驗(yàn)回放樣本緩存區(qū)(replaybuffer):與環(huán)境交互時(shí),將產(chǎn)生的數(shù)據(jù)存儲(chǔ)在緩存區(qū)中均勻地隨機(jī)采樣一批數(shù)據(jù)提供給神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練若緩存區(qū)數(shù)據(jù)已滿,用新數(shù)據(jù)覆蓋最舊的數(shù)據(jù)帶經(jīng)驗(yàn)回放的DQN算法流程
目標(biāo)網(wǎng)絡(luò)目標(biāo)Q值和預(yù)測(cè)Q值之間存在參數(shù)聯(lián)系,每次更新的目標(biāo)都是固定上次更新的參數(shù)得來(lái)的,優(yōu)化目標(biāo)跟著優(yōu)化過(guò)程一直在變,迭代難以收斂:引入一個(gè)與原始網(wǎng)絡(luò)結(jié)構(gòu)一樣的模型,稱為目標(biāo)網(wǎng)絡(luò)(targetnetwork),原模型稱為表現(xiàn)網(wǎng)絡(luò)(behaviornetwork),目標(biāo)網(wǎng)絡(luò)計(jì)算Q-learning中的目標(biāo)Q值,每當(dāng)完成一定輪數(shù)迭代,表現(xiàn)網(wǎng)絡(luò)的參數(shù)同步給目標(biāo)網(wǎng)絡(luò)targetnetworkbehaviornetworkUpdatetargetQpredictQMSE預(yù)測(cè)Q值(predictQ):目標(biāo)Q值(targetQ):
帶經(jīng)驗(yàn)回放和目標(biāo)網(wǎng)絡(luò)的DQN算法流程
DQN的表現(xiàn)右圖展示的是DQN在50多種Atari游戲上的表現(xiàn)圖中可以看到:DQN幾乎在所有游戲的表現(xiàn)上都高于歷史最好的強(qiáng)化學(xué)習(xí)方法對(duì)于半數(shù)以上的游戲,DQN的表現(xiàn)已經(jīng)超越了人類狀態(tài)與動(dòng)作連續(xù)的MDPDQN能處理離散動(dòng)作空間的MDP問(wèn)題,但不能處理連續(xù)動(dòng)作空間的MDP問(wèn)題例如自動(dòng)駕駛問(wèn)題:狀態(tài)連續(xù):傳感器捕捉到的當(dāng)前路況圖像動(dòng)作連續(xù):操作方向盤、踩油門、剎車等動(dòng)作,方向盤轉(zhuǎn)動(dòng)的角度與加速度都是連續(xù)的NAF
GuS,LillicrapT,SutskeverI,etal.Continuousdeepq-learningwithmodel-basedacceleration[C]//InternationalConferenceonMachineLearning.2016:2829-2838.總結(jié)介紹了幾種無(wú)模型(model
free)基于價(jià)值函數(shù)的強(qiáng)化學(xué)習(xí)算法狀態(tài)和動(dòng)作離散:Sarsa和Q-learning狀態(tài)連續(xù),動(dòng)作離散:DQN狀態(tài)和動(dòng)作連續(xù):NAF
第五章
強(qiáng)化學(xué)習(xí)的實(shí)驗(yàn)環(huán)境與工具
目錄實(shí)驗(yàn)環(huán)境Gym實(shí)驗(yàn)工具TensorFlow實(shí)驗(yàn)環(huán)境GymGym簡(jiǎn)介Gym(/)是OpenAI推出的強(qiáng)化學(xué)習(xí)實(shí)驗(yàn)環(huán)境庫(kù):提供了強(qiáng)化學(xué)習(xí)中與智能體(agent)交互的環(huán)境(environment)用于構(gòu)建、評(píng)估和比較強(qiáng)化學(xué)習(xí)算法的工具庫(kù)兼容TensorFlow、Theano、Keras等框架下編寫的程序除了依賴的少量商業(yè)庫(kù)外,整個(gè)項(xiàng)目是開(kāi)源免費(fèi)的Gym簡(jiǎn)介Gym庫(kù)內(nèi)置了上百種強(qiáng)化學(xué)習(xí)的實(shí)驗(yàn)環(huán)境:經(jīng)典控制環(huán)境簡(jiǎn)單文本環(huán)境算法環(huán)境二維方塊(Box2D)環(huán)境Atari游戲環(huán)境機(jī)械控制環(huán)境……Gym的安裝Gym支持Windows系統(tǒng)、Linux系統(tǒng)和macOS系統(tǒng)在Anaconda3環(huán)境里安裝Gym庫(kù)(要求Python版本為3.5+)安裝Gym庫(kù)(安裝版本為0.15.3):pipinstallgym==0.15.3……Gym中的環(huán)境查看Gym庫(kù)里包含的環(huán)境fromgymimportenvsenv_spaces=envs.registry.all()env_ids=
[env_space.idforenv_spaceinenv_spaces]print(env_ids)Gym庫(kù)里的環(huán)境每一個(gè)環(huán)境都有一個(gè)形如“xxxxx_vd”的ID,如“CartPole-v0”、“LunarLander-v2”等,ID中包含名稱和版本號(hào)懸崖尋路問(wèn)題(CliffWalking)目標(biāo)是從起點(diǎn)移動(dòng)到終點(diǎn)可以采取上、下、左、右四種動(dòng)作進(jìn)行移動(dòng)到達(dá)除懸崖以外的方格獎(jiǎng)勵(lì)為-1到達(dá)懸崖獎(jiǎng)勵(lì)為-100并返回起點(diǎn)離開(kāi)方格的動(dòng)作會(huì)保持當(dāng)前狀態(tài)不動(dòng)并獎(jiǎng)勵(lì)-1加載環(huán)境importgym#加載CliffWalking-v0環(huán)境env=gym.make('CliffWalking-v0’)#以圖形化的方式顯示當(dāng)前的環(huán)境狀態(tài)env.render()使用make()函數(shù)加載gym庫(kù)中的”懸崖尋路”環(huán)境如果需要加載其它環(huán)境,只需將make函數(shù)中的參數(shù)換成其它環(huán)境的ID即可加載環(huán)境”懸崖尋路“問(wèn)題的環(huán)境描述起點(diǎn)
終點(diǎn)
懸崖
獎(jiǎng)勵(lì)描述
狀態(tài)空間和動(dòng)作空間每個(gè)環(huán)境都定義了自己的狀態(tài)空間和動(dòng)作空間加載環(huán)境之后使用環(huán)境的observation_space屬性查看狀態(tài)空間,使用環(huán)境的action_space屬性查看動(dòng)作空間#查看環(huán)境的觀測(cè)空間print(‘狀態(tài)空間:',env.observation_space)#查看環(huán)境的動(dòng)作空間print('動(dòng)作空間:',env.action_space)輸出觀測(cè)空間和動(dòng)作空間觀測(cè)空間和動(dòng)作空間即可以是離散空間(取值是有限個(gè)離散的值)也可以是連續(xù)空間(取值是連續(xù)的)離散空間一般用Discrete()表示,連續(xù)空間一般用Box()表示例如“CliffWalking-v0“環(huán)境的觀測(cè)空間是Discrete(48),表示該環(huán)境有48個(gè)狀態(tài),動(dòng)作空間是Discrete(4),表示該環(huán)境有4個(gè)動(dòng)作智能體有48個(gè)狀態(tài),在每個(gè)狀態(tài),智能體有上下左右四個(gè)動(dòng)作可以選擇環(huán)境對(duì)象的step()函數(shù)環(huán)境對(duì)象的step()函數(shù)接收智能體的動(dòng)作并返回以下四個(gè)參數(shù):observations:代表對(duì)特定環(huán)境的觀測(cè)值reward:執(zhí)行當(dāng)前行動(dòng)所獲得的獎(jiǎng)勵(lì)值done:布爾型變量,表示該回合是否完成了任務(wù)info:其它信息,例如狀態(tài)間的轉(zhuǎn)移概率每個(gè)時(shí)間步,智能體都會(huì)選擇一個(gè)動(dòng)作,然后返回結(jié)果和獎(jiǎng)勵(lì)值環(huán)境對(duì)象的step()函數(shù)fortinrange(10):
#在動(dòng)作空間中隨機(jī)選擇一個(gè)動(dòng)作action=env.action_space.sample()
#執(zhí)行一個(gè)動(dòng)作observation,reward,done,info=env.step(action)
print("action:{},observation:{},reward:{},done:{},info:{}".format(action,observation,reward,done,info))Gym中常用函數(shù)使用make()函數(shù)加載環(huán)境對(duì)象使用reset()函數(shù)重置環(huán)境對(duì)象使用render()函數(shù)以圖形化的方式顯示當(dāng)前的環(huán)境狀態(tài)使用action_space.sample()函數(shù)從環(huán)境的動(dòng)作空間隨機(jī)選擇一個(gè)動(dòng)作使用step()函數(shù)使智能體執(zhí)行一個(gè)動(dòng)作使用close()函數(shù)關(guān)閉環(huán)境Sarsa算法流程回顧
使用Sarsa尋找最佳策略設(shè)置算法參數(shù)以及初始化Q表importnumpyasnp##學(xué)習(xí)率設(shè)置alpha=
0.8##折扣因子設(shè)置gamma=
0.95##迭代輪數(shù)num_episodes=
600##創(chuàng)建一個(gè)48行4列的空的Q表q_table=np.zeros([env.observation_space.n,env.action_space.n])使用Sarsa尋找最佳策略
def
epsilon_greedy(state,epsilon):
##探索
ifnp.random.uniform(0,
1)
<epsilon:
returnenv.action_space.sample()
##利用
else:
returnnp.argmax(q_table[state,:])使用Sarsa尋找最佳策略
使用Sarsa尋找最佳策略
##進(jìn)行循環(huán)
while
True:
##在狀態(tài)下執(zhí)行動(dòng)作,返回獎(jiǎng)勵(lì)和下一狀態(tài)next_state,reward,done,_=env.step(action)
##根據(jù)??-greedy選擇下一動(dòng)作next_action=epsilon_greedy(next_state,
0.1)
##更新Q值q_table[state,action]
+=alpha*
(reward+gamma*q_table[next_state,next_action]
-q_table[state,action])
##更新當(dāng)前狀態(tài)和行為state=next_stateaction=next_action
##若達(dá)到終止?fàn)顟B(tài),結(jié)束循環(huán)
ifdone:
break使用Sarsa尋找最佳策略迭代完成后,根據(jù)Q表找出最佳策略best_route_value=
[]##初始化狀態(tài)next_state=env.reset()
best_route_value.append(next_state)while
True:
action=np.argmax(q_table[next_state,
:])next_state,_,done,_=env.step(action)
best_route_value.append(next_state)
ifdone:
breakbest_route_value[36,24,12,0,1,2,3,4,5,6,7,8,9,10,11,23,35,47]Q-learning算法流程回顧
使用Q-learning尋找最佳策略設(shè)置算法參數(shù)以及初始化Q表importnumpyasnp##學(xué)習(xí)率設(shè)置alpha=
0.8##折扣因子設(shè)置gamma=
0.95##迭代輪數(shù)num_episodes=
600##創(chuàng)建一個(gè)48行4列的空的Q表q_table_learning=np.zeros([env.observation_space.n,env.action_space.n])使用Q-learning尋找最佳策略
def
epsilon_greedy(state,epsilon):
##探索
ifnp.random.uniform(0,
1)
<epsilon:
returnenv.action_space.sample()
##利用
else:
returnnp.argmax(q_table_learning[state,:])使用Q-learning尋找最佳策略進(jìn)行迭代,首先初始化狀態(tài)##進(jìn)行迭代foriinrange(num_episodes):
##初始化狀態(tài)state=env.reset()
使用Q-learning尋找最佳策略
##進(jìn)行循環(huán)
while
True:
##根據(jù)??-greedy選擇動(dòng)作action=epsilon_greedy(state,
0.5)
##在狀態(tài)下執(zhí)行動(dòng)作,返回獎(jiǎng)勵(lì)和下一狀態(tài)next_state,reward,done,_=env.step(action)
##更新Q值q_table_learning[state,action]
+=alpha*
(reward+gamma*max(q_table_learning[next_state])
-q_table_learning[state,action])
##更新當(dāng)前狀態(tài)state=next_state
##若達(dá)到終止?fàn)顟B(tài),結(jié)束循環(huán)
ifdone:
break使用Q-learning尋找最佳策略迭代完成后,根據(jù)Q表找出最佳策略best_route_value_learning=
[]##初始化狀態(tài)next_state=env.reset()
best_route_value_learning.append(next_state)while
True:
action=np.argmax(q_table_learning[next_state,
:])next_state,_,done,_=env.step(action)
best_route_value_learning.append(next_state)
ifdone:
breakbest_route_value_learning[36,24,25,26,27,28,29,30,31,32,33,34,35,47]##初始化環(huán)境s=env.reset()d=
Falsewhiled!=
True:
##每次選擇最優(yōu)動(dòng)作a=np.argmax(Q[s,:])s1,r,d,_=env.step(a)s=s1
##展示每一步的游戲進(jìn)程env.render()…………使用Q-learning尋找最佳策略展示每一步的游戲進(jìn)程Sarsa會(huì)選擇較為安全的路徑;Q-learning會(huì)選擇步數(shù)最少的最優(yōu)路徑整體來(lái)看,Sarsa每輪迭代的累積獎(jiǎng)勵(lì)略高于Q-learning,但算法穩(wěn)定性不如Q-learningSarsa和Q-learning的對(duì)比SarsaQ-learning實(shí)驗(yàn)工具TensorFlowTensorFlow簡(jiǎn)介TensorFlow是一個(gè)運(yùn)用數(shù)據(jù)流圖進(jìn)行數(shù)值計(jì)算的開(kāi)源軟件庫(kù):靈活的架構(gòu)可以在多種平臺(tái)上展開(kāi)計(jì)算用于構(gòu)建強(qiáng)化學(xué)習(xí)算法中機(jī)器學(xué)習(xí)或深度學(xué)習(xí)模型的構(gòu)建、訓(xùn)練和調(diào)試官方網(wǎng)站:/中文社區(qū):/張量(Tensor)張量是一個(gè)數(shù)據(jù)容器0維張量:標(biāo)量1維張量:向量2維張量:矩陣3維張量:彩色圖像……數(shù)據(jù)流圖數(shù)據(jù)流圖又稱為計(jì)算圖,是TensorFlow的基本計(jì)算框架,用于定義深度學(xué)習(xí)的網(wǎng)絡(luò)結(jié)構(gòu)TensorFlow中的基本數(shù)據(jù)流圖為靜態(tài)圖,即一旦創(chuàng)建不支持動(dòng)態(tài)修改TensorFlow中亦引入了動(dòng)態(tài)圖機(jī)制(Eager)數(shù)據(jù)流圖圖中包含一些操作(Operation)對(duì)象,稱為計(jì)算節(jié)點(diǎn)Tensor對(duì)象則是表示在不同的操作間的數(shù)據(jù)節(jié)點(diǎn)在定義圖的時(shí)候定義不同的名稱域并在其中定義變量和Operation,方便后續(xù)查找常量、變量常量:數(shù)值不能改變的Tensor,一旦被賦值,就不能改變使用tf.constant()函數(shù)創(chuàng)建TensorFlow常量
#創(chuàng)建一個(gè)常量x x=tf.constant(10)變量:數(shù)值可變的Tensor,用于計(jì)算圖中其它操作的輸入使用tf.Variable()函數(shù)創(chuàng)建TensorFlow變量#定義一個(gè)服從正態(tài)分布的變量賦給w,并將其命名為weightw=tf.Variable(tf.random_normal([3,2],stddev=
0.1),name=‘weight’)變量范圍在復(fù)雜的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中,層與層之間的連接、節(jié)點(diǎn)與節(jié)點(diǎn)之間的連接會(huì)存在許多的變量或操作,會(huì)導(dǎo)致變量出現(xiàn)混亂不清使用_scope()或tf.variable_scope()設(shè)置變量范圍,可以降低復(fù)雜性,通過(guò)將相關(guān)層的變量或操作集中在一個(gè)范圍內(nèi)有助于更好的理解模型importtensorflowastf#重置計(jì)算圖tf.reset_default_graph()withtf.name_scope("layer1"):a=tf.constant(1,name=
'a')
print(a.name)
withtf.name_scope("layer1-1"):b=tf.constant(2,name=
'b')
print(b.name)輸出變量范圍使用tf.variable_scope()設(shè)置變量范圍importtensorflowastf#重置計(jì)算圖tf.reset_default_graph()withtf.variable_scope("layer1"):a=tf.Variable(1,name="a")
print(a.name)
withtf.variable_scope("layer1-1"):b=tf.Variable(2,name="b")
print(b.name)輸出占位符占位符是只定義類型和維度但不賦值的Tensor使用tf.placeholder()函數(shù)創(chuàng)建TensorFlow占位符#創(chuàng)建一個(gè)維度為3x2,類型為float類型的占位符y=tf.placeholder(shape=[3,2],dtype="float")占位符有一個(gè)shape參數(shù),用于指定數(shù)據(jù)的維度,如果shape設(shè)置為None,則在運(yùn)行時(shí)可以輸入任意維度的數(shù)據(jù)激活函數(shù)、損失函數(shù)
優(yōu)化器不同的優(yōu)化算法是TensorFlow計(jì)算圖中解決優(yōu)化問(wèn)題的一個(gè)Operation,需要在會(huì)話中運(yùn)行常用的優(yōu)化器:tf.train.GradientDescentOptimizertf.train.MomentumOptimizertf.train.RMSPropOptimizertf.train.AdamOptimizertf.train.AdadeltaOptimizertf.train.AdagradOptimizer……會(huì)話執(zhí)行數(shù)據(jù)流圖中的操作需要使用TensorFlow會(huì)話使用tf.Session()函數(shù)創(chuàng)建一個(gè)會(huì)話importtensorflowastf#常見(jiàn)一個(gè)常量a和常量ba=tf.constant(3)b=tf.constant(5)#定義一個(gè)加法計(jì)算c=tf.add(a,b)#創(chuàng)建一個(gè)會(huì)話sess=tf.Session()#執(zhí)行定義的操作sess.run(c)#關(guān)閉會(huì)話sess.close()構(gòu)建計(jì)算圖創(chuàng)建session利用傳進(jìn)的數(shù)據(jù)進(jìn)行計(jì)算TensorBoardTensorBoard是TensorFlow的可視化工具,用于可視化計(jì)算圖通過(guò)將TensorFlow程序輸出的日志文件的信息可視化使得程序的理解、調(diào)試和優(yōu)化更加簡(jiǎn)單高效使用的三個(gè)步驟:定義FileWriter對(duì)象將需要可視化的graph或數(shù)據(jù)添加到FileWriter對(duì)象中啟動(dòng)TensorBoard服務(wù)端程序,在前端查看訓(xùn)練過(guò)程狀態(tài)官方文檔:/tensorflow/tensorboardTensorBoardimporttensorflowastf#重置計(jì)算圖tf.reset_default_graph()#定義常量a、b和加法操作a=tf.constant(3,name=
'a')b=tf.constant(5,name=
'b')c=tf.add(a,b,name=
'add1')#定義常量d、e和加法操作d=tf.constant(2,name=
'd')e=tf.constant(4,name=
'e')f=tf.add(d,e,name=
'add2')#定義乘法操作g=tf.multiply(c,f,name=
'mul')#創(chuàng)建會(huì)話withtf.Session()
assess:
#將構(gòu)建的計(jì)算圖寫入到文件中writer=tf.summary.FileWriter("output",sess.graph)
print(sess.run(g))writer.close()在終端中找到工作目錄,然后啟動(dòng)TensorBoard可視化的計(jì)算圖importtensorflowastf#重置計(jì)算圖tf.reset_default_graph()withtf.name_scope("part1"):
#定義常量a、b和加法操作a=tf.constant(3,name=
'a')b=tf.constant(5,name=
'b')c=tf.add(a,b,name=
'add1')withtf.name_scope("part2"):
#定義常量d、e和加法操作d=tf.constant(2,name=
'd')e=tf.constant(4,name=
'e')f=tf.add(d,e,name=
'add2')withtf.name_scope("Result"):
#定義乘法操作g=tf.multiply(c,f,name=
'mul')#創(chuàng)建會(huì)話withtf.Session()
assess:
#將構(gòu)建的計(jì)算圖寫入到文件中writer=tf.summary.FileWriter("output",sess.graph)
print(sess.run(g))writer.close()TensorBoard設(shè)置變量范圍后的可視化計(jì)算圖值函數(shù)近似算法流程回顧
使用值函數(shù)近似尋找最佳策略
使用值函數(shù)近似尋找最佳策略利用TensorFlow構(gòu)建值函數(shù)模型——定義占位符##載入TensorFlow庫(kù)importtensorflowastf#重設(shè)默認(rèn)計(jì)算圖tf.reset_default_graph()##設(shè)置輸入層占位符,表示狀態(tài)inputs=tf.placeholder(shape=[1,
48],dtype=tf.float32)##設(shè)置預(yù)測(cè)Q值的占位符,維度為1×4,表示4種不同動(dòng)作對(duì)應(yīng)的Q值outputs=tf.placeholder(shape=[1,
4],dtype=tf.float32)##設(shè)置目標(biāo)Q值的占位符,維度為1×4target_q=tf.placeholder(shape=[1,
4],dtype=tf.float32)使用值函數(shù)近似尋找最佳策略利用TensorFlow構(gòu)建值函數(shù)模型——構(gòu)建值函數(shù)模型def
value_function_model(x):
##設(shè)置輸出層權(quán)重和偏置
withtf.variable_scope('output',reuse=tf.AUTO_REUSE):w=tf.Variable(tf.truncated_normal([48,
4],
0,
0.1))
##前向傳播
x=tf.matmul(x,w)
returnx##輸出預(yù)測(cè)Q值predict_q=value_function_model(inputs)##根據(jù)Q值,選擇最佳動(dòng)作action_choose=tf.argmax(predict_q,
1)使用值函數(shù)近似尋找最佳策略利用TensorFlow構(gòu)建值函數(shù)模型——定義損失函數(shù)和優(yōu)化方法##設(shè)置損失函數(shù)為MSEloss=tf.reduce_sum(tf.square(target_q-predict_q))##優(yōu)化方法為梯度下降trainer=tf.train.AdamOptimizer(learning_rate=0.1)updateModel=trainer.minimize(loss)使用值函數(shù)近似尋找最佳策略
def
epsilon_greedy(state,episode,num_episodes):
#設(shè)置探索率epsilon=np.linspace(0.1,
0,num_episodes,endpoint=False)
#探索,探索率隨迭代次數(shù)的增加而減少
ifnp.random.uniform(0,
1)
<epsilon[episode]:
returnnp.array([env.action_space.sample()])
#利用
else:
returnsess.run(action_choose,feed_dict={inputs:
np.identity(48)[state:state+1]})使用值函數(shù)近似尋找最佳策略進(jìn)行迭代,初始化變量和狀態(tài)##創(chuàng)建會(huì)話withtf.Session()
assess:
##變量初始化sess.run(tf.global_variables_initializer())
##迭代200次
foriinrange(200):
##初始化環(huán)境s=env.reset()使用值函數(shù)近似尋找最佳策略訓(xùn)練模型,進(jìn)行循環(huán),若循環(huán)次數(shù)達(dá)到99或者到達(dá)終止?fàn)顟B(tài),結(jié)束循環(huán),返回進(jìn)行下一次迭代j=
0whilej<
99:
j+=
1
##計(jì)算當(dāng)前狀態(tài)下的預(yù)測(cè)Q值predict=sess.run(predict_q,feed_dict={inputs:
np.identity(48)[s:s+1]})
##根據(jù)??-greedy選擇動(dòng)作action=epsilon_greedy(s,i,
200)
##獲取獎(jiǎng)勵(lì)和下一狀態(tài)next_s,reward,done,_=env.step(action[0])
##計(jì)算下一狀態(tài)的Q值next_q=sess.run(predict_q,feed_dict={inputs:
np.identity(48)[next_s:next_s+1]})
##初始化當(dāng)前狀態(tài)下的目標(biāo)Q值target=predict
##計(jì)算當(dāng)前狀態(tài)下的目標(biāo)Q值target[0,action[0]]
=reward+gamma*np.max(next_q)
##反向傳播更新參數(shù)_,cost=sess.run([updateModel,loss],feed_dict={inputs:
np.identity(48)[s:s+1],target_q:target})
##更新?tīng)顟B(tài)s=next_s
##若達(dá)到終止?fàn)顟B(tài),結(jié)束循環(huán)
ifdone:
break使用值函數(shù)近似尋找最佳策略根據(jù)訓(xùn)練好的值函數(shù)模型求出最佳策略
[36,24,25,26,27,28,29,30,31,32,33,34,35,47]
##進(jìn)行驗(yàn)證s=env.reset()d=
False
whiled!=
True:
#使用模型預(yù)測(cè)下一步的動(dòng)作a=sess.run(action_choose,feed_dict={inputs:np.identity(48)[s:s+1]})s1,r,d,_=env.step(a[0])
print(s1)s=s1第六章策略梯度法
目錄策略梯度的思想REINFORCE算法(vanillapolicygradient)REINFORCE算法的改進(jìn)案例:利用策略梯度算法求解小車上山問(wèn)題策略梯度的思想強(qiáng)化學(xué)習(xí)算法分類
強(qiáng)化學(xué)習(xí)算法基于模型無(wú)模型蒙特卡羅方法—時(shí)間差分方法—基于價(jià)值on-policy—Sarsaoff-policy—Q-learningDQN
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 9 What's your hobby 說(shuō)課稿(說(shuō)課稿)-2024-2025學(xué)年湘少版(三起)英語(yǔ)五年級(jí)上冊(cè)
- Unit 3 What Would you like(說(shuō)課稿)-2024-2025學(xué)年人教PEP版英語(yǔ)五年級(jí)上冊(cè)
- 2023九年級(jí)數(shù)學(xué)上冊(cè) 第六章 反比例函數(shù)1 反比例函數(shù)說(shuō)課稿 (新版)北師大版
- 10《爬山虎的腳》說(shuō)課稿-2024-2025學(xué)年語(yǔ)文四年級(jí)上冊(cè)統(tǒng)編版
- 2023三年級(jí)英語(yǔ)下冊(cè) Unit 2 Animals at the Zoo Lesson 8 Tigers and Bears說(shuō)課稿 冀教版(三起)
- 2025民間個(gè)人借款合同書范文
- 2024-2025學(xué)年高一歷史第13周 6.2卓爾不群的雅典說(shuō)課稿
- 2025常年法律顧問(wèn)合同
- 19《一只窩囊的大老虎》第二課時(shí)(說(shuō)課稿)-2024-2025學(xué)年統(tǒng)編版語(yǔ)文四年級(jí)上冊(cè)001
- 2025獨(dú)家經(jīng)銷合同范本
- 剪映專業(yè)版:PC端短視頻制作(全彩慕課版) 課件 第3章 短視頻剪輯快速入門
- 湖南省長(zhǎng)沙市開(kāi)福區(qū)青竹湖湘一外國(guó)語(yǔ)學(xué)校2023-2024學(xué)年九年級(jí)下學(xué)期一模歷史試題
- 漢密爾頓抑郁和焦慮量表
- 風(fēng)電場(chǎng)事故案例分析
- 人教版八年級(jí)數(shù)學(xué)初中數(shù)學(xué)《平行四邊形》單元教材教學(xué)分析
- EPC項(xiàng)目設(shè)計(jì)及施工的配合
- 年產(chǎn)5萬(wàn)噸1,4-丁二醇的工藝流程設(shè)計(jì)
- 八年級(jí)上冊(cè)-2024年中考?xì)v史總復(fù)習(xí)核心考點(diǎn)與重難點(diǎn)(部編版)
- 醫(yī)院科室人才建設(shè)規(guī)劃方案
- 儲(chǔ)油罐安全操作規(guī)程培訓(xùn)
- 護(hù)理飲食指導(dǎo)整改措施及方案
評(píng)論
0/150
提交評(píng)論