強化學習讀書筆記 - 02 - 多臂老O虎O機問題
學習筆記:
Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto c 2014, 2015, 2016
數學符號的含義
-
通用
\(a\) - 行動(action)。
\(A_t\) - 第t次的行動(select action)。通常指求解的問題。 -
在老O虎O機問題中
\(q_*(a)\) - 行動 a 的真實獎賞(true value)。這個是(實際中)不可知的。期望計算的結果收斂(converge)與它。
\(N_t(a)\) - 在第t次之前,行動a被選擇的次數。
\(R_t\) - 第t步的實際獎賞(actual reward)。
\(Q_t(a)\) - 行動 a 在第t次前(不包括第t次)的實際平均獎賞。
\(H_t(a)\) - 對於行動a的學習到的傾向。
\(\epsilon\) - 在ε-貪婪策略中,采用隨機行動的概率\([0, 1)\)。
多臂老O虎O機問題
一般的老O虎O機只有一個臂(桿)。你塞10個硬幣,拉一下桿,老O虎O機可能會吐出來一兩個硬幣,或者100個硬幣。
多臂老O虎O機有多個桿(象征着多個行動(action),每個桿有自己特有的吐錢邏輯)。
注意:每個桿的吐錢概率可能是固定的(stationary),也可能是不固定的(non-stationary)。不固定在現實中更常見。
多臂老O虎O機問題就是在許多次嘗試后,找到一個有效收益的策略。
多臂老O虎O機問題是統計學、工程、心理學的一個經典問題。不要小看了這個問題,很多權威都研究過。
在強化學習方面,我們通過這個問題,可以了解強化學習的基本概念和算法的思路。其中包括:
- 探索(exploration)和采用(exploitation)的權衡
- 貪婪(greedy)
- 收斂(convergence)
- 參數初始化的重要性
- 梯度遞減(gradient descent)
(注:梯度遞增和梯度遞減的意思一樣,只是看問題的方向不一樣。)
等等。
如何判斷算法的好壞
在討論算法前,我們先考慮判斷算法好壞的標准。
-
建立模型
建立一個10臂老O虎O機。
每個臂的真實行動價值\(q_*(a), a = 1, \dots, 10\)是一個符合(平均值=0, 方差=1)的正態分布。
每個臂的每次行動的估值\(R_t(a)\)是一個符合(平均值=\(q_*(a)\), 方差=1)的正態分布。 -
測試標准
- 平均獎賞 - 獎賞越多越好
- 最優行動 - 和實際最優行動一致的比率越大越好
解決方法
行動-價值方法 (action-value method)
在決定第t次的行動\(A_t\)時,使用下面的算法。
- 貪婪方法(greedy method)
總是選擇當前取得最大收益的行動。
特點:最大化采用(exploitation)。
算法的過程如下:
初始: \(Q_0(a), a = 1, \cdots, 10\) 都為0;
每個桿(action)都拉一下。 \(Q_0(a), a = 1, \cdots, 10\) 有了新值。
根據當前平均收益最大的桿,當做本次選擇的桿。
- ε - 貪婪方法(ε-greedy method)
ε - 讀作epsilon。有彈性的意思。
一般情況下選擇當前取得最大收益的行動,但是有一定比例ε的行動是隨機選擇的。
特點:增強了探索(exploration)性。
算法的過程如下:
初始: \(Q_0(a), a = 1, \cdots, 10\) 都為0;
每個桿(action)都拉一下。 \(Q_0(a), a = 1, \cdots, 10\) 有了新值。
根據當前平均收益最大的桿,當做本次選擇的桿。
同時根據\(ε\)的值,隨機選擇一個桿。(比如:\(ε=0.1\),每十次隨機選擇一個桿)
增值實現(incremental implementation)
如何計算\(Q_t\)。
算法
帶權值步長的增值實現(incremental implementation with weighted step size)
一個替代算法。用步長\(\alpha\) 代替$ \frac{1}{t-1}$。
算法
解釋
這個算法利於解決非穩定(non-stationary)問題。
非穩定(non-stationary)問題意味着\(q_*(a)\)是會發生變化的。因此,最近幾次的獎賞更具代表性。
\(\alpha\)越大,意味着最近獎賞的權重越大。
這里也可以看到梯度計算的影子。
優化初始值(Optimistic initial values)
優化初始值\(Q_1(a)\),如果賦值越大,會鼓勵探索。
初始值為0時,ε - 貪婪方法(ε=0.1) 好於 ε - 貪婪方法(ε=0.01) 好於 貪婪方法。
看來冒一定風險還是有好處的。
初始值為5的貪婪方法 好於 ε - 貪婪方法(ε=0.1)。
有錢人更容易成功。
置信上界選擇算法 (Upper-Confidence-Bound action selection)
可理解為求每個行動的最大可信值,選擇最大可信值最大的行動。
算法
算法理解
這個算法在計算:第t次的行動應該是什么?
我們沒有說:“第t次的最優行動應該是什么?”。為什么不說最優呢?
因為,強化學習的目的是總體最優,不是局部最優,因此“第t次的最優行動”不是強化學習最求的目標。
\(c\)是一個可調的參數。我們在理解中不用太關心它,當它是\(1\)好了。
在機器學習中,算法一般都有幾個參數可以調節。不同環境中,調節參數最優化可以很大的提高算法的質量。
\(Q_t(a)\) - 行動a當前的獎賞。
\(t\) - 第t次。
\(\log{t}\) - 求t的指數。隨着t變大,\(\log{t}\)變大的速度變慢。
\(N_t(a)\) - 行動a被選擇的次數。
\(\left [ \sqrt{\frac{\log{t}}{N_t(a)}} \right ]\) - 由於\(\frac{\log{t}}{N_t(a)} < 1 \text{, when x > 7 }\), 求平方根,反而是起了一個放緩、放大的作用。
在沒有獎賞的情況下:\(Q_t(a)\) 不變。\(\log{t}\)比\(N_t(a)\)變化的慢,因此總結果會變小。
- 梯度老O虎O機算法 (Gradient Bandit Algorithms)
之前的算法,主要是通過發生的事件,根據行動的估計獎賞,來決定選擇哪個行動。
梯度算法是:通過發生的事件,根據行動的傾向\(H_t(a)\),來決定選擇哪個行動。
(個人沒看出有什么不同)。
softmax是一個激活函數。通常用於輸出的概率計算,就是現在看到的例子。