Hero Image
艾伦·图灵的一生

年表 19126 月 23 日生于伦敦。父母住在印度。 1926进入舍伯恩寄宿学校。 1930挚友克里斯托弗·莫科姆去世。 1931进入剑桥大学国王学院。 193522 岁当选国王学院院士。 1936写出《论可计算数》。前往普林斯顿。 1938在普林斯顿获得博士学位,回到剑桥。 1939开始在布莱切利园破译恩尼格玛。 1940第一台机电式“炸弹机”投入运行。 1945进入国家物理实验室,设计 ACE。 1948转到曼彻斯特大学。 1950发表关于模仿游戏的论文。 1952发表形态发生理论。因同性恋被定罪。 19546 月 7 日在威姆斯洛去世,终年 41 岁。 ◀ 上一站 沿路线走一遍 下一站 ▶ 1912 伦敦6 月 23 日生于梅达韦尔。父母住在印度,他由英格兰南部的一户寄养家庭抚养长大。 1926–1931 舍伯恩在寄宿学校结识克里斯托弗·莫科姆。这位朋友 1930 年的去世,使他开始思考心灵与物质的关系。 1931–1936 剑桥在国王学院学习,22 岁成为院士,写出《论可计算数》。 1936–1938 普林斯顿在阿隆佐·丘奇门下读博士。丘奇曾经由另一条路得到了同样的结果。 1939–1945 布莱切利园战争期间领导破译德国海军恩尼格玛的小组,并设计了机电式“炸弹机”。 1945–1947 特丁顿在国家物理实验室设计 ACE,一台存储程序计算机。 1948–1954 曼彻斯特为最早的计算机之一编程,提出模仿游戏,研究形态发生。1954 年 6 月 7 日在附近的威姆斯洛去世。 请启用 JavaScript 以查看地图。各站列在下方。 从伦敦到曼彻斯特,途经普林斯顿和布莱切利园。 地图:© OpenStreetMap 贡献者

Hero Image
图灵机:用铅笔、纸带和规则来计算

1936 年还没有任何计算机。英语里的 computer 指的是一个人:以计算为职业、用铅笔和纸在保险公司、天文台和政府部门里做算术的人。图灵就从这个人出发。他问:一个人在计算时真正在做什么?然后把一切不重要的东西都去掉。 计算的人还剩下什么 图灵在《论可计算数》中的推理,几乎就是一串简化: 纸可以换成一条分成格子的纸带,因为方格纸上的计算可以一格一格地抄到一行上。 每格里放一个符号,取自一张有限的清单:数字、字母、空白。 计算的人每次只看少数几格。看一格就够了:看几格,就是先看一格,再看它旁边那格。 计算的人有一种心理状态,比如“我在做加法”或“我在进位”。这样的状态只有有限多个。 每一步只取决于当前状态和正在读的符号。这一步就是写下一个符号、向左或向右移动一格、改变状态。 剩下的就是一台机器:一条纸带、一个能读能写的头,以及一张规则表。表的每一行说:“在某某状态下,读到某某符号,就写下这个,移到那边,进入某某状态”。 一台加 1 的机器 我们来造一台把二进制数加 1 的机器。手算 $1011+1$ 时,从右往左:最后一个 1 变成 0,“进一”;倒数第二个 1 也变成 0,再进一;接下来的 0 变成 1,计算结束。结果是 $1100$,也就是 $11+1=12$。 机器做的正是这件事,只需要一个状态“加”,外加终止状态“停机”。读写头从最后一位开始: 状态 读到 写下 移动 下一状态 加 1 0 向左 加 加 0 1 不动 停机 加 空白 1 不动 停机 第一行就是进位:把 1 换成 0,继续向左。第二行在遇到 0 时结束计算。第三行处理所有数字都是 1 的情形,比如 $111+1=1000$:读写头走到数字左边的空白处,在那里写下新的 1。 请启用 JavaScript 以使用这个交互图形。完整的推理见正文。 为什么这么简陋? 图灵机看上去简陋得可笑。它不能一次把两个数相加,除了纸带之外没有记忆,每次只走一格。但这种简陋是有意为之。图灵想要一个关于“机械计算”的定义,它要简单到没有人会怀疑一个人能执行它,同时又要普遍到涵盖任何计算。

Hero Image
停机问题:没有机器能回答的问题

1928 年,德国人大卫·希尔伯特提出了一个挑战,他称之为 Entscheidungsproblem,即“判定问题”:找到一种机械程序,对任何用逻辑语言写出的数学命题,都能在有限时间内回答它是真是假。如果这样的程序存在,数学就会变成一条流水线:只要写下问题,摇动手柄即可。 希尔伯特相信答案是肯定的。八年后,图灵和美国人阿隆佐·丘奇各自用不同的方法证明,答案是否定的。 一个更简单的问题 图灵没有正面进攻希尔伯特的问题。他先找到一个更朴素、却没有任何机器能回答的问题。今天人们这样讲述它: 给定一个程序和一个输入,这个程序终究会停机,还是会永远运行下去? 有时候很容易知道。把一个数加 1 的程序立刻就停。一个毫无出口地数 $1,2,3,\ldots$ 的程序永远不停。但有些很短的程序,谁也不知道答案。例如下面这个程序,它检验著名的哥德巴赫猜想——每个大于 2 的偶数都是两个素数之和: 从 $n=4$ 开始。 如果 $n$ 不是两个素数之和,就停机。 否则,把 $n$ 加 2,回到第 2 步。 这个程序停机当且仅当猜想不成立。知道它会不会停,就等于解决一个自 1742 年以来悬而未决的问题。一种判定程序是否停机的通用方法,可以一举解决这个问题以及许多其他问题。 证明 用反证法,假设存在一台机器 $P$ 能完成这项工作。它接收一个程序 $M$ 的描述和一个输入 $x$,并且总能在有限时间内回答: $$P(M,x)=\begin{cases}\text{“停机”}&\text{若 }M\text{ 在输入 }x\text{ 上停机},\\ \text{“不停机”}&\text{若 }M\text{ 永远运行}.\end{cases}$$有了 $P$,再造一台新机器——唱反调的 $D$。它接收一个程序 $M$ 的描述,然后这样做: 问 $P$:当 $M$ 收到它自己的描述作为输入时会怎样; 如果 $P$ 说“停机”,$D$ 就进入无限循环; 如果 $P$ 说“不停机”,$D$ 就停机。 致命的问题来了:当 $D$ 收到它自己的描述时,会怎样? 如果 $D(D)$ 停机,那么 $P$ 对 $D(D)$ 的回答是“不停机”,$P$ 错了。 如果 $D(D)$ 不停机,那么 $P$ 的回答是“停机”,$P$ 又错了。 两种情况下 $P$ 都出错。所以机器 $P$ 不存在。$\blacksquare$

Hero Image
可计算数:几乎每个数都无法计算

1936 年那篇论文的标题说的不是机器,而是数:《论可计算数》。图灵这样定义它们:如果存在一台机器,能一位接一位地写出一个实数的所有数字,而且永远不写错,这个实数就是可计算的。 哪些数是可计算的 学校里出现的数几乎都是可计算的。 分数: $\frac17=0.142857142857\ldots$ 机器做长除法,永远重复这个循环。 根式: $\sqrt2=1.41421356\ldots$ 为了找出下一位,机器从 0 试到 9,看哪个最大的数字添上之后,所得的数平方仍不超过 2。 $\pi$ 和 $e$: 有些级数能把它们逼近到任意精度,例如 $e=1+\frac1{1!}+\frac1{2!}+\frac1{3!}+\cdots$,借助这些级数,机器迟早能写出任何一位数字。 看起来,似乎每个“真正的”数都是可计算的。惊人之处就在这里:几乎没有一个是。 机器可以数得过来 每台图灵机都由一张有限的规则表描述。这张表可以用固定的字母表写成一段文字,因而也可以写成一个整数,图灵称之为描述数。只要把每个符号换成一个数字即可。 于是机器可以排成一张清单:描述数最小的那台,下一台,依此类推。许多数不描述任何机器,许多机器也不写出任何数,但这无关紧要。要紧的是:可计算数可以排成一张清单 $c_1,c_2,c_3,\ldots$ 用术语来说,它们是可数的。 实数数不过来 1891 年,格奥尔格·康托尔证明了实数不能排成一张清单。证明用的就是对角线。假设有一张列出 0 到 1 之间全部实数的清单: $$\begin{aligned} r_1&=0.\underline{5}\,1\,3\,9\ldots\\ r_2&=0.2\,\underline{7}\,0\,4\ldots\\ r_3&=0.8\,8\,\underline{1}\,6\ldots\\ r_4&=0.3\,0\,2\,\underline{2}\ldots \end{aligned}$$改动对角线上的数字来构造一个数 $d$:遇到 5 就写 6,遇到其他数字就写 5。这里 $d=0.6555\ldots$ 这个 $d$ 在第一位与 $r_1$ 不同,在第二位与 $r_2$ 不同,在第 $n$ 位与 $r_n$ 不同。它不在清单上。所以没有任何清单能包含全部实数。 把两个事实放在一起:可计算数能排成清单,实数不能。于是有实数落在所有机器之外,而且它们占了绝大多数。如果你随机挑一个实数,它是可计算数的概率为零。 一个能定义却算不出来的数 可以给一个不可计算的数起名字。写下 $0.d_1d_2d_3\ldots$,其中如果清单上的第 $n$ 台机器在空白纸带上会停机,就令 $d_n=1$,否则令 $d_n=0$。这个数定义得清清楚楚。但如果有一台机器能写出它的各位数字,它就解决了停机问题,而这是不可能的。这是一个存在着、却永远没有人能写出来的数。 练习:用一用对角线清单开头是 $0.1234\ldots$、$0.5555\ldots$、$0.9090\ldots$、$0.3141\ldots$。用“5 变 6,其余变 5”的规则,写出对角线数的前四位。 对角线是 $1,5,9,1$。改动后:$1\to5$,$5\to6$,$9\to5$,$1\to5$。这个数是 $0.5655\ldots$,它在对角线那一位与这四个数各不相同。

Hero Image
通用机:程序也是数据

每台图灵机只做一件事。加 1 的机器就加 1;写 $\frac17$ 的机器就写 $\frac17$。要做别的计算,就得换一台机器。在 1936 年,这是常态:机械计算器、穿孔卡片制表机和潮汐预测机都是为一项任务而造的,换任务就意味着换机器或重新接线。 在同一篇论文里,图灵证明了这并非必要。 读机器的机器 任何机器的规则表都可以作为文字写在纸带上。于是图灵描述了一台特殊的机器 $U$——通用机,它这样工作: 在纸带上接收一台机器 $M$ 的描述,后面跟着一个输入 $x$。 在描述中查找与 $M$ 当前状态以及 $M$ 正在读的符号相对应的规则。 在代表 $M$ 的纸带的那部分上执行这条规则,记下新状态,回到第 2 步。 这样,只要收到任何一台机器的规则表,$U$ 就能一步一步地模仿它。用符号写: $$U(\langle M\rangle,x)=M(x)\quad\text{对每台机器 }M\text{ 和每个输入 }x.$$代价是慢:$M$ 的每一步,$U$ 都要用许多步去查找和抄写。但 $U$ 能算的,恰恰是所有机器合起来能算的。 程序放进内存 实际的推论就是存储程序的思想。不必为每项任务造一台机器,只造一台,任务作为数据输入,放在存数字的同一个内存里。换任务就变成了换文字。你在手机上打开一个应用时正是如此:设备总是那一台,变的是它读的描述。 更进一步:如果程序是数据,一个程序就可以读、写、修改别的程序。编译器和操作系统做的就是这件事;从某种意义上说,停机问题证明中那台接收自身描述的机器 $D$ 也是如此。 Pilot ACE,图灵设计的缩小版,在国家物理实验室建成,1950 年投入运行。它现在陈列于伦敦科学博物馆。Philafrenzy · Wikimedia Commons · CC BY 2.0 从纸上到金属 战后,1945 至 1946 年,图灵在国家物理实验室写出了一台存储程序计算机——ACE(自动计算引擎)——的完整设计。这个设计很大胆:用水银延迟线做内存,每秒一百万个脉冲,甚至设想机器可以编程修改自己的指令。官僚作风和工程师的短缺拖慢了建造。缩小版的 Pilot ACE 直到 1950 年才运行起来,有一段时间它是世界上最快的计算机之一。 与此同时,在曼彻斯特,弗雷德里克·威廉姆斯和汤姆·基尔伯恩于 1948 年 6 月 21 日,在一台绰号**“宝贝”**的机器上运行了第一个存放在电子内存中的程序。几个月后图灵来到曼彻斯特,参与了此后几台机器的工作。

Hero Image
恩尼格玛:1.59×10²⁰ 个密钥和一个缺陷

一台三转子的恩尼格玛,陈列于美国国家安全局的国家密码学博物馆。上部是转子,中间是灯板,下面是键盘,最前面是接线板。National Security Agency · Wikimedia Commons · 公有领域 恩尼格玛看上去像一台装在木箱里的打字机。操作员在键盘上按下一个字母,灯板上就亮起另一个字母。第二个操作员记下亮起的字母,这串字母再用摩尔斯电码通过无线电发出去。在另一端,一名操作员用一台同样设置的同型机器,敲入密文,就能在灯板上读出原文。 在键与灯之间,电流穿过一座迷宫:接线板、三个内部交叉布线的转子、一个把电流送回去的反射器,再经过三个转子,再经过接线板。而且每按一次键,第一个转子就转一格,整座迷宫随之改变。 数一数密钥 德国人信任恩尼格玛,是因为可能的设置数量庞大。我们用帕斯卡教给我们的组合数学,为 1939 年的陆军型号数一数。 转子。 从一盒 5 个转子中选出 3 个,顺序有关: $$5\cdot4\cdot3=60.$$初始位置。 每个转子从 26 个字母中的某一个开始: $$26^3=17\,576.$$接线板。 十根连线把字母两两相连,互相交换。用 26 个字母组成 10 对,有多少种方法?把 26 个字母排成一排,有 $26!$ 种排法,用前 20 个字母两两配对。最后 6 个不接线,它们的顺序无关紧要:除以 $6!$。10 对之间的顺序无关紧要:除以 $10!$。每对内部的顺序无关紧要:除以 $2^{10}$。结果是 $$\frac{26!}{6!\cdot10!\cdot2^{10}}=150\,738\,274\,937\,250.$$总数。 相乘: $$60\cdot17\,576\cdot150\,738\,274\,937\,250\approx1.59\times10^{20}.$$大约 1.59×10²⁰ 个密钥,还没算转子的字母环。每秒试一百万个密钥,也要大约五百万年才能全部试完。 缺陷 反射器有一个实际的好处:同一种设置下,机器既能加密也能解密。但它也带来了一个先天缺陷:由于电流总是从不同的路径返回,没有一个字母能被加密成它自己。A 永远不会变成 A。 这看起来微不足道,却是决定性的。密码分析员知道,许多电报含有可以预料的词,他们称之为 crib,“提示词”:早上 6 点的天气预报以 WETTERVORHERSAGE 开头,许多报告写着 KEINE BESONDEREN EREIGNISSE,“无事可报”。要找出提示词在密文中的位置,只需把它沿着密文滑动,凡是某个字母与它下方密文字母相同的位置,统统排除。 Q F Z W R W I K T Y R E S X B F O G K U H Q W E T T E R V O R H E R S A G E ← S 对 S:不可能 W E T T E R V O R H E R S A G E ← 没有重合:可能 在第一个位置,提示词中的 S 会落在密文的 S 上,而恩尼格玛从不这样做:这个位置被排除。往后四格,没有字母重合,这个位置仍是候选。

Hero Image
模仿游戏:机器能思考吗?

我提议考虑这样一个问题:“机器能思考吗?” — 艾伦·图灵,《计算机器与智能》(1950) 图灵 1950 年发表在哲学期刊《心灵》上的论文就这样开头。紧接着的下一句,他就放弃了这个问题。要回答它,就得定义“机器”和“思考”,而任何定义都会变成没完没了的文字之争。图灵提议把它换成另一个问题,后者的好处是可以检验。 游戏规则 原来的游戏有三个参与者:一个男人、一个女人和一个提问者,分处不同的房间。提问者只能通过书面消息与另外两人交流,必须判断出谁是男人、谁是女人。男人设法骗他,女人设法帮他。 现在把男人换成一台机器。问题变成:当参与者之一是机器时,提问者出错的频率是否一样?如果机器对答得如此之好,以至于提问者无法把它和人区分开,图灵提议我们就把它是否“真的”在思考这一争论放到一边。这就是模仿游戏,今天称为图灵测试。 文中甚至给出了一段对话示例。问到“34957 加 70764 等于多少”,机器停了大约 30 秒,回答“105621”。正确答案是 105721。在论文后面,图灵解释说,一台善于玩这个游戏的机器会时不时故意算错,好显得像人。 预言 图灵并没有说当时的机器能通过测试。他用数字做了一个预言: 我相信,大约五十年后,将可以给存储容量约为 10⁹ 的计算机编程,让它们把模仿游戏玩得如此之好,以至于一个普通的提问者在五分钟的提问之后,作出正确识别的机会不超过 70%。 — 艾伦·图灵,《计算机器与智能》(1950) 这里的“$10^9$”指二进制位(比特)的容量。用今天的话说,$10^9$ 比特是 $\frac{10^9}{8}=1.25\times10^8$ 字节,大约 125 兆字节:比任何手机的内存都小。图灵在内存上估计得很准,在时间上则偏保守:令人信服的人机对话直到二十一世纪二十年代才随着大语言模型出现,而它们使用的内存是他设想的几千倍。 反驳 论文有一半篇幅在回应反驳。举几个例子: **神学的反驳:**思考是不朽灵魂的功能,上帝把灵魂赐给了人而没有赐给机器。图灵回答说,如果上帝愿意,也可以赐给机器一个灵魂。 数学的反驳:图灵定理和哥德尔定理表明,有些问题没有机器能回答。图灵同意,但指出没有任何迹象表明人类就没有类似的局限。 洛芙莱斯夫人的反驳:1843 年,阿达·洛芙莱斯写道,巴贝奇的分析机“丝毫不能自行创造什么;它只能做我们知道如何命令它去做的事”。图灵回答说,机器常常让他吃惊,而一台能够学习的机器会做出程序员没有预见的事。 最后这个回答最有先见之明。在论文结尾,图灵建议,与其给一个成人的大脑编程,不如给一台“儿童机器”编程,再用奖励和惩罚去教育它。寥寥几行,就是机器学习的思想。 证明你不是机器人 CAPTCHA——网站上那个显示扭曲字母或红绿灯照片的小方框——是反过来的图灵测试。这个名字是英文“用于区分计算机和人类的全自动公开图灵测试”的缩写。出题的是机器,需要证明自己是人的是你。 练习:10⁹ 比特有多少?如果每页 2000 个字符,每个字符占 8 比特,$10^9$ 比特能装下多少本 500 页的书? 一本书是 $500\cdot2000\cdot8=8\times10^6$ 比特。$10^9$ 比特能装 $\frac{10^9}{8\times10^6}=125$ 本书。图灵认为,一座小图书馆的内存就足以像人一样交谈。 练习:70% 是什么意思?如果提问者在两个参与者之间随便猜,猜对的概率是多少?“不超过 70%”是什么意思? 随便猜,有 50% 的机会猜对。“不超过 70%”的意思是:五分钟后,普通的提问者至少在 30% 的游戏中出错——机器骗过了很多人,虽然不是所有人。 来源: Alan Turing, “Computing Machinery and Intelligence”, Mind, 59(1950),第 433–460 页 · Ada Lovelace,为梅纳布雷亚关于分析机文章的译文所作的注释(1843)· The Turing Test, Stanford Encyclopedia of Philosophy。

Hero Image
艾伦·图灵的遗产

图灵相信机器会思考。图灵和男人睡觉。所以机器不会思考。 — 艾伦·图灵,致诺曼·劳特利奇的信(1952) 这个苦涩的三段论,是图灵在被定罪后不久写给一位朋友的,它概括了他的一生:一个用逻辑思考的人,被不理解他的人审判。然而,他留下的成果无处不在。 在计算机科学中 图灵机仍然是“计算”的正式定义。当计算机科学家说一个问题“没有算法”时,意思是没有图灵机能解决它;当他们说一个问题“难”时,数的是图灵机需要走多少步。 从这种计数中产生了这个领域最著名的问题——P 与 NP:每个解很容易验证的问题,是否也都很容易找到解?拼一幅拼图很难;检查一幅拼好的拼图很容易。没有人知道这种差别是真实存在的,还是只是我们不够聪明。克雷研究所悬赏一百万美元,奖给回答这个问题的人。 自 1966 年起,美国计算机协会每年颁发图灵奖,它被视为计算机领域的诺贝尔奖。 在密码学和统计学中 对恩尼格玛的战争表明,一种密码的安全不在于密钥的数量,而在于没有能一下子排除大部分密钥的缺陷。现代密码学就诞生于这个教训。而分班经由 I. J. 古德,帮助把贝叶斯统计带回了科学的中心。 在生物学和人工智能中 形态发生的方程是一整个领域——图案的数学生物学——的基础。而模仿游戏在机器已经能够对话的今天,仍是任何关于机器能否思考的讨论的参照。 曼彻斯特萨克维尔公园里的图灵雕像,2001 年揭幕。他坐在长椅上,手里拿着一个苹果。David Dixon · Wikimedia Commons · CC BY-SA 2.0 补偿 几十年里,图灵在战争中的工作是国家机密,他的定罪则是不被提起的话题。1983 年,数学家安德鲁·霍奇斯写的传记出版,情况开始改变。随后有了: 2001 年,在大学旁边的一座公园里,竖起了曼彻斯特的雕像; 2009 年,英国政府的道歉; 2013 年的王室赦免,以及 2017 年赦免其他被定罪者的法律; 印有他头像的 50 英镑纸币,于 2021 年 6 月 23 日——他的生日——发行。 要记住的 1936 年:图灵机定义了什么是计算,通用机预示了存储程序计算机。 1936 年:停机问题表明有些问题没有机器能回答,可计算数表明几乎每个实数都遥不可及。 1939–1945 年:恩尼格玛的计数与缺陷、炸弹机,以及带着分班的班伯里法。 1950 年:模仿游戏用一个测试取代了“机器会思考吗?”这个问题。 1952 年:形态发生解释了扩散如何产生图案。 练习:验证很容易有人说 $8633=89\cdot97$。验证它要花多少功夫?如果没有提示,要找到这两个因数又要花多少功夫? 验证只需一次乘法:$89\cdot97=89\cdot100-89\cdot3=8900-267=8633$。寻找则要试除到 $\sqrt{8633}\approx93$ 为止:从 2 到 89 一共 24 个素数,只有最后一个成功。对于几百位长的数,验证仍然瞬间完成,寻找却变得不可行。互联网的密码学就建立在这种不对称上。