本文證明強化學習入門問題:K搖臂賭博機的梯度賭博機算法中,偏好函數更新公式:Ht+1(At)=Ht(At)+α(Rt−Rt)(1−πt(At))的合理性。書上可能有些不太好理解,我用較爲淺顯的語言將每步證明的“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=∑b=1keHt(b)eHt(a)=πt(a)
πt(a)表示動作a在t時刻被選擇的概率,所有偏好函數的初始值都相同(可爲0)。
則,偏好函數更新遵守如下規則:
Ht+1(At)=Ht(At)+α(Rt−Rt)(1−πt(At)) |
對於被選擇的動作At |
(1) |
Ht+1(a)=Ht(a)−α(Rt−(Rt)πt(a)) |
對於所有a=At |
(2) |
其中,a是一個大於0的數,表示步長。Rt是時刻t內所有收益的平均值,稱爲基準項。
個人思考:爲什麼更新偏好函數時要考慮概率呢? 答:對於(1)式,若本身概率較大,則Ht+1不會加太多,若本身概率πt=1,則Ht+1不用更新。
上述思考有一定道理,但是這個更新公式的合理性可以在數學上證明。下面開始證明。
證明
在精確梯度上升算法中,有:
Ht+1(a)=Ht(a)+α∂Ht(a)∂E[Rt]
這裏,用總體的期望收益定義爲性能的衡量指標:
E[Rt]=x∑πt(x)q∗(x)
真實的q∗(x)(每個動作的真實收益)是未知的,因此無法實現精確的梯度上升。但是可以使用隨機梯度上升求近似。
即,開始推導∂Ht(a)∂E[Rt]的近似:
∂Ht(a)∂E[Rt]=∂Ht(a)∂[x∑πt(x)q∗(x)]
因爲q∗(x)客觀存在,與Ht(a)值無關,所以:
∂Ht(a)∂E[Rt]=x∑q∗(x)∂Ht(a)∂πt(x)
因爲∑x∂Ht(a)∂πt(x)=0(其證明在後文:動作導數總和爲0的證明),因此可以加入“基準項”Bt:
∂Ht(a)∂E[Rt]=x∑(q∗(x)−Bt)∂Ht(a)∂πt(x)
然後,乘以πt(x)/πt(x),有:
∂Ht(a)∂E[Rt]=x∑πt(x)(q∗(x)−Bt)∂Ht(a)∂πt(x)/πt(x)
可以看出,上式實際上是對πt(x)分佈中的(q∗(x)−Bt)∂Ht(a)∂πt(x)/πt(x)進行期望求值,即:
∂Ht(a)∂E[Rt]=E[(q∗(x)−Bt)∂Ht(a)∂πt(x)/πt(x)]
其中,變量爲動作x,這裏記爲選擇的動作At;並且,將Bt取值爲Rt;又有,選擇At動作的回報的期望爲E[Rt∣At],即q∗(x)=E[Rt∣At]。因此,有:
∂Ht(a)∂E[Rt]=E[(Rt−Rt)∂Ht(a)∂πt(At)/πt(At)]
又有,∂Ht(a)∂πt(x)=πt(x)(Ia=At−πt(a)),Ia=At表示,如果a=x就取1,否則取0。其證明在後文:偏好函數導數的推導證明。
則帶入∂Ht(a)∂πt(x)=πt(x)(Ia=At−πt(a)),有:
∂Ht(a)∂E[Rt]=E[(Rt−Rt)(Ia=At−πt(a))]
將上式帶入Ht+1(a)=Ht(a)+α∂Ht(a)∂E[Rt],即有
Ht+1(a)=Ht(a)+α(Rt−Rt)(Ia=At−πt(a))
即此式子收斂於精確梯度上升。
Q.E.D
動作導數總和爲0的證明
證明:∑x∂Ht(a)∂πt(x)=0:
因爲∑xπt(x)=1,即概率和爲1,所以對每一項的Ht(a)求導,等式右邊爲0:
x∑∂Ht(a)∂πt(x)=0
Q.E.D
偏好函數導數的推導證明
證明:∂Ht(a)∂πt(x)=πt(x)(Ia=At−πt(a)),Ia=At表示,如果a=x就取1,否則取0。
其實,就是一道很簡單的(g(x)f(x))′等應用。
簡化一下∂Ht(a)∂πt(x),將Ht(x)替換爲x,並在證明中使用下式即可:
πt(x)=∑i=1keiex
證明下式即可:
∂x∂πt(x)={πt(x)(1−πt(a))−πt(x)πt(a)x=ax=a
高中數學內容,應用公式(g(x)f(x))′=g(x)2f′(x)g(x)−g′(x)f(x)分類討論,可輕鬆證明。