跳到正文
原文
Hacker News· routeroff·· 3 小时前精选AI 评分47

Aaronson Oracle:可交互的猜硬币预测算法与人类随机偏差

The Aaronson Oracle

AI 导读

作者在 aaronsonoracle.com 上发布可交互的 Aaronson Oracle,使用 n-gram 频率统计加 backoff 机制预测玩家按键,仅在某长度按键序列被重复至少两次且 F/D 计数不均时才采纳,否则逐级退到更短上下文。

推荐理由

文章串联起 Bell Labs 五十年代的猜硬币机器和 n-gram 预测原理,用交互演示说明几十行代码为何能稳定击败人类,背后是可迁移的认知偏差观察。

正文 · AI 翻译

这个故事

贝尔实验室走廊里的两台机器

这个实验已有七十年历史,它最初是用继电器搭建的,后来才被写成软件。

约 1951 年
贝尔电话实验室
新泽西州 默里希尔

1950 年代初的某个时候,在贝尔实验室,一位名叫 David Hagelbarger 的工程师搭建了一台机器,用来和同事们玩猜正反。两位玩家各自暗中选择正面或背面;若选择相同则其中一人赢,不同则另一人赢。如果对手完全不可预测,这游戏就只是抛硬币而已。Hagelbarger 把他的机器命名为 SEER,即 SEquence Extrapolating Robot(序列外推机器人)。2

SEER 并不以任何深层方式对你建模。它只追踪最近两轮的三个事实:前上一轮它是赢还是输,它的出法和上轮相同还是不同,以及上一轮它是赢还是输。三个是非事实构成八种可能的情形,对每一种情形,机器都记下继续沿用相同出法是否奏效。它用一个小型可逆计数器来记数,该计数器在加三和减三处停下,Hagelbarger 用一句值得记住的话来形容这种停止:这种停止"实际上让机器忘记了远古的历史"。2

图版SEER 的全部记忆。关于最近两轮的三个是非事实构成八种情形,每种情形各保留一个小型计数器,记录沿用相同出法是否奏效。加三与减三处的停止,正是 Hagelbarger 所说让机器忘记远古历史的含义。

在同一走廊另一头工作的 Claude Shannon 留意到了这一点,并自己动手造了一台。他在 1953 年 3 月 18 日的备忘录开篇便直截了当地把功劳归于 Hagelbarger,随后作了一个比较,清楚地说明了这是一台怎样的机器:

一句话便讲清了整个思路。博弈论告诉你猜正反的正确玩法:在心里抛一枚硬币,做到真正随机,长期下来没有任何对手能击败你。爱伦坡笔下的侦探所做的则完全不同。他研究对手,揣测什么样的人会做出怎样的选择。Shannon 造出了那位侦探,因为侦探能赢。不是赢过理想中的对手,而是赢过真实的对手。

Shannon 的机器寻找规律,用他的话来说,就是"假设玩家在相同情形再次出现时会沿用同样的规律"。当某个规律尚未重复出现过至少两次时,机器就随机行动,而随机性来自一个每秒旋转约十次的换向器,在你按下按钮的瞬间对其采样。它那不可预测性正是从你自己按下按钮时的微小抖动中收割来的。1

A wooden cabinet with a clear top showing valves and wiring.
                  A plate on the front reads NIMWIT, and two columns of lamps
                  beneath it are labelled PLAYER WINS and MACHINE WINS.
图版并非那台读心机器——我们能找到的任何地方都没有它的照片——而是 Shannon 同一时期造的另一台游戏机:Nimwit,约 1953 年,能玩 Nim 取子游戏。它之所以出现在这里,是因为它的前面板。两列灯,玩家获胜对阵机器获胜,正是这一整页所继承的计分板样式。麻省剑桥 MIT 博物馆。照片由 Daderot 拍摄,依 CC0 1.0 协议发布。来源。

他清楚地知道如何击败它

香农备忘录的非凡之处在于他并未夸大其词。他算出了机器的可胜率,并将方法公之于众:

这台机器并非不可战胜。理论上,它有四分之三的概率会被击败。你根本无法在对局时在脑中运行这套方法。原则上可行的与人在当下实际能做到的之间的这种差距,正是本页的全部主题,香农在 1953 年就为它命名了。

An aluminium maze of movable partitions on a flat tray, with
                  a small black mechanical mouse standing in one of the
                  corridors and a medal resting in another.
图版忒修斯,1952 年。老鼠在迷宫中找到出路,并记住了路线。香农不仅把想法写下来,更习惯于把它造出来,这正是那份关于如何智胜人类的备忘录会附带一台可运行机器的原因。MIT 博物馆,马萨诸塞州剑桥市。摄影:Daderot,采用 CC0 1.0 协议发布。来源。

两台机器相互对弈

不可避免地,有人想知道哪台机器更强。哈格尔巴格记录下了当时的情况:

图版两台机器被连接到第三台机器上,由它担任裁判。所示比分来自 2020 年的软件复现,每场以一百回合计算后取平均值;哈格尔巴格自己对那场原始对决的报告约为 55 比 45。3

香农那台更简单的机器所用继电器约为另一台的一半,却击败了更复杂的那一台。2020 年,西比乌的一个团队用软件重新实现了这两台机器,并让它们相互对弈十次。以每场一百回合计算后取平均,香农的机器以 55.8 比 44.2 获胜。一则流传了六十年的实验室传说,由此得到核实。3

玩家 3507
机器 5010
展品上的终身战绩

香农的机器至今仍在。威廉·庞德斯通曾前往 MIT 博物馆的库房参观它,却没有与它对弈,他写道,因为"那几乎是一种亵渎","它记录着一个最终比分:玩家 3507,机器 5010。"在所有曾与它对坐过的人之中,机器大约赢得了 59% 的对局。这是一件展品上的终身累计,而非一项受控实验的结果,并且这也是唯一留存至今的机器对人类的数据。4

五十年后,在一间阶梯教室里

你刚才所玩的那一版来自 Scott Aaronson,他为在伯克利所教授的一门课程编写了它,并在《自德谟克利特以来的量子计算》中加以描述:

在那里请记住两件事。第一件是 Aaronson 在知晓自己程序源代码的情况下依然无法击败它,这正是香农当年对其继电器装置所做的同一表态。第二件则是那位学生,我们将在末尾再回到他身上,因为他如何做到这一点,才是关键所在,而非什么例外。

我们的版本有所不同之处

我们的版本并非任何一台机器的复刻。香农的机器会追踪自己是否领先以及你是否改变了选择,使它拥有八种情形,却对你实际的出招序列毫无记忆。我们的版本完全忽略胜负,只是简单地统计你每次连续按键之后按下的内容。Aaronson 的版本使用长度为五的序列,我们的也是如此。他的版本对一切全都记得;哈格尔巴格的版本有意遗忘;而我们的版本同样永不遗忘,因此你早期形成的某个习惯会在余下的整局中持续地拖你的后腿。

哈格尔巴格,1951 香农,1953 本页
它观察的内容 它是否赢,以及是否重复 它是否赢,以及你是否重复 只看你按下的内容
回溯多远 两轮 两轮 五次按键
保留的情境 8 8 63
遗忘 刻意为之,计数器停在 ±3 无 无
不确定时 随机出牌 交换子,于按键时采样 缩短问题,然后抛硬币
图示三台机器,相隔七十年,每台实际保留的内容。计数 63 代表五次或更少按键的所有序列:长度五的有 32 种、长度四的有 16 种,依此类推,直至空序列。

它的运作原理,用通俗的话说

你刚刚经历的事

这个程序里没有任何关于心理学或自由意志的模型。它只保留一本笔记本。

每次你按下一个键,它都会记下你上一次按了什么,以及你这次按了什么。不是记一次,而是在六种不同长度上同时记录。假设你最近五次按键分别是 F、D、D、F、F,然后你按下了 D。笔记本会增加六条记录:在 FDDFF 之后你按了 D;在 DDFF 之后你按了 D;在 DFF 之后你按了 D;在 FF 之后你按了 D;在 F 之后你按了 D;以及完全忽略上下文时,你按了 D。

图示一次按键,六条记录。笔记本在每种上下文长度上同时记录同一事件,从完整的五次序列一直到完全无上下文。除此之外不存储任何东西:没有时间记录,没有谁领先的记录,没有关于你的任何模型。

为了猜你的下一次按键,它会倒着读笔记本。它拿出你最近五次按键,然后问:我以前见过这个完全相同的序列吗?如果见过,你接下来按的是什么?如果这个序列它至少见过两次,而且你做两种选择的次数不相等,它就会回答你做得较多的那个。如果这是新序列,或者它只见过一次,或者你的选择恰好平分,它就会缩短问题。最近四次按键呢?最近三次?两次?一次?如果这些全都失败,它就抛硬币,而那次抛硬币的结果会像其他任何猜测一样扣分。

那种缩短问题的方式是程序里唯一巧妙之处,值得理解,因为大多数朴素版本的问题就出在这里。一个长序列是一次精确匹配:当它适用时,它能告诉你很多。但在一次会话的早期,你还没有产生太多五次按键的序列,所以其中大多数都只被见过一次,而单次观察并不构成证据。它只是一个偶然。短序列更模糊,但证据要充分得多。程序会优先选择它见过足够多次、值得信赖的最长序列,并在精确序列证据不足时退回到更短、更有依据的问题上。

那本笔记本就是你一直对弈的对象。页面顶部的那些色带是机器提出的六个问题,堆叠在一起:最上面是你最近五次按键,最下面是完全无上下文——也就是你按过的每一次按键。一条色带里的每一颗粒代表你产生该序列、然后又按了一次键的一次记录。如果该序列之后你按的是 D,颗粒就位于中线左侧;如果之后你按的是 F,颗粒就位于中线右侧。所以一条色带的宽度表明机器知道多少信息,而它的偏斜表明它知道的是什么。

猜测顺着中间落下去。它从未见过的那段序列,是一条空白的横带,里面什么都不装。恰好见过一次的序列只是一粒砂,算是巧合而非证据。某段序列之后你按 F 与按 D 的次数完全相同,这是完美对称的,沿其中线裂开的缝隙是敞开的。猜测穿过所有这些情形,最终落在第一条既不空白、也不单薄、也不均衡的横带上——然后顺着那条横带倾斜的方向倒去。那一跌就是回退(backoff)。它是整个程序里唯一聪明的事,并且在你每一次按键时都在你眼前发生。

注意看,横带越浅就越宽,而且这并不是制图上的取舍。最上面那条横带问的是一个特定的五次序列,里面几乎没有内容;最下面那条横带则把你按过的每一次都数进去。问题问得越具体,证据就越稀薄,永远如此,而这正是机器必须愿意放弃自己最好的问题、转而去问一个更差的问题的全部原因。

请注意这意味着什么。机器既不聪明,也读不懂你。它只是一遍又一遍地问同一个问题:上次情况看起来是这样的时候,你做了什么?这个页面上其余的一切,都不过是你一直在回答这个事实的结果。

图 2属于你自己的笔记本,来自你刚刚玩过的那一回合。每一行是一次按键序列;条形显示你紧跟其后按 F 而非 D 的次数。被机器信任的行已标出。若未存储任何回合,此处便显示一个样本,并已清楚地标明。

它究竟是怎么工作的

计数,以及知道何时停止

这个笔记本的正式名称叫做 n 元频率模型。所谓 n 元,就是由 n 个符号组成的一段序列。这里的符号就是你的两个按键,所以共有 25 = 32 种可能的五次序列,四次的有 16 种,依此类推,直至空序列——那是你按过的每一次的总数。

用 c 表示一段按键序列,称为 上下文;用 N(c, F) 表示紧跟该序列之后你按下 F 的次数。预测规则是:在与你最近按键相匹配的所有上下文 c 中,取最长的那个,使得

N(c, F) + N(c, D) ≥ 2  且  N(c, F) ≠ N(c, D),

然后用 F 和 D 中较大的那一个作答。如果没有上下文满足条件,就随机作答。当较长的上下文不可用或不可靠时,退而采用较短的上下文,这叫做 回退(backoff),也是统计语言建模中的通行做法——同一问题在那里同样存在:具体的证据更好,但具体的证据又稀少。

回退
在你已见过且次数足以信任的序列中,优先取最长的一段

"至少为 2"这个门槛确实在起作用。若没有它,一个只见过一次的 1–0 序列,就会因为更长而压过见过四十次、计为 30–10 的两次上下文。这就是经典的稀疏数据失效,它会让模型比单纯计数还要嘈杂。

Aaronson 描述他最初的那个程序时几乎用的就是这些措辞。当被问及 Berkeley 的那个程序做了什么时,他答道:

注意那个措辞——"也许曾经有过"。他是在建议使用回退,而不是在回忆那次实现。我们的阈值和回退是我们依其建议作出的自主选择,并非对他那天在讲堂里所运行程序的复刻。

图 3你在本次会话中的一次真实预测,保持静止不动——这次是整个笔记本,而不仅仅是仪器所询问的那六次运行。每个圆圈代表机器记录的一次运行,其大小表示该运行发生的频率;点亮的路径是你最近五次按下的键,划叉的圆是机器放弃的运行,带圈的圆是猜测最终停留的位置。

解读这台机器

完整程序

以下为预测器的完整代码。不是它的概要,也不是为文章整理过的版本,而是这个页面在你游玩期间加载并运行的那个文件。它只有几十行,而它的简短本身就是一课:仅此而已。

Loading oracle.js…
图 4预测器,从 oracle.js 加载,即本页正在运行的同一文件。

两个函数。record 将一次按键同时写入每一种上下文长度;predict 从最长的上下文向最短遍历,并返回它最先信任的那一个。没有训练阶段,没有预先拟合的参数,除本次会话中所累积的计数外,不存在任何关于你的模型。它起步时一无所知。

它对我们意味着什么

你为何落败

这么小的程序本不应做到这一步。它之所以能赢,源于你身上的某种特质,而这一特质已被研究数十年。

你被给予的任务,即生成一条毫无规律的序列,被称为随机序列生成(random sequence generation),它是实验心理学中被研究得最多的失败之一。2023 年的一篇综述毫无保留地给出了结论:"RSG 研究的一个共同发现是,人们是不擅长随机化的人。"7

人们最稳定的失败方式,正是 Aaronson 顺带提到的那个——他说玩家"有太多的交替"。同一篇综述称之为交替偏差(alternation bias):"对重复的规避,也称为负近因效应或交替偏差,其中可观察到过多的交替以及对重复选择的抑制。"7 当被要求表现得随机时,人们切换得过于频繁,重复得过少。一枚公平的硬币出现连续五次相同面的频率比感觉上的更高,因此模仿硬币的人便会把这些连号修剪掉。

问题比"切换过多"更深。一项研究分析了人们在被要求表现得随机时产出的序列,结论是他们"避免数字重复并系统性地偏离数学随机性",其结果"强调了这样一种观点:在人类生成的随机数序列之下,存在着一个复杂的隐藏马尔可夫规则系统。"8 那个短语值得驻足细看。一个带记忆的隐藏规则系统,几乎恰恰就是 n-gram 模型被构建出来用以寻找之物。这个"神谕"并非一个通用的读心器,而是一个被塑造成恰好契合某一特定缺陷的装置,而该缺陷是真实存在的。

这种偏差也存在于另一个方向。人们不仅会产生过多的交替,他们相信过多的交替看起来是随机的:在被要求判断二进制序列时,参与者认为切换最多的序列最有可能出现,峰值大约出现在 0.6 到 0.8 的交替率附近,而真实值为 0.5。9结构更多的序列,如 HHHHH 而非 HTTHT,被认为概率更低。10我们在同一个方向上错误地生成,也错误地评判。

图示错误的形状,源自这项发现而非数据:当被问及哪些二进制序列看起来最随机时,人们的峰值出现在 0.6 到 0.8 的交替率附近,而公平的硬币有半数时间会交替。9这条曲线是对所报告峰值的一种示意,并非已发表测量结果的图表。

指令本身伤害了你

这就是应当让你感到不安的部分,也是为什么本页上的两项实验并不等价。那份 2023 年的综述还报告道:“如果不是明确要求随机性,而是作为一种隐含的要求,比如在匹配硬币这样的竞争性游戏中,随机性似乎会更高。”7

Shannon 的玩家在玩游戏并试图获胜。而你被要求表现得随机。文献表明,第二种框架反而是更糟糕的,并且有意识地尝试随机会让你比单纯试图击败对手更可预测。本页顶部的指令,在某种意义上,正与你背道而驰。

图 5机器如何学会了你的模式:它在你整个会话过程中的实时准确率,与硬币所能达到的 50% 形成对比。

重赛

既然你现在已经知道了

你已经读过了源代码。你知道它计算最多连续的五个,知道它需要见过某个连续出现两次才会信任它,知道它从不遗忘,以及在它一无所知时会退化为抛硬币。

再来一次吧。

大多数人在第二次的表现也和第一次差不多糟,而最清楚其中缘由的两位先讲明这一点。Shannon 在发表击败他这台机器的精确方法后,注意到在心理上执行该程序“极其困难”。Aaronson 在写完他的程序后,直截了当地说:“我甚至无法击败我自己的程序,尽管我清楚地知道它是如何工作的。”

知道算法对你毫无帮助,因为困难从来不在算法本身。困难在于生成序列,而你就是生成它的人,使用着与最初产生这些偏差相同的机制。从外部理解一种偏差,并不能从内部将其关闭。

可靠的方法
归根结底都做的是同一件事:把决定从你自己的头脑中拿走

如果你真的赢了,有趣的问题就是怎么赢。可靠的答案都有一个共同点:它们把决定从你的脑子里移走。庞德斯顿在玩一个现代实现版本时发现,当他不再盯着分数时,反而表现得更好。"我发现,当我试着忽略反馈时做得更好,而当我确保自己看不见那些条形图时则更上一层楼"4,而当我有意识地重复那些直觉想要交替选择的选项时,又更好一些。其他人会从外部事物上读取数字,或者在脑子里运行一条计算成本低、但难以被察觉的规则。

这又让人想起阿伦森的那个学生——程序恰好能以50%的准确率预测他的那一位——他说自己"只是运用了自由意志"。我们没有记录下他究竟是怎么做的。可无论那是什么,它都是一种方法,一种他自己的习惯所无法触及的选择方式。这并不比自由意志低一等。它只是对自由意志更实用的描述——不是没有原因,而是能够把决定交给你本能反应之外的某个东西。

下方的机器使用同一个文件、同样的规则,在每次按键前就把猜测封定下来。

本实验需要启用 JavaScript。

参考文献

来源

上文的每一项事实陈述都可追溯到以下来源之一。若原文需要付费,则引用取自转载该文的来源,这一点已明确说明。

  1. Claude E. Shannon,"A Mind-Reading (?) Machine",贝尔实验室备忘录,1953年3月18日;转载于Claude Elwood Shannon: Collected Papers,IEEE Press,1993年,第688–690页。Full text (PDF)。
  2. D. W. Hagelbarger,"SEER, A SEquence Extrapolating Robot",IRE Transactions on Electronic Computers,EC-5(1),1956年,第1–7页。我们未能获得原文;此处两段引用均转引自参考文献3,该文献已明确标注其引用。
  3. Macarie Breazu、Daniel Volovici、Daniel I. Morariu、Radu G. Crețulescu,"On Hagelbarger's and Shannon's matching pennies playing machines",International Journal of Advanced Statistics and IT&C for Economics and Life Sciences,2020年,第56–66页。PDF。
  4. William Poundstone,"How I Beat the Mind-Reading Machine",2015年7月30日。Article。
  5. Scott Aaronson,Quantum Computing Since Democritus,剑桥大学出版社,2013年,第18章("Free Will")。相关段落也出现在本书所源自的免费公开讲义中:Lecture 18。
  6. Scott Aaronson,致 Nick Merrill 的私人通信,转录于aaronson-oracle README 中。非公开出版的来源。Repository。Aaronson 本人在他对 Roger Penrose 的回复中亲自链接了该实现,并使用了"the Aaronson Oracle"这一名称。
  7. Maja Guseva、Carsten Bogler、Carsten Allefeld、John-Dylan Haynes,"Instruction effects on randomness in sequence generation",Frontiers in Psychology,14:1113654,2023年。Open access。
  8. Marc-Andre Schulz、Barbara Schmalbach、Peter Brugger、Karsten Witt,“人别随机数列的特征分析:一种人别模式的方法,”PLOS ONE 7(7):e41531,2012。开放获取。其头条预测数据涉及九选项数字序列,而非两键序列,此处不予引用。
  9. Giorgio Gronchi、Marco Raglianti、Stefano Noventa、Alessandro Lazzeri、Andrea Guazzini,“用非对称非对称熵度量建模过度交替非对称偏差,”Frontiers in Psychology,7:1027,2016。开放获取。这些数据描述的是人别如何判断序列,而非他们如何产生序列。
  10. Stian Reimers、Chris Donkin、Mike E. Le Pelley,“二元序列中的随机性感知:规范性、启发式,还是两者兼有?”Cognition,172,2018,第 11–25 页。DOI ·已接受版本(PDF)。

来源:Hacker News · aaronsonoracle.com