强化学习入门1—多臂老虎机问题

602 阅读5分钟

本节主要是对sutton大神的《强化学习》这本书的相关内容做了一些笔记,简单介绍了bandits问题的解决思路。

问题描述

多臂老虎机问题即Multi-armed Bandits。是强化学习当中非常经典的问题。

多臂老虎机源于赌博学,问题的描述是这样子的:

一个赌徒,要去赌场玩老虎机,他发现赌场里有一排老虎机,外表长得是一模一样,但是每个老虎机赢钱的概率却不一样,他不知道每个老虎机赢钱的概率分布是什么,那么对这个想要发大财的赌徒来说,每次该选择哪个老虎机才可以做到最大化奖励呢?

我们把选择哪个老虎机看成一个动作 aa,每个动作对应一个价值 q(a)q(a),用该动作产生的奖励的期望来表示。那么可以把问题写成数学形式:

q(a)=E[RtAt=a]q(a)=E[R_t|A_t=a]

其中,AtA_t 表示t时刻执行的动作,RtR_t 表示奖励。那这个期望要如何进行估计?最简单的方法就是计算实际奖励的平均值:

Qt(a)=t时刻前执行动作a得到的收益总和t时刻前执行a的次数Q_t(a)=\dfrac{t时刻前执行动作a得到的收益总和}{t时刻前执行a的次数}

这种估计方法也叫采样平均法。因为每一次的估计都是对相关奖励的平均。我们进一步只考虑动作 aa,简化一下符号,假设 RiR_i 表示该动作被执行 ii 次后获得的奖励,QnQ_n 表示该动作被选择执行 n1n-1 次后,第 nn 次被执行的价值的估计值,则有

Qn+1=1ni=1nRi=1n(Rn+(n1)1n1i=1n1Ri)=1n(Rn+(n1)Qn)=Qn+1n[RnQn]=Qn+α[RnQn]\begin{aligned} Q_{n+1}&= \dfrac{1}{n}\sum_{i=1}^n R_i \\ &= \dfrac{1}{n}( R_n+(n-1)\dfrac{1}{n-1}\sum_{i=1}^{n-1} R_i) \\ &= \dfrac{1}{n}( R_n+(n-1)Q_n) \\ &=Q_n+\dfrac{1}{n}[R_n-Q_n] \\ &=Q_n+\alpha[R_n-Q_n] \end{aligned}

此处的步长 α\alpha 就是 1n\frac{1}{n} 。像这样步长固定且统一,也就是采样平均法,可以消除采样的偏差。此外,步长也可以是其它的[0,1]区间的参数

动作选择

在动作选择上有两个比较重要的概念,一个是试探(exploration),一个是开发(exploitation)。我们在动作选择时,经常会对每个动作进行估值,以方便衡量动作的好坏。而价值高的动作称为贪心的动作。开发就是选择当前你所知道的关于动作的价值的全部知识,也就是选择贪心的动作,试探则是表示选择非贪心的动作。

在试探过程中,短期的奖励可能较低,但是长期来看,当试探到更优的更优的动作时,带来的收益要比一直按当前策略开发动作的收益大。但是试探也有个缺点,就是需要花很多时间。开发和试探是不可能在一次动作选择中同时进行的,所以如何平衡好试探和开发,也是动作选择里面的一个重要问题。

ϵgreedy\epsilon-greedy

前面所讲的动作的选择上采用一种贪心算法,其实就叫 ϵgreedy\epsilon-greedy 算法。

At=argmaxaQt(a)A_t=\arg\max_a Q_t(a)

具体来说就是最大化当前奖励, 大多数下对动作进行贪心的选择,只有在极小的概率 ϵ\epsilon 时才跳出贪心,在其它动作中随机选择。

UCB算法

还有一种动作选择的算法,叫UCB算法(upper confidence bound),即基于置信度上界的方法。因为贪心动作总是只顾眼前的最大奖励,缺少对长远动作的试探,可能会错过最优的动作,而且 ϵgreedy\epsilon-greedy 在探索上是随机的,实际上有些动作已经被选择多次了,相对来说不确定性小,而那些不确定的动作还需要被多次探索。UCB则是考虑这一点,将奖励值与动作的不确定性也考虑进去,如下形式:

At=argmaxa[Qt(a)+clntNt(a)]A_t=\arg\max_a [Q_t(a)+c\sqrt{\dfrac{lnt}{N_t(a)}}]

其中,c表示一个大于0 的常数,用于控制试探的程度,Nt(a)N_t(a) 表示t时刻前动作a被选择的次数。若 Nt(a)=0N_t(a)=0 ,则a就是满足最大化的动作。UCB的基本思想是,引入置信区间。参数c决定置信水平,简单来说就是决定不确定性的程度。式中右边的平方根项是对动作a的估计值的不确定性度量。随着a被选择的次数增加,也就是 Nt(a)N_t(a) 增大,右边项就会减小,置信区间就变窄,不确定性就减小,就是说a不再容易被选中,而均值大的也就是价值大的动作则倾向于被选择。另外,如果每次a都没被选择,但随着时间t的增长,右边项的分子也增大,置信区间就变宽,后面再进行选择时a的不确定性就得到增加,也就是说a也有可能再被选中。

梯度赌博机算法

以上的算法都是考虑每个动作的价值来选择动作,梯度赌博机算法换了个思路,不直接考虑动作的价值,而是针对每个动作a,引入一个数值化的偏好函数 Ht(a)H_t(a),考虑一个动作对另一个动作的相对偏好。Ht(a)H_t(a) 越大,动作就越倾向于被选择。不过值得注意的是 Ht(a)H_t(a) 与奖励值无关了,只和一个动作对另一个动作有关。tt 时刻动作 aa 被选取的概率可以用一个softmax分布来表示:

Pr(At=a)=eHt(a)b=1keHt(b)=πt(a)Pr(A_t=a)=\dfrac{e^{H_t(a)}}{\sum^k_{b=1}e^{H_t(b)}}=\pi_t(a)

随机梯度上升更新偏好函数:

Ht+1(At)=Ht(At)+α(RtRt)(1π(At))Ht+1(a)=Ht(a)+α(RtRt)π(a)  for  all  aAtH_{t+1}(A_t)=H_t(A_t)+\alpha(R_t-\overline{R}_t)(1-\pi(A_t)) \\ H_{t+1}(a)=H_t(a)+\alpha(R_t-\overline{R}_t)\pi(a) \;for\; all\;a\neq A_t

Rt\overline{R}_t 表示t时刻奖励的均值,如果选择了动作 AtA_t 后奖励大于当前均值,那该动作下一时刻被选择的概率就会增加,同时其它没有被选择的动作的概率就反方向更新,反之概率降低。这部分可以参考书上的详细推导。

还有一种贝叶斯方法(也叫Thompson采样、后验采样),先假定已知动作价值的初始分布,再每次动作选择后更新分布。

小结

试探和开发如何平衡是一个重要的问题。ϵgreedy\epsilon-greedy 贪心算法,就是随机进行动作选择,不考虑试探;UCB算法将动作的不确定性考虑进去,通过每个时刻对那些那些较少样本的动作进行优先选择来实现试探。梯度赌博机算法换了个思路,不估计动作价值了,引入偏好函数,使用softmax分布来概率性的选择动作。

参考

  1. sutton.Barto.《强化学习(第二版)》