Multi-armed Bandits(多臂老虎机问题)

作者:微软亚洲研究院
链接:https://www.zhihu.com/question/53381093/answer/245802834
来源:知乎

https://mp.weixin.qq.com/s?__biz=MzAwMTA3MzM4Nw==&mid=2649441835&idx=1&sn=abf10e00dd2354a0f256620b9e1fcda9&chksm=82c0afafb5b726b9a4cdb4d9112deba1bfe72803b20fd5f10bd7dd00b798214fbce750d4503f#rd

赌场的老虎机有一个绰号叫单臂强盗(single-armed bandit),因为它即使只有一只胳膊,也会把你的钱拿走。而多臂老虎机(或多臂强盗)就从这个绰号引申而来。假设你进入一个赌场,面对一排老虎机(所以有多个臂),由于不同老虎机的期望收益和期望损失不同,你采取什么老虎机选择策略来保证你的总收益最高呢?这就是经典的多臂老虎机问题

这个经典问题集中体现了在线学习及更宽泛的强化学习中一个核心的权衡问题:我们是应该探索(exploration)去尝试的可能性,还是应该守成(exploitation)坚持目前已知的最好选择?在多臂老虎机问题中,探索意味着去玩还没玩过的老虎机,但这有可能使你花太多时间和金钱在收益不好的机器上;而守成意味着只玩目前为止给你收益最好的机器,但这又可能使你失去找到更好机器的机会。而类似抉择在日常生活中随处可见:去一个餐厅,你是不是也纠结于是点熟悉的菜品,还是点个新菜?去一个地方,是走熟知的老路还是选一条新路?而探索和守成的权衡就是在线学习的核心

多臂老虎机的提出和研究最早可以追述到上世纪三十年代,其研究模型和方法已有很多其中一类重要的模型是随机多臂老虎机,即环境给予的反馈遵从某种随机但未知的分布,在线学习的过程就是要学出这个未知分布中的某些参数,而且要保证整个学习过程的整体收益尽量高这其中最有名的一个方法是UCB(Upper Confidence Bound)方法,能够通过严格的理论论证说明UCB可达到接近理论最优的整体收益。

组合在线学习:组合优化和在线学习的无缝对接

介绍了多臂老虎机问题,那组合在线学习和它之间有何关联呢?我们继续来看一下组合多臂老虎机(CMAB)问题在组合多臂老虎机问题中,你一次拉动的不是一个臂,而是多个臂组成的集合,我们称之为超臂(super arm),原来的每个臂我们称之为基准臂(base arm),以示区别。拉完这个超臂后,超臂所包含的每个基准臂会给你一个反馈,而这个超臂整体也给你带来某种复合的收益。

那么如何解决组合多臂老虎机的问题呢?你可能首先想到的就是把每一个超臂看成是经典多臂老虎机问题中的一个臂。但是超臂是多个基准臂的组合,而这样组合的数目会大大超过问题本身的规模——组合问题中经典的组合爆炸现象,因此传统的方法并不适用。所以在线学习不能在超臂这个层次进行,而需要在基准臂层次上进行,并需要与离线组合优化巧妙地结合。我们在ICML2013的论文[2]中给出了组合多臂老虎机的一般框架和基于UCB方法的CUCB算法。CUCB算法将组合优化和在线学习无缝对接实现了前面图示中的反馈回路。较之前的涉及组合多臂老虎机的研究,我们的模型适用范围更广,尤其是我们通过给出收益函数的两个一般条件,能够涵盖非线性的收益函数,这是第一个能解决非线性多臂老虎机问题的方案。我们的工作,包括之后我们和他人的后续工作,都强调对在线学习部分和离线优化部分的模块化处理和无缝对接。也即我们将离线优化部分作为一个黑盒子神谕(oracle),这部分可以由具有相关领域知识的专家来完成。而一旦离线优化问题可以精确解决或近似解决,我们就可以把这个离线算法当作黑盒子拿过来和我们在线学习方法相结合,达到有严格理论保证的组合在线学习效果。这使得我们的方法可以适用于一大批已经有离线优化算法的组合在线学习问题,比如最短路径、最小生成树、最大匹配、最大覆盖等问题的在线学习版本,而不需要对每个问题单独再设计在线学习算法

在论文“Combinatorial Multi-Armed Bandit: GeneralFramework, Results and Applications”中,我们进一步将组合多臂老虎机模型扩展为允许有随机被触发臂的模型。这一模型可以被用于在线序列推荐、社交网络病毒式营销等场景中,因为在这些场景中前面动作的反馈可能会触发更多的反馈。然而在其理论结果中,我们包含了一个和触发概率有关的项,而这个项在序列推荐和病毒营销场景中都会过大,造成在线学习效果不好。在今年刚被录取的NIPS论文“ Improving Regret Bounds for Combinatorial Semi-Bandits with Probabilistically Triggered Arms and Its Applications”中,我们彻底解决了这个问题:一方面我们论证了序列推荐和病毒营销等满足某种特定条件的问题都不会有这个不好的项,另一方面我们指出在更一般的组合多臂老虎机中这个项又是不可避免的。这是目前研究可触发臂的组合多臂老虎机中最好的一般结果。

除此之外,我们还在与组合多臂老虎机相关的方面做了若干工作,比如如何在反馈受限情况下达到好的学习效果;如何解决先探索再找到最佳方案的组合探索问题;当离线优化基于贪心算法时,如果更好地将离线贪心算法和在线学习相结合;如何在有上下文的场景中解决组合序列推荐问题;以及当超臂的期望收益取决于每个基准臂的随机分布而不仅是每个基准臂的分布均值时,如何同样有效地进行组合在线学习。

[1] Sébastien Bubeck and Nicolò Cesa-Bianchi. Regret Analysis of Stochastic and Nonstochastic Multi-armed Bandit Problems. 

[2] Wei Chen, Yajun Wang, and Yang Wang. Combinatorial Multi-Armed Bandit: GeneralFramework, Results and Applications. 

[3] Tian Lin, Bruno Abrahao, Robert Kleinberg, John C.S. Lui, and Wei Chen. Combinatorial Partial Monitoring Game with Linear Feedback and its Applications. 

[4] Shouyuan Chen, Tian Lin, Irwin King, Michael R. Lyu, and Wei Chen. Combinatorial Pure Exploration of Multi-ArmedBandits. 

[5] Tian Lin, Jian Li, and Wei Chen. Stochastic Online Greedy Learning with Semi-bandit Feedbacks. 

[6] Wei Chen, Yajun Wang, Yang Yuan, and Qinshi Wang. Combinatorial Multi-Armed Bandit and Its Extension to Probabilistically Triggered Arms. 

[7] Shuai Li, Baoxiang Wang, Shengyu Zhang, and Wei Chen. Contextual Combinatorial Cascading Bandits. 

[8] Wei Chen, Wei Hu, Fu Li, Jian Li, YuLiu, and Pinyan Lu. Combinatorial Multi-Armed Bandit with General Reward Functions.

[9] Qinshi Wang, and Wei Chen. Improving Regret Bounds for Combinatorial Semi-Bandits with Probabilistically Triggered Arms and Its Applications.

作者:覃含章
链接:https://www.zhihu.com/question/53381093/answer/562235053
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

要了解MAB(multi-arm bandit),首先我们要知道它是强化学习(reinforcement learning)框架下的一个特例。至于什么是强化学习:

我们知道,现在市面上各种“学习”到处都是。比如现在大家都特别熟悉机器学习(machine learning),或者许多年以前其实统计学习(statistical learning)可能是更容易听到的一个词。那么强化学习的“学习”跟其它这些“学习”有什么区别呢?这里自然没有什么标准答案,我给这样一个解释(也可见Sutton & Barto第二章引言):在传统的机器学习中,主流的学习方法都是所谓的“有监督学习”(supervised learning),不管是模式识别,神经网络训练等等,你的分类器并不会去主动评价(evaluate)你通过获得的每个样本(sample)所进行的训练结果(反馈),也不存在主动选择动作(action)的选项(比如,可以选择在采集了一些样本之后去采集哪些特定的样本)。意思就是,在这些传统的机器学习方法中(实际上也包括其它无监督学习或者半监督学习的很多方法),你并不会动态的去根据收集到的已有的样本去调整你的训练模型,你的训练模型只是单纯被动地获得样本并被教育(instruct,作为对比,active learning主要就是来解决这一问题的)

而强化学习主要针对的是在一个可能不断演化的环境中,训练一个能主动选择自己的动作,并根据动作所返回的不同类型的反馈(feedback),动态调整自己接下来的动作,以达到在一个比较长期的时间段内平均获得的反馈质量。因此,在这个问题中,如何evaluate每次获得的反馈,并进行调整,就是RL的核心问题。

这么讲可能还比较抽象,但如果大家熟悉下围棋的AlphaGo,它的训练过程便是如此。我们认为每一局棋是一个episode(插曲,片段)。整个的训练周期就是很多很多个epsiode。那么每个episode又由很多步(step)构成。

动作——指的就是阿法狗每步下棋的位置(根据对手的落子而定)

反馈——每一次epsiode结束,胜负子的数目。

显然,我们希望能找到一个RL算法,使得我们的阿法狗能够在比较短的epsisode数目中通过调整落子的策略,就达到一个平均比较好的反馈。当然,对这个问题来说,我们的动作空间(action space,即可以选择的动作)和状态空间(state space,即棋盘的落子状态)的可能性都是极其大的。因此,AlphaGo的RL算法也是非常复杂的(相比于MAB的算法来说)。

至于什么是MAB/老虎机问题:

我们先考虑最基本的MAB问题。如上图所示,你进了一家赌场,假设面前有 K 台老虎机(arms)。我们知道,老虎机本质上就是个运气游戏,我们假设每台老虎机 i 都有一定概率 p_i 吐出一块钱,或者不吐钱( 概率1-p_i )。假设你手上只有 T 枚代币(tokens),而每摇一次老虎机都需要花费一枚代币,也就是说你一共只能摇 T 次,那么如何做才能使得期望回报(expected reward)最大呢?

这就是最经典的MAB场景。那么问题的核心是什么呢?自然,我们应该要假设 p_i 们是不太一样的(不然怎么摇都一样了),即有一些老虎机比较“好”(更容易吐钱),有一些则比较“差”(不太容易吐钱)。回到RL的框架,我们的动作是什么?即每次摇哪台老虎机。我们的反馈呢?即我们摇了某台特定的老虎机当回合可以观察它吐了钱没有

这里当然还有个重要的统计学/哲学问题:即我们是贝叶斯人(Bayesian)还是频率学家(frequentist)。对贝叶斯人来说,我们在一进入赌场就对每台老虎机扔钱的概率 p_i 就有一个先验分布(prior distribution)的假设了,比如一个很常见的我们可以用Beta分布。如果我们认为大概率 p_i 都应该是0.5,即对半开,而不太可能出现一些很极端的情况,我们就可以选择Beta(1,1)分布作为我们的先验分布。然后在我们真正摇了老虎机之后,根据相应的反馈,我们就可以调整 p_i 们相应的后验分布(posterior distribution)。比如如果某台机器摇了四五次一直吐不出钱,我们就应该将这台机器的吐钱概率的分布往左推,因为它的 p_i 大概率应该是小于0.5的。那么,你的任务便是要在有限的时间内找出 p_i 后验分布比较靠右的那些机器(因为他们更容易吐钱),并且尽可能多的去摇这些比较赚钱的机器

而如果你是频率学家,就没什么先验或者后验分布了,你假设你一开始对这些机器的吐钱概率一无所知。你认为每个机器的 p_i 是个确定的值。那么,你的任务就是要在有限的时间内找到那些高 p_i 的机器,并尽可能多的去摇它们,以获得更多的回报。那么这里我们注意到这类问题的一大特点,即我们只有 T 次摇机器的机会,如何去平衡这 T 次中exploration(探索)和exploitation(挖掘)的次数。探索意味着广度,比如如果你是频率学家,你一开始什么都不知道,你至少每个机器都需要稍微摇几次(假设 T>K ,不然问题就无法搞定了)才能对每个机器吐钱概率有个大概感觉。然后,你可能会缩小你的搜索范围,再几台机器里重点实验,最后可能就专门摇一台你觉得最容易吐钱的机器了。当然,我们之后会看到这种办法也未必是最好的。不过这个回答里我们不谈具体的算法,因此这个问题先抛给大家思考了。

本节最后,我们指出这个MAB问题可能的一些(更复杂的)变种。首当其冲的在于,我们前面的讨论默认了环境是不会变化的。而一些MAB问题,这个假设可能不成立,这就好比如果一位玩家发现某个机器的 p_i 很高,一直摇之后赌场可能人为降低这台机器吐钱的概率。在这种情况下,MAB问题的环境就是随着时间/玩家的行为会发生变化。这类问题,在合理的假设下,也是有不少研究和相应的算法的。目前做的最多的假设,也就是所谓的adversarial bandit(就不是stochastic bandit了),就是说这些 p_i 会被一个“对手”(也可以看成上帝)设定好。如果这是事先设定好,并且在玩家开始有动作之后也无法更改,我们叫做oblivious adversary setting; 如果这个对手在玩家有动作之后还能随时更改自己的设定,那就叫做adaptive adversary setting, 一般要做成zero-sum game了。此外,最近也有一些随机但nonstationary的假设下的工作。

另外MAB有一类很重要的变种,叫做contextual MAB(cMAB)。几乎所有在线广告推送(dynamic ad display)都可以看成是cMAB问题。在这类问题中,每个arm的回报会和当前时段出现的顾客的特征(也就是这里说的context)有关。同样,今天我们不展开讲cMAB,这会在之后花文章专门讨论。

另外,如果每台老虎机每天摇的次数有上限,那我们就得到了一个Bandit with Knapsack问题,这类问题以传统组合优化里的背包问题命名,它的研究也和最近不少研究在线背包问题的文章有关,之后我们也会专门讨论。还有很多变种,如Lipshitz bandit, 我们不再有有限台机器,而有无限台(它们的reward function满足利普西茨连续性)等等。。题主既然要最通俗的版本,所以这里就不赘述了,有兴趣深入了解的同学们可以考虑关注我的专栏系列文章,主要是让大家有更好的准备去读一些专门的书籍文献~

我从优化角度来说 bandit ,bandit 数学讲严格太多概率计算,十分不直观,所以用不太严谨的方式说。

问题定义:假设收益期望 Q(a)=\mathbf{E} [r|a] 的最优值点为 a^* ,一开始,我们不知道 Q 的具体数学表达式,Q 也不可导。我们只知道每次输入 a\in[1,K] ,系统黑盒就会按照某个未知分布 P(r|a) 返回 r,如何找到 a^* 呢?

作者:知乎用户
链接:https://www.zhihu.com/question/53381093/answer/564349938
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

举个 toy 点的例子,我们不妨给 a 空间分成三个桶 a_1,a_2,a_3 ,最笨的搜索策略就是暴力遍历各种 a,收集观测值,这样,每个 a 桶内都会累积一定的样本,比如:

a_1=[r_1, r_2, r_3] \\  a_2=[r_4, r_5] \\  a_3=[r_6, r_7, r_8, r_9]

剩下的就是用利用这些样本,依靠函数近似拟合出 Q(a),比如平均法: \bar{Q}(a_1) = \frac{1}{3}(r_1 + r_2 + r_3) \\

或者更加复杂的非线性回归方案:

\lim_{T \to \infty}\min_{\theta} \frac{1}{T}\sum_{t=1}^{T} |Q_{\theta}(a) - r_t(a)|^2 + \theta^2 \\

然后依靠泛化,取 \mathbf{argmax}_{a} Q(a) 作为 a^* 的近似解。

 

换到互联网的说法,就是上线一个流氓策略,调戏用户无限轮,拿到足够的标签,然后跑一个有监督回归任务,只要系统兜底不被击穿,暴力监督方案是一个非常落地其符合国情的算法。


显然,暴力遍历会在前期产生严重亏损,数学上,我们会用利用悔恨度量这种亏损: R=\sum_{t=1}^T Q(a^*) - \sum_{t=1}^T r_t(a_t)\\

也就是说,我们搜索最优点,从一无所知到有最终找到 a^* ,相比一开始就知道最优解是 a^* ,累积效益能够差多少的问题。这样也很容易理解,前期为了探索,瞎找是不可避免的,悔恨必然是一个随着 T 增大而增大的函数,所以我们不指望找到一个策略让悔恨变成零,而是希望找到某种策略,别让悔恨增长的过快。

 

下面用非常不严谨的数学,说下悔恨的渐进性质,以及策略迭代的方式。首先,每次迭代一轮策略,我们都可以计算每个 a 下的平均悔恨,比如迭代到第 9 步,有:

R(a_1)=Q(a^*) - \frac{1}{3}(r_1 + r_2 + r_3) \\   R(a_2)=Q(a^*) - \frac{1}{2}(r_4 + r_5) \\   R(a_3)=Q(a^*) - \frac{1}{4}(r_6 + r_7 + r_8 + r_9)

总的悔恨为 R = 3R(a_1) + 2R(a_2) + 4R(a_3) ,按照大数定律,我们知道 N 个有限样本做平均得到 \bar{Q}(a) ,和真实期望 Q(a) 之间存在一个 gap,这个 gap 由

|\bar{Q}(a) - Q(a)| \leq \frac{\epsilon}{\sqrt{N}} \\

衡量,根据这个 bound,每个 a 对应的悔恨有这么一个不等式:

R(a_1) < Q(a^*) - Q(a_1) + \frac{\epsilon}{\sqrt{3}}\\  R(a_2) < Q(a^*) - Q(a_2) + \frac{\epsilon}{\sqrt{2}} \\  R(a_3) < Q(a^*) - Q(a_3) + \frac{\epsilon}{\sqrt{4}} \

一般来说,T 步下的悔恨都有这么一个通用 bound,N_a 是 a 下的累计样本数:

R<\sum_{a} N_a\times(Q(a^*) - Q(a) + \frac{\epsilon}{\sqrt{N_a}}) \\

所以,要找到策略让悔恨尽量小,等效于不断调整 N_a ,也就是调解桶间样本的配比,让 R 的上界增长不要太快。

举个例子,如果配比是 1:1:1,一般只有随机策略才产生这种配比,那么悔恨上界几乎正比于 T,十分不好。

 

显然,新来一个样本,T+1 步的合理策略,就是找悔恨最小的那个桶,然后将其放入,实际就是选择 Q(a^*) - Q(a) + \frac{\epsilon}{\sqrt{N_a}} 比较小的桶,就给它多增加一个样本,相当于在高置信度下作如下优化选择

\max_a Q(a) - \frac{\epsilon}{\sqrt{N_a}} < \max_a\bar{Q}(a) + \alpha \frac{\epsilon}{\sqrt{N_a}} \\

不等式的右边,是要将 Q(a) 这种未知量,依靠高置信度因子 \alpha ,变成能够计算的量,这就是 Upper Confidence Bound (UCB) 的由来。数学上可以证明,UCB 方式下,悔恨增长方式正比于 \ln T 。至于 \epsilon 如何选择,这个需要一点细致计算。

contextual bandit

这种情况下,每个桶当中不仅累计了收益,还累积用户特征:

a_1=[x_1, x_2, x_3] \\  a_2=[x_4, x_5] \\  a_3=[x_6, x_7, x_8, x_9]

每个桶里,每个用户反馈分别为:

a_1=[r_1, r_2, r_3] \\  a_2=[r_4, r_5] \\  a_3=[r_6, r_7, r_8, r_9]

真实收益函数变成 Q(x, a) ,如果我们来了一个新用户 x_{10} ,单纯按照线性 contextual bandit 的算法结果来看,新来样本 x_{10} 的预估收益是加权平均,不再是等权平均。比如,我们预判新用户落到 a_1 桶会带来收益 q(x_{10}, a_1) ,简单来说是一个相似度和其它用户收益的加权和:

q(x_{10}, a_1) = r_1S(x_1, x_{10}) + r_2S(x_2, x_{10}) + r_3S(x_3, x_{10}) \\

如果利用 UCB 去调桶内用户样本配比,新用户将会按照如下方式进入桶内:

\mathbf{argmax}_{a} q(x, a) + \frac{\epsilon(x)}{\sqrt{N_a}} \\

说的通俗点,就是先查相似用户,然后再根据其它用户的反馈,估算新来用户的收益,然后加上点不确定度,合并以后最大化,然后把用户塞进去。有趣的是,单纯用户相似性加权这一点,在各种推荐里面都出现,不论数学出发点,还有论证有多绕,总是奇迹般存在这个影子。

理论上,contextual bandit 里面的悔恨非常依赖 S 函数,对于线性的 bandit,S 函数就是某种点乘相似度,不论 S 设计有多复杂,悔恨上界总会被拆分成两部分:

R<T|Q(x, a^*)- q(x, a^*)| + \sum_{a} N_a\times(q(x, a^*) - Q(x, a) + \frac{\epsilon(x)}{\sqrt{N_a}}) \\

第一部分的偏差,是我们建模的预估模型 q 没法拟合真实的 reward Q,模型容量低造成的,第二部分就是标准 UCB 带来的 bound,论文一般只计算后者,前者被假设没了。

从上面不太严谨的 bound 也可以看出来,真的做应用的时候,模型拟合不动真实收益函数,前期损失堪比随机策略。所以 Lin-UCB 乃至 sup-Lin-UCB 这些算法,都默认线性能够拟合收益。也导致实际使用当中,收益函数不能够做的太复杂,比如所有兜底惩罚不能够写进收益,就是担心过于复杂的决策边界,会让模型拟合不动,这是很繁琐的 reward engineering 的问题。

如果想提高拟合能力,我们需要复杂一点模型,比如 kernel -UCB,思路也比较简单,就是给特征套一个核函数 x \to \phi(x) ,唯一麻烦的就是求解迭代略复杂。

当然,后面还有如何通过打点日记进行 bandit 的训练,也叫 logged bandit,由于有海量数据做保证,所以深度学习用在 bandit 里头也是有可能的。不过,后者的数学合理性,我目前存疑,故此不展开细说。

  • 18
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值