21點技巧 16点 要牌
您的位置:首頁>>電腦軟件

PARL源碼走讀——使用策略梯度算法求解迷宮尋寶問題

發布時間:2019-03-25 10:02:29  來源:互聯網    采編:孫月  背景:

  前不久,百度發布了基于PaddlePaddle的深度強化學習框架PARL。git傳送門

  作為一個強化學習小白,本人懷著學習的心態,安裝并運行了PARL里的quick-start。不體驗不知道,一體驗嚇一跳,不愧是 NeurIPS 2018 冠軍團隊的杰作,代碼可讀性良好,函數功能非常清晰,模塊之間耦合度低、內聚性強。不僅僅適合零基礎的小白快速搭建DRL環境,也十分適合科研人員復現論文結果。

  廢話不多說,我們從強化學習最經典的例子——迷宮尋寶(俗稱格子世界GridWorld)開始,用策略梯度(Policy-Gradient)算法體驗一把PARL。

  模擬環境

  強化學習適合解決智能決策問題 。如圖,給定如下迷宮,黑色方格代表墻,黃色代表寶藏,紅色代表機器人;一開始,機器人處于任意一個位置,由于走一步要耗電,撞墻后需要修理,所以我們需要訓練一個模型,來告訴機器人如何避免撞墻、并給出尋寶的最優路徑。

  接下來,定義強化學習環境所需的各種要素:狀態state、動作action、獎勵reward等等。

  state就是機器人所處的位置,用(行、列)這個元組來表示,同時可以表示墻:

  

  使用random-start策略實現reset功能,以增加初始狀態的隨機性:

 

  定義動作action,很顯然,機器人可以走上下左右四個方向:

  

  定義獎勵reward,到達終點獎勵為10,走其他格子需要耗電,獎勵為-1:

 

  另外,越界、撞墻需要給較大懲罰:

 

  至此,強化學習所需的狀態、動作、獎勵均定義完畢。接下來簡單推導一下策略梯度算法的原理。

  策略梯度 (Policy-Gradient) 算法是什么?

  我們知道,強化學習的目標是給定一個馬爾可夫決策過程,尋找出最優策略。所謂策略是指狀態到動作的映射,常用符號 $\pi$表示,它是指給定狀態 s 時,動作集上的一個分布,即: $$\pi (a|s)=p[A{t}=a|S{t}=s]$$

  策略梯度的做法十分直截了當,它直接對求解最優策略 進行參數化建模,策略p(a|s)將從一個概率集合變成一個概率密度函數p(a|s,θ),即:$$\pi_{\theta}=p[a|s,\theta]$$

  這個策略函數表示,在給定狀態s和參數θ的情況下,采取任何可能動作的概率,它是一個概率密度函數,在實際運用該策略的時候,是按照這個概率分布進行動作action的采樣的,這個分布可以是離散(如伯努利分布),也可以說是連續(如高斯分布)。最直觀的方法,我們可以使用一個線性模型表示這個策略函數: $$\pi _{\theta }=\phi (s)*\theta$$

  其中,$\phi(s)$表示對狀態s的特征工程,θ是需要訓練的參數。這樣建模有什么好處呢?其實最大的好處就是能時時刻刻學到一些隨機策略,增強探索性exploration。

  為什么可以增加探索性呢?

  比如迷宮尋寶問題,假設一開始機器人在最左上角的位置,此時p(a|s,θ)可以初始化為[0.25,0.25,0.25,0.25],表明機器人走上、下、左、右、的概率都是0.25。當模型訓練到一定程度的時候,p(a|s,θ)變成了[0.1,0.6,0.1,0.2],此時,向下的概率最大,為0.6,機器人最有可能向下走,這一步表現為利用 exploitation ;但是,向右走其實也是最優策略,0.2也是可能被選擇的,這一步表現為探索 exploration ;相對0.6和0.2,向上、向左兩個動作的概率就小很多,但也是有可能被選擇的。如果模型繼續訓練下去,p(a|s,θ)很有可能收斂成[0.05,0.45,0.05,0.45],此時,機器人基本上只走向下或者向右,選擇向上、向左的可能性就極小了。這是最左上角位置(狀態)的情況,其他狀態,隨著模型的訓練,也會收斂到最優解。

  有了模型,就想到求梯度,那么,如何構建損失函數呢?標簽y-Target又是什么?

  一個非常樸素的想法就是:如果一個動作獲得的reward多,那么就使其出現的概率變大,否則減小,于是,可以構建一個有關狀態-動作的函數 f(s,a) 作為損失函數的權重,這個權重函數可以是長期回報G(t),可以是狀態值函數V(s),也可以是狀態-行為函數Q(s,a),當然也可以是優勢函數A。但是,這個權重函數和參數θ無關,對θ的梯度為0,僅僅作為p(a|s,θ)的系數。

  現在考慮模型的輸出$\pi(a|s,θ)$,它表示動作的概率分布,我們知道,智能體每執行完一輪episode ,就會形成一個完整的軌跡Trajectory: $$T=[S{0},a{0},P(S{1}|S{0},a{0}),S{1},a{1},P(S{2}|S{1},a{1}),S{2}...S{n-1},a{n-1},P(S{n}|S{n-1},a{n-1}),S{n}]$$ 其中,狀態$S{0},S_{1}...S{n}$和參數θ無關,狀態轉移概率P(s'|s,a)是由環境所決定的,和參數θ也無關。所以,我們的目標簡化為:優化參數θ,使得每個動作概率的乘積$p(a{0})p(a{1})...p(a{n})$達到最大,即使得$\pi (a{0}|s{0},\theta)\pi (a{1}|s{1},\theta)\pi (a{2}|s{2},\theta)...*\pi (a{n}|s{n},\theta)$這個累乘概率達到最大,可用如下公式表示:$$Maximize[arg(\theta )],T=\prod{t=0}^{N}\pi (a|s{t},\theta)$$

  這顯然是我們熟悉的極大似然估計問題,轉化為對數似然函數: $$log(T)=log(\prod{t=0}^{N}\pi (a|s{t},\theta))=\sum{t=0}^{N}log(\pi (a|s{t},\theta))$$

  乘以權重 f(s,a),構建如下目標函數 ,這個目標函數和我們平時見到的損失函數正好相反,它需要使用梯度上升的方法求一個極大值: $$J(\theta )=\sum{t=0}^{N}log(\pi(a |s{t},\theta) )*f(s,aTrue)$$

  注意到,這里的aTrue就是標簽y-Target,表示agent在狀態$s_{t}$時真實采取的動作,可以根據軌跡trajectory采樣得到。

  學過機器學習的同學都知道,一般用目標函數的均值代替求和,作為新的目標函數: $$J(\theta )=\frac{1}{N}\sum{t=0}^{N}log(\pi (a|s{t},\theta ))*f(s_{t},aTrue)$$

  均值,就是數學期望,所以目標函數也可以表示為: $$J(\theta )=E{\pi (\theta )}(log(\pi (a|s{t},\theta ))*f(s_{t},aTrue))$$

  有了目標函數,梯度就很容易計算了,由于$f(s{t},a)$對于θ來說是系數,故梯度公式如下: $$\triangledown J(\theta )=E{\pi(\theta)}(\triangledown log(\pi(a|s{t},\theta))*f(s{t},aTrue))$$

  那么,策略$\pi$具體的表現形式如何?前文提到,策略可以是離散的,也可以是連續的,不妨考慮離散的策略。由于我們需要求解最大值問題,也就是梯度上升問題,自然而然就想到把梯度上升問題轉化為梯度下降問題,這樣才能使得目標函數的相反數 達到最小,而什么樣的函數可以將梯度下降和對數函數關聯起來呢?顯然是我們熟悉的交叉熵,所以最終的損失函數確定為: $$Minimize[arg(\theta)],J(\theta)=E_{\pi(\theta)}(CrossEntropy(\pi(a|s{t},\theta),aTrue)*f(s{t},aTrue))$$

  連續策略的推導與離散策略類似,有興趣的讀者可以參考相關文獻。

  自此,公式推導可以告一段落。策略梯度的基本算法就是Reinforce,也稱為蒙特卡洛策略梯度,簡稱MCPG,PARL的官方policy-gradient就是基于以下算法框架實現的:

  PARL 源碼結構

  在搭建模型之前,我們先分析一下PARL的主要模塊:

  1. env:環境,在這里,我們的環境就是迷宮尋寶

  2. model:模型,可以是簡單的線性模型,也可以是CNN、RNN等深度學習模型

  3. algorithm:算法,對model層進行封裝,并利用模型進行predict(預測),同時構建損失函數進行learn(學習);具體實現形式可以是DQN、PG、DDPG等等

  4. agent:智能體,對algorithm層進行封裝,一般也包含predict、learn兩個函數;同時,由于智能體要同時進行探索exploration-利用exploitation,還經常包含一個sample函數,用于決定到底是randomSelect(隨機選擇或者根據分布函數選擇動作),還是argmax(100%貪心,總是選擇可能性最大的動作)

  5. train:訓練和測試,用于實現agent和環境的交互,當模型收斂后,可以測試智能體的準確性

  6. utils:其他輔助功能

  以下的架構示意圖,可以幫助我們更好的理解PARL:




關注ITBear科技資訊公眾號(itbear365 ),每天推送你感興趣的科技內容。

特別提醒:本網內容轉載自其他媒體,目的在于傳遞更多信息,并不代表本網贊同其觀點。其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,并請自行核實相關內容。本站不承擔此類作品侵權行為的直接責任及連帶責任。如若本網有任何內容侵犯您的權益,請及時聯系我們,本站將會在24小時內處理完畢。


返回網站首頁 本文來源:互聯網

閃退?卡頓?統統再見!自從用了WPS,一切工作666
一個月前,公司進入瘋狂比稿季,各種比稿方案仿佛抱團一樣都向我撲來!作為公司NO.1職場女戰士,我義...
日期:04-22
【知道創宇404實驗室】Oracle WebLogic遠程命令執行漏洞預警
2019年04月17日,國家信息安全漏洞共享平臺(CNVD)官方發布安全公告 http://www.cnvd.org.cn/webinfo...
日期:04-22
UMCloud混合云存儲,備份、歸檔、容災一個也不能少
人人都說,混合云/多云是未來。IDC曾預測,2018年,85%以上的大型企業都將采用混合云。RightScale發...
日期:04-18
易查分—用微信做自己的考試成績查詢系統
近來,各地區教育部門相繼下發規定,為了保護學生自尊心,明令禁止各個學校公開張榜學生的成績排名...
日期:04-18
QuestMobile APP用戶精細化運營“三大法寶”:拉新、促活、搏回流,看看淘集集、全民小視頻、網易云音樂是怎么做的
紅利結束之后移動互聯網如何搞的問題,其中,打通巨頭流量、全渠道流量之外,精細化運營是重中之重...
日期:04-16
騰訊安全預警:3700余臺SQL服務器被控制 威脅企業數據安全
4月4日中午前后,小劉像往常一樣,照例檢查公司網絡系統和相關配置工作,當觀看總控系統時,發現專...
日期:04-15
臨近升級,BCH的開發者和愛好者們都在做什么?
開發者們推出了客戶端的更新版本
  臨近BCH 5月份硬分叉升級,Bitcoin ABC開發組在本周...
日期:04-12
愚人節防騙手冊待查收,小心“整蠱玩笑”變電信網絡詐騙
一年一度的愚人節到了,朋友同事之間開啟了“整人”較量。愚人節是從19世紀開始在西方興...
日期:04-01
重大安裝Bug  微軟撤回Windows 10 19H1慢速預覽版18362
3月27日消息 3月23日,Windows 10 19H1預覽版18362系統更新開始面向慢速預覽通道推送,這意味著Wind...
日期:03-27
微軟Outlook iOS v3.15正式版更新:全新Office 365圖標  都能用上了
3月20日消息 先前微軟推送了iOS版Outlook App客戶端的測試版,帶來了全新設計的新圖標,其風格和Off...
日期:03-20
微軟新決定:Windows 10家庭版允許用戶暫停更新35天
3月14日消息 微軟幾乎完成了Windows 10 v1903版本,并計劃在4月份某個時候推出。本次更新帶來了不少...
日期:03-14
Win10能以鏡像屏方式直接操控安卓手機了
對于把手機鏡像投射到電腦上這個點子,你感覺如何?
日期:03-13
Apex英雄加速器推薦奇游 終身卡免費領倒計時最后一天
從《絕地求生大逃殺》到《堡壘之夜》再到如今的《Apex英雄》,一年又一年大逃殺游戲還是活躍在大家...
日期:03-10
Windows 10設備超過8億  微軟近15%的收入來自Windows
3月8日消息 微軟高管Yusuf Mehdi在推特上宣布,微軟Windows 10已經在8億多臺設備上。這一數字高于9...
日期:03-08
Android Q還沒正式發布,已經被開發者Root了
谷歌Google I/O 2019開發者大會已經定檔5月7日到9日,屆時最新版的安卓系統Android Q將會正式亮相。...
日期:03-04
微軟Office 365桌面版新圖標開始測試
3月1日消息 此前,微軟公布了全新的Office圖標,微軟Office 365在線網頁版在本月15日開始已經全面更...
日期:03-01
 
21點技巧 16点 要牌 江西多乐彩直选三遗漏数据 qq分分彩背头 北京赛车pk10计划 股票行情实时查询006507 北京11选5一定牛推荐 今天3d开奖号码 981游戏981棋牌游戏 天津十一选五多连走势图 福利彩票双色球开奖规律 历史开奖记录