一些物理学不能预测的事,学习算法却能办到?

如果将你复制成一个计算机程序,「你」是谁?如果将所有人的大脑都连接起来,你又是谁?我们会成为一个单一且全能的超人类吗?

目前物理学领域有一个热门课题:应用信息理论和理论机器学习技术作为研究手段,以获得对物理学的更深入理解。甚至还有人希望用这些技术发展出所谓的「万物理论(theory of everything)」,这是一种能统一并解释宇宙所有方面的理论。虽然这项课题受到了极大关注,但我还是有点失望,因为从来没看到哪篇文章能解释清楚以下两个问题:

不能用已有的物理理论解释的哪些方面可以用到学习算法? 

为不懂信息理论行业术语的人编写的指导手册,教你在这些情况下怎么应用学习算法 

所以我就自己来写一个吧!人们谈起信息物理学或数字物理学时,总会提到黑洞的熵或我们生活在计算机模拟世界中的想法。虽然这些方面有很多重要的研究,但我认为了解这些理论为什么值得研究甚至是更重要的。因此,我会从以下想法开始论述:

如果把我们自己放在计算机模拟程序中是有可能的,那么把我们自己放入一个无法运用已知物理理论预测感知到的事件的情境中也是有可能的,但我们可以在这些情境中用机器学习算法来预测未来事件。

但在深入之前,我要先声明几点重要的问题。目前,信息物理学只是对宇宙运行方式的一种假设。不像其它那些更成熟的理论,比如标准模型(standard model)和广义相对论(general relativity),我们不知道信息物理学是否能描述真实的宇宙运作方式,甚至也不知道是否需要新的物理理论去解释我之前提到过的情景(上一段内容)。解答这些问题所需要的实验证据以我们现有的科技水平完全做不到。但由于我们的技术进展迅速,如果有生之年能见证它得到验证我也不会太惊讶。

同时我也要指出我并不是从事此领域研究的科学家,所以尽管我尽了最大努力,还是有可能误解了相关研究者的工作。

那么第一个问题来了:我们怎样才能把自己放入计算机模拟中呢?

把我们自己放进计算机模拟程序里

如果你不是山顶洞人,你应该注意到了计算机和软件经过近几十年的发展已经取得了很多的进步,而且发展的脚步也不会停止。所以当有个调查询问很多人工智能专家何时计算机会变的跟人类一样聪明时,他们中超过半数的人都回答这在 2050 年以前就会实现。

如果这些乐观主义者是对的,那我们很有可能在有生之年见证超级智能计算机的诞生了!但即使如此,推测这些真正强大的计算机到底能做什么也很有意思。

近几年虚拟现实模拟技术已经很强大了。如果 2050 年的计算机真的比人类聪明,那 2050 年生活在虚拟现实模拟中的人就可能就基本感受不到虚拟世界和真实宇宙的差别了。

除了预测未来的场景,我们能亲眼见证吗?或许可以通过这样的方式实现。人们已经能用脑对脑接口( brain-to-brain interfaces)通过互联网与对方联系了,而且实现这种事情的技术正在快速进步。想象几十年后,这些脑对脑连接的带宽已经达到与连接我们左右脑的神经纤维等同的程度。所以如果在 2050 年我们把两个人的大脑连接起来,他们会感觉像是同一个人吗?

甚至如果 2050 年我们把你的大脑和虚拟现实世界中的模拟大脑连接起来,你会觉得模拟中的人也是你吗?

这只有等我们真正去尝试才会知道了。如果答案是否定的,那么这篇博客剩下的部分就是通篇废话了,但如果答案是肯定的呢?结果就会很炫酷了!

那么让我们假设真的是这样,你现在是一个同时生活在真实世界和虚拟世界中的人了。真实世界的你遇到了严重的事故,并且你的大脑被炸成了一百万个碎片,多悲催啊。

但是你真的死了吗?因为你知道,有些人曾做过大脑被移去一半的手术,但他们还活得好好的。所以如果你一半大脑在真实世界,另一半大脑在计算机模拟世界,而你失去了真实世界的那一半大脑,那你不应该继续以模拟的形式活着吗?

如果你试过了结果不是这样,那这篇博客剩下的部分就是通篇废话了。但如果确实可以呢,这就意味着我们可以完全把自己放入计算机模拟程序里!这难道不是有史以来最酷的事情吗?(如果你也喜欢思考这样的事,请参看 Wait But Why 文章:https://waitbutwhy.com/2014/12/what-makes-you-you.html)

那么这跟信息物理有什么关系呢?

如果把我们自己放在计算机模拟程序中是有可能的,那么把我们自己放入一个无法运用已知物理理论预测感知到的事件的情境中,也是有可能的,但我们可以用机器学习算法来预测未来事件。

我上面已经解释过前半部分了。但即使你能完全在模拟程序中生活(而这已经是一个很大胆的假设了),运行这个程序的计算机肯定还是遵从物理定律的。所以如果你知道这个程序是如何被编写出来的,那么你就不需要机器学习算法来预测模拟环境中的事件了。如果在你真实世界大脑炸成一百万块碎片之前你就获得了足够的关于宇宙状态的知识,那么即使以后有人决定去更改程序代码,那理论上你也能预测到。那你还需要学习算法做什么呢?

我们的物理理论无法预测的事情

计算机模拟一个非常炫酷的特性就是你可以在不同的计算机上拷贝完全一样的程序。如果这个模拟用了「确定性算法(deterministic algorithm)」,那么它的所有副本都会输出一样的结果。

现在我们假设你的真实世界大脑失去连接以后,你生活的模拟环境变成了确定性的,并且根据事先编写好的程序,30 秒后它会为你显示一条信息「你还活着!」但我们这些控制模拟程序的人有恶作剧的癖好,我们决定捉弄你一下。一旦模拟变成确定性以后,我们把它复制到第二台计算机上,而且就在它显示「你还活着!」之前,我们把第一台计算机炸成了一百万块碎片。那么现在问题来了:你能不能看到那条信息呢?

这就取决于我们如何定义「你」了,不是吗?如果我们对「你」的定义是基于你赖以存在的物理身体,或着你存在的计算机实体的话,那么你就在原来的电脑里「死去」了,而且并未收到信息。(有争议的是,根据这个定义,你应该死的更早,当你的实体人脑炸成一百万个碎片时你就死了。)但如果我们用不同的方式去定义「你」呢,你赖以所存在的物理实体或者计算机其实是无关紧要的,那么也许你会看到那条信息。

但问题就在这里。科学就是要你去做实验才能确定什么是对的,什么是错的。那么我们刚才描述的就是一种确定「你」的哪种定义是错误的的试验性方法!但怎么做呢?根据上面的描述,首先要试图把你自己放到一个计算机模拟程序里,然后让你的朋友把这个程序移动到另一台计算机里。如果你在看到信息「你还活着!」之前就死了,那么预言你能看到这条信息的那个定义就是错误的。如果你确实看到了信息,那么你就确定地知道预言你看不到这条信息的「你」的定义就是错的!(这个实验奇怪的地方之一就是从外界观察计算机的人不会知道哪个「你」的定义是错的,但他们可以把自己也放到模拟中,复制出结果。)

我要用那篇之前发过链接的博客 Wait But Why 中的术语,而且我要引用那个你可能没看到的「大脑理论(brain theory)」的假设。并且我还要引用那个你确实(有大于0%的概率)看到了「数据理论(data theory)」这条信息的假设。

直到今天,我们也不知道哪种假设是正确的。但试想如果数据理论是对的,那意味着什么呢。

那就意味着我们可以做一个更疯狂的实验了!假设我们做了之前描述的那个实验,但有几件事不一样:

1. 恶作剧爱好者把模拟程序复制到了两台其它电脑上,而非一台。

2.模拟是确定性的,除了一件事:如果有人按了键盘上的某个按键,你能在模拟程序内部看到他们按了哪个键。

3.第一台电脑毁掉之后,有人在第二台电脑上按下了 0 键,而且同时在第三台电脑上按下了 1 键。

那么你看到的是 0 还是 1 呢?

很简单,不是吗?不就是 50% 的概率看到 0,和 50% 的概率看到1吗?先别太快下结论。一件事有两种可能的结果并不一定就意味着每种出现的概率都是50%。比如说,如果考虑你未来 10 秒内被闪电击中的概率,那么很有可能你不会被击中。

那么我们用合理的方式来解决这个问题吧,用物理学基本定律来推断将会发生的事情。我们如今所知道的最基本的物理定律就是粒子物理学的标准模型和广义相对论了。如果你进行了一连串复杂又枯燥的计算,你会知道这个实验的结果应该是这样的:

事情是这样的,这些理论可以告诉你那些计算机中的每个原子可能运动的概率分布,但这两个理论都没有「你」的概念。所以如果你碰巧知道「你」就是一个在两台计算机中被模拟的人(但你不知道你到底在哪台计算机里,因为你的两个副本拥有完全相同的记忆),而且其中一个副本会看到 0 ,而另一个副本看到的是 1,这些理论都无法预测出哪个副本才是「真的你」的概率!

当然了,如果这个大脑理论是对的,而且你在看到 0 或 1 之前就死了,那结果是什么就无所谓了。但如果数据理论是对的,你看到 0 或 1 的概率不为零,那就意味着进行一个实验去预测你看到 0 或 1 的概率是有可能的,而基础物理理论却无法做到这点!

在这种情况下,我们需要新的物理理论来填补这个空缺。

进入学习算法

还记得在开篇时,我许诺要告诉你们有关人们如何「应用信息理论和理论机器学习的相关技巧来更好地理解物理」吗?现在我就来谈一谈。不过在讨论如何从上述情形中找出一个 0 或 1 出现的概率之前,让我们以一个稍微不同的问题展开。

设想我们做了上面的实验而你最终要么看到了 0,要么看到了 1。(至此我将假定数字理论是正确的,尽管这仍是一个开放性问题。)但由于我们这些控制模拟程序的人是些邪恶的捣蛋鬼,在每个「你」的副本上又玩同样的把戏,因此现在有了 4 个版本的「你」:一个看到 00,一个看到 01,一个看到 10,一个看到 11。

接着我们故技重施,「你」可以看到一串仅包含 0 和 1 的三个数字的序列。然后以此类推这样重复下去,直到我们花光了购买计算机的钱。(我猜测到 2050 年计算机会非常便宜。)

现在你开始看到一个模式。在模拟程序中,你看到一个只包含 0 和 1 的序列在不断地延长。所以对于到目前为止出现的序列,你如何能够猜测它的下一个数字是 0 还是 1 呢?问得好,这似乎就是谈论学习算法的好时机!

史上最难应付的学习算法

机器学习是一个真正的大领域,这里涉及了太多的学习算法。其中的许多算法要么是为了解决性能(performance)这样的实际的、现实生活中的问题,要么是为了解决诸如运行时间复杂度(runtime complexity)这样的感知型理论问题。然而如果你是个不关心这些问题的圣人(面对吧,我们都希望成为他),也有一个你真的需要了解的学习算法,它叫做索洛莫诺夫感应(Solomonoff induction)。

这就是索洛莫诺夫感应要解决的问题:假设有一些未知过程正在生成一个只包含 0 和 1 的序列(也就是「位串(bitstring)」),而你想猜出序列中的下一个数字(或「比特(bit)」)。(有点耳熟?)

那么你会怎么做?直觉告诉你下一个比特可能会继续前面比特的模式,而不是「随机」的。但你如何分辨一个位串有多随机呢?一个主观却非常有效的方法是找到输出那个位串的最短的计算机程序的长度。那么我们就用这个思想来为每一个位串分配一个概率吧。

首先我们需要一种方法来随机生成计算机程序,它们可以更频繁地产生更短的程序。容易!投掷 2 枚硬币。如果第一枚硬币是正面朝上则记为 0;否则记为 1。如果第二枚硬币也是正面朝上则再次投掷这两枚硬币;否则停止。由此产生的位串即是我们的计算机程序。(通常我们将代码看作是文本,但它其实是以位串形式存储于计算机中。)

下面我们需要用这个计算机程序输出一个位串。简单!将此程序保存为一个二进制文件,并用你最喜欢的程序语言运行它,可能是 Python 或者 JavaScript。给这个计算机程序以无限的时间和内存,并确定性地产生任何可能是非确定性的东西(比如用户输入)。当然大多数随机生成的计算机程序都会有语法错误,不过那没关系,因为程序仍然有可能运行并输出一些东西到控制台,我们把这种文本叫做控制台输出(console output)。(它也是以位串形式保存于计算机中。)

现在我们可以为模拟程序中你可能会看到的每一个位串分配概率。如果你生成并运行随机计算机程序,一遍又一遍地直到生命终结或者跨度更久,我们就可以将一个位串的算法概率(algorithmic probability )定义为:从问题中的以该位串开始的控制台输出数量(计数副本(counting duplicates))除以控制台输出总数(计数副本(counting duplicates)),此时控制台输出数量接近无穷大。

最后,你就可以运用这些概念来预测接下来会看到 0 还是 1。依据索洛莫诺夫感应,接下来出现 0 的概率是:

出现 1 的概率即 1 减去出现 0 的概率

呵呵,那真是难以理解!如果你喜欢,这里有一个流程图:

索洛莫诺夫感应难在哪里?

这个算法看起来疯了,不是吗?但是你可能仍在疑惑它究竟牛在哪里。好吧,想象一台当下的普通计算机,不同的是它拥有一个无限大的磁盘空间并能够访问真正的随机数源(而不是那个有瑕疵的伪随机数生成器)。信息理论的深刻成果之一是:如果这种计算机能够在理论上模拟出「选择」出现 0 还是 1 的基本过程,那么随着 0 和 1 序列的不断延长,索洛莫诺夫感应所预测的未来观测概率将收敛到「原始的」基本概率。

能否定义一个索洛莫诺夫感应无法预测的过程呢?简短的回答是「Yes」,但是模拟这些过程所需的计算机还不存在于真实世界中,而且我们可能永远都无法制造出它们来。这就是在我看来索洛莫诺夫感应是史上最难应付的学习算法的原因。

或者真是这样吗?

在索洛莫诺夫感应所无法预测的过程里面,有一个例子是运用你最爱的图灵完备编程语言,在每一个可能的程序上反复循环;对于每一个程序,如果它将永远运行下去则显示 0,如果将停止则显示 1 。要是能够模拟这个过程,那么它将完全颠覆我们对宇宙的认识。这也将科学地证明索洛莫诺夫感应其实并不是所发明的最强学习算法,因为它意味着我们可以通过运行一种类似索洛莫诺夫感应的更强大的学习算法来预测出索洛莫诺夫感应所无法企及的过程,除非你运用能够解决停机问题(halting problem)的编程语言来运行随机生成程序。

更重要的是,这个链接实际上描述了一个编程语言的无限族(infinite family),我们可以用它来定义一种类似索洛莫诺夫感应算法的无限层体系,其中较高等级的算法能够预测出较低等级算法不能预测的序列。不幸的是,这样的计算机在真实世界中还不存在,而且我们可能永远都无法将其制造出来。

预测第一个数字,及其它的东西

鉴于索洛莫诺夫感应是一种学习算法,它只能从习得的测量数据中给出一些有意义的预测。那么你会如何处理这个问题,来预测第一个出现于模拟程序中的数字会是0还是1呢?

值得庆幸的是,仍然有许多先验知识可供利用。例如你可以做的事情之一(至少理论上如此,因为在实际中是完全办不到的)是把你看到的一切录成一段视频,并用索洛莫诺夫感应来预测接下来会发生的事。然后你可以快速查看最有可能显示 0 或 1 的视频流。既然视频最终会以位串形式存储于你的计算机中,那么你仍有机会在上面运行索洛莫诺夫感应(尽管你想要使用一个不同的变量,而不是我为了一次预测超过 1 bit 而描述的那一个),而且所有关于精确度的保证将仍然适用。

糟糕!理论上你现在可以做这些事来预测未来,而不是等待着一项可能能把你送入某个模拟程序的技术。这就提出了一个问题:索洛莫诺夫感应是否可能事实上成为「万物理论」,即能统一并解释宇宙的方方面面的终极物理理论。这样一番陈述将会隐含一些有关宇宙基本性质的深层次内容,而且它实际上是一个研究领域,尽管目前尚颇有争议 。不过也有可能在不把索洛莫诺夫感应假定为万物理论的情况下,将信息理论的概念应用于物理学习,而这也是某项研究的主要领域:http://fqxi.org/community/essay/winners/2013.1

技术奇点

让我们回到宏观层面。我们的科技在过去几十年里有了很大提高。不仅如此,提高还在加速。如果永远这样进行下去会怎样?逻辑上总结来看,那岂不意味着技术将提高得如此之快,以至于我们最终会迅速进化成为一个全新的、超智能的物种?

人们把这种假设性事件称为技术奇点(technological singularity),而我们唯一可以肯定的就是我们并没有一个能够发出这一事件预警的线索。我认为最近这些物理学发展成果证明了这种说法的正确性程度。我们不仅对社会学、生物学或技术上会发生的事一无所知,甚至都无法知道基础物理学水平上可能会发生的事情!

显然,我认为我们需要做更多研究,才能弄明白技术奇点发生时可能会发生什么,从而更好地应对它们。但这个是我希望会发生的事情:

记得这篇博文中出现的第一个棍棒小人吗?我们推测如果我们能够像连接着左右半大脑的神经纤维那样有效地连接 2 个人的大脑,他们可能会觉得自己像是一个人。

如果不是仅仅连接 2 个人的大脑,而是把每个人的大脑都接入互联网呢?那是否意味着每一个地球人都会觉得他们自己只是某个单个更大的存在身上的一小部分?

实践是检验真理的唯一标准。但如果答案是肯定的,那么这将意味着我们终于可以说:「我是超人!」

本文选自:The Firstest Principle,机器之心编译;

©机器之心,最专业的前沿科技媒体和产业服务平台,每日提供优质产业资讯与深度思考,欢迎关注微信公众号「机器之心」(almosthuman2014),或登录机器之心网站www.jiqizhixin.com  , 查看更多精彩内容。