【強化學習入門】梯度賭博機算法中,偏好函數更新:梯度上升公式是精確梯度上升的隨機近似的證明

本文證明強化學習入門問題:K搖臂賭博機的梯度賭博機算法中,偏好函數更新公式:Ht+1(At)=Ht(At)+α(RtRt)(1πt(At))H_{t+1}(A_t) = H_t(A_t) + \alpha (R_t - \overline{R_t})(1-\pi_t(A_t))的合理性。書上可能有些不太好理解,我用較爲淺顯的語言將每步證明的“why & how”描述出來。

引用自:強化學習(第2版); [加拿大] Richard S. Sutton, [美國] Andrew G. Barto; 俞凱 譯

書中提到的搖臂賭博機的所有算法,我已經使用python 3實現,在線瀏覽ipynb:https://nbviewer.jupyter.org/github/PiperLiu/Reinforcement-Learning-practice-zh/blob/master/practice/01-Stochastic-Multi-Armed-Bandit.ipynb。並上傳github,倉庫:https://github.com/PiperLiu/Reinforcement-Learning-practice-zh


前言

強化學習入門問題:K搖臂賭博機的梯度賭博機算法中,提出了偏好函數。偏好函數本身的值並不重要,重要的是一個動作相比於另一個動作的偏好,因此,選擇動作的概率分佈使用softmax分佈:

PrAt=a=eHt(a)b=1keHt(b)=πt(a)Pr_{A_t = a} = \frac{e^{H_t(a)}}{\sum_{b=1}^{k} e^{H_t(b)}} = \pi_t(a)

πt(a)\pi_t(a)表示動作a在t時刻被選擇的概率,所有偏好函數的初始值都相同(可爲0)。

則,偏好函數更新遵守如下規則:

Ht+1(At)=Ht(At)+α(RtRt)(1πt(At))H_{t+1}(A_t) = H_t(A_t) + \alpha (R_t - \overline{R_t})(1-\pi_t(A_t)) 對於被選擇的動作AtA_t (1)
Ht+1(a)=Ht(a)α(Rt(Rt)πt(a))H_{t+1}(a) = H_t(a) - \alpha (R_t - \overline(R_t) \pi_t(a)) 對於所有aAta \not= A_t (2)

其中,a是一個大於0的數,表示步長。Rt\overline{R_t}是時刻t內所有收益的平均值,稱爲基準項。

個人思考:爲什麼更新偏好函數時要考慮概率呢? 答:對於(1)式,若本身概率較大,則Ht+1H_{t+1}不會加太多,若本身概率πt=1\pi_t=1,則Ht+1H_{t+1}不用更新。

上述思考有一定道理,但是這個更新公式的合理性可以在數學上證明。下面開始證明。


證明

在精確梯度上升算法中,有:

Ht+1(a)=Ht(a)+αE[Rt]Ht(a)H_{t+1}(a)=H_t(a) + \alpha \frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)}

這裏,用總體的期望收益定義爲性能的衡量指標:

E[Rt]=xπt(x)q(x) \mathbb{E}[R_t] = \sum_x \pi_t (x) q_* (x)

真實的q(x)q_* (x)(每個動作的真實收益)是未知的,因此無法實現精確的梯度上升。但是可以使用隨機梯度上升求近似。

即,開始推導E[Rt]Ht(a)\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)}的近似:

E[Rt]Ht(a)=Ht(a)[xπt(x)q(x)]\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)} = \frac{\partial}{\partial H_t(a)}\left[ \sum_x \pi_t (x) q_* (x) \right]

因爲q(x)q_* (x)客觀存在,與Ht(a)H_t (a)值無關,所以:

E[Rt]Ht(a)=xq(x)πt(x)Ht(a)\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)} = \sum_x q_* (x) \frac{\partial \pi_t (x)}{\partial H_t(a)}

因爲xπt(x)Ht(a)=0\sum_x \frac{\partial \pi_t (x)}{\partial H_t(a)}=0(其證明在後文:動作導數總和爲0的證明),因此可以加入“基準項”BtB_t

E[Rt]Ht(a)=x(q(x)Bt)πt(x)Ht(a)\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)} = \sum_x (q_* (x) - B_t ) \frac{\partial \pi_t (x)}{\partial H_t(a)}

然後,乘以πt(x)/πt(x)\pi_t(x) / \pi_t(x),有:

E[Rt]Ht(a)=xπt(x)(q(x)Bt)πt(x)Ht(a)/πt(x)\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)} = \sum_x \pi_t(x) (q_* (x) - B_t ) \frac{\partial \pi_t (x)}{\partial H_t(a)} / \pi_t(x)

可以看出,上式實際上是對πt(x)\pi_t(x)分佈中的(q(x)Bt)πt(x)Ht(a)/πt(x)(q_* (x) - B_t ) \frac{\partial \pi_t (x)}{\partial H_t(a)} / \pi_t(x)進行期望求值,即:

E[Rt]Ht(a)=E[(q(x)Bt)πt(x)Ht(a)/πt(x)]\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)} = \mathbb{E} \left[ (q_* (x) - B_t ) \frac{\partial \pi_t (x)}{\partial H_t(a)} / \pi_t(x) \right]

其中,變量爲動作xx,這裏記爲選擇的動作AtA_t;並且,將BtB_t取值爲Rt\overline{R_t};又有,選擇AtA_t動作的回報的期望爲E[RtAt]\mathbb{E}[R_t | A_t],即q(x)=E[RtAt]q_* (x)=\mathbb{E}[R_t | A_t]。因此,有:

E[Rt]Ht(a)=E[(RtRt)πt(At)Ht(a)/πt(At)]\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)} = \mathbb{E} \left[ (R_t - \overline{R_t} ) \frac{\partial \pi_t ( A_t)}{\partial H_t(a)} / \pi_t( A_t) \right]

又有,πt(x)Ht(a)=πt(x)(Ia=Atπt(a))\frac{\partial \pi_t (x)}{\partial H_t(a)}=\pi_t(x) (\mathbb{I}_{a=A_t} - \pi_t(a))Ia=At\mathbb{I}_{a=A_t}表示,如果a=xa=x就取1,否則取0。其證明在後文:偏好函數導數的推導證明

則帶入πt(x)Ht(a)=πt(x)(Ia=Atπt(a))\frac{\partial \pi_t (x)}{\partial H_t(a)}=\pi_t(x) (\mathbb{I}_{a=A_t} - \pi_t(a)),有:

E[Rt]Ht(a)=E[(RtRt)(Ia=Atπt(a))]\frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)} = \mathbb{E} \left[ (R_t - \overline{R_t} ) (\mathbb{I}_{a=A_t} - \pi_t(a)) \right]

將上式帶入Ht+1(a)=Ht(a)+αE[Rt]Ht(a)H_{t+1}(a)=H_t(a) + \alpha \frac{\partial \mathbb{E}[R_t]}{\partial H_t (a)},即有

Ht+1(a)=Ht(a)+α(RtRt)(Ia=Atπt(a))H_{t+1}(a)=H_t(a) + \alpha (R_t - \overline{R_t} ) (\mathbb{I}_{a=A_t} - \pi_t(a))

即此式子收斂於精確梯度上升。

Q.E.D

動作導數總和爲0的證明

證明:xπt(x)Ht(a)=0\sum_x \frac{\partial \pi_t (x)}{\partial H_t(a)}=0

因爲xπt(x)=1\sum_x \pi_t (x)=1,即概率和爲1,所以對每一項的Ht(a)H_t(a)求導,等式右邊爲0:

xπt(x)Ht(a)=0\sum_x \frac{\partial \pi_t (x)}{\partial H_t(a)}=0

Q.E.D

偏好函數導數的推導證明

證明:πt(x)Ht(a)=πt(x)(Ia=Atπt(a))\frac{\partial \pi_t (x)}{\partial H_t(a)}=\pi_t(x) (\mathbb{I}_{a=A_t} - \pi_t(a))Ia=At\mathbb{I}_{a=A_t}表示,如果a=xa=x就取1,否則取0。

其實,就是一道很簡單的(f(x)g(x))(\frac{f(x)}{g(x)})^{'}等應用。

簡化一下πt(x)Ht(a)\frac{\partial \pi_t (x)}{\partial H_t(a)},將Ht(x)H_t(x)替換爲xx,並在證明中使用下式即可:

πt(x)=exi=1kei\pi_t (x) = \frac{e^{x}}{\sum_{i=1}^{k} e^i}

證明下式即可:

πt(x)x={πt(x)(1πt(a))x=aπt(x)πt(a)xa\frac{\partial \pi_t (x)}{\partial x} = \left\{ \begin{aligned} \pi_t(x)(1-\pi_t(a)) & & x=a \\ -\pi_t(x) \pi_t(a) & & x\not= a \\ \end{aligned} \right.

高中數學內容,應用公式(f(x)g(x))=f(x)g(x)g(x)f(x)g(x)2(\frac{f(x)}{g(x)})^{'} = \frac{f^{'}(x)g(x) - g^{'}(x)f(x)}{g(x)^{2}}分類討論,可輕鬆證明。

發佈了139 篇原創文章 · 獲贊 48 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章