范叶亮写智能体、模型和数据系统时,习惯先把定义和边界钉死。把「多臂赌博机」整理成可落地的中文笔记:问题在哪、默认做法会踩什么坑、该怎么选。原站导航和广告已去掉。
多臂赌博机问题
一个赌徒,要去摇老虎机,走进赌场一看,一排老虎机,外表一模一样,但是每个老虎机吐钱的概率可不一样,他不知道每个老虎机吐钱的概率分布是什么,那么每次该选择哪个老虎机可以做到最大化收益呢?这就是 多臂赌博机问题 (Multi-armed bandit problem, K- or N-armed bandit problem, MAB) 2 。
$k$ 臂赌博机问题中, $k$ 个动作的每一个在被选择时都有一个期望或者平均收益,称之为这个动作的**“价值”**。令 $t$ 时刻选择的动作为 $A_t$ ,对应的收益为 $R_t$ ,任一动作 $a$ 对应的价值为 $q_* \left(a\right)$ ,即给定动作 $a$ 时收益的期望:
动作价值估计方法
$$ q_* \left(a\right) = \mathbb{E} \left[R_t | A_t = a\right] $$
我们将对动作 $a$ 在时刻 $t$ 的价值的估计记做 $Q_t \left(a\right)$ ,我们希望它接近 $q_* \left(a\right)$ 。
多臂赌博机算法
如果持续对动作的价值进行估计,那么在任一时刻都会至少有一个动作的估计价值是最高的,将这些对应最高估计价值的动作成为 贪心 的动作。当从这些动作中选择时,称此为 开发 当前所知道的关于动作的价值的知识。如果不是如此,而是选择非贪心的动作,称此为 试探 ,因为这可以让你改善对非贪心动作的价值的估计。“开发”对于最大化当前这一时刻的期望收益是正确的做法,但是“试探”从长远来看可能会带来总体收益的最大化。到底选择“试探”还是“开发”一种复杂的方式依赖于我们得到的函数估计、不确定性和剩余时刻的精确数值。
$$ \begin{aligned} Q_t \left(a\right) &= \dfrac{t \text{ 时刻前执行动作 } a \text{ 得到的收益总和 }}{t \text{ 时刻前执行动作 } a \text{ 的次数}} \\ &= \dfrac{\sum_{i=1}^{t-1}{R_i \cdot \mathbb{1}_{A_i = a}}}{\sum_{i=1}^{t-1}{\mathbb{1}_{A_i = a}}} \end{aligned} $$
$\epsilon$ -Greedy
其中, $\mathbb{1}_{\text{predicate}}$ 表示随机变量,当 predicate 为真时其值为 1,反之为 0。当分母为 0 时, $Q_t \left(a\right) = 0$ ,当分母趋向无穷大时,根据大数定律, $Q_t \left(a\right)$ 会收敛到 $q_* \left(a\right)$ 。这种估计动作价值的方法称为 采样平均方法 ,因为每一次估计都是对相关收益样本的平均。
当然,这只是估计动作价值的一种方法,而且不一定是最好的方法。例如,我们也可以利用累积遗憾(Regret)来评估动作的价值:
UCB
其中, $\mu^* = \mathop{\max}_{k} \left\{\mu_k\right\}$ 为最大的回报, $\hat{r}_t$ 为 $t$ 时刻的回报。
动作的真实价值 $q_* \left(a\right), a = 1, \cdots, 10$ 为从一个均值为 0 方差为 1 的标准正态分布中选择。当对于该问题的学习方法在 $t$ 时刻选择 $A_t$ 时,实际的收益 $R_t$ 则由一个均值为 $q_* \left(A_t\right)$ 方差为 1 的正态分布决定。
梯度赌博机算法
下图分别展示了 $\epsilon = 0$ (贪婪), $\epsilon = 0.01$ 和 $\epsilon = 0.1$ 三种情况下的平均收益和最优动作占比随训练步数的变化情况。
令 $R_i$ 表示一个动作被选择 $i$ 次后获得的收益, $Q_n$ 表示被选择 $n – 1$ 次后它的估计的动作价值,其可以表示为增量计算的形式:
值得单独记下的点
- 确定一个 $\epsilon \in \left(0, 1\right)$ 。
- 每次以 $\epsilon$ 的概率随机选择一个臂,以 $1 – \epsilon$ 选择平均收益最大的那个臂。
- 对于更大方差的收益,找到最优的动作需要更多次的试探。
- 对于非平稳的任务,即动作的真实价值会随着时间而改变,这种情况下即使有确定性的情况下,也需要进行试探。
- Sutton, R. S., & Barto, A. G. (2018). Reinforcement learning: An introduction . MIT press. ↩︎
- https://cosx.org/2017/05/bandit-and-recommender-systems ↩︎
落地时建议先做的 5 件事
- 先写清任务能不能被自动验证:能验证的交给系统和评测,不能验证的留给人审。
- 本地部署先算显存、延迟和失败回滚,不要只看能跑通一次。
- 多智能体只在单智能体触到上下文或专业边界时再拆。
- Token、微调和压缩都要有对照数字,避免口号式优化。
- 结论写成可检查清单:接口、超时、评测集、回滚版本。
和智能体产品怎么接
龙虾PRO做 OpenClaw 落地时,最该拿走的是「单智能体先做好工具和提示,再谈编排」。数字员工、技能市场和网关应共用同一套评测与权限,而不是各写一套角色人设。
本文侧重全链路风控方法论。落地时请用自身业务单据做回放验证,不要把示例阈值直接当生产策略。 相关:风控体检 · 方案资源
常见问题 FAQ
什么是AI智能系统?
「AI智能系统」可概括为:一个赌徒,要去摇老虎机,走进赌场一看,一排老虎机,外表一模一样,但是每个老虎机吐钱的概率可不一样,他不知道每个老虎机吐钱的概率分布是什么,那么每次该选择哪个老虎机可以做到最大化收益呢?这就是 多臂赌博机问题 (Multi-armed bandit problem, K- or N-armed bandit problem, MAB) 2 。 本文从定义、方法与实践要点展开说明。
为什么要关注AI智能系统?
关注AI智能系统,是因为它直接影响效率、风险与可复制性。文中指出:一个赌徒,要去摇老虎机,走进赌场一看,一排老虎机,外表一模一样,但是每个老虎机吐钱的概率可不一样,他不知道每个老虎机吐钱的概率分布是什么,那么每次该选择哪个老虎机可以做到最大化收益呢?这就是 多臂赌博机问题 (Multi-armed bandit problem, K- or N-armed bandit problem, MAB) 2 。
如何落地AI智能系统?有哪些关键步骤?
建议按以下路径推进AI智能系统:1) 确定一个 $\epsilon \in \left(0, 1\right)$ 。;2) 每次以 $\epsilon$ 的概率随机选择一个臂,以 $1 – \epsilon$ 选择平均收益最大的那个臂。;3) 对于更大方差的收益,找到最优的动作需要更多次的试探。;4) 对于非平稳的任务,即动作的真实价值会随着时间而改变,这种情况下即使有确定性的情况下,也需要进行试探。;5) Sutton, R. S., & Barto, A. G. (2018). Reinforcement learning: An introducti…。细节见正文对应章节。
AI智能系统适合哪些人或团队?
AI智能系统更适合:产品/技术负责人、运营与增长团队、需要落地智能体或自动化的中小团队、关注「AI智能系统」方向的读者。若你只需要单次聊天式问答,可先读概念;若要上生产,请重点看步骤、权限与风控相关段落。
关于「多臂赌博机问题」,本文给出了什么结论?
在「多臂赌博机问题」部分,要点是:em, MAB) 2 。 $k$ 臂赌博机问题中, $k$ 个动作的每一个在被选择时都有一个期望或者平均收益,称之为这个动作的**“价值”**。令 $t$ 时刻选择的动作为 $A_t$ ,对应的收益为 $R_t$ ,任一动作 $a$ 对应的价值为 $q_* \left(a\right)$ ,即给定动作 $a$ 时收益的期望: 动作价值估计方法 $$ q_* \left(a\right) = \mathbb{E} \left[R_t |
关于「动作价值估计方法」,本文给出了什么结论?
在「动作价值估计方法」部分,要点是:-1}{R_i \cdot \mathbb{1}_{A_i = a}}}{\sum_{i=1}^{t-1}{\mathbb{1}_{A_i = a}}} \end{aligned} $$ $\epsilon$ -Greedy 其中, $\mathbb{1}_{\text{predicate}}$ 表示随机变量,当 predicate 为真时其值为 1,反之为 0。当分母为 0 时, $Q_t \left(a\right) = 0$ ,当