Thompson 采样是一种概率算法,用于平衡决策问题中的探索和利用,尤其是在被称为多臂老虎机的场景中。“多臂老虎机”指的是您必须在具有不确定回报的多个动作(例如,不同的网站布局、广告变体)之间重复选择的情况。目标是通过学习哪些动作表现最佳,从而最大化一段时间内的累积回报。Thompson 采样通过维护每个动作潜在结果的概率分布,并使用随机采样来指导决策来解决这个问题。与平均分配流量的 A/B 测试等严格方法不同,它会动态地将更多试验分配给表现更好的选项,同时仍然探索替代方案。
该算法的工作原理是为每个动作的成功率分配一个先验概率分布(例如,二元结果的 Beta 分布)。例如,如果测试三个广告变体,每个变体都以一个 Beta 分布开始,该分布反映了对其点击率的初始假设。在每一轮中,该算法从每个分布中抽取一个值,选择具有最高采样值的动作,并观察结果(例如,点击或未点击)。然后,根据观察到的结果更新所选动作的分布。随着时间的推移,这些分布变得更加准确,从而使算法能够收敛到最佳动作。这种方法自然地平衡了探索(测试不确定的选项)和利用(使用已知的良好选项),而无需手动调整探索率等参数。
开发人员可以将 Thompson 采样应用于在线广告、推荐系统或临床试验等场景。例如,流媒体服务可能会使用它来测试不同的推荐算法,并将更多用户分配给具有最高采样参与度指标的算法。实现通常涉及对每个动作的回报进行建模(例如,使用 Beta-Bernoulli 进行点击或使用 Gaussian 进行连续指标),并逐步更新信念。在 Python 中,诸如 numpy
之类的库可以从 Beta 分布生成样本,而诸如 TensorFlow Probability 之类的框架可以简化贝叶斯更新。主要优势包括可扩展性、对不断变化的环境的适应性以及数据的有效利用。开发人员应确保正确初始化先验,并监视收敛以避免长期运行系统中的偏差。