强化学习入门1—多臂老虎机Multi-armed Bandits

目录

  • Multi-armed Bandits 多臂老虎机
    • 问题描述
    • 动作选择
      • ϵ − g r e e d y \epsilon-greedy ϵgreedy
      • UCB算法
      • 梯度赌博机算法
    • 小结

Multi-armed Bandits 多臂老虎机

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

问题描述

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

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

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

我们把选择哪个老虎机看成一个动作 a a a,每个动作对应一个价值 q ( a ) q(a) q(a),用该动作产生的奖励的期望来表示。那么可以把问题写成数学形式:
q ( a ) = E [ R t ∣ A t = a ] q(a)=E[R_t|A_t=a] q(a)=E[RtAt=a]
其中, A t A_t At 表示t时刻执行的动作, R t R_t Rt 表示奖励。那这个期望要如何进行估计?最简单的方法就是计算实际奖励的平均值:
Q t ( a ) = t 时 刻 前 执 行 动 作 a 得 到 的 收 益 总 和 t 时 刻 前 执 行 a 的 次 数 Q_t(a)=\dfrac{t时刻前执行动作a得到的收益总和}{t时刻前执行a的次数} Qt(a)=tata
这种估计方法也叫采样平均法。因为每一次的估计都是对相关奖励的平均。我们进一步只考虑动作 a a a,简化一下符号,假设 R i R_i Ri 表示该动作被执行 i i i 次后获得的奖励, Q n Q_n Qn 表示该动作被选择执行 n − 1 n-1 n1 次后,第 n n n 次被执行的价值的估计值,则有
Q n + 1 = 1 n ∑ i = 1 n 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 ) = Q n + 1 n [ R n − Q n ] = Q n + α [ R n − Q n ] \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} Qn+1=n1i=1nRi=n1(Rn+(n1)n11i=1n1Ri)=n1(Rn+(n1)Qn)=Qn+n1[RnQn]=Qn+α[RnQn]

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

动作选择

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

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

ϵ − g r e e d y \epsilon-greedy ϵgreedy

前面所讲的动作的选择上采用一种贪心算法,其实就叫 ϵ − g r e e d y \epsilon-greedy ϵgreedy 算法。
A t = arg ⁡ max ⁡ a Q t ( a ) A_t=\arg\max_a Q_t(a) At=argamaxQt(a)
具体来说就是最大化当前奖励, 大多数下对动作进行贪心的选择,只有在极小的概率 ϵ \epsilon ϵ 时才跳出贪心,在其它动作中随机选择。

UCB算法

还有一种动作选择的算法,叫UCB算法(upper confidence bound),即基于置信度上界的方法。因为贪心动作总是只顾眼前的最大奖励,缺少对长远动作的试探,可能会错过最优的动作,而且 ϵ − g r e e d y \epsilon-greedy ϵgreedy 在探索上是随机的,实际上有些动作已经被选择多次了,相对来说不确定性小,而那些不确定的动作还需要被多次探索。UCB则是考虑这一点,将奖励值与动作的不确定性也考虑进去,如下形式:
A t = arg ⁡ max ⁡ a [ Q t ( a ) + c l n t N t ( a ) ] A_t=\arg\max_a [Q_t(a)+c\sqrt{\dfrac{lnt}{N_t(a)}}] At=argamax[Qt(a)+cNt(a)lnt ]
其中,c表示一个大于0 的常数,用于控制试探的程度, N t ( a ) N_t(a) Nt(a) 表示t时刻前动作a被选择的次数。若 N t ( a ) = 0 N_t(a)=0 Nt(a)=0 ,则a就是满足最大化的动作。UCB的基本思想是,引入置信区间。参数c决定置信水平,简单来说就是决定不确定性的程度。式中右边的平方根项是对动作a的估计值的不确定性度量。随着a被选择的次数增加,也就是 N t ( a ) N_t(a) Nt(a) 增大,右边项就会减小,置信区间就变窄,不确定性就减小,就是说a不再容易被选中,而均值大的也就是价值大的动作则倾向于被选择。另外,如果每次a都没被选择,但随着时间t的增长,右边项的分子也增大,置信区间就变宽,后面再进行选择时a的不确定性就得到增加,也就是说a也有可能再被选中。

梯度赌博机算法

以上的算法都是考虑每个动作的价值来选择动作,梯度赌博机算法换了个思路,不直接考虑动作的价值,而是针对每个动作a,引入一个数值化的偏好函数 H t ( a ) H_t(a) Ht(a),考虑一个动作对另一个动作的相对偏好。 H t ( a ) H_t(a) Ht(a) 越大,动作就越倾向于被选择。不过值得注意的是 H t ( a ) H_t(a) Ht(a) 与奖励值无关了,只和一个动作对另一个动作有关。 t t t 时刻动作 a a a 被选取的概率可以用一个softmax分布来表示:
P r ( A t = a ) = e H t ( a ) ∑ b = 1 k e H t ( b ) = π t ( a ) Pr(A_t=a)=\dfrac{e^{H_t(a)}}{\sum^k_{b=1}e^{H_t(b)}}=\pi_t(a) Pr(At=a)=b=1keHt(b)eHt(a)=πt(a)
随机梯度上升更新偏好函数:
H t + 1 ( A t ) = H t ( A t ) + α ( R t − R ‾ t ) ( 1 − π ( A t ) ) H t + 1 ( a ) = H t ( a ) + α ( R t − R ‾ t ) π ( a )    f o r    a l l    a ≠ A t H_{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 Ht+1(At)=Ht(At)+α(RtRt)(1π(At))Ht+1(a)=Ht(a)+α(RtRt)π(a)foralla=At
R ‾ t \overline{R}_t Rt 表示t时刻奖励的均值,如果选择了动作 A t A_t At 后奖励大于当前均值,那该动作下一时刻被选择的概率就会增加,同时其它没有被选择的动作的概率就反方向更新,反之概率降低。这部分可以参考书上的详细推导。

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

小结

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

参考

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

你可能感兴趣的:(强化学习)