求通俗解释下bandit*是个什么东西?

  在说bandit之前先考虑一个实际问题:假设你来到一个新的城市,你刚开始选择去哪吃饭可能随机选一选,你大概会知道哪些店比较符合你的口味。当你有了一些基本的判断之后,你是会选择吃原来觉得好吃的店呢?还是探索你从来都没有去过的店呢?从来都没有去过的店你可能会觉得更好吃,也有可能不会。人的选择一般都是探索一点点,大部分时候都会选择以前觉得还可以的店。这中间就有个度的问题。在计算机中怎么量化这个度呢,其实还是蛮难的。

  可以看出上述问题明显是一个决策性问题,并且是单步决策问题,在强化学习中当前所采取的动作会影响之后的决策,甚至有时候为了获取未来期望的最大回报,我们当前决策可能并不会采取能够获得及时奖励最大的那个动作,像下围棋这种是连续决策问题。单步决策就只有一个状态,选择某个动作,然后游戏结束,开始新一轮游戏。因此Multi-armed Bandit相关的算法的关键都在于如何平衡探索和利用(trade off exploration and exploitation)。这类问题的建模过程可以被用于其它领域,比如像逛淘宝,买东西等等都可以建模成此类问题。甚至可以用于药物研发:

  在药物设计问题上面,开发一款药,不同的成分比例对病人的实际应用效果不一样,那究竟是什么样的比例能够把病人快速治好呢?此时动作就变成了选择某个成分的药品,奖励来自病人的反馈(是否痊愈,以及痊愈程度),我们要做的事情就是用最少的病人,发现这个药物的成分的最佳比例。

  bandit*描述的就是这样一类问题的数学模型。(下文对其基本算法展开说明):

Stochastic Bandits

  让我们考虑一个最基本的Stochastic Bandits问题,定义如下:

  状态集合为single stateS={s}S=\{s\};一个动作集合AA,动作此时对应arms,采取某个动作(或者选中某个arm)时,将会得到一个及时奖励的反馈,通常是属于[0,1][0,1]的一个标量。

  与传统的强化学习不一样的地方在于这里没有转移函数(transition function),因为其只有一个单个的状态。智能体需要学习的是随机的奖励函数stochastic reward function。也就是说智能体在采样过程中,依据采样数据学习奖励函数分布,从而进一步指导接下来的动作(如果知道某个arm能够获得更多的奖励,那之后就一直选择这个arm,就能获得更多的奖励)。

  对于多臂*,描述起来都是比较简单的一个问题,但是最优解求解比较困难,对于上述问题看起来就没有什么思路。

  • Greedy strategy

  多想一下可能会有一个贪婪策略(greedy strategy),就是选择当前平均奖励最高的那个arm,但是这种贪婪策略就没有考虑探索,比如有两个arm,当选择了其中一个arm-1这次得到奖励1,而另一个arm-2奖励为0,之后依据贪婪策略就一直选择arm-1,但arm-1实际的奖励为1的概率为0.1arm-2奖励为1的概率0.9低呢?只不过刚好第一次被选中了而已,就很容易丢失掉探索,导致得到一个次优解。

  • ε\varepsilon-greedy

  而ε\varepsilon-greedy方式说的是以一个ε\varepsilon概率随机选择arm,而1ε1-\varepsilon概率选择greedy策略,也就是选择当前平均奖励最高的那个arm。由此可以看出收敛率(多快找到最优的arm)会取决于ε\varepsilon。一旦找到最优的arm,

  我们要衡量算法的好坏的话,需要定义一个指标,遗憾值(Regret)。

  定义R(a)R(a)为某个arm的实际平均奖励值(或者称之为期望奖励)。如果我们知道了每个arm的平均奖励值,那我们可以找到具有最高平均奖励的那个arm,即:

r=maxaR(a) r^{*}=\max_{a}R(a)

  也就找到了具有最高平均奖励所对应的动作aa

a=argmaxaR(a) a^{*} = arg\max_{a}R(a)

  但是我们并不知道每个arm的实际真实平均奖励R(a)R(a),但是我们可以定义一个loss,用于衡量采取某个动作的好坏。对于每个动作与最优的动作比较,其二者之差可以定义为loss

loss(a)=rR(a) loss(a)=r^{*}-R(a)

  nn time step下的期望累计遗憾可表示为:

Lossn=t=1nloss(at) Loss_{n}=\sum_{t=1}^{n}loss(a_{t})

理论分析

  我们之前在讨论strategy的时候说过ε\varepsilon-greedy策略,那在定义好了衡量指标遗憾值regret时如何来进行理论分析呢?分析其本质规律。

  • 如果ε\varepsilon 是个常量,time step足够大的话,Pr(ata)εPr(a_{t} \neq a^{*}) \approx \varepsilon(近似随机选择的arm都会后悔regret),此时的期望累计遗憾值 Losst=1nε=O(n)Loss \approx \sum_{t=1}^{n} \varepsilon =O(n)(这里只需要其是线性的就可以)。
  • 如果 εt1/t\varepsilon_{t} \propto 1/t,也就是随着time step增加,ε\varepsilon逐渐收敛。time step足够大的话,Pr(ata)εt=O(1t)Pr(a_{t} \neq a^{*}) \approx \varepsilon_{t}=O(\frac{1}{t}),也就是说随着time step的增加,次优解会逐渐减少,此时的期望累计遗憾值 Losst=1n1t=O(logn)Loss \approx \sum_{t=1}^{n} \frac{1}{t} =O(log n)(这里只需要其是对数级的就可以)。

  线性级的遗憾值无法收敛,是无法得到最优解的,只能得到一个次优解。因此我们期望说能够找到一个遗憾值能尽快收敛的策略,若εt1/t\varepsilon_{t} \propto 1/t是可以使得遗憾值达到收敛的。

Empirical mean

  那经验平均奖励R~(a)\tilde{R}(a)与真实的平均奖励R(a)R(a)差多少呢?如果其两者差值存在一个上界(upper bound),如R(a)R~(a)bound|R(a)-\tilde{R}(a)| \leq \text{bound},随着数据的采集,上界逐渐收敛:limnUBn(a)=R(a)\lim _{n \rightarrow \infty} U B_{n}(a)=R(a),那经验平均奖励也将逼近真实的奖励。此时的最优算法求解就是在每一步选择最大的upper bound对应的那个arm,即 argmaxaUBn(a)\operatorname{argmax}_{a} U B_{n}(a)。因此当upper bound收敛的时候,由于一直选取最大的upper bound对应的那个arm,我们得到的最优动作就是aa^{*}

  此时的问题就在于我们通过sample的方法是无法得到确定的upper bound的。就是基于采样的方法并不能得到真实的每个arm对应的奖励分布。我们可以采用概率的方法来表示,就是在采样过程中,R(a)R(a)小于等于上界是以一定的概率出现的,如:Pr(R(a)f(a))1δ\operatorname{Pr}(R(a) \leq f(a)) \geq 1-\delta,依据霍夫丁不等式(Hoeffding’s inequality)有:

Pr(R(a)R~(a)+log(1δ)2na)1δ\operatorname{Pr}(R(a) \leq \tilde{R}(a)+\sqrt{\frac{\log \left(\frac{1}{\delta}\right)}{2 n_{a}}}) \geq 1-\delta

  其中 nan_{a}arm a尝试的次数。δn\delta_{n}通常设置为1/n41/n^{4},使得算法收敛快一些。基于霍夫丁上界我们可以得到选择动作的最优策略:

求通俗解释下bandit*是个什么东西?

  尽管上述算法理论上有收敛性保证,但是需要sample多次。

  Bayesian Bandits能够更好地描述不确定性,在智能体平衡探索和利用的时候也是在决策不确定性,当智能体选择探索的时候不确定性更大一点,当选智能体择利用以往经验知识的时候不确定性就更小一点。用贝叶斯的方法来描述这种不确定性分布就是bayesian bandits。另一种能够获取更多状态信息的bandits方法称之为Contextual Bandits

Bayesian Bandits

  在开始贝叶斯多臂*之前我们需要先定义贝叶斯学习(Bayesian Learning)。

  当我们采取某个动作aa时,我们能够得到一个随机的奖励值rar^{a},它是从某个分布中采样得到的。也就是说奖励的分布是不确定的,服从某个参数分布θ\thetaPr(ra;θ)Pr(r^{a};\theta)。而我们关心的是这个随机奖励Pr(ra;θ)Pr(r^{a};\theta)的期望值R(a)=E[ra]R(a)=E[r^{a}]

  因此我们可以把这种不确定性表述为一个先验分布Pr(θ)Pr(\theta),我们需要做的事情就是通过采样获取数据 r1a,r2a,,rnar_{1}^{a},r_{2}^{a},\cdots,r_{n}^{a},依据这些采样得到的结果去估算后验分布Pr(θr1a,r2a,,rna)Pr(\theta|r_{1}^{a},r_{2}^{a},\cdots,r_{n}^{a})。一旦知道这个后验分布,也就是求解出了bandits的奖励分布。那这个后验分布怎么求呢?依据贝叶斯定理有:

Pr(θr1a,r2a,,rna)Pr(θ)Pr(r1a,r2a,,rnaθ)\operatorname{Pr}\left(\theta | r_{1}^{a}, r_{2}^{a}, \ldots, r_{n}^{a}\right) \propto \operatorname{Pr}(\theta) \operatorname{Pr}\left(r_{1}^{a}, r_{2}^{a}, \ldots, r_{n}^{a} | \theta\right)

  假设我们已经求得这个后验分布,我们就可以去估计下一个时刻的奖励rar^{a}的分布:

Pr(rar1a,r2a,,rna)=θPr(ra;θ)Pr(θr1a,r2a,,rna)dθ\operatorname{Pr}\left(r^{a} | r_{1}^{a}, r_{2}^{a}, \ldots, r_{n}^{a}\right)=\int_{\theta} \operatorname{Pr}\left(r^{a} ; \theta\right) \operatorname{Pr}\left(\theta | r_{1}^{a}, r_{2}^{a}, \ldots, r_{n}^{a}\right) d \theta

  而我们关心的是每个arm的平均奖励R(a)R(a),因此我们需要依据采样所得到的数据去估计平均奖励,如果θ\theta是期望奖励 θ=R(a)\theta=R(a),有:

Pr(R(a)r1a,r2a,,rna)=Pr(θr1a,r2a,,rna)\operatorname{Pr}\left(R(a) | r_{1}^{a}, r_{2}^{a}, \ldots, r_{n}^{a}\right)=\operatorname{Pr}\left(\theta | r_{1}^{a}, r_{2}^{a}, \ldots, r_{n}^{a}\right)

  到此,我们就可以计算最优策略。与之前的UCB算法对比:

  • UCB解决arm奖励分布不确定性用的是bound的方式,通过迭代求解bound来获得真实的期望奖励R(a)R(a)Pr(R(a) bound (r1a,r2a,,rna))1δ\operatorname{Pr}\left(R(a) \leq \text { bound }\left(r_{1}^{a}, r_{2}^{a}, \dots, r_{n}^{a}\right)\right) \geq 1-\delta

  • Bayesian techniques:并不通过求解upper bound,而是直接对其进行建模求解,直接求解arm奖励分布的概率。

  • Coin Example

  举个例子,假设我们有两枚硬币C1C_{1}C2C_{2}。两枚硬币head朝上的概率不一样,可表示为:

R(C1)=Pr(C1= head )R(C2)=Pr(C2= head )\begin{array}{l} R\left(C_{1}\right)=\operatorname{Pr}\left(C_{1}=\text { head }\right) \\ R\left(C_{2}\right)=\operatorname{Pr}\left(C_{2}=\text { head }\right) \end{array}

  期望在kk次掷币过程中最大化head的次数。那每次掷币我们因该选择哪个coin呢?可以量化每个coin的奖励分布rC1,rC2r^{C_{1}},r^{C_{2}}会满足一个伯努利分布{0,1}\{0,1\}。我们可以用一个参数θ\theta表示获得奖励的分布:

  1. Pr(rC1;θ1)=θ1=R(C1)Pr(r^{C_{1}};\theta_{1})=\theta_{1}=R(C_{1})
  2. Pr(rC2;θ2)=θ2=R(C2)Pr(r^{C_{2}};\theta_{2})=\theta_{2}=R(C_{2})

  若我们知道θ\theta的真实值,我们可以依据θ\theta来选择能够获得平均奖励最大的coin。设定θ\theta的先验分布Pr(θ)Pr(\theta)beta分布,则有:

Beta(θ;α,β)θα1(1θ)β1\operatorname{Beta}(\theta ; \alpha, \beta) \propto \theta^{\alpha-1}(1-\theta)^{\beta-1}

  其中α1\alpha -1为掷到head的次数,β1\beta -1为尝试(tails)的次数,能拿到的奖励的期望值为E(θ)=αα+βE(\theta)=\frac{\alpha}{\alpha + \beta}

  获得了θ\theta的先验分布Pr(θ)=Beta(θ;α,β)θα1(1θ)β1\operatorname{Pr}(\theta)=\operatorname{Beta}(\theta ; \alpha, \beta) \propto \theta^{\alpha-1}(1-\theta)^{\beta-1}之后我们就可以计算其后验分布:

Pr(θhead)Pr(θ)Pr(headθ)θα1(1θ)β1θ=θ(α+1)1(1θ)β1Beta(θ;α+1,β)\begin{aligned} \operatorname{Pr}(\theta | \text {head}) & \propto \operatorname{Pr}(\theta) \quad \operatorname{Pr}(\text {head} | \theta) \\ & \propto \theta^{\alpha-1}(1-\theta)^{\beta-1} \quad \theta \\ &=\theta^{(\alpha+1)-1}(1-\theta)^{\beta-1} \\ & \propto \operatorname{Beta}(\theta ; \alpha+1, \beta) \end{aligned}

  和

Pr(θtail)Pr(θ)Pr(tailθ)θα1(1θ)β1(1θ)=θα1(1θ)(β+1)1Beta(θ;α,β+1)\begin{aligned} \operatorname{Pr}(\theta | \text {tail}) & \propto \operatorname{Pr}(\theta) \quad \operatorname{Pr}(\text {tail} | \theta) \\ & \propto \theta^{\alpha-1}(1-\theta)^{\beta-1}(1-\theta) \\ &=\theta^{\alpha-1}(1-\theta)^{(\beta+1)-1} \\ & \propto \operatorname{Beta}(\theta ; \alpha, \beta+1) \end{aligned}

Thompson sampling

  当我们能够获得后验分布时,通过采样可以获得每个动作aa的后验平均奖励:

R1(a),Rk(a)Pr(R(a)r1a,,rna)R_{1}(a), \ldots R_{k}(a) \sim \operatorname{Pr}\left(R(a) | r_{1}^{a}, \ldots, r_{n}^{a}\right)

  然后估计经验平均奖励:

R^(a)=1ki=1kRi(a)\hat{R}(a)=\frac{1}{k} \sum_{i=1}^{k} R_{i}(a)

  选择动作的时候抽取能获得最大的奖励所对应的那个action a=argmaxaR^(a)a=argmax_{a}\hat{R}(a) 就可以:

求通俗解释下bandit*是个什么东西?

  与Greedy Strategy对比,两者的不同就在于经验平均奖励一个是来自后验分布概率计算出来的R^(a)=1ki=1kRi(a)\hat{R}(a)=\frac{1}{k} \sum_{i=1}^{k} R_{i}(a),一个是基于实际观测所得到的R~=1ni=1mria\tilde{R}=\frac{1}{n}\sum_{i=1}^{m}r_{i}^{a}。因此Thompson Sampling基于后验概率算出来的奖励是具有不确定性的,因此探索程度会比贪婪策略更好,而随着观察数据的增多,模型越来越准确,这种探索也会随之减少

Contextual Bandits

  在很多场合Context会提供更多的额外信息,比如像个性化推荐系统,Context会包含用户的年龄,性别,居住地等信息,而这些信息对个性化推荐系统都能起到辅助的作用。

  contextual bandits用数学的方式描述为:

  • SS:状态集合,由一个特征向量描述xS=(x1S,x2S,,xkS)x^{S}=\left(x_{1}^{S}, x_{2}^{S}, \ldots, x_{k}^{S}\right)
  • AA:动作集合,由一个与每个动作相关的特征向量描述xa=(x1a,x2a,,xla)x^{a}=\left(x_{1}^{a}, x_{2}^{a}, \ldots, x_{l}^{a}\right)
  • 奖励空间 R\mathbb{R}

  同样的是没有状态转移函数的。而我们要做的是找到一个策略π:xSa\pi : x^{S}\rightarrow a,它能够最大化期望奖励E(rs,a)=E(rxs,xa)E(r | s, a)=E\left(r | \boldsymbol{x}^{s}, \boldsymbol{x}^{a}\right)。为了能够获得奖励函数的模型,可以采用函数近似的方法,比如线性近似R~w(x)=wTx\tilde{R}_{w}(x)=w^{T} x和非线性近似R~w(x)=neuralNet(x;w)\tilde{R}_{\boldsymbol{w}}(\boldsymbol{x})=neuralNet (\boldsymbol{x} ; \boldsymbol{w}),其中x=(xS,xa)x=(x^{S},x^{a})

  在线性近似的情况下采用贝叶斯的方法对其进行求解。假设参数w\boldsymbol{w}的先验分布为高斯分布,即:

pdf(w)=N(w0,λ2I)exp(wTw2λ2)p d f(\boldsymbol{w})=N\left(\boldsymbol{w} | 0, \lambda^{2} I\right) \propto \exp \left(-\frac{\boldsymbol{w}^{T} w}{2 \lambda^{2}}\right)

  一旦我们知道了参数w\boldsymbol{w},我们可以计算奖励的概率分布:

pdf(rx,w)=N(rwTx,σ2)exp((rwTx)22σ2)p d f(r | \boldsymbol{x}, \boldsymbol{w})=N\left(r | \boldsymbol{w}^{T} \boldsymbol{x}, \sigma^{2}\right) \propto \exp \left(-\frac{\left(r-\boldsymbol{w}^{T} \boldsymbol{x}\right)^{2}}{2 \sigma^{2}}\right)

  基于贝叶斯定理可以计算后验概率求得参数w\boldsymbol{w}

pdf(wr,x)pdf(w)Pr(rx,w)exp(wTw2λ2)exp((rwTx)22σ2)=N(wμ,Σ)\begin{array}{l} p d f(\boldsymbol{w} | r, x) \propto p d f(\boldsymbol{w}) \operatorname{Pr}(r | x, \boldsymbol{w}) \\ \propto \exp \left(-\frac{\boldsymbol{w}^{T} \boldsymbol{w}}{2 \lambda^{2}}\right) \exp \left(-\frac{\left(r-\boldsymbol{w}^{T} x\right)^{2}}{2 \sigma^{2}}\right) \\ =N(\boldsymbol{w} | \mu, \Sigma) \end{array}

  其中μ=σ2xr\mu=\sigma^{-2}\sum xrΣ=(σ2xxT+λ2I)1\Sigma=\left(\sigma^{-2} x x^{T}+\lambda^{-2} I\right)^{-1}。到此整个的求解框架就差不多完事了。假设我们有一个状态动作对(xS,xa)=x(x^{S},x^{a})=x,我们期望去预测它的奖励rr,可以采用预测后验概率分布的方式得到:

pdf(rx)=wN(rwTx,σ2)N(wμ,Σ)dw=N(rσ2xTμ,xTΣx)\begin{aligned} p d f(r | \boldsymbol{x}) &=\int_{\boldsymbol{w}} N\left(r | \boldsymbol{w}^{T} \boldsymbol{x}, \sigma^{2}\right) N(\boldsymbol{w} | \boldsymbol{\mu}, \Sigma) d w \\ &=N\left(r | \sigma^{2} \boldsymbol{x}^{T} \boldsymbol{\mu}, \boldsymbol{x}^{T} \boldsymbol{\Sigma} \boldsymbol{x}\right) \end{aligned}

  拿到了奖励分布之后再结合UCBThomson sampling得到基于线性高斯的UCB算法和线性高斯的汤普森采样算法。

  • UCBPr(r<σ2xTμ+cxTΣx)>1δ\operatorname{Pr}\left(r<\sigma^{2} \boldsymbol{x}^{T} \boldsymbol{\mu}+c \sqrt{\boldsymbol{x}^{T} \boldsymbol{\Sigma} \boldsymbol{x}}\right)>1-\delta,其中c=1+ln(2/δ)/2c=1+\sqrt{\ln (2 / \delta) / 2}

求通俗解释下bandit*是个什么东西?

  • Thomson samplingr~N(rσ2xTμ,xTΣx)\tilde{r} \sim N\left(r | \sigma^{2} \boldsymbol{x}^{T} \boldsymbol{\mu}, \boldsymbol{x}^{T} \boldsymbol{\Sigma} \boldsymbol{x}\right)

求通俗解释下bandit*是个什么东西?