上下文老虎机:利用特征做出个性化决策

FreeGuideOnline 最新 2026-06-14

什么是上下文老虎机

当你走进赌场,面对一排老虎机,每台机器的吐钱概率都不一样,但你没有说明书。经典的多臂老虎机问题就是:如何一边试探不同机器的胜率,一边尽可能多地赢钱。这正是探索与利用的权衡。

现实中的推荐、广告和医疗方案选择往往比赌场更复杂:你不是面对一成不变的机器,而是面对一个会根据当前情境改变行为的系统。用户的年龄、位置、浏览历史都会影响哪个选项更优。这时就需要上下文老虎机(Contextual Bandit)——它把经典老虎机扩展为:在每一次决策前,先观察一个上下文特征向量,然后根据这个特征选择动作,期望获得更高的累积回报。

简单来说:经典老虎机只看历史平均奖励,上下文老虎机学会了“看人下菜碟”

为什么需要上下文信息

假设一个新闻推荐系统只有两个动作:推荐文章A或文章B。如果忽略用户特征,某天你可能测得A的点击率略高于B,于是系统永远推A。但真实情况可能是:

  • 年轻用户更喜欢A,年长用户更喜欢B。
  • 工作日早上用户喜欢短讯,周末晚上喜欢深度阅读。

没有上下文,系统只能取一个平均最优,损失大量潜在点击。引入上下文信息后,模型可以在不同特征组合下分别学习最优动作,真正做到个性化决策

与A/B测试、多臂老虎机的区别

  • A/B测试:先随机分配流量收集数据,最后一次性选赢家。收集期间损失较大,且不适用非平稳环境。
  • 多臂老虎机:在线学习,动态调整各臂的选择概率,但没有特征输入,无法区分用户群。
  • 上下文老虎机:多臂老虎机加上特征感知层。每个动作的价值是上下文的条件期望:E[reward | context, action]

原理框架

在每一轮 t 中,系统经历以下步骤:

  1. 观察上下文 x_t(一个d维特征向量)。这个上下文可能包含用户属性、时间、设备等。
  2. 选择动作 a_t 从有限动作集 A 中,基于历史数据和一个策略函数。
  3. 环境反馈奖励 r_t(例如点击=1,未点击=0,或连续值收益)。
  4. 更新模型:将新样本 (x_t, a_t, r_t) 纳入学习算法,改进未来决策。

目标:最大化累积奖励 ∑ r_t 在T轮内的总和,或者等价地最小化遗憾(regret),即与始终选择最优动作的差距。

主流算法

上下文老虎机的实现关键在于如何建模奖励函数 f(x, a)。根据建模方式,算法分成两大类:基于线性假设的方法和基于非线性模型的方法。

线性模型:LinUCB 与 LinTS

LinUCB(线性上置信界)

假设每个动作a的期望奖励是上下文的线性函数:E[r| x, a] = x^T θ_a,其中 θ_a 是动作a的未知系数向量。算法维护每个动作的系数估计及其协方差矩阵,类似于岭回归在线更新。

决策时,LinUCB选择预估期望加上一个探索奖励最大的动作:

a_t = argmax_a ( x_t^T θ̂_a + α √(x_t^T A_a^{-1} x_t) )

  • 第一项 x_t^T θ̂_a 是当前预测的奖励。
  • 第二项是不确定性:特征在与历史数据方向差异越大,该项越大,鼓励探索未充分观测的特征区域。α 控制探索力度。

更新时,用递推最小二乘更新 A_aθ̂_a,计算效率高,适合超大规模应用。

LinTS(线性汤普森采样)

与LinUCB的确定式上界不同,LinTS从参数的后验分布中采样,然后贪心选择当前采样下最优的动作。具体做法:

  • 假设奖励服从高斯分布,并维护 θ_a 的高斯后验。
  • 每轮从后验中采样一个 θ̃_a,选择使 x_t^T θ̃_a 最大的动作。
  • 观察奖励后,用贝叶斯更新后验均值和方差。

LinTS在实际中往往表现出比LinUCB更低的遗憾,且实现简单。对于非高斯奖励(如二项点击),可以使用Logistic回归配合拉普拉斯近似或Pólya-Gamma增强。

非线性扩展

当线性假设不足以捕捉复杂模式时,可以引入核方法或神经网络。

  • 核上下文老虎机:通过核技巧隐式映射到高维空间,仍可利用上置信界或汤普森采样思想。
  • 神经网络老虎机(NeuralUCB, NeuralTS):用深度网络作为奖励预测器,通常配合最后几层的快速更新(如使用神经切线核思路或在线梯度下降)。这些方法表现力更强,但超参数多、训练不稳定,需要更小心调优。

离线评估:反事实评估

在实际系统中上线前,我们通常需要利用历史日志数据评估上下文老虎机策略。因为日志数据是另一个旧策略产生的,直接统计会有偏差。常用方法:

  • 逆倾向评分(IPS):用旧策略记录的动作概率进行加权,校正分布偏移。
  • 双重稳健估计(DR):结合IPS与一个奖励预测模型,任一模型正确即可得到无偏估计。
  • 重要性采样及其变种(如加权重要性采样)可以降低方差。

这部分能力对于迭代优化策略至关重要,无需求每次都在线实验。

实战步骤

以下是一个运行上下文老虎机实验的典型流程:

  1. 问题定义:明确动作集合(如:推荐列表中的Top-1方案A/B/C),奖励定义(点击/转化/时长),以及可用上下文特征。
  2. 日志策略设计:初期可以先用一个简单的随机策略或基于规则采集一定数据,确保有足够的探索覆盖。
  3. 数据准备:每个样本整理成 (context, action, reward, propensity) 格式,propensity是该动作被选中的概率,用于离线反事实评估。
  4. 离线评估与选型:在历史日志上复现不同算法(LinUCB, LinTS等)的决策序列,用DR或IPS计算期望奖励,选出最佳候选。
  5. 在线部署与监控:将选定的策略部署为实际决策服务,实时收集数据并持续更新模型。需要监控平均奖励、动作分布、特征覆盖率等指标,防止模型退化或过度集中。
  6. 迭代优化:根据新数据定期或增量式重新训练,必要时引入更丰富的特征或更复杂的模型结构。

常见挑战与对策

  • 冷启动:新动作或新用户特征组合缺乏数据。可以使用先验设定(如LinTS中的先验协方差),或者混合一个 global 模型进行信息共享。
  • 特征选择与工程:不良特征会导致线性模型失效或梯度消失。建议先用离线分析相关系数,并考虑特征的尺度标准化。
  • 延迟奖励:有些点击或转化可能在决策后数小时才发生。如果只等几秒,可能当作负样本处理。可使用专为延迟反馈设计的Bandit算法,或进行奖励归因回溯。
  • 非平稳环境:用户兴趣漂移、新闻热度变化。可对样本进行时间衰减加权,或使用滑动窗口在线学习。
  • 动作空间巨大:当动作成千上万(如所有可推内容),无法为每个动作独立学模型。需要借助上下文与动作特征的联合表征,例如将动作也编码成向量,然后计算内积,形如推荐系统中的双塔模型,这就过渡到了更广义的 scored bandit 或 slate bandit。

总结

上下文老虎机是连接传统统计决策与现代个性化系统的关键桥梁。它在保持在线学习与探索-利用平衡的同时,注入了上下文感知能力,让你可以在不同场景下自动调整策略。无论是新闻推荐、广告投放、药物剂量决策,还是动态定价,只要决策环境提供可观测特征,并追求长期收益最大化,它都是一件强大的思维和算法工具。

从线性模型LinUCB/LinTS开始实践,搭配严谨的离线反事实评估,再逐步演进到更深的神经网络方法,是平稳且高效的进阶路线。掌握上下文老虎机,将使你能够构建真正自适应的智能系统。