OpenAI 深度強化學(xué)習(xí)教程 存檔

Neil Zhu胰默,簡書ID Not_GOD弥虐,University AI 創(chuàng)始人 & Chief Scientist,致力于推進(jìn)世界人工智能化進(jìn)程脏毯。制定并實施 UAI 中長期增長戰(zhàn)略和目標(biāo)闹究,帶領(lǐng)團(tuán)隊快速成長為人工智能領(lǐng)域最專業(yè)的力量。
作為行業(yè)領(lǐng)導(dǎo)者抄沮,他和UAI一起在2014年創(chuàng)建了TASA(中國最早的人工智能社團(tuán)), DL Center(深度學(xué)習(xí)知識中心全球價值網(wǎng)絡(luò))跋核,AI growth(行業(yè)智庫培訓(xùn))等,為中國的人工智能人才建設(shè)輸送了大量的血液和養(yǎng)分叛买。此外,他還參與或者舉辦過各類國際性的人工智能峰會和活動蹋订,產(chǎn)生了巨大的影響力率挣,書寫了60萬字的人工智能精品技術(shù)內(nèi)容,生產(chǎn)翻譯了全球第一本深度學(xué)習(xí)入門書《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》露戒,生產(chǎn)的內(nèi)容被大量的專業(yè)垂直公眾號和媒體轉(zhuǎn)載與連載椒功。曾經(jīng)受邀為國內(nèi)頂尖大學(xué)制定人工智能學(xué)習(xí)規(guī)劃和教授人工智能前沿課程,均受學(xué)生和老師好評智什。

原翻譯地址:https://tigerneil.wordpress.com/2016/05/03/deep-reinforcement-learning-from-openai/
原文地址:https://gym.openai.com/docs/rl

強化學(xué)習(xí)研究決策制定和控制动漾,以及一個進(jìn)行決策的 agent 如何學(xué)會在一個未知環(huán)境中采取最優(yōu)行動。深度強化學(xué)習(xí)研究如何在強化學(xué)習(xí)算法中使用神經(jīng)網(wǎng)絡(luò)荠锭,使得無需進(jìn)行人工特征工程直接學(xué)習(xí)從原始感知數(shù)據(jù)到原始行動輸出的映射變得可能旱眯。
本文講解深度強化學(xué)習(xí)技術(shù)。受眾是那些已經(jīng)有了一定的機器學(xué)習(xí)基礎(chǔ)证九,如監(jiān)督學(xué)習(xí)删豺、神經(jīng)網(wǎng)絡(luò)和強化學(xué)習(xí)基礎(chǔ)的讀者。
本教程和已有的強化學(xué)習(xí)教程的比對
已有的強化學(xué)習(xí)(RL)課本沒有給出足夠的關(guān)于如何使用函數(shù)近似的指導(dǎo)愧怜;基本上都是聚焦在離散狀態(tài)空間的領(lǐng)域呀页。而且,現(xiàn)有 RL 課本并沒有對無導(dǎo)數(shù)優(yōu)化和策略梯度方法給出充分講述拥坛,而這些技術(shù)在很多的任務(wù)上都是相當(dāng)重要的蓬蝶。
我對強化學(xué)習(xí)沒有任何經(jīng)驗尘分。我可以從何處開始學(xué)習(xí)?
現(xiàn)在有幾個大學(xué)課程給出了免費的視頻教程:
Intro to AI course (Klein & Abbeel). 第 8-11 課講述了 RL丸氛,前期的關(guān)于搜索和動態(tài)規(guī)劃的部分同樣非常有用
Dave Silver’s RL course

或者培愁,你可能想要從課本學(xué)習(xí):
Sutton & Barto, Reinforcement Learning: An Introduction. 第 1-4 章講解了 RL 的基本內(nèi)容
Bertsekas, Dynamic Programming and Optimal Control. 卷 2 的第 1-2 給出了更為形式化的對 MDP、策略迭代和值迭代的介紹

我是否有理解這個教程的基礎(chǔ)雪位?
我們假設(shè)讀者有下面的預(yù)備知識:
如何訓(xùn)練神經(jīng)網(wǎng)絡(luò)進(jìn)行回歸和分類
熟悉基本的 MDP竭钝、值迭代和策略迭代

目錄:
預(yù)備知識,符號和術(shù)語
黑盒優(yōu)化和交叉熵方法練習(xí)
筆記

策略梯度直覺解釋
更加形式化的解釋
實現(xiàn)注意點
參數(shù)化策略
練習(xí)

自然策略梯度(Natural Policy Gradient)和信賴區(qū)間方法(Trust Region Methods)
Q-學(xué)習(xí)(Q-learning)練習(xí)

參考文獻(xiàn)

1 預(yù)備知識雹洗、符號和術(shù)語
強化學(xué)習(xí)包含一個 agent 和一個環(huán)境:每個時間步香罐,agent 會選擇一個行動,然后環(huán)境會返回給 agent 一個收益然后轉(zhuǎn)換到下一個狀態(tài)时肿。在標(biāo)準(zhǔn)設(shè)置中庇茫,agent 和環(huán)境的交互被劃分成一系列 回合(episode) 的序列。在每個回合螃成,初始狀態(tài)

s_0
從分布
\mu(s_o)
中采樣出來。每個時間步寸宏,agent 隨機或者確定地選擇出一個行動宁炫;我們記此作
a_t \sim \pi(a_t|s_t)
表示行動是根據(jù)概率分布
\pi
采樣出來的观堂。下一個狀態(tài)和收益根據(jù)轉(zhuǎn)換概率分布
R(s_{t+1}, r_t | s_t, a_t)
宪迟。這個過程持續(xù)進(jìn)行直到 終止 狀態(tài)達(dá)到,此時該回合結(jié)束吴叶。其過程可以寫成下面的形式:
s_0 \sim \mu(s_0)

a_0 \sim \pi(a_0|s_0)

s_1, r_0 \sim P(s_1, r_0 | s_0, a_0)

a_1 \sim \pi(a_1 | s_1)

s_2, r_1 \sim P(s_2, r_1 | s_1, a_1)


a_{T-1}, r_{T-1}\sim \pi(a_{T-1} | s_{T-1})

s_T, r_{T-1} \sim P(s_T|s_{T-1},a_{T-1})
(
s_T
是一個終止?fàn)顟B(tài))
上面的定義是在 -可觀察設(shè)定下的罩阵,這種情形下的 agent 能夠獲得系統(tǒng)的全部狀態(tài)竿秆。在 部分-可觀察設(shè)定下,agent 只能在每個時間步獲得一個觀察(y)稿壁,這個觀察可能是一個狀態(tài)的噪聲和不完全的信息幽钢。agent 可以將許多前期時間步信息進(jìn)行組合,所以行動
a_t
依賴于前期歷史
(y_0, a_0,y_1, a_1,\dots,y_{t-1}, a_{t-1},y_t)
傅是;我們將歷史記作
h_t
匪燕。
s_0, y_0 \sim \mu(s_0)
(初始狀態(tài)和觀察)
a_0 \sim \pi(a_0|h_0)

s_1, y_1, r_0 \sim P(s_1, y_1, r_0 | s_0, a_0)

a_1 \sim \pi(a_1 | h_1)

s_2, y_2, r_1 \sim P(s_2, y_2, r_1 | s_1, a_1)


a_{T-1} \sim \pi(a_{T-1} | h_{T-1})

s_T, y_T, r_{T-1} \sim P(s_T, y_T, r_{T-1}|s_{T-1},a_{T-1})
(
s_T
是一個終止?fàn)顟B(tài))
如果我們稱歷史
h_t
為系統(tǒng)的狀態(tài),那么這個部分-可觀察設(shè)定等價于 -可觀察設(shè)定落午。因此谎懦,能夠應(yīng)用在 全-可觀察設(shè)定下的 RL 算法同樣能應(yīng)用在 部分-可觀察設(shè)定中,而無需做任何大的變動——所以溃斋,對算法的討論就可以假設(shè)在全-可觀察設(shè)定下界拦。參考[BertsekasVol1] 對部分-可觀察 MDP 如何規(guī)約到 MDP 的更加形式化的討論。
在實際應(yīng)用中梗劫,不適用整個原始的行動和觀察的歷史數(shù)據(jù)享甸,agent 使用一個循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)將觀察歷史編碼為一個定長向量
h_t
截碴,你可以將這個向量看成是 agent 的“短期記憶(short-term memory)”。
為了更加方便的表述問題蛉威,我們給出下面的包含將會使用到的符號的表格日丹。
s
狀態(tài)

a
行動

r
收益

y
觀察

\tau

軌跡

\pi

策略

\theta

策略參數(shù)

R
總收益

\hat{A}

平均估計

V
狀態(tài)-值函數(shù)

P
轉(zhuǎn)換概率

2 黑盒優(yōu)化和交叉熵方法
很多強化學(xué)習(xí)問題可以被描述為下面的優(yōu)化問題:

\mathrm{maximize}_{\theta} E[R|\theta]
,其中
R
是一個回合的總收益蚯嫌,行動是根據(jù)策略
\pi(a_t|s_t;\theta)
選擇出來的哲虾。
(注意到我們可以僅僅使用一個確定的策略
a_t = \pi(s_t, \theta)
;但是上面的隨機形式是可以推廣使用的择示。)
最簡單的方式就是把整個問題看做一個關(guān)于策略參數(shù)
\theta
的“黑盒”優(yōu)化問題束凑。也就是說,我們有一個參數(shù)向量
\theta
包含所有 agent 的參數(shù)栅盲,我們可以得到目標(biāo)函數(shù)
E[R|\theta]
的帶噪聲的評價(evaluation)汪诉。我們稱此為 黑盒 優(yōu)化問題因為我們并不假設(shè)任何關(guān)于目標(biāo)計算的知識,或者這是一個連續(xù)函數(shù)谈秫;我們僅僅通過在不同的輸入
\theta_1, \theta_2,\dots
進(jìn)行查詢來學(xué)習(xí)這個函數(shù)扒寄。黑盒優(yōu)化可以用下面一般的形式描述:
\max_\theta E_\zeta[f(\theta,\zeta)]

其中我們通過重復(fù)提供參數(shù)
\theta_i
來獲得關(guān)于函數(shù)
f
的信息;然后采樣出未觀察噪聲隨機變量
\zeta_i
拟烫,獲得值
f(\theta_i, \zeta_i)
该编。(如果是在計算機模擬中計算
f
\zeta
可以對應(yīng)于隨機數(shù)生成器硕淑。)
在 RL 設(shè)定中上渴,因為
\theta
是維度很高,黑盒方法(或者無導(dǎo)數(shù)優(yōu)化算法)通常比其他 RL 算法(探索問題結(jié)構(gòu)型的)低效喜颁。但是,在實際應(yīng)用中曹阔,在小的問題上常常表現(xiàn)得很好半开,也是最為容易實現(xiàn)的算法。
交叉熵方法(CEM)是簡單的黑盒優(yōu)化算法赃份。CEM 通過重復(fù)更新在候選參數(shù)向量
\theta
上的高斯分布的均值和方差進(jìn)行寂拆。
最簡單的算法描述如下:
Algorithm 1: 交叉熵方法 CEM
初始化
\mu\in \mathbb{R}^d
,
\sigma\in \mathbb{R}^d

迭代
= 1,2,\dots
采樣
n
樣本
\theta_i\sim N(\mu, diag(\sigma))

對每個樣本執(zhí)行噪聲的評價
f(\theta_i, \zeta_i)

選擇前
p%
樣本 (e.g.
p=20
),稱為“精英集合(elite set)”
用精英集合擬合一個高斯分布抓韩,使用對角協(xié)方差纠永,得到新的
\mu,\sigma

返回最終的
\mu

更多細(xì)節(jié)和實踐中的提升可以在[SzitaLorincz06]中找到。在 RL 設(shè)定中谒拴,我們通過對一個或者更多的回合執(zhí)行策略參數(shù)化評價

f(\theta_i, \zeta_i)
尝江,并計算總收益。
2.1 練習(xí)
(實踐 *) 實現(xiàn)交叉熵方法英上,將其應(yīng)用在CartPole 環(huán)境中炭序。
(實踐 ) 將其應(yīng)用在 Swimmer 環(huán)境中啤覆,這是一個連續(xù)行動空間的情形。嘗試人工增加方差和逐步降低噪聲為 0惭聂,如[SzitaLorincz06]
(理論 ) CEM 的一個弱點是精英集合中的元素可能已經(jīng)碰巧選中窗声,如幸運地成為
\zeta
的樣本。 實際上辜纲,這會讓
\theta
f
中產(chǎn)生
高方差
笨觅。所以,CEM 不會收斂到一個
\eta(\theta) = E_{\zeta}[f(\theta, \zeta)]
的局部最大值點耕腾。解釋為何 CEM 不能收斂到
\eta(\theta)
的局部最大值點
證明如果
f
是確定性的(即见剩,如果不依賴于噪聲
\zeta
),那么 CEM 不會收斂到一個局部最大值點
在隨機情形下幽邓,什么目標(biāo)函數(shù)讓 CEM 收斂到一個局部最優(yōu)值點炮温?
你能不能設(shè)計出一個算法通過在多個不同的
\theta
處評價同樣的噪聲樣本
\zeta
在多個不同的
\theta
處解決這個問題?

更多的信息參見[GoschinWeinsteinLittman13]
2.2 筆記
你可能會想為何 CEM 叫這個名字牵舵。該名稱最早來自積分估計的一種方法柒啤,你可以參考[Owen14]的第 10 章。
3 策略梯度
策略梯度算法通過梯度下降進(jìn)行優(yōu)化畸颅。就是說担巩,通過重復(fù)計算策略的期望回報梯度的噪聲估計,然后按照梯度方向來更新策略没炒。該方法比其他 RL 方法(如 Q-學(xué)習(xí))更有利主要是我們可以直接優(yōu)化感興趣的量——策略的期望總收益涛癌。該類方法由于梯度估計的高方差長期被認(rèn)為不太實用,直到最近送火,[SchulmanEtAl15][MnihEtAl16]等工作展示了神經(jīng)網(wǎng)絡(luò)策略在困難的控制問題上的采用策略梯度方法的成功應(yīng)用拳话。
3.1 直覺解釋
你可能比較熟悉概率模型的監(jiān)督學(xué)習(xí),其中目標(biāo)是最大化給定輸入(x) 時的輸出 (y) 的對數(shù)概率种吸。

\max_{\theta} \sum_{n=1}^{N}\log p(y_n|x_n;\theta)

策略梯度方法通常需要假設(shè)一個隨機策略弃衍,該策略給出了對每個狀態(tài) (s) 的行動 (a) 上的概率分布;我們將此分布寫作
\pi(a|s;\theta)
坚俗。
如果我們知道對每個狀態(tài)正確的行動
a^*
镜盯,我們可以簡單地最大化監(jiān)督學(xué)習(xí)的目標(biāo)函數(shù):
\max_{\theta} \sum_{n=1}^{N}\log p(a^*_n|s_n;\theta)

然而,我們并不知道正確的行動猖败。相反速缆,我們會嘗試對行動好壞進(jìn)行粗略的猜測,試著去增加好的行動的概率恩闻。更加具體地講艺糜,假設(shè)我們剛收集完 agent 和環(huán)境一個 agent 和環(huán)境回合的交互,所以我們有了一個狀態(tài)、行動和收益的序列:
\tau = (s_0, a_0, r_0,s_1, a_1, r_1,\dots,s_{T-1}, a_{T-1}, r_{T-1},s_T)
倦踢。令
R
表示收益的和:
R=\sum_{t=0}^{T-1} r_t
送滞。最簡單的策略梯度公式就是:
\hat{g} = R\nabla_\theta \log(\prod_{t=0}^{T-1}\pi(a_t|s_t;\theta)) = R\nabla_\theta \sum_{t=1}^{T} \log \pi(a_t|s_t;\theta)

使用這個梯度的估計
\hat{g}
,我們可以用一個梯度上升的步驟辱挥,
\theta\leftarrow \theta+\alpha \hat{g}
進(jìn)行策略的更新犁嗅,其中
\alpha
為學(xué)習(xí)率。我們會收集所有的回合晤碘,對那個回合中所有的行動的對數(shù)概率按照回合的總收益
R
為比例進(jìn)行增加褂微。換言之,如果我們收集了大量的回合數(shù)據(jù)园爷,其中一些是好的(憑借運氣)宠蚂,另外一些是差的。我們本質(zhì)上是在進(jìn)行監(jiān)督學(xué)習(xí)——最大化好的回合的概率童社。
盡管我們現(xiàn)在還沒有給出對上述策略梯度公式的數(shù)學(xué)上的驗證求厕,但實際上已經(jīng)給出了一個對策略梯度的無偏估計。
E[\hat{g}]=\nabla_\theta E[R]

策略梯度定義為右式的策略期望總收益的梯度扰楼。
如果我們用充足的樣本(充足的回合)呀癣,那么就可以任意精度計算出策略梯度。然而弦赖,估計量
\hat{g}
通常噪聲很大同辣,即有很高的方差辱魁。你可以想象扳躬,這里存在很大的提升空間促脉。與其提高好的軌跡(trajectory)的概率辰斋,我們應(yīng)該提高好的行動的概率,也就是說瘸味,我們應(yīng)試著去推斷哪些行動影響軌跡的好壞宫仗。
有一系列形如下式的策略梯度估計量:
\hat{g} = \nabla_\theta \sum_{t=1}^{T} \hat{A_t}\log \pi(a_t|s_t;\theta)

其中
\hat{A_t}
是行動
a_t
有利度 (advantage)的估計——比平均值好還是壞的程度。
下面的有利度估計量更有效率旁仿,也更常見:
\hat{A}_t=r_t + \gamma r_{t+1}+\gamma^2 r_{t+2} + \dots - V(s_t)

其中
\gamma
是折扣因子藕夫,
V(s_t)
狀態(tài)-值 函數(shù)
E[r_t+\gamma r_{t+1} + \gamma^2 r_{r+2}|s_t]
的近似。
\gamma
用來定義一個有效
時間區(qū)域
,其中你忽略所有可能的超過未來
1/(1-\gamma)
的時間步的影響毅贮。關(guān)于有效度和時間區(qū)域更加詳細(xì)的解釋參見[SchulmanEtAl15]办悟。
3.2 更加形式化的解釋
推導(dǎo)策略梯度公式的最簡單的方式是使用分函數(shù)梯度估計量,這是估計期望梯度的通用方法滩褥。我們接著將此想法用在計算期望收益的梯度上病蛉。假設(shè)
x
是一個隨機變量,其概率密度是
p(x|\theta)
铸题,即概率密度依賴于參數(shù)向量
\theta
铡恕。
f
是一個標(biāo)量值函數(shù)(就是收益),我們想要計算
\nabla_\theta E_x[f(x)]
丢间。我們得到了下面的等式:
\nabla_\theta E_x[f(x)] = E_x[\nabla_\theta \log p(x|\theta) f(x)]

這個方程是可以根據(jù)將期望轉(zhuǎn)寫成積分形式獲得的:
\nabla_{\theta} E_{x}[f(x)] = \nabla_{\theta} \int \mathrmjtsmwr8x\ p(x | \theta) f(x) = \int \mathrmwdxwsikx \nabla_\theta p(x|\theta) f(x) =\int \mathrmby1koe8x\ p(x|\theta) \nabla_\theta \log p(x|\theta) f(x)= E_x[\nabla_\theta \log p(x|\theta) f(x)]

使用這個估計量探熔,我們就可以采樣
x \sim p(x|\theta)
,然后計算方程的左式(對
N
個樣本進(jìn)行平均)來獲得梯度的估計(在
N \rightarrow \inf
時準(zhǔn)確度更高)烘挫。就是說诀艰,我們采樣
x_1, x_2, \dots, x_N \sim p(x|\theta)
喇颁,然后使用下面的梯度估計
\hat{g}

\hat{g} = \frac{1}{N} \sum_{n=1}^{N} \nabla_\theta \log p(x_i|\theta)f(x_i)

為了在強化學(xué)習(xí)中使用這個思想巧勤,我們需要用到隨機策略愿卸。這意味著在每個狀態(tài)
s
灵临,我們的策略給出了一個行動上的概率分布,記作
\pi(a|s)
趴荸。因為策略同樣有一個參數(shù)向量
\theta
儒溉,我們就常寫成
\pi(a|s, \theta)

在后續(xù)討論中发钝,軌跡
\tau
代表狀態(tài)和行動的序列顿涣,即
\tau \equiv (s_0, a_0, s_1, \dots, s_T)
。令
p(\tau | \theta)
表示在策略參數(shù)
\tau
下整個軌跡
\tau
的概率笼平,令
R(\tau)
為整個軌跡的總收益园骆。
然后打分函數(shù)估計量給出了
![\nabla_\theta E_{\tau} [R(\tau)] = E_{\tau} \nabla_\theta \log p(\tau|\theta)R(\tau)
我們只需要采樣軌跡 $\tau$,然后使用上面的公式計算策略梯度估計量≡⒌鳎現(xiàn)在锌唾,我們需要顯式地寫出
\log p(\tau|\theta)
來推導(dǎo)出一個實用的公式。使用概率的鏈?zhǔn)椒▌t夺英,我們得到
p(\tau|\theta) = \mu(s_0)\pi(a_0|s_0,\theta)P(s_1|s_0, a_0)\pi(a_1|s_1,\theta)P(s_2|s_1, a_1)\dots\pi(a_{T-1}|s_{T-1},\theta)P(s_T|s_{T-1}, a_{T-1})

這里
\mu
是初始狀態(tài)分布晌涕。我們對其取對數(shù)后,就得到一個和式痛悯,關(guān)于
\theta
求導(dǎo)余黎,
P(s_t|s_{t-1}, a_{t-1})
\mu
一樣就被消去了。我們得到
\nabla_\theta E_{\tau}[R(\tau)] = E_{\tau}[\sum_{t=0}^{T-1} \nabla_\theta \log \pi(a_t|s_t,\theta) R(\tau)]

這個公式非常厲害载萌,因為我們可以不許知道系統(tǒng)動態(tài)知識(由轉(zhuǎn)換概率
P
確定的)來計算策略梯度惧财。直覺解釋是我們收集了一個軌跡巡扇,然后與其總收益的好的程度(goodness)成比例提升概率。即垮衷,如果收益
R(\tau)
非常高厅翔,我們應(yīng)該按照在參數(shù)空間中提高
\log p(\tau|\theta)
方向進(jìn)行移動。
因此搀突,通過一些數(shù)學(xué)推理刀闷,我們推導(dǎo)出一個更好(更低方差)的策略梯度估計。令
r_t
表示在時間步
t
的收益仰迁,令
b(s_t)
表示基準(zhǔn)函數(shù)甸昏,該基準(zhǔn)函數(shù)計算出狀態(tài)-值函數(shù)的某個近似,即
b(s) \approx V^{\pi}(s) = E_{\tau} [\sum_{u=t}^{T}r_u|s_t = s]
(從狀態(tài)
s
開始徐许,未來收益的期望和)施蜜。改進(jìn)的策略梯度公式如下:
\nabla_\theta E_{\tau}[R(\tau)] = E_\tau [\sum_{t=0}^{T-1} \nabla_\theta \log \pi(a_t|s_t,\theta) (\sum_{u=t}^{T}r_u - b(s_t))]

如果軌跡非常長,那么上述公式會有較大的方差绊寻。因此人們通常使用一個折扣因子花墩,這樣可以引入偏差來降低方差。這時澄步,策略梯度有偏估計公式就是
\nabla_\theta E_{\tau}[R(\tau)] \approx E_\tau [\sum_{t=0}^{T-1} \nabla_\theta \log \pi(a_t|s_t,\theta) (\sum_{u=t}^{T}\gamma^{u-t} r_u - b(s_t))]

其中
b(s_t)
就是對收益折扣和的近似
b(s) \approx E_{\tau} [\sum_{u=t}^{T}\gamma^{u-t} r_u|s_t = s]
冰蘑。
3.3 實現(xiàn)注意事項
有一種方便的方法計算策略梯度,就是對許多時間步使用你喜歡的自動微分軟件進(jìn)行批量操作村缸。定義
L(\theta) = \sum_{t=0}^{T-1} \log \pi(a_t|s_t, \theta) \dot A_t
祠肥,其中
A = (\sum_{u=t}^{T} r_u-b(s_t))
。這里
A
表示有效度梯皿,因為它度量了回報超過期望值多少仇箱。這僅僅是不含梯度的上面策略梯度公式。你可以在程序中定義損失函數(shù)
L
东羹。然后關(guān)于其參數(shù)進(jìn)行微分剂桥,你就能得到策略梯度了!注意属提,不用花費長時間的總和权逗,我們就能對
\log \pi(a_t|s_t,\theta)
進(jìn)行向量化計算(該向量長度為
T
)然后與一個同樣長度為
T
的有效度的向量進(jìn)行內(nèi)積。
3.4 參數(shù)化策略
我們已經(jīng)抽象式描述策略為
\pi(a|s,\theta)
冤议。我們?nèi)绾问褂靡粋€神經(jīng)網(wǎng)絡(luò)進(jìn)行表示斟薇?我們僅僅需要將
s
映射到某個向量
\mu
上,向量描述了行動
a
上的分布恕酸。例如堪滨,
如果
a
來自一個離散的集合,那么我們設(shè)計一個神經(jīng)網(wǎng)絡(luò)將
s
到一個概率向量上蕊温。(我們一般在神經(jīng)網(wǎng)絡(luò)的最后層使用一個 softmax 激活函數(shù))這完全就是我們用來進(jìn)行分類器學(xué)習(xí)的形式袱箱。
如果
a
是連續(xù)的遏乔,那么我們可以將
s
映射到一個高斯分布的均值和方差上。一般情況我們使用一個不依賴于
s
的對角協(xié)方差发笔。
如果
a
是二值的按灶,那么我們可以使用一個單個輸出的網(wǎng)絡(luò),表示輸出 1 的概率筐咧。

3.5 練習(xí)

實現(xiàn)一個策略梯度算法將其應(yīng)用在 CartPole 環(huán)境中。比較下面的變體:
\hat{A_t} = R

\hat{A_t} = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \cdots -V(s_t)

噪矛,包含(不包含)折扣因子和基準(zhǔn)(共有 4 中情形)

將其應(yīng)用在 Swimmer 環(huán)境中
改變問題 1 和 2 的實現(xiàn)量蕊,使用不同的 SGD 變體,包含 momentum艇挨、RMSProp 和 Adam

4 自然策略梯度和信任區(qū)間方法

5 Q-學(xué)習(xí)

到現(xiàn)在為止残炮,我們討論的都是策略優(yōu)化的技術(shù),不管是黑盒優(yōu)化還是基于梯度的方法缩滨。另外一種不同的方法是估計一個衡量所有可能的行動好壞的函數(shù)势就,使用這個函數(shù)來定義策略÷雎回想一下最優(yōu)的狀態(tài)-值函數(shù)
V^*(s)
衡量了在最優(yōu)策略下狀態(tài)的好壞苞冯,最優(yōu)狀態(tài)-行動值函數(shù)
Q^*(s,a)

給出了在狀態(tài)
s
執(zhí)行行動
a
時的好壞的衡量。
V^*(s)= E[r_0 +\gamma r_1 + \gamma^2 r_2 + \dots |s_0 = s, \pi^*]

Q^*(s,a)= E[r_0 +\gamma r_1 + \gamma^2 r_2 + \dots |s_0 = s, a_0 = a, \pi^*]

(稍微解釋一下上面的表述侧巨,在
V^*
中舅锄,我們以開始狀態(tài)
s
s_0
,依照
\pi^*
選擇出的連續(xù)的變量
a_0, r_0, s_1, a_1, r_1, \dots
序列司忱,在這個序列上取期望皇忿。)
Q^*
更加適合我們對系統(tǒng)的動態(tài)模型沒有知識的設(shè)定,這個原因后面會解釋清楚坦仍。
本節(jié)會討論學(xué)習(xí) Q-函數(shù)的算法鳍烁。最優(yōu) Q-函數(shù)(
Q^*
)滿足下面的 Bellman 方程
Q^*(s,a) = E_{s'}[r(s,a,s') + \gamma V^*(s)] = E_{s'}[r(s,a,s') + \gamma \max_{a'} Q^*(s,a')]

我們可以使用下面的值迭代(value iteration)算法迭代更新 Q-函數(shù),收斂到
Q^*

繁扎。

Algorithm 2: Q-值迭代
初始化

Q^{(0)}

n = 1,2,\dots
(s,a)\in S\times A
(所有狀態(tài)行動對)
Q^{(n)}(s,a) =E_{s'}[r(s,a,s') + \gamma \max_{a'} Q^{(n-1)}(s,a')]
(*)

最優(yōu) Q-函數(shù)(即幔荒,最優(yōu)策略的 Q-函數(shù))是更新 (*) 式的不動點,更嚴(yán)格點說锻离,這是一個收縮(contraction)铺峭,其誤差指數(shù)級下降

||Q^{(0)}-Q^*|| \propto \gamma^n

最優(yōu) Q-函數(shù)可用來引出一個形式——back-up 操作符 T汽纠,將 Q-函數(shù)映射到一個更新版本 TQ 上卫键,定義如下:
Q^{(0)}
= E_{s'}[r(s,a,s') + \gamma \max_{a'} Q(s,a')]](https://s0.wp.com/latex.php?latex=%5BTQ%5D%28s%2Ca%29+%3D+E_%7Bs%27%7D%5Br%28s%2Ca%2Cs%27%29+%2B+%5Cgamma+%5Cmax_%7Ba%27%7D+Q%28s%2Ca%27%29%5D&bg=ffffff&fg=141412&s=0)
這個被定義為 backup 操作符因為它使用向前看一步(對
n = 1,2,\dots
求期望)更新了 Q-值——也就是說,它讓信息按照時間回流虱朵。使用backup 操作符莉炉,Q-值迭代對
\alpha
的循環(huán)可以簡潔地寫作
\theta
钓账。
如果我們知道準(zhǔn)確的轉(zhuǎn)換模型和系統(tǒng)的收益函數(shù),我們就可以僅計算準(zhǔn)確的關(guān)于
s
的期望絮宁。為了準(zhǔn)確計算目標(biāo)值梆暮,我們需要對
\mu
求期望,就必須能夠獲取轉(zhuǎn)換模型和收益函數(shù)的信息绍昂。但是啦粹,給定一個狀態(tài)、行動窘游、收益和下一狀態(tài)
a
的轉(zhuǎn)換唠椭,我們可以構(gòu)造出一個
s
](https://s0.wp.com/latex.php?latex=%5BTQ%5D%28s_t%2Ca_t%29&bg=ffffff&fg=141412&s=0) 的無偏估計。然后我們可以給
a
噪聲估計了目標(biāo)值
s
= E_{s'} [r(s,a,s') + \gamma \max_{a'} Q^{(n-1)}(s', a')]](https://s0.wp.com/latex.php?latex=%5BTQ%5D%28s%2Ca%29+%3D+E_%7Bs%27%7D+%5Br%28s%2Ca%2Cs%27%29+%2B+%5Cgamma+%5Cmax_%7Ba%27%7D+Q%5E%7B%28n-1%29%7D%28s%27%2C+a%27%29%5D&bg=ffffff&fg=141412&s=0)忍饰。我們稱這個噪聲估計為
Q^{(0)}
贪嫂,定義如下
n = 1,2,\dots

因為這是無偏估計枢劝,
\alpha

注意
\theta
不依賴于我們在狀態(tài)
s
時采取的行動赋元,因此,這個無偏性不依賴于我們執(zhí)行的策略古瓤,所以我們有很多的自由來考慮使用什么策略來收集數(shù)據(jù)赢织。使用這些估計量亮靴,我們可以設(shè)計出下面的算法,收集批量的數(shù)據(jù)然后使用值迭代更新 Q-函數(shù)敌厘。由于不管采取何種策略都能夠獲得一個無偏估計台猴,很多模型未知的情況下,基于 Q-函數(shù)的算法比之基于 V-函數(shù)的算法常常更受青睞俱两。(如果模型已知饱狂,我們可以存儲 V-函數(shù)來定義 Q-函數(shù)。)
Algorithm 3: 基于模擬的 Q-值迭代
初始化
Q^{(0)}

n = 1,2,\dots
和環(huán)境交互 T 個時間步宪彩,通過從某種策略
s
中選擇行動獲得軌跡
a
(如果是一個按照回合進(jìn)行的任務(wù)休讳,可能會包含多個回合)
s
,其中
\alpha
使用當(dāng)前 Q-函數(shù)
\theta
算出

在第 n 次迭代時該選擇什么策略

s
尿孔?由于
\mu
的無偏性俊柔,任何能夠充分訪問狀態(tài)-值對的策略都能夠給出所有目標(biāo) Q-值
a
](https://s0.wp.com/latex.php?latex=%5BTQ%5D%28s%2Ca%29&bg=ffffff&fg=141412&s=0) 一致的估計,就是說活合,若用無窮多的數(shù)據(jù)就能夠給出正確的
s
](https://s0.wp.com/latex.php?latex=%5BTQ%5D%28s%2Ca%29&bg=ffffff&fg=141412&s=0)雏婶。典型方法是使用
a
-貪婪策略,按照概率
s
隨機行動白指,按照概率 [站外圖片上傳中……(202)] 使用 [站外圖片上傳中……(203)]留晚。隨機行動概率 [站外圖片上傳中……(204)] 通常從 [站外圖片上傳中……(205)] 緩慢退火為 [站外圖片上傳中……(206)]。
算法 3 是一種批式算法:批式強化學(xué)習(xí)算法在收集數(shù)據(jù)和使用這個數(shù)據(jù)執(zhí)行參數(shù)更新兩步交替進(jìn)行告嘲。這和在線算法有所不同错维,在線算法在數(shù)據(jù)收集的同時增量更新奖地。我們能不能將 [站外圖片上傳中……(207)] 設(shè)計一個在線算法?可以赋焕,但是我們需要作出小的調(diào)整來限制在每個迭代對 Q 更新的大胁未酢(現(xiàn)在只有一個時間步)。通常隆判,我們通過混合有噪聲的估計和當(dāng)前值計算目標(biāo) Q-值犬庇,混合比例 [站外圖片上傳中……(208)]。
[站外圖片上傳中……(209)]
[站外圖片上傳中……(210)]
這個算法稱為 Watkins Q-學(xué)習(xí)算法[WatkinsDayan92]侨嘀。給定合適的將
\alpha
下降到 0 的設(shè)計械筛,并給定能夠訪問所有狀態(tài)-行動對無窮多次的策略(如使用 [站外圖片上傳中……(212)]-貪婪策略),這個算法能夠保證收斂到最優(yōu)策略飒炎。[JaaJorSingh94] 給出了一個簡潔的分析。然而在現(xiàn)實應(yīng)用中笆豁,這個算法需要相當(dāng)大的時間步數(shù)郎汪。
前面我們討論了 Q-函數(shù) [站外圖片上傳中……(213)]。如果狀態(tài)空間和行動空間是離散的(有限集合)闯狱,那么最為直接的方式是使用一個 Q 函數(shù)表煞赢,將 Q-函數(shù)作為一個數(shù)組存放,每個 [站外圖片上傳中……(214)] 對都有一個位置哄孤。而如果狀態(tài)空間巨大或者是無窮的照筑,這顯然是不太現(xiàn)實的選擇,所以我們需要找一個函數(shù)的近似方法瘦陈,如神經(jīng)網(wǎng)絡(luò)凝危,來表示 Q-函數(shù)。
我們記 [站外圖片上傳中……(215)] 為由參數(shù)向量
\theta
參數(shù)化的 Q-函數(shù)晨逝。存在至少兩個合理的方法來參數(shù)化 Q-函數(shù):
網(wǎng)絡(luò)以 [站外圖片上傳中……(217)] 為輸入蛾默,以標(biāo)量 Q-值為輸出。
網(wǎng)絡(luò)將
s
映射到某個參數(shù)向量
\mu
捉貌,這個可以和行動組合來獲得標(biāo)量 Q-值支鸡。

實際情形下,第二種方式工作得更好趁窃,也得到了更加有效的算法牧挣。類比于我們前面對參數(shù)化策略的討論,我們可以定義依賴于行動空間的 Q-函數(shù)的不同的參數(shù)化方式醒陆。
如果

a
來自一個離散集合瀑构,那么我們設(shè)計一個神經(jīng)網(wǎng)絡(luò)將
s
映射到一個 Q-值的向量
如果
a
是連續(xù)的,那么我們可以使用一個神經(jīng)網(wǎng)絡(luò)將
s
映射到一個二次函數(shù)的中心统求,其curvature检碗,產(chǎn)生 Q-值 [站外圖片上傳中……(224)]据块。參見[GuEtAl16]

給定該參數(shù)化 Q-函數(shù)折剃,我們可以運行 Q-值迭代算法另假,優(yōu)化的步驟變成:
[站外圖片上傳中……(225)]
這個算法被稱為 神經(jīng)網(wǎng)絡(luò)擬合 Q-迭代(Neural-Fitted Q-Iteration) [Riedmiller05]
最近怕犁,Mnih 等人提出了這個算法的變體版本边篮,將數(shù)據(jù)采集納入 Q-函數(shù)更新[MnihEtAl13]。他們使用了一個 目標(biāo)網(wǎng)絡(luò)奏甫,類似于前面的 Q-函數(shù) [站外圖片上傳中……(226)]戈轿。他們還使用了一個 回放緩沖區(qū) (replay buffer),包含最近一些 Q-函數(shù)收集到的數(shù)據(jù)阵子,而在算法 3 中思杯,只是使用了 [站外圖片上傳中……(227)] 采集的數(shù)據(jù)來擬合 [站外圖片上傳中……(228)]。
5.1 練習(xí)
實現(xiàn) Watkins Q-學(xué)習(xí)算法挠进,應(yīng)用在 toy_text gym 環(huán)境中色乾。你還可以使用策略迭代來計算最優(yōu)解,比較一下性能领突。(注意這些環(huán)境給出了方便的轉(zhuǎn)換模型和收益函數(shù))
應(yīng)用批式 Q-值迭代算法或者 DQN 在 classic_control 環(huán)境中暖璧。
應(yīng)用批式 Q-值迭代算法或者 DQN 在 mujoco 環(huán)境中,使用一個二次的 Q-函數(shù)君旦。

6 引用
[BertsekasVol1]
Bertsekas, Dynamic Programming and Optimal Control, Volume I.

[SzitaLorincz06]
(1, 2) Szita and Lorincz, Learning Tetris with the Noisy Cross-Entropy Method.

[SchulmanEtAl15]
(1, 2) Schulman, Moritz, Levine, Jordan, Abbeel, High-Dimensional Continuous Control Using Generalized Advantage Estimation. http://arxiv.org/abs/1506.02438

[MnihEtAl13]
Mnih et al., Playing Atari with Deep Reinforcement Learning.http://arxiv.org/abs/1312.5602

[MnihEtAl16]
Mnih et al., Asynchronous Methods for Deep Reinforcement Learning.http://arxiv.org/abs/1602.01783

[Owen14]
Owen, Monte Carlo theory, methods and examples. http://statweb.stanford.edu/~owen/mc

[GoschinWeinsteinLittman13]
Goschin, Weinstein, Littman, The Cross-Entropy Method Optimizes for Quantileshttp://jmlr.org/proceedings/papers/v28/goschin13.pdf

[GuEtAl16]
Gu et al., Continuous Deep Q-Learning with Model-based Accelerationhttp://arxiv.org/abs/1603.00748

[Riedmiller05]
Riedmiller. Neural fitted Q iteration—first experiences with a data efficient neural reinforcement learning method.

[JaaJorSingh94]
Jaakkola, Jordan, and Singh. On the convergence of stochastic iterative dynamic programming algorithms.

[WatkinsDayan92]
Watkins, Dayan. Q-learning.

[KakadeLangford02]
Kakade & Langford, Approximately optimal approximate reinforcement learning

[Kakade01]
Kakade, Sham. A Natural Policy Gradient

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末澎办,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子金砍,更是在濱河造成了極大的恐慌局蚀,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恕稠,死亡現(xiàn)場離奇詭異至会,居然都是意外死亡,警方通過查閱死者的電腦和手機谱俭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門奉件,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人昆著,你說我怎么就攤上這事县貌。” “怎么了凑懂?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵煤痕,是天一觀的道長。 經(jīng)常有香客問我,道長摆碉,這世上最難降的妖魔是什么塘匣? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮巷帝,結(jié)果婚禮上忌卤,老公的妹妹穿的比我還像新娘。我一直安慰自己楞泼,他們只是感情好驰徊,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布堕阔。 她就那樣靜靜地躺著退唠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪荤胁。 梳的紋絲不亂的頭發(fā)上瞧预,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音仅政,去河邊找鬼垢油。 笑死,一個胖子當(dāng)著我的面吹牛圆丹,可吹牛的內(nèi)容都是我干的滩愁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼辫封,長吁一口氣:“原來是場噩夢啊……” “哼硝枉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起倦微,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎欣福,沒想到半個月后责球,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年雏逾,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘉裤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡栖博,死狀恐怖屑宠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情笛匙,我是刑警寧澤侨把,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站妹孙,受9級特大地震影響秋柄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蠢正,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一骇笔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嚣崭,春花似錦笨触、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至说榆,卻和暖如春虚吟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背签财。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工串慰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人唱蒸。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓邦鲫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親神汹。 傳聞我的和親對象是個殘疾皇子庆捺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容