k
k
k个动作中的每一个在被选择时都有一个期望或者平均收益,称为这个动作的价值。将在时刻
t
t
t时选择的动作记作
A
t
A_t
At,并将对应收益记作
R
t
R_t
Rt。任一动作
a
a
a对应的价值,记作
q
∗
(
a
)
q_*(a)
q∗(a),是给定动作
a
a
a时收益期望:
q
∗
(
a
)
=
E
[
R
t
∣
A
t
=
a
]
q_*(a) = E[R_t|A_t=a]
q∗(a)=E[Rt∣At=a] 我们将对动作
a
a
a在时刻t时的价值的估计记作
Q
t
(
a
)
Q_t(a)
Qt(a),我们希望它接近
q
∗
(
a
)
q_*(a)
q∗(a)。
一种自然的方式就是通过计算实际收益的平均值来估计动作的价值:
Q
t
(
a
)
=
t
时刻前通过执行动作
a
得到的收益总和
t
时刻前执行动作
a
的次数
=
∑
i
=
1
t
−
1
R
i
⋅
I
A
i
=
a
∑
i
=
1
t
−
1
I
A
i
=
a
Q_t(a) = \frac{t时刻前通过执行动作a得到的收益总和}{t时刻前执行动作a的次数} = \frac{\sum_{i = 1}^{t-1}R_i \cdot I_{A_i = a}}{\sum_{i = 1}^{t-1}I_{A_i = a}}
Qt(a)=t时刻前执行动作a的次数t时刻前通过执行动作a得到的收益总和=∑i=1t−1IAi=a∑i=1t−1Ri⋅IAi=a 其中,
I
p
r
e
d
i
c
a
t
e
I_{predicate}
Ipredicate表示随机变量,当
p
r
e
d
i
c
a
t
e
predicate
predicate为真时其值为1,反之为0。当分母为0时,我们将
Q
t
(
a
)
Q_t(a)
Qt(a)定义为某个默认值,比如
Q
t
(
a
)
=
0
Q_t(a) = 0
Qt(a)=0。当分母趋向于无穷大时,根据大数定律,
Q
t
(
a
)
Q_t(a)
Qt(a)会收敛到
q
∗
(
a
)
q_{*}(a)
q∗(a)
我们将这种估计动作价值的方法称为采样平均方法,因为每一次估计都是相关收益样本的平均。
最简单的动作选择规则是选择具有最高估计值的动作,如果有多个贪心动作,那就任意选择一个,比如随机挑选,我们将这种贪心动作的选择方法记作:
A
t
=
arg
min
a
Q
t
(
a
)
A_t = \mathop{\arg\min}\limits_{a}Q_t(a)
At=aargminQt(a) 其中,
arg
min
a
\mathop{\arg\min}\limits_{a}
aargmin是使得
Q
t
(
a
)
Q_t(a)
Qt(a)值最大的动作
a
a
a
令
R
i
R_i
Ri表示这一动作被选择
i
i
i次后获得的收益,
Q
n
Q_{n}
Qn表示被选择
n
−
1
n-1
n−1次后它的估计的动作价值,可以简写为:
Q
n
=
R
1
+
R
2
+
⋯
+
R
n
−
1
n
−
1
Q_n = \frac{R_1 + R_2 + \cdots + R_{n-1}}{n-1}
Qn=n−1R1+R2+⋯+Rn−1
为了计算每个新的收益,很容易设计增量式公式以小而恒定的计算来更新平均值。给定
Q
n
Q_n
Qn和第
n
n
n次的收益
R
n
R_{n}
Rn,所有
n
n
n个收益的新均值:
Q
n
+
1
=
1
n
∑
i
=
1
n
R
i
=
1
n
(
R
n
+
∑
i
=
1
n
−
1
R
i
)
=
1
n
(
R
n
+
(
n
−
1
)
1
n
−
1
∑
i
=
1
n
−
1
R
i
)
=
1
n
(
R
n
+
(
n
−
1
)
Q
n
)
=
1
n
(
R
n
+
n
Q
n
−
Q
n
)
=
Q
n
+
1
n
[
R
n
−
Q
n
]
给近期的收益赋予比过去很久的收益更高的权值就是一种合理的处理方式,最流行的方法之一是使用固定步长。比如,用于更新
n
−
1
n-1
n−1个过去的收益均值Q_{n}的增量更新规则可以改为:
Q
n
+
1
=
Q
n
+
α
[
R
n
−
Q
n
]
Q_{n+1} = Q_{n} + \alpha[R_n - Q_n]
Qn+1=Qn+α[Rn−Qn]
随机逼近理论中的一个著名结果给出了保证收敛概率为1所需的条件:
∑
n
=
1
∞
α
n
(
a
)
=
∞
且
∑
n
=
1
∞
a
n
2
(
a
)
<
∞
\sum_{n = 1}^{\infty}\alpha_n(a) = \infty 且 \sum_{n=1}^{\infty}a_n^{2}(a)<\infty
n=1∑∞αn(a)=∞且n=1∑∞an2(a)<∞ 第一个条件是要求保证有足够大的步长,最终客服任何初始条件或随机波动。第二个条件保证最终步长变小,以保证收敛。
一个有效的方法是按照以下公式选择动作:
A
t
≐
arg
min
a
[
Q
t
(
a
)
+
c
l
n
t
N
t
(
a
)
]
A_t \doteq \mathop{\arg\min}\limits_{a}\left[Q_t(a) + c\sqrt{\frac{ln\ t}{N_t(a)}}\right]
At≐aargmin[Qt(a)+cNt(a)lnt] 其中
l
n
t
ln\ t
lnt表示
t
t
t的自然对数,
N
t
(
a
)
N_t(a)
Nt(a)表示在时刻
t
t
t之前动作
a
a
a被选择的次数。
c
c
c是一个大于0的数,它控制试探的程度。如果
N
t
(
a
)
=
0
N_t(a) = 0
Nt(a)=0,则
a
a
a就被任务是满足最大化条件的动作。
这种基于置信度上界的动作选择的思想是,平方根项是对
a
a
a动作值估计的不确定性或方差的度量。
UCB(置信度上界)算法比较难处理非平稳问题,另一方面难处理打的状态空间。
梯度赌博机算法
在本节中,我们针对每个动作
a
a
a考虑学习一个数值化的偏好函数
H
t
(
a
)
H_t(a)
Ht(a)。
如果我们给每一个动作的偏好函数都加上1000,那么对于按照softmax分布确定的动作概率没有任何影响:
P
r
{
A
t
=
a
}
≐
e
H
t
(
a
)
∑
b
=
1
k
e
H
t
(
a
)
≐
π
t
(
a
)
Pr\{A_t = a\}\doteq\frac{e^{H_t(a)}}{\sum_{b=1}^{k}e^{H_t(a)}}\doteq\pi_t(a)
Pr{At=a}≐∑b=1keHt(a)eHt(a)≐πt(a) 其中,
π
t
(
a
)
\pi_t(a)
πt(a)是一个新的且重要的定义,用来表示动作
a
a
a在时刻
t
t
t时被选择的概率。所有偏好函数的初始值都是一样的,所以每个动作被选择的概率是相同的。
基于梯度上升思想,提出一种自然学习算法。在每个步骤中,在选择动作
A
t
A_t
At并获得
R
t
R_t
Rt之后,偏好函数将会按如下方式更新:
H
t
+
1
(
A
t
)
≐
H
t
(
A
t
)
+
α
(
R
t
−
R
‾
t
)
(
1
−
π
t
(
A
t
)
)
,
以及
H
t
+
1
(
a
)
≐
H
t
(
a
)
−
α
(
R
t
−
R
‾
t
)
π
t
(
a
)
,
对所有
a
≠
A
t
H_{t+1}(A_t) \doteq H_t(A_t)+\alpha(R_t-\overline{R}_{t})(1-\pi_t(A_t)),\ \ 以及\\ H_{t+1}(a) \doteq H_t(a) - \alpha(R_t - \overline{R}_t)\pi_t(a) ,\ \ 对所有a\neq A_t
Ht+1(At)≐Ht(At)+α(Rt−Rt)(1−πt(At)),以及Ht+1(a)≐Ht(a)−α(Rt−Rt)πt(a),对所有a=At 其中,
α
\alpha
α是一个大于0的数,表示步长。
R
‾
t
\overline{R}_t
Rt项作为比较收益的一个基准项。如果收益高于它,那么在未来选择动作
A
t
A_t
At的概率就会增加,反之概率就会降低。未选择的动作被选择的概率上升。