斯科特·佩奇在《模型思维》中举过一个例子。
一家烟囱清洁公司拿到一批新房主的电话号码,准备推销服务。公司想了三种开场白。
第一种直接约时间。"你好,我打电话来,是想安排一下您家今年的烟囱清洁。"
第二种先问安全问题。"你好,您知道烟囱积垢可能带来火灾隐患吗?"
第三种讲自己的经历。"你好,我叫希尔迪。14年前,我和父亲一起开了这家烟囱清洁公司。"
哪种更管用,谁也说不准,只能打电话试。
第一种试了一次,失败了。换第二种,连续成功两次,接着连续失败三次。再换第三种,试了五次,第一次成功,后面四次都失败。
11通电话打完,结果是这样。
第二种暂时领先。可第一种只试过一次,就再也没得到机会。
第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.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篇。
转给那个手里有几个方案、一直在纠结先试哪个的朋友,帮他把机会分配这件事看清楚。