计算机起源于数学,那么随着近几年计算机人工智能技术的不断更新进化,我们不禁要问,计算机能不能也帮我们“进化”下古老的数学呢?实际上,数学是恰恰是一个极好的测试人工智能实力的试验场。如果我们把数学的各个定理看成一个独立的节点,你会发现节点和节点间存在着数不清的链接,进而组成了一个庞大而复杂的网络。事实上,这个网络太过于复杂以至于现在的数学家已经很难精通这个网络中的每一个节点了。但是,处理复杂的网络恰恰是计算机的强项,所以剩下的问题就是如何将现有的人类通过智慧创造的数学理论转换成一个可以计算的数据,然后交给计算机去处理,去发现新定理。
事实上,我们发现在这个数学的网络里,定理之间是有“远近”的,有些定理间挨得非常“近”,有些定理间离的非常“远”。你发现挨得近的定理之间可以很容易相互证明,或者你发现他们其实是相似或者根本就是同构的。这种定理距离上面的远近到底是因为“冥冥之中自有天意”还是只是“历史的偶然”,我们不得而知。纵观历史,你会发现很多时候之前看似无关的两个数学子领域,在随着人类对数学知识的不断探索后,最终奇迹般连接在了一起。比如怀尔斯用椭圆曲线及模形式证明的数论领域著名的猜想——费马大定理。又比如前两年望月新一通过构建宇宙際Teichmüller理論来证明的ABC猜想(虽然至今没人看得懂…)。因此有人想,如果我们能够量化这种定理之间的远近关系,然后把这个网络输入到深度学习网络中,我们没准就能够创造出最初级的“人工数学家”了。当然要想成功,我们还需要攻克的难关就是如何用一种简单或者自然的方法来表达最终的结果,并让机器在自己创造的结果上继续学习。
事实上,之前大量的人工智能项目都遇到了这个问题。例如麻省理工学院在开发”MACSYMA”这个基于LISP的计算机代数运算软件时,其中要解决的一个重要问题就是,怎么确定当前状态下的运算是朝向正确(简化)的方向在计算。那个年代的人工智能大多依赖于树结构的搜索,而数学运算每一步都会产生大量的分支,一一探索将会浪费极大的时间。为了改善速度,他们又提出了一个分级的结构,利用启发式算法结合已知的数学知识对整体运算做剪枝优化。事实上这个方法和现在的阿尔法狗利用蒙特卡洛树搜索树的方法有着异曲同工之妙。
另外一个不得不提的人工智能项目是由斯坦福大学的道格拉斯教授开发的一个可以自我“发明”数学定理的程序。一开始他先定义一组符号集合和一组“有趣”的符号之间的关系,然后把这两组数据分别输入到计算机。之后他的程序就不再做任何干预,而是让计算机去自己发现这里面的关系。最后他发现计算机可以通过这两组数据重新发明如何计数,如何做加法,如何做乘法,如何标识出来素数,甚至可以重新“发现”哥德巴赫猜想。 这些当然都是我们人类在上千年前就已经知道的知识,但是能取得这种结果也让人感到欣喜。可是令他不解的是,在这之后计算机就不能够继续创造有用的知识了,这个系统不能继续用它推导出来的理论继续产生新的理论。所以这些计算机推导出的有限的数学知识也没准是因为输入的数据中已经包含了这些定理。而他创造的这个人工智能本身却没法创造新的知识。
回到现在,深度学习能够让我们更有效的利用已有的硬件资源。但是,依照现有的计算机体系框架,即使我们成功的将数学理论全部输入进入神经网络,最好的结果估计就是能够通过分析现有的人类数学知识,将一些遗漏的定理之间的“链接”补全。现有的人工智能还没有能力像天才数学家那样去开创新的数学领域,也不能参透数学的奥秘。
quake0day:黑客
领取专属 10元无门槛券
私享最新 技术干货