1. UCB
上一篇文章中介绍了一种context-free的方法,。
其能够很好地完成对未知商品的exploration,同时完成对奖励的exploitation。
但是在后期,假如所有的商品都已经探索完毕,并且没有新商品加进来
显然此时并不需要做exploration,概率对应部分的奖励就拿不到了
在此,介绍一种新的方法,Upper Confidence Bound
这里仅简单介绍一下基本思想
假如有一个老虎机,玩了10次,奖励是2,那么可以认为其奖励均值是2,此时设定其均值的95%置信区间为[0,4]
而另一个老虎机,玩了100词,奖励均值是3,那么可以设定其均值的95%置信区间为[2.9,3.1]
UCB在此时的决策是选择置信区间上界最大的一个老虎机
很容易发现
- 对于未知商品,尽管其均值可能很低,但是由于其不确定性会导致置信区间的上界会很大,从而触发exploration
- 对于已经很熟悉的商品,如果其均值很高,会触发exploitation
UCB的难点在于如何设定置信上界,设定方法有很多种,这里不介绍
设定的方法通常会满足如下性质
- 随着迭代轮数的增长,上界会远离均值
- 随着被选择次数的增长,上界会靠近均值
2. LinUCB
上一篇文章中提到了Contextual Bandit,在Multi-Armed Bandit的基础上每次做决策时还会有一个特征向量
LinUCB是处理Contextual Bandit的一个方法,在LinUCB中,设定
\begin{align} E\left[r_{t,a}|x_{t,a}\right] = x_{t,a}^T\theta_a \end{align}
是LinUCB模型的参数,维度为
每个arm维护一个
对于单个arm,以其前m个context向量为行向量组成的矩阵称为
前m个reward组成的向量称为
使用ridge regression,可以得到的概率分布为高斯分布
\begin{align} \theta_a \sim N \left((D_a^TD_a + I)^{-1}D_a^Tc_a, (D_a^TD_a + I)^{-1}\right) \end{align}
为了符号简洁,令
\begin{align} \hat{\theta}_a &= (D_a^TD_a + I)^{-1}D_a^Tc_a \\ A_a &= D_a^TD_a + I \end{align}
于是的概率分布可表示为
于是在第t次时可以得到,也就是
根据高斯分布的性质,得到置信上界后就可以使用普通UCB规则了
需要注意的是,可以增量更新,于是标准流程如下
- 设定
- For t = 1,2,3,…
- 对所有的arm获得本次的context向量
- For all
- if is new
- 设置为单位矩阵
- 设置为维0零向量
- 计算
- 计算上界
- if is new
- 选择最大上界对应的arm即,并得到对应的
- 更新
- 更新