图片

斯科特·佩奇在《模型思维》中举过一个例子。

一家烟囱清洁公司拿到一批新房主的电话号码,准备推销服务。公司想了三种开场白。

第一种直接约时间。"你好,我打电话来,是想安排一下您家今年的烟囱清洁。"

第二种先问安全问题。"你好,您知道烟囱积垢可能带来火灾隐患吗?"

第三种讲自己的经历。"你好,我叫希尔迪。14年前,我和父亲一起开了这家烟囱清洁公司。"

哪种更管用,谁也说不准,只能打电话试。

第一种试了一次,失败了。换第二种,连续成功两次,接着连续失败三次。再换第三种,试了五次,第一次成功,后面四次都失败。

11通电话打完,结果是这样。

话术
成功
失败
已有记录中的成功率
第一种
0次
1次
0%
第二种
2次
3次
40%
第三种
1次
4次
20%

第二种暂时领先。可第一种只试过一次,就再也没得到机会。

第12通电话,该用哪一种?

继续用目前判断最好的话术,叫利用。尝试还没摸清的话术,看看有没有更好的选择,叫探索。

这两件事常常发生在同一次行动里。用第二种话术,既可能接到订单,也会多积累一条记录。再试第一种,也可能当场成交。区别在于,你愿不愿意为了弄清一个选项,承担眼前少赚一点的可能。

这就是多臂老虎机问题。

名字里的"臂",可以理解为老虎机的拉杆。每根拉杆代表一个选项,回报规律事先不清楚。你每次只能选一个,也只能看到被选中的那个给了什么结果。烟囱公司的三种话术,就是三根拉杆。

这个模型研究的是,怎样一边选择、一边学习,让整个过程获得更高的预期总回报。

哪个办法表现好,就一直用哪个吗?

先暂时放下电话,做一道能算清楚的小题。

你有A、B两个选项。每次选A,固定得6分,这一点已经知道。

B的情况还不清楚。它有一半可能每次都给10分,另一半可能每次都给0分。它属于哪一种,早就确定了,只是你不知道。试一次,就能知道答案。

我们只比较预期总分,先不考虑切换成本,也不设最低得分要求。

如果只剩一次机会,选A。

A稳得6分,B的平均预期只有5分。即使试出B很好,也没有下一次机会了。

如果还剩两次,情况就变了。

先选A,拿6分。你对B没有增加任何了解,最后一次仍然选A,两次一共12分。

先选B,则有两种结果。

一半的可能,发现B每次给10分。第二次继续选B,两次共得20分。

另一半的可能,发现B每次给0分。第二次改选A,两次共得6分。

把两种结果按概率加起来,预期总分是

½ × 20 + ½ × 6 = 13分。

比两次都选A多1分。

多出来的这1分,怎么来的?

第一步选B,预期少拿1分。但这次尝试让你知道,第二步究竟该选谁。第二步的预期得分因此从6分提高到8分,抵消第一步的损失后,还多了1分。

一次尝试的价值,要把它对后续选择的影响一起算进去。

这里的13分是按概率算出的平均预期。实际做一次,两轮下来可能只有6分。预期更高,并不保证每次结果更好。如果你必须确保拿到至少12分,这个例子的答案就会改变。

图片

现实中的推销比这道题麻烦。顾客答不答应,既受话术影响,也有偶然因素。一次失败,分不清究竟是话术不好,还是刚好碰上不需要服务的人。

因此,这道题说明了探索为什么有时值得。至于烟囱公司的第一种话术还值得试多少次,需要一套能随反馈更新的分配规则。

手里有几个方案,下一次该选哪个?

下面三种常见策略,都能把"再试试"变成具体动作。

留一些机会,随机选个方案(ε贪心)

ε是一个概率。假设把它设为0.1,每轮就有90%的概率选目前估计最好的方案,10%的概率从所有方案中随机选一个。

这个"所有"也包括当前第一名。它说的是每一轮的概率,并不要求每10轮恰好探索一次。

办法很容易执行,问题也明显。只要ε固定不变,一个已经积累了大量失败记录的方案,仍会不断分到随机尝试的机会。ε设得太小,又可能很久都没试到值得了解的方案。

因此,"留10%探索"只是示例。用多少,要看机会、成本和已有证据。

给没摸清的方案加点分,再比较(UCB1)

UCB1给每个选项算一个分数,由两部分组成。

已经观察到的平均回报,加上反映不确定性的探索奖励。

试得少,估计可能差得远,奖励通常更大。一个选项即使暂时落后,也可能靠这部分加分获得新的机会。

但试得最少,不代表一定先选它。算法比较的是完整分数。一个表现很差的选项,加分后仍可能排在后面。

这项奖励也不会永远往下减。某个选项如果很久没被选,别的选项一直在增加记录,它的奖励还可能慢慢升高。

UCB1把探索集中到那些"考虑到不确定性,仍有希望表现很好"的选项上。

每个方案抽一个可能的成功率,谁高选谁(汤普森采样)

汤普森采样更进一步。它会给每个选项保留一整组可能的成功率,并记录各个范围有多大可能。

比如,某种话术的成功率可能在20%左右,也可能在50%左右。只试过一次,我们很难判断;试过很多次,估计通常就能缩小到更集中的范围。

每轮选择时,算法从每个选项的分布里各抽一个成功率,谁抽到的数最大,就选谁。结果回来,再更新被选中方案的分布。没被选中的,在这个简单设定下保持不变。

这相当于每轮都根据现有证据,随机抽取一种可能的情况,再按这次抽到的情况做选择。

记录少的方案,仍可能抽到较高的值;表现好的方案,也会凭已有证据获得机会。具体怎么分配,取决于所有方案的分布。

我们用开头的11通电话,完整走一轮。

第12通电话,该用哪种话术?

先把规则说清楚。

每通电话只使用一种话术。顾客确认预约,记一次成功;明确拒绝,记一次失败。暂时没有答复的,先保留为待确认。为方便演示,下面假定11通电话的结果都已确认,客户来源和通话条件大体可比,三种话术的成功概率在这段时间里保持稳定。

在看到记录之前,我们先给三种话术同样的初始判断。成功率落在10%到20%,与落在70%到80%,开始时被认为同样可能。0到100%之间所有等宽区间,都这样同等看待。这叫均匀先验,记作Beta(1,1)。

这个起点的平均成功率是50%,样本少时,它对判断的影响会很明显。有可靠的历史记录时,先验可以不同;同一个起点也不适合所有业务。

Beta分布的名字可以暂时不记。这里要用到的更新办法很简单。

从Beta(1,1)出发,每成功一次,前面的数加1;每失败一次,后面的数加1。

于是,三种话术的新分布分别是

第一种,0次成功、1次失败,得到Beta(1,2)。

第二种,2次成功、3次失败,得到Beta(3,4)。

第三种,1次成功、4次失败,得到Beta(2,5)。

结合先验和反馈得到的新分布,叫后验分布。Beta(a,b)的均值是a÷(a+b),可以当作此时对成功率的平均估计。

为了避免把不同的数字混在一起,我们把结果并排放好。

话术
实际记录中的成功率
更新后的平均估计
下一轮被选中的概率
第一种
0%
33.3%
30.6%
第二种
40%
42.9%
51.5%
第三种
20%
28.6%
17.9%

这三列百分数回答不同的问题。记录中的成功率说的是已经发生的事;更新后的平均估计,把初始判断与新记录合在一起,估计话术的成功率;最后一列说明下一次电话会以多大概率用上各种话术。

在这套模型里,一个选项有多大概率是真正最好的,它就有多大概率在下一轮被选中。数据少、分布分散,都不自动意味着它会得到更多机会。

所以,第一种话术虽然还没成功过,却仍有约三成的机会被选中。一次失败不足以让这个模型认定它很差。

这个结果也取决于我们选了什么先验。把先验换掉,后两列就可能变化。它们都需要和假设一起理解。

实际执行时,不必先手算最后一列。让程序从三个分布中各抽一次即可。

假设这一轮分别抽到0.62、0.47和0.21,就用第一种话术打第12通电话。这三个数字只是演示一次抽样,不代表话术的真实成功率。

如果这次成功,第一种更新为Beta(2,2),平均估计升到50%;如果失败,就更新为Beta(1,3),平均估计降到25%。下一轮用更新后的分布重新抽样。

在其他两种话术没有新反馈的情况下,这次成功会提高第一种下一轮被选中的概率,失败会降低它的选择概率。

图片

每轮都保留结果,每轮都按同一条规则更新。 这样才有办法检查,机会究竟是怎样分出去的。

这里演示的是成功或失败两种反馈下的一种汤普森采样。回报如果是金额、用时等数值,需要选择相应的模型和分布。

只剩几次机会,还值得换个办法试吗?

假设你准备在一座城市住十年,尝试新餐馆就有不少后续价值。发现一家合口味的,以后可以经常去。

如果明天就搬走,今晚又只想吃一顿满意的饭,熟悉的老店通常更有吸引力。新店即使很好,你也未必还有机会再来。当然,如果尝鲜本身就让你开心,那份快乐也应算进这顿饭的回报。

同样是试一家新店,剩余机会不同,这次尝试能带来的后续好处就不同。

图片

不过,时间多也不意味着每个选项都值得探索。假如A确定得6分,而B再好也不会超过5分,试清B并不能改善以后的选择。再多机会,也补不上这项探索的收益缺口。

需要一起考虑的,还有方案差距、信息能不能及时回来,以及试错要付出多大代价。

前面三种策略的标准版本,都不会自动读取"离截止还剩多久"。它们到了最后一轮,仍可能选择当前预期回报较低的方案。

如果只剩最后一次,目标仍是最大化预期回报,也没有其他约束,就应选此时预期回报最高的方案。这里要比较的是结合现有证据作出的估计,不能只盯着历史成功率。

在实际业务中,何时结束尝试,也得事先说明。

例如,烟囱公司可以规定,再拿20通电话按汤普森采样分配,之后根据当时的后验均值选一种话术,供接下来的一段业务使用。

这是一种人为规定的预算安排。20通只是示例,可能远远不够找出真正最好的话术。前20通的表现、后续集中使用的效果,都要计入评价。汤普森采样本身不会发出"最佳方案已经找到"的通知。

推荐哪条新闻、用哪张配图,网站怎么选?

Netflix用过上下文老虎机来选择影视推荐配图。

它的技术文章用《心灵捕手》举例。喜欢爱情片的观众,可能被马特·达蒙与明妮·德里弗的合照吸引;常看喜剧的观众,可能更愿意点开罗宾·威廉姆斯出现在画面中的版本。

同一部电影,要给不同的人选不同的图片。系统参考用户信息作出选择,再从观看反馈中继续学习。这里的"上下文",就是作出选择时已知的用户等信息。具体选择依赖数据,无须事先把所有人的偏好写成固定规则。

Netflix在2017年的技术文章中说明,采用这种方法的一个动机,是更快利用新反馈,减少用户长期看不到更合适方案的机会。最后,他们仍通过A/B测试,比较个性化与非个性化的老虎机方案。

这也解释了老虎机方法和A/B测试各自处理什么问题。

A/B测试常用于比较版本效果、估计差距。多臂老虎机方法侧重在持续运行中分配机会,争取更多累计回报。两者可以配合。

例如,一个报名页面有两个版本。固定分流的测试里,两者按预先规定的比例接收访客;老虎机策略则会根据反馈调整比例,让更有希望的版本获得更多机会。

但样本少、差距小,或者报名结果迟迟不回来,算法也难以判断谁更好。动态分流之后,若还要判断提升是否可靠,也需要相应的统计方法。不能看见一边暂时领先,就宣布检验完成。

Yahoo!的新闻推荐研究提供了一个有具体比较条件的例子。

2010年,研究团队用数千万条随机展示日志,离线评估新闻推荐策略。在使用全部数据的条件下,两个LinUCB版本在论文所称的部署流量组中,相比不使用用户特征的ε贪心基线,点击率分别相对提高约12.5%和8.4%。

这两个数字比较的是特定算法和特定基线。基线本身也在探索,改进中还包含用户特征等信息,因此不能把提升全部归功于探索;它们也不能代表Yahoo!整个线上系统的收益变化。

这些应用说明,这类分配问题可以在实际系统中处理。至于换到你的业务里能改善多少,仍要用你的回报指标和比较结果回答。

准备试方案,先把这七件事说清楚

理解模型以后,最容易漏掉的,往往是执行前那几项约定。

以烟囱公司为例,至少要写清下面七件事。

1. 要更多预约,还是更高利润?

是更多预约、更多实际成交,还是更多利润?这几个目标可能选出不同的话术。指标要贴近真正想要的结果,并写清在多长时间内确认。

2. 到底在试话术,还是连价格和客户都换了?

把话术版本固定下来,记录面对什么客户、由谁执行。话术、价格和客户来源同时改变,结果就很难解释。每个客户分到哪种方案,也要有明确规则。

3. 每种话术试了多少次,结果确认了吗?

分别记成功、失败和待确认的数量。没试过的保留未知,结果没回来也别急着记成失败。客户来源不同的记录,不能不加区分地混在一起。

4. 等结果回来,还剩多少机会?

还剩多少客户、多少预算?预约是否当场确认?如果结果一个月后才知道,活动两周就结束,这次学习对活动内的分配就帮不上忙。

5. 下一次怎么选,什么时候更新?

采用哪种策略,参数怎样设置,何时更新,遇到并列怎么办,何时结束尝试,都应预先说明。只写"再试试",别人无法照着执行。

6. 当时为什么这样选,事后能查清楚吗?

记下当时有哪些信息、选了哪种方案、结果何时确认。用随机抽样时,还要保存分布参数、抽样结果,或者足以重现抽样的随机信息。再依据已确认的反馈更新,继续下一轮。

7. 这套分配办法,到底多带来了多少回报?

把探索和集中使用期间的回报、成本一起算。例如,将同期可比较的客户随机、等量地分给两套策略,在同样的观察时间内比较结果。只拿本周和上周相比,分不清变化来自策略,还是来自客户和时点。

试错最多能损失多少?

此外,有一条要放在执行规则前面。凡是必须守住的预算或损失上限,都要事先决定怎样限制行动。不能等到越过底线,才用"暂停试验"来补救。

哪些选择,不能直接用这套办法?

前面的计算有一个重要背景。选项可以反复选择,结果能逐渐积累;在讨论的这段时间里,每种方案的回报规律大体稳定。

现实任务如果发生了下面这些变化,就需要调整方法。

结果只能用这一次,没有下一次选择

买不买某套房、接不接受某个offer,通常不能靠反复做同一个决定来学习。作决定前收集信息仍然有用,但前面那套逐轮分配的规则不能直接搬过来。

结果还没回来,机会已经用完

结果迟到,需要相应的延迟反馈或批量处理办法;若活动结束前都收不到结果,仅仅改更新频率也无济于事。

不同客户,适合的办法不同

不同客户有不同偏好,则要考虑用户条件,像Netflix那样处理上下文。

环境变了,过去的经验未必管用

季节变化可能让老话术失效。

这次的行动,会改变下次的条件

反复促销还可能改变客户的价格预期,频繁联系会使客户厌烦,有些方案会消耗后续需要的库存。这些情况,还得把行动造成的变化和资源限制纳入模型。

点击多了,成交反而少了

继续优化点击也可能离目标越来越远。指标需要先改正。

有些损失,不能等发生后再叫停

有硬性损失限制时,也必须让分配规则遵守约束;基础策略不会自动替你守住底线。

选职业、找学习方法,也能这样试吗?

职业发展和个人学习也要谨慎使用这套计算。

王大顺等人在2021年的研究中发现,艺术家、导演和科学家的职业生涯中,一些按作品影响指标识别的"连胜期",与此前较多样的尝试、随后较集中的创作有关。

这种相关性没有证明,主动照着某种探索顺序去做,就会进入连胜期;研究也没有确立"成功之后再探索,就能再次成功"的统一循环。

职业与学习过程中,人的能力、面对的任务和环境都在改变。可以借鉴探索与利用的思路,具体怎么分配,仍需另外判断。

回到第12通电话。

公司此时还不知道哪种话术真正最好。但只要回报定义清楚、条件允许,它已经可以按约定的规则拨出电话。下一条确认的结果回来后,就更新记录,再决定第13通怎样打。


多臂老虎机提醒我们的,并不是"什么都得试一遍"。

它提醒我们,手里有几个方案时,怎样把有限的机会分出去,本身就是一项需要设计的决定。

每次选择都在同时做两件事:拿到眼前的回报,也积累对后续判断有用的信息。

把规则写清楚,让机会分得明白,试错才不算白试。

模型档案卡

一句话定义

面对效果还没摸清的几个办法,怎样边试边调整,让有限机会取得更好的总结果。

理论来源

起源于统计学和决策理论。Thompson 1933年提出相关思想,Auer等2002年提出UCB1算法,Russo等2018年系统阐述汤普森采样。佩奇在《模型思维》第27章中用烟囱清洁公司案例做了系统讲解。

使用时先问什么

结果能不能改变后续分配?还有多少机会用上新信息?试错成本值不值得?有没有必须事前守住的损失上限?

哪些问题不能只靠它解决

创造候选方案、确定回报定义、处理效果随时间变化、区分不同用户的最优选项,都需要其他模型配合。只剩一次不可重复的重大选择不适合本模型。

这是思维模型系列的第124篇。

转给那个手里有几个方案、一直在纠结先试哪个的朋友,帮他把机会分配这件事看清楚。