多臂老虎机问题

强化学习的基础概念

多臂老虎机是一个常见的强化学习问题,所以我们首先给出强化学习的一些基础概念:

强化学习不仅需要学习做什么,也需要学习如何根据与环境的交互采取相应的行动。强化学习的最终结果,就是要实现系统回报信号的最大化。学习者事先并不知道要去执行什么行为,需要自己去发现哪种行动能产生最大的回报。

在强化学习中,有两个可以进行交互的对象:智能体和环境。

  • 智能体(agent)可以感知外界环境的状态(state)和反馈的奖励(reward),并进行学习和决策。
  • 智能体的决策功能是指根据外界环境的状态来做出不同的动作(action), 而学习功能是指根据外界环境的奖励来调整策略。
  • 环境(environment)是智能体外部的所有事物,并受智能体动作的影响而改变其状态,并反馈给智能体相应的奖励。

Exploration-Exploitation tradeoff

Exploration:探索。这是指在强化学习过程中,探索更多的可能性所付出的代价。 Exploitation:在强化学习中,始终执行目前的最优解付出的代价。

始终执行目前最优解意味着放弃潜在的更优解的可能性,探索更多可能性则意味可能探索到很多收益极低的分支。任何一个强化学习算法都是这两者的平衡。

多臂老虎机问题(Multi-Arm Bandit Problem)的起源

部分内容转载自从thompson-sampling到增强学习-再谈多臂老虎机问题

老虎机是赌场里最常见的一个设备,一家赌场里有那么多机器,每次摇动都可能后悔或者获得一定额度的奖励,你通过选择不同的老虎机臂最大化自己的利益。

在最原始的多臂老虎机问题中,每个臂可获得的收益是一定的,不随着用户特征或者上下文环境的变化而变化。即:

问题描述

(Bernoulli Bandit)假设我们有一个K臂老虎机,每一个臂(action)的回报率(reward_i)都是固定的,但是agent并不知道这个回报率是多少,agent如何在T回合内最大化自己的回报(注意,这里的T通常是远远大于K的)。

在互联网行业,多臂老虎机问题之所以非常流行,是因为这些action可以被看做不同的广告投放,当用户来到网站上看到广告,对每一个广告有固定的点击率,那么平台就需要寻找一种最优策略来显示广告,最大化自己的利益。

Problem Formulation

我们在这里以最简单的形式定义一个K-臂老虎机,它由K个reward概率分布<D_1, D_2, ..., D_K>组成,其期望为\mu_1, \mu_2, ..., \mu_K, 方差为\sigma_1^2, \sigma_2^2, ..., \sigma_K^2。在每一轮尝试(t = 1, 2, ...)中,玩家选择一个臂j(t),并得到一个回报r(t) \sim D_{j(t)}

算法的目标是最小化total expected regret,而它是这样定义的:

  • 在某一个固定的round T中,R_T = T_{\mu}^* - \sum_{t = 1}^T \mu_{j(t)},其中\mu ^*代表回报最高的臂的期望回报。
  • 因此,我们可以将total expected regret表示如下:R_T = T_{\mu}^* - \mu_{j(t)}\sum_{t = 1}^T E(T_k(T)).其中T_k(T)是用来指示在前T轮中第k个臂被拉动的次数的随机变量。

\epsilon - greedy 算法

最简单的做法就是贪心,模型想办法计算每一个action的回报,然后选择回报最大的action进行操作。这种贪心的做法问题就是没有完全探索其它奖励概率的可能性,很容易丢掉最优解。

\epsilon - greedy 算法是原始贪心算法的一个改善解,就是按照概率epsilon进行探索,按照uniform distribution选择一个臂进行尝试,按照1-epsilon的概率选择当前情况下回报率最大的action。尽管这种做法比纯贪心的情况好,但是对于下面这种情况,我们通过探索知道action 2的概率远远小于action 1,但还是会以一定的概率反复测试action 2,加大了损失。

简单地说,给定一个参数\epsilon \in (0, 1),算法在第t+1轮作出的决定为k的概率为:

Thompson Sampling

Thompson Sampling的基础思想是选择在概率上成为最优arm最大的arm。它是一个贝叶斯算法。 为了简单起见,我们考虑伯努利回报即回报为0或1的MAB问题。在这种情况下, 我们能用Beta分布来描述每一个action的回报的分布,我们给分布先验概率参数alpha和beta,那么action的回报的概率密度函数:

在这里, \alpha\beta即是到trail t-1为止,成功和失败的次数。 那么对于伯努利MAB,算法为
Beta分布有很多与生俱来的性质,我们观测到的结果越多,分布的置信区间就越窄。因此随着不断地更新,模型会越来越接近实际情况。

以及,我们可以将伯努利分布的结果推广。如果任意一个arm的回报分布在[0,1]之间,并且平均值为\mu_i,我们在每一次获得\widetilde{r_t} \in [0, 1]的reward之后更新结果。我们完成一次成功率为\widetilde{r_t}的伯努利试验,并用随机变量r_t指示试验的结果。仍然用\{S_i(t), F_i(t)\}记录到当时轮数为止的成功和失败次数,我们用下述算法更新结果:

Upper Confidence Bounds(UCB)

UCB是一个算法族,包括很多不同的算法,它们的核心都是对UCB的估计。

最简单的UCDB算法是UCB1。对于每个臂,它记录一个数字n_i(t),代表前t轮第i个arm被选择的次数。在起始的时候,每个arm都会被选择一次。之后,在第t轮,它选择的j(t)可以表达为 j(t) = argmax_{i=1,2,..,k} (\hat{\mu_i} + \sqrt{2lnt/n_i})

LinUCB (Linear UCB)

本部分翻译自“A Contextual-Bandit Approach to Personalized News Article Recommendation”

LinUCB的关键在于参数被定义成了一个d-维的vector。我们定义arm a的参数为\theta_{ a},并且对于d维的feature vector,任意一个arm的reward为feature vector和参数vector的线性乘积。那么对于任意一个t,在t轮时,对于d-维的feature,arm a的reward的期望为 E(r_{t, a}|x_{t, a}) = x_{t, a}^T\theta_a^*

LinUCB with disjoint Linear Models

假如各个臂之间不分享参数,我们从称这样的模型为LinUCB with disjoint Linear Models。

我们设计一个m*d维的矩阵D_a,在第t轮,D_a由m个training inputs组成(比如说m个之前对于arm a的观测)。m维的vector b_a代表对应的response vector。 对于特定的矩阵(D_a, b_a),我们能用岭回归的方法来评估参数矩阵\hat{\theta_a} = (D_a^TD_a + I_d)^{-1}D_a^Tb_a.

在这一条件下,可以证明至少以1 - \delta的置信度, |x_{t, a}^T\hat{\theta_a} - E(r_{t, a}|x_{t, a})| \le \alpha \sqrt{x_{t, a}^T(D_a^TD_a + I_d)^{-1}x_{t,a}},其中\alpha =1 + \sqrt{ln(\delta/2)/2}。这就是这个模型下的UCB。

故在这一模型下,在每一个 trial t,我们选择a_t = argmax(x_{t, a}^T\hat{\theta_a} + \alpha \sqrt{x_{t, a}^T(A_a)^{-1}x_{t,a}}),其中A_a = D_a^TD_a + I_d

LinUCB with Hybrid Linear Models

在很多系统中,各个臂之间会有一部分共享参数,每个臂有独立参数。比如在推荐系统问题中,关于用户和当前时间的feature可以共享参数,每个item的参数则互相独立。在这个定义下,我们仍然把独立部分的参数定义为\theta_a^*,并定义共享部分的参数为\beta^*。因此E(r_{t, a}|x_{t, a}) = x_{t, a}^T\theta_a^* + z_{t, a}^T\beta^*。在这种情况下,算法为:

hLinUCB (Hidden Linear UCB)

本部分内容翻译自“Learning Hidden Features for Contextual Bandits”。

LinUCB建立于一个假设之上:我们能观测到所有相关feature并把它们扔进模型。但在现实中这种情况几乎是不可能的,一定有隐藏的无法观测的feature存在。在linUCB的基础上,hLinUCB试图对隐藏的feature进行建模。它仍然遵循线性模型,但它加入了一个隐藏的feature vector和对应的parameter。

定义r_{a_t,u} = (x_{a_t},v_{a_t})^T(\theta_u^x, \theta_u^v) + \eta_t,其中x_{a_t} \in R^d , v_{a_t} \in R^lx_{a_t}v_{a_t}分别代表观测输入和隐藏输入,\theta_u^x, \theta_u^v则是对应的parameter。这些变量满足约束||(x_a, v_a)||_2 \le L, ||\theta_u = (\theta_u^x, \theta_u^v)||_2 \le S。这些变量中除了x_{a_t}都是未知的,我们设定岭回归的目标为

根据这个式子,我们可以这样估计\theta_uv_a\hat{\theta_{u, t}} = A_{u, t}^{-1}b_{u,t}以及\hat{v_{a,t}} = C_{a,t}^{-1}d_{a,t},其中

最终,根据UCB作出的选择为:

猜你喜欢

转载自juejin.im/post/5ba9e674e51d450e76330fc8