一句话定义:多臂老虎机(Multi-armed Bandit,简称 Bandit)是一类最简化的强化学习问题——你面前有若干台老虎机,每台的中奖概率未知且固定,每次只能拉一台,目标是在有限次数内把总收益拉到最高。
赌场里的那个经典场景
想象你走进赌场,面前并排摆着 10 台老虎机。每台的赔率不一样,但你事先不知道。你手上只有 100 枚硬币,每拉一次花一枚。怎么拉?
如果你一直拉第 1 台,万一它是最差的那台,你从头亏到尾。如果你每台都试几把再决定,试错本身又是在花钱。这个两难就是 Bandit 的核心矛盾:探索(exploration)还是利用(exploitation)——是继续用一个已经验证过还不错的选择,还是花点成本去试试可能更好的未知选项。
和完整强化学习相比,Bandit 少了一个关键要素:状态转移。你拉完一次机器,环境不会因此进入一个新局面,下一次面对的选择集合完全一样。没有"当前处境"这个概念,只有"选哪个、拿到多少回报"。
几个常见的解法思路
- ε-贪心(ε-greedy):大部分时间选当前表现最好的那个,偶尔(概率 ε)随机试一个别的。简单、好实现,但"偶尔"是盲目的。
- UCB(Upper Confidence Bound,置信上界):给每个选项算一个"乐观分"=平均收益 + 不确定性奖励。试得少的选项不确定性大,会被优先照顾。越试越准,不确定性自然缩小。
- 汤普森采样(Thompson Sampling):给每个选项维护一个概率分布,每次从中抽一个样本,选样本值最大的那个。数学上优雅,实践中常常表现很好。
衡量策略好坏有个标准指标叫遗憾(regret):如果从一开始就知道哪台最好、每次都拉它,能拿到的总收益,和实际策略拿到的收益之差。好的算法能让遗憾随时间增长得足够慢。
和相邻概念的区别
| 概念 | 有没有状态 | 决策是否影响未来 | 典型场景 |
|---|---|---|---|
| 多臂老虎机 | 无 | 只影响对赔率的认知 | 广告位选择、推荐冷启动 |
| 上下文老虎机(Contextual Bandit) | 有"当前特征",但无状态转移 | 同上 | 千人千面的推荐、个性化定价 |
| 完整强化学习(MDP) | 有状态,且动作会改变状态 | 是 | 下棋、机器人控制、游戏 AI |
| 传统 A/B 测试 | 无 | 否(流量固定分配) | 上线前的效果验证 |
值得注意的是最后一行:传统 A/B 测试是把流量固定分成几份、跑完再比较,测试期间一直在"交学费"。Bandit 则边测边调,把更多流量逐步倾斜给表现好的方案。所以 A/B 测试的替代方案里,Bandit 是最常被提起的一个——不过它也有代价:因为流量分配一直在变,统计推断会变复杂,对需要严格因果结论的场景未必合适。
对从业者的实际意义
Bandit 是推荐系统、在线广告、内容排序、增长实验里最常见的决策框架之一。它的价值在于提供一个清晰的语言:把"该给用户推什么"拆成每个选项的收益估计和不确定性两件事,然后诚实地在两者之间做权衡。
如果你在做增长或推荐,遇到"新内容没有曝光机会、老内容霸占流量"的困境,本质上就是一个探索不足的 Bandit 问题。想深入的话,先弄懂 ε-贪心和 UCB 这两个基线,再看上下文老虎机怎么引入特征。具体算法的参数与实现细节,各家库和论文口径不一,以官方文档为准。
