Multi-armed bandit problem
强化学习和其它的学习算法的不同之处在于对动作的评价,其它的学习算法如监督学习、神经网络等不去评价或者度量动作的价值,而是直接被“教”去做最好的动作。强化学习是主动地评价动作而不是被“教”怎么去做动作;监督学习是被“教”怎么做动作而不是评价动作的价值。
k臂赌博机是一个非关联(nonassociative)问题,即不考虑在不同的情况下做动作,也就是只有一种情况。而一般的强化学习问题都是关联(associative)问题,即考虑在不同的情形(也就是状态 s s s)下做动作。
k-armed bandit problem
k臂赌博机问题为:
智能体(agent)需要不断的选择赌博机的
k
k
k个摇杆(对应智能体的
k
k
k个动作)中的一个,在选择了一个摇杆之后(一次只能选择一个摇杆),智能体会因为它的选择而得到和这个摇杆相关联的回报,智能体不知道哪个摇杆是最好的选择,但它的目标是在选择摇杆的过程结束后(如智能体可以选择1000次),自己得到最多的回报。
设智能体做出的每个动作(做动作来选择赌博机的摇杆)都对应一个固定期望的回报。我们称这个回报为智能体动作
a
a
a的价值。设智能体在时间步
t
t
t做的动作为
A
t
A_t
At,这个动作对应的摇杆的回报为
R
t
R_t
Rt,则任意一个动作
a
a
a的价值为:
q
∗
(
a
)
≐
E
[
R
t
∣
A
t
=
a
]
.
(1)
q_*(a) \doteq E[R_t|A_t = a]. \tag{1}
q∗(a)≐E[Rt∣At=a].(1)
但是智能体不知道动作的价值啊!! 没有办法,智能体只能估计它做的动作的价值,来提高它的回报。设智能体对动作
a
a
a的价值的估计值为
Q
t
(
a
)
Q_t(a)
Qt(a), 我们当然希望
Q
t
(
a
)
Q_t(a)
Qt(a)能够尽可能地接近
q
∗
(
a
)
q_*(a)
q∗(a),只有估计的准确,我们才能对动作的价值做出准确的评价,才能得到更多的回报。
那么如何准确估计每一个动作的价值呢?这就涉及到探索(exploration)和利用(exploitation)的问题。如果智能体坐井观天,只利用现有的对动作的价值的估计,即一直做它认为的最有价值的动作(不一定真的最有价值),我们称为这个动作为贪婪动作(greedy action),那么最后智能体得到的回报一定不多;如果智能体很“积极”,一直去尝试非贪婪动作(nongreedy action),最后的回报也不多,因为最有价值的动作不多,智能体的大量的时间都用在了没有价值的动作上。这是一个两难困境。
upper-confidence bound(UCB) action selection
那么怎么处理这个困境呢?有人提出了智能体按照这个原则来选取动作的方法[?]:
A
t
≐
arg
max
a
[
Q
t
(
a
)
+
c
ln
t
N
t
(
a
)
]
(2)
A_t \doteq \mathop{\arg\max}\limits_{a} \left[Q_t(a)+c\sqrt{\frac{\ln{t}}{N_t(a)}}\right] \tag{2}
At≐aargmax[Qt(a)+cNt(a)lnt](2)
N
t
(
a
)
N_t(a)
Nt(a)表示在时间
t
t
t之前智能体做动作
a
a
a的次数,
c
c
c用来控制智能体探索的程度。如果
N
t
(
a
)
=
0
N_t(a) = 0
Nt(a)=0,那么视动作
a
a
a的价值为最大。
对式(2)的理解:
UCB的思想在于式(2)的平方根项是动作
a
a
a的不确定性的度量,式(2)中被最大化的是动作
a
a
a的可能的价值的一种上界(
→
\rightarrow
→这是原文的生涩翻译),
c
c
c确定了置信程度。每当动作
a
a
a被智能体选择,
N
t
(
a
)
N_t(a)
Nt(a)会加1,
t
t
t也会增加,但是这是
ln
t
\ln{t}
lnt函数,它增加的没有分母快,
Q
t
(
a
)
Q_t(a)
Qt(a)是对动作
q
∗
(
a
)
q_*(a)
q∗(a)的估计,它变化不大,所以方括号内的值整体是下降的;当动作
a
a
a没有被智能体选择,则
N
t
(
a
)
N_t(a)
Nt(a)不变,
ln
t
\ln{t}
lnt增加,则下次动作
a
a
a被智能体选择的机会增加。最后,智能体会偏向选择这些动作:
- Q t ( a ) Q_t(a) Qt(a)大的,说明这个动作对于智能体来说很有吸引力,没有办法,这是动作 a a a的实力(选择动作 a a a智能体确实可以得到更多的回报)
- c ln t N t ( a ) c\sqrt{\frac{\ln{t}}{N_t(a)}} cNt(a)lnt大的动作,这说明动作 a a a长期没有被选择,所以该选择这个动作来探索,万一这是个宝藏动作呢。
Gradient Bandit Algorithms
UBC是一个估计动作价值并根据动作的价值做出动作的方法,但是它不是唯一的方法。本节介绍另一个方法:Gradient Bandit Algorithms。
在本节中,每个动作
a
a
a对应一个智能体的偏爱(preference)值,我们称之为
H
t
(
a
)
H_t(a)
Ht(a). 这个偏爱值越大,智能体越可能选择这个偏爱值对应的动作,这个偏爱值不是回报,对于智能体来说只有偏爱值之间的相对大小才有意义。
智能体根
H
t
(
a
)
H_t(a)
Ht(a)选择动作的依据为:
P
r
{
A
t
=
a
}
≐
e
H
t
(
a
)
∑
b
=
1
k
e
H
t
(
b
)
≐
π
t
(
a
)
(3)
Pr\{A_t = a\} \doteq \frac{e^{H_t(a)}}{\sum_{b=1}^{k}e^{H_t(b)}} \doteq \pi_t(a) \tag{3}
Pr{At=a}≐∑b=1keHt(b)eHt(a)≐πt(a)(3)
其中,
π
t
(
a
)
\pi_t(a)
πt(a)表示在时间
t
t
t做动作
a
a
a的概率。更新
H
t
(
a
)
H_t(a)
Ht(a)的方式是随机梯度下降算法
H
t
+
1
(
A
t
)
≐
H
t
(
A
t
)
+
α
(
R
t
−
R
t
ˉ
)
(
1
−
π
t
(
A
t
)
)
a
n
d
H
t
+
1
(
a
)
≐
H
t
(
a
)
−
α
(
R
t
−
R
t
ˉ
)
π
t
(
a
)
∀
a
≠
A
t
(4)
H_{t+1}(A_t) \doteq H_t(A_t) + \alpha (R_t - \bar{R_t})(1 - \pi_t(A_t)) \quad and\\ H_{t+1}(a) \doteq H_t(a) - \alpha (R_t - \bar{R_t})\pi_t(a) \quad \forall a \neq A_t \tag{4}
Ht+1(At)≐Ht(At)+α(Rt−Rtˉ)(1−πt(At))andHt+1(a)≐Ht(a)−α(Rt−Rtˉ)πt(a)∀a=At(4)
其中,
R
t
ˉ
\bar{R_t}
Rtˉ表示平均回报,它是一个基准,如果动作
a
a
a的回报
R
t
R_t
Rt大于
R
t
ˉ
\bar{R_t}
Rtˉ,则智能体下次做动作
a
a
a的概率增加,否则减小。智能体没有做的动作的偏爱会朝着与
a
a
a相反的方向改变。(4)式的推导过程在reinforcement learning:An introduction中有。