將強(qiáng)化學(xué)習(xí)與機(jī)器學(xué)習(xí)、深度學(xué)習(xí)區(qū)分開的最重要的特征為:它通過訓(xùn)練中信息來評估所采取的動作,而不是給出正確的動作進(jìn)行指導(dǎo),這極大地促進(jìn)了尋找更優(yōu)動作的需求。
1、多臂老虎機(jī)(Multi-armed Bandits)問題
賭場的老虎機(jī)有一個綽號叫單臂強(qiáng)盜(single-armed bandit),因為它即使只有一只胳膊,也會把你的錢拿走。而一排老虎機(jī)就引申出多臂強(qiáng)盜(多臂老虎機(jī))。
多臂老虎機(jī)(Multi-armed Bandits)問題可以描述如下:一個玩家走進(jìn)一個賭場,賭場里有
k
k
k 個老虎機(jī),每個老虎機(jī)的期望收益不一樣。假設(shè)玩家總共可以玩
t
t
t 輪, 在每一輪中,玩家可以選擇這
k
k
k 個老虎機(jī)中的任一個,投入一枚游戲幣,拉動搖桿,觀察是否中獎以及獎勵的大小。
問題,玩家采取怎么樣的策略才能最大化這
t
t
t 輪的總收益?
k
k
k 個老虎機(jī)(對應(yīng)
k
k
k 個動作選擇),每一個動作都有其預(yù)期的獎勵,稱其為該動作的價值。記第
t
t
t 輪選擇的動作為
A
t
A_t
At?,相應(yīng)的獎勵為
R
t
R_t
Rt?,那么任意動作
a
a
a 的價值記為
q
?
(
a
)
q_\ast(a)
q??(a),即動作
a
a
a 的期望獎勵:
q
?
(
a
)
?
E
[
R
t
∣
A
t
=
a
]
q_\ast(a)\doteq\Bbb{E}[R_t|A_t=a]
q??(a)?E[Rt?∣At?=a]
如果知道每個動作的價值,那么問題就簡單了:總是選擇價值最高的動作。如果不知道的話,我們需要對其進(jìn)行估計,令動作 a a a 在時間步長為 t t t 的價值估計為 Q t ( a ) Q_t(a) Qt?(a),我們希望 Q t ( a ) Q_t(a) Qt?(a) 盡可能地接近 q ? ( a ) q_\ast(a) q??(a)。
2、動作價值方法
通過估計動作價值,然后依據(jù)動作價值作出動作選擇的方法,統(tǒng)稱為動作價值方法。某個動作的真實價值應(yīng)當(dāng)是該動作被選擇時的期望獎勵,即
Q
t
(
a
)
?
t
?時刻之前,
a
?被選中的總獎勵
t
?時刻之前,
a
?被選中的次數(shù)
=
∑
i
=
1
t
?
1
R
i
?
I
A
i
=
a
∑
i
=
1
t
?
1
I
A
i
=
a
Q_t(a)\doteq\dfrac{t\ 時刻之前,a\ 被選中的總獎勵}{t\ 時刻之前,a\ 被選中的次數(shù)}=\dfrac{\sum_{i=1}^{t-1}R_i\cdot\Bbb{I}_{A_i=a}}{\sum_{i=1}^{t-1}\Bbb{I}_{A_i=a}}
Qt?(a)?t?時刻之前,a?被選中的次數(shù)t?時刻之前,a?被選中的總獎勵?=∑i=1t?1?IAi?=a?∑i=1t?1?Ri??IAi?=a??
其中,若 A i = a A_i=a Ai?=a,則 I A i = a = 1 \Bbb{I}_{A_i=a}=1 IAi?=a?=1,否則 I A i = a = 0 \Bbb{I}_{A_i=a}=0 IAi?=a?=0,若分母為 0,則定義 Q t ( a ) Q_t(a) Qt?(a) 為一默認(rèn)值(例如 0),根據(jù)大數(shù)定律,當(dāng)分母趨于無窮時, Q t ( a ) Q_t(a) Qt?(a) 收斂于 q ? ( a ) q_\ast(a) q??(a),稱這種方法為樣本平均法(sample-average method),這是估計動作價值的一種方法,當(dāng)然并不一定是最好的方法,下面我們使用該方法來解決問題。
最簡單的動作選擇就是選擇價值估計值最大的動作,稱為貪心方法,其數(shù)學(xué)表示為:
A
t
?
arg?max
?
a
Q
t
(
a
)
A_t\doteq\argmax_a Q_t(a)
At??aargmax?Qt?(a)
另一種替代的方法是,大多數(shù)情況是貪心的,偶爾從動作空間中隨機(jī)選擇,稱為 ? \epsilon ? -貪心方法。這種方法的優(yōu)點是,隨著步數(shù)增加,每個動作會被無限采樣,則 Q t ( a ) Q_t(a) Qt?(a) 會逐漸收斂到 q ? ( a ) q_\ast(a) q??(a),也意味著選擇最優(yōu)動作的概率收斂到 1 ? ? 1-\epsilon 1??。
3、貪心動作價值方法有效性
在 2000 個隨機(jī)生成的 10 臂老虎機(jī)問題中,其動作價值
q
?
(
a
)
,
a
=
1
,
?
?
,
10
q_\ast(a),a=1,\cdots,10
q??(a),a=1,?,10,服從期望為 0,方差為 1的正態(tài)分布;另外每次動作
A
t
A_t
At? 的實際獎勵
R
t
R_t
Rt? 服從期望為
q
?
(
A
t
)
q_\ast(A_t)
q??(At?) ,方差為 1 的正態(tài)分布。文章來源:http://www.zghlxwxcb.cn/news/detail-792854.html
部分代碼
import numpy as np
step = 1000
q_true = np.random.normal(0, 1, 10) # 真實的動作價值
q_estimate = np.zeros(10) # 估計的動作價值
epsilon = 0.9 # 貪心概率
action_space = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
action_count = np.zeros(10)
reward_sum = 0
for i in range(step):
if (np.random.uniform() > epsilon1) or (q_estimate1.all() == 0):
machine_name = np.random.choice(action_space)
reward_sum += np.random.normal(q_true[machine_name], 1, 1)
action_count[machine_name] += 1
q_estimate[machine_name] = reward_sum / action_count[machine_name]
else:
machine_name = np.argmax(q_estimate)
reward_sum += np.random.normal(q_true[machine_name], 1, 1)
action_count[machine_name] += 1
q_estimate[machine_name] = reward_sum / action_count[machine_name]
文章來源地址http://www.zghlxwxcb.cn/news/detail-792854.html
到了這里,關(guān)于多臂老虎機(jī) “Multi-armed Bandits”的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!