強化學習_Multi-arm Bandits
強化學習, 學習筆記
這是個很有名的強化學習問題:
今天你有一千個硬幣可以去一間店玩拉霸機
假設你已經玩到500次了,那麼接下來,你該如何選擇動作?
玩新的拉霸機?還是玩之前獲得過高分的拉霸機?
在我們過去的經驗當中,獲得的獎勵最大的那次動作
我們會稱之為:
貪婪行為(greedy action)
如果在下次的動作,選擇了貪婪行為,稱之為
exploiting(利用)
如果不是貪婪行為,則稱為
exploring(探索)
exploiting以及exploring是非常衝突的
透過exploiting:我們可以保證這一次的動作獎勵是最大的
但長遠來看,我們可以會因為沒有探索而失去得到更好獎勵的機會
因此代理在訓練的過程中,我們必須要決定出一個機率,讓他決定何時該exploiting,何時該exploring
在一般的情況下,我們總是選擇目前已知會得到最大回報的貪婪行為
但每隔一段時間,就會選擇該去進行其他未知的動作
我們用 ε 來表示機率,稱之為:ε-greedy
ε 越大,就表示進行exploring的次數可能越多
我們現在來定義一下
Rt表示為: 第 t 個時間步驟得到的獎勵
Q(a)表示為:動作 a 所產生的實際價值
Qt(a)表示為:經過 t 個時間步驟後的實際價值
Nt(a)表示為:第 t 個時間步驟所選擇的動作
則Qt(a)可以表示成:
但要Qt(a)計算Qt(a)好像有點麻煩
也需要花額外的記憶體來記錄
所以我們用
Qk表示: 第 k-1 個步驟的估計獎勵,可以表示為:
對於所有的k都成立,Q2=R1….
這樣的表示就只要更新k就好
而且這樣可以更簡單地表示出:
而StepSize這個參數,我們之後會用 α 代替 1/k
而在現實問題當中,環境通常不是穩定的
白話一點說,如果玩拉霸機1000次了
最近獲得的500次一定會比最一開始的500次分數還有效
所以 α 不會是平均數,而是一個定義出來的機率
今天介紹了簡單的強化學習問題
在訓練中代理該exploiting還是該exploring
會大大的影響未來的狀態及最終的獎勵
下次再介紹該怎麼決定動作價值囉
參考:Reinforcement Learning: An Introduction(Richard S. Sutton and Andrew G. Barto)第2節