多臂赌博机问题中的汤普森采样(Thompson Sampling)算法原理与计算过程
字数 2052 2025-12-13 05:53:12
多臂赌博机问题中的汤普森采样(Thompson Sampling)算法原理与计算过程
题目描述
在多臂赌博机(Multi-Armed Bandit, MAB)问题中,我们面临K个不同的选项(例如K台老虎机或广告位),每台“臂”在每次拉动时以某个未知的概率产生奖励。目标是设计一种策略,通过有限次尝试(如T轮)最大化累积奖励(或最小化累积遗憾)。汤普森采样是一种基于贝叶斯思想的随机化算法,它通过维护每个臂奖励分布的信念(后验分布),并在每轮从这些后验分布中采样来决定选择哪个臂。本题目要求详细解释汤普森采样的原理、计算步骤及其在多臂赌博机问题中的应用。
解题过程
1. 问题形式化
假设有K个臂,每个臂i在拉动时产生一个二元奖励(例如点击/不点击),奖励服从伯努利分布,其成功概率θ_i未知。在每轮t(t=1,...,T),算法选择臂a_t ∈ {1,...,K},观察到奖励r_t ∈ {0,1}。目标是最大化累积奖励∑{t=1}^T r_t。等效地,最小化累积遗憾(regret):R(T) = T·max_i θ_i - ∑{t=1}^T θ_{a_t}。
2. 贝叶斯建模
汤普森采样的核心是对每个臂的未知参数θ_i使用贝叶斯推断:
- 先验分布:假设θ_i服从Beta(α_i, β_i)分布,其中α_i, β_i > 0是超参数。Beta分布是伯努利分布的共轭先验,便于后验更新。
- 后验分布:在观察到臂i被拉动S_i次成功(奖励=1)和F_i次失败(奖励=0)后,θ_i的后验分布为Beta(α_i + S_i, β_i + F_i)。
3. 汤普森采样步骤
算法流程如下:
- 初始化:为每个臂i设置先验参数α_i = 1, β_i = 1(即均匀先验Beta(1,1)),相当于对θ_i无偏好。令S_i = 0, F_i = 0。
- 循环每一轮t=1,...,T:
- 采样:对每个臂i,从其当前后验分布Beta(α_i + S_i, β_i + F_i)中独立采样一个值θ̂_i。
- 选择臂:选择采样值最大的臂,即a_t = argmax_i θ̂_i。若有多个臂采样值相同,随机选择一个。
- 执行与观察:拉动臂a_t,观察到奖励r_t(0或1)。
- 更新后验:
- 若r_t = 1,则S_{a_t} ← S_{a_t} + 1。
- 若r_t = 0,则F_{a_t} ← F_{a_t} + 1。
(注意:更新后,臂a_t的后验分布变为Beta(α_{a_t} + S_{a_t}, β_{a_t} + F_{a_t}),其他臂的后验保持不变。)
4. 算法原理解释
汤普森采样通过“采样”实现了探索(exploration)与利用(exploitation)的平衡:
- 利用:从后验分布采样时,当前估计成功率较高的臂更可能被选中(因为其后验分布更集中于高值)。
- 探索:由于采样具有随机性,即使某个臂当前估计成功率较低,其后验分布的尾部也可能被采样到,从而有机会被选择。随着数据积累,后验分布逐渐收敛到真实θ_i,探索自然减少。
5. 扩展到非伯努利奖励
汤普森采样可推广到其他奖励分布:
- 高斯奖励:假设奖励服从N(μ_i, σ_i²),未知参数μ_i。使用高斯-逆Gamma共轭先验,后验采样类似。
- 上下文赌博机:每轮有特征向量x_t,奖励模型为θ_i^T x_t + 噪声。使用高斯先验,后验采样涉及线性回归的贝叶斯推断。
6. 计算示例
假设K=2,先验为Beta(1,1)。
- 第1轮:从Beta(1,1)为两个臂各采样θ̂_1=0.3, θ̂_2=0.6 → 选择臂2,观察到r=1 → 更新臂2:S_2=1, F_2=0,后验为Beta(2,1)。
- 第2轮:从臂1的Beta(1,1)采样θ̂_1=0.5,从臂2的Beta(2,1)采样θ̂_2=0.7 → 选择臂2,观察到r=0 → 更新臂2:S_2=1, F_2=1,后验为Beta(2,2)。
- 第3轮:从臂1的Beta(1,1)采样θ̂_1=0.8,从臂2的Beta(2,2)采样θ̂_2=0.4 → 选择臂1,观察到r=1 → 更新臂1:S_1=1, F_1=0,后验为Beta(2,1)。
如此持续,算法逐渐偏向真实成功率更高的臂。
7. 性能与特点
- 理论保证:汤普森采样对累积遗憾有对数增长的上界(与UCB算法类似),且在实践中常优于确定性算法(如ε-greedy)。
- 计算高效:每轮仅需K次采样和一次比较,适合大规模问题。
- 自适应性:无需手动调节探索参数(如ε),完全由后验分布驱动。
通过以上步骤,汤普森采样以概率匹配(probability matching)的方式,优雅地解决了探索与利用的权衡问题,成为多臂赌博机领域最常用的算法之一。