一 什么是RL
RL是trail and error來(lái)解決問(wèn)題渊胸。
RL條件:你有一個(gè)sequential decision making問(wèn)題斯撮,你不知道最好的behavior怎么做,但是你仍舊可以度量behavior是好是壞础锐。
首先observe周?chē)膕tate嗓节,然后用policy來(lái)從state選擇action,trajectory是state和action序列皆警。reward是衡量state-action對(duì)拦宣。
Value函數(shù)V(s)是action-value函數(shù)Q(s,a)關(guān)于policy on a的期望值。
Bellman equation:V(s)=(當(dāng)前的reward+ rV(s'))關(guān)于policy和state transition的期望信姓。而最優(yōu)的V和Q都是max on policy鸵隧。
因?yàn)樽顑?yōu)的policy肯定是對(duì)應(yīng)著最優(yōu)的Q,所以有兩種強(qiáng)化學(xué)習(xí)的方式:直接優(yōu)化policy意推,或者通過(guò)尋找最優(yōu)的Q來(lái)找到最優(yōu)的policy豆瘫。而最優(yōu)的Q肯定是滿足于Bellman equation,所以可以據(jù)此來(lái)計(jì)算出Bellman error進(jìn)行優(yōu)化左痢。(問(wèn)題:Bellman equation只是一個(gè)必要條件靡羡,不是一個(gè)充分條件)
二 Deep RL算法
首先根據(jù)我們是否知道state transition系洛,分為兩大類(lèi)。如果是知道state transition略步,那么我們就可以很容易通過(guò)forward simulate action來(lái)evaluate我們的action描扯。如果沒(méi)有的話,就只能通過(guò)跟環(huán)境之間接觸的經(jīng)驗(yàn)來(lái)學(xué)習(xí)趟薄。但是model-based相比不是那么成熟绽诚。
Policy optimization
使用policy得到trajectory,然后通過(guò)優(yōu)化reward來(lái)求解policy杭煎。是一個(gè)on policy方法恩够。
想要優(yōu)化J就要優(yōu)化P(T/pi_theta),而后者的求導(dǎo)只是對(duì)policy的求導(dǎo)羡铲。所以最終:
通過(guò)“Reward-to-Go”以及baseline變化最終得到:
其中V是通過(guò)另外一個(gè)網(wǎng)絡(luò)根據(jù)數(shù)據(jù)學(xué)習(xí)得到的蜂桶。
Q-Learning
通過(guò)bootstrapping也就是最小化sum(Q_theta(s,a)- (r+/gamma max_on_a' Q_theta(s',a'))來(lái)求得theta。但是用這種方式訓(xùn)練非常不穩(wěn)定也切,因?yàn)樽鳛槟繕?biāo)的r+/gamma max_on_a' Q_theta(s',a')是每次隨著theta改變的扑媚。所以一般不用。而是用另外一個(gè)r+/gamma max_on_a' Q_theta_target(s',a')來(lái)代表target雷恃,其中theta_target只在每個(gè)k steps來(lái)update為當(dāng)前的theta疆股。DQN只能用在discrete policy。因?yàn)橹恍枰腥我饽P彤a(chǎn)的訓(xùn)練語(yǔ)料倒槐,就可以學(xué)得模型旬痹,所以是off-policy算法。
DQN類(lèi)的算法非常容易時(shí)不時(shí)的diverge讨越,Q值或者變得非常大两残,或者成負(fù)值。
為什么上面的Q-learning算法可以得到最優(yōu)的Q把跨?依據(jù)是contraction map磕昼,如果||f(x) - f(y)|| <= B||x-y||,其中B\in[0,1]节猿,那么f就是contraction的票从。在這個(gè)前提下, 通過(guò)repeated應(yīng)用f在當(dāng)前的輸出上滨嘱,最終就會(huì)得到一個(gè)unique fixed-points峰鄙。但是因?yàn)镼隨著改變,導(dǎo)致Q-learning算法可能不滿足上面的條件太雨。
Model-Based RL(AlphaZero)
如果有一個(gè)model即simulator可以告訴我們?nèi)绻@樣做會(huì)發(fā)生什么吟榴,那么我就可以進(jìn)行l(wèi)ook ahead。但是這樣的simulator是很難學(xué)得的囊扳。
model的作用方法有:作為look ahead來(lái)為未來(lái)做evaluate吩翻;在Expert Iteration兜看,幫助訓(xùn)練policy;利用model來(lái)做policy evaluation狭瞎;利用model來(lái)做side information细移。例如在AlphaZero中,利用MCTS作為simulator來(lái)產(chǎn)生target policy熊锭。