摘要:“机器学习”是不同于“算法”的Agent,这与NP与P的相对性相同。人工神经网络(ANN)的“异或”逻辑是由多层大规模阵列的门电路构成的真值表系统的机器表达。“机器学习”是对“人的模仿”能力的模仿,对人的“模仿”是机器本质的“学习”;机器可以模仿“学习”、自己学习,但本质是机器,人的最高“模仿”是人对自己的学习。
1.算法的机器性质
2.P与NP:Agent
3.几个术语的内涵和性质
4.机器、逻辑、模型
5.作为“学习”的人工智能
1.算法的机器性质
“算法”是一个简单但却是不容易完全理解的概念,从直觉上说,算法最终都是通过“机械步骤”完成的,即以某种规则指导下的一系列机械步骤完成的“计算”,历史上很早就有人开始了模仿人的计算过程制造计算工具或计算机器的尝试,现代人最终脱离了机械形式的限制,创造了电子计算机,但是计算的机械步骤性并没有改变,计算机理论中的0和1 这两个符号和电子计算中的电子脉冲(或存貯状态)就是具有这种“步骤”本质的非机械形式,而制约这些符号或电子脉冲的组织的方法就是被称为“程序”(算法)的那些东西。
1936年,图灵模仿人们用纸笔进行计算的过程提出“图灵机”这样一种符号化的机器模式,在图灵机模式中,计算的对象(数据)和计算的规则分别用纸带和机器内态表达,而当时实际制作的计算机则把程序存贮在纸带上,1945年,冯·诺依曼( John Von Noumann,1903-1957)提出存储程序原理,程序和该程序处理的数据同样存储在机器中,并确定了这种存储程序计算机的五大组成部分(运算器、控制器、存贮器、输入设备和输出设备)和基本工作方式,到目前为止,这都是现在广泛使用的电子计算机的通用模式。
“冯·诺依曼机”(Von Neumann computer)是物理化的计算机模式,又叫“冯·诺依曼机结构” (Von Neumann architecture);与此相关还有二个术语:“普林斯顿结构”(Princeton architecture)和“哈佛结构”(Harvard architecture),实际上,这两者都是“冯·诺依曼机”,但它们具体地指计算机的中央处理器CPU的物理体系架构的分别,这两种物理体系构架不同在于数据与指令是在一个存貯器中或者是分开为两个存貯器,普林斯顿结构将程序指令存储器和数据存储器合并在一个存储器中,并使用同一总线通道,只是程序指令存储地址和数据存储地址在同一个存储器的不同物理位置;哈佛结构则把程序存储器和数据存储器分开,并有不同的进出总线。普林斯顿结构和哈佛结构具有不同的技术优、弱势,普林斯顿结构紧凑,但哈佛结构程序存储器和数据存储器由于采用不同的总线,提供了较大的存储器带宽,减轻了冯?诺伊曼数据瓶颈(von Neumann bottleneck)。但现在通常将冯·诺依曼结构称为普林斯顿结构。
在现代电脑中,CPU中的数据流量与CPU的程序指令工作相比差距非常大,CPU常常在巨大的数据量上只执行一些简单指令,数据流量就成了CPU工作效率的严重的限制,瓶颈问题越来越严重,虽然在CPU性能、编程语言、算法和编程方法上不断得到了改进,但面对今天的更大的数据形势,问题依然存在,并更具有本质性。提出“冯·诺伊曼瓶颈”的约翰·巴科斯在1977年ACM图灵奖得奖致词时就说到:……确实有一个变更储存装置的方法,比借由冯·诺伊曼瓶颈流通大量资料更为先进。瓶颈这词不仅是对于问题本身资料流量的叙述,更重要地,也是使我 们的思考方法局限在‘一次一字符’模式的智能瓶颈。它使我们怯于思考更广泛的概念。……
2.P与NP:Agent
如何处理人类当前面临的巨大数据量,已经成为了对图灵机或冯·诺伊曼机的机器能力以及算法形式的巨大挑战,实质上这是这个“问题”本身的性质问题,就是说,人们用字符表达数据的机器处理方法已经成为了新的问题。在算法基本理论中,这个问题早已被人们觉察到了。
在经典意义上,宇宙只有唯一的时间,实时时间没有并行性,所以可计算意义上的算法具有线性本质性,在这种线性关系中,事物的复杂性以递归、迭代的方式多重相嵌,但最终还是线性的,这实际上是“算法”这个概念所具有的“能行可计算性” 的本质,人们所理解的算法的“机械性”实质就是指这种基本意义上的线性。线性问题的可计算性在数学中是以“递归函数”精确刻画的,在计算机理论中,这种线性性质是以“多项式时间”(Polynomial Time)这个概念表达的,“多项式时间”不仅是指数据与机器的性质各自都是线性的,而且强调的是这二者之间的相对增长的能力是多项式的线性关系,即机算机的线性能力能够胜任数据的线性增长。(注意,求解问题的“确定性”与求解的“精度”是不同性质的问题,前者是由问题或算法的本质决定的,后者则是可以由人控制的。)
图灵机或冯·诺伊曼机是可以确定性地求解确定性问题的计算机,这种计算机以算法(程序)在逻辑电路构成的机器中求解,这种算法求解的方式以下称为“算法计算”。(这个基于“算法”的概念在人工智能领域的用法,比“符号计算”等更能表达相对于“仿生计算”、“人工神经网络计算”、“智能计算”等诸多名称的特征性。)
但是可以算法计算(线性计算)解决的问题只是我们的问题世界中极少的部份,非线性问题是我们所面对的自然和人类社会、包括人类自身是更重要、更直接的部份,一般来说,事物或问题的非线性关系表现为多元性质对象的多重组合的高层次复杂性,这种复杂性被人们直觉到并以特殊的词汇表示出来,计算机理论和人工智能研究中,大量使用的“agent”这个词就具有这种广泛又而特殊的使用意义, 日常语言中的agent的基本意义是“代理”,Agent作为人工智能的基本术语是由明斯基(Marvin Minsky,1927-2016)在1986年提出的(”The Society of Mind”),明斯基认为社会中的某些个体(Agent)具有协商解决复杂问题的能力,这种具有社会交互性和解决复杂问题的能力用到人工智能上,就是人工智能的“智能性”。Agent的术语化就把一种不同于传统算法的智能性的特殊性表达了出来,并得到广泛的使用,在人工智能领域,Agent的意义大体相当于“专家”,但这区别于基于数据库的“专家系统”,而是指不同于“算法计算”的人工神经网络模型(ANN)的人工智能模式。
基本意义上,Agent是具有自主性和交互性的一个实体和实体性过程,虽然曾把一些算法计算环境中的一些具有独立性的过程称为Agent, 如计算机中独立运行在被管理单元上的自主进程SNMP就被称为一个Agent,但真正能体现Agent意义的是实体的环境中的具有自主性和交互性能力的一个实体,如机器人、无人驾驶汽车、无人机等都被称作Agent,这也就是Agent这个术语今天到处可见的原因。
这种基于对机器能力的要求的交互性和独立性,是人工智能机器的所面对问题的性质决定的,所以在Agent的核心意义上,是指人工智能的“智能性”,这样才能本质地区别一种与“算法计算”不同的计算形式,并理清与此相混乱的一些概念,比如,在算法计算机中建模的Agent与电脑中的“虚拟机”(Virtual Machine)都是“算法计算”,“虚拟现实”(Virtual Reality)的虚拟实体却不具有Agent的本质,而一个ANN无论是算法建模的或是实体的,都是Agent。
从纯理论的意义上说,非线性的“复杂性”问题的求解实际是由另一个与Agent本质相关的术语Matrix所表达的。Agent这个概念具有中间层次的转换者的特别意义, 而multi-agent就是指多种、多次的或重复的出现的一种更高层次的整体性的意义,这种意义的上的变换或计算就是matrix。 matrix的基本意义是母体、基体、间质等,它的特殊意义是多重静态或动态的复合组织和变换过程,数学中矩阵就是一个纯粹的例子,数学矩阵可以是任意维数组的几何化组合,“矩阵代数”就是这种线性几何数组发生变换的严格非线性关系,所以也可以称为“计算”,但很明显,这种“计算”具有完全不同于“算法计算”的性质,相对之下Agent形式的“机器代理(Agent)”和“代理变换(Marix)”则强调复杂组合的选择性和最优性。这种多重组合的整体性和变换关系不是线性形式能表现的,用术语说就是这种问题的增长性质是“指数型”的。这种相对于“多项式型”的或“线性”的“非线性问题”是因问题的整体性质或内在性的不确定性所决定的, 称为“不确定性问题”(Nondeterministic Problem,NP),NP的本质决定了不可能期望得到一个确定的解答,实质上不存在确定性意义上的表达函数,比如所谓的“拟合函数(fitting function)”就只是一种近似,对NP只能有最优的近似的解决,我们称为NP-algorithm(NP-算法),定义是:the optimal algorithm to get the best fit approximation value of NP(对不确定性问题的最优近似求解算法)[2]。
3.几个术语的内涵和性质
为了以下叙述的方便,在尽可能继承的基础上,精细地区别使用一些术语。
“图灵计算”(Turing Algorithmic Compute)与“算法计算”(Algorithmic Compute)同义,也就是算法理论中的“多项式时间”(Polynomial Time)的意义,与数学理论中“递归函数论”本质一致,“能行可计算性”概念和“丘奇-图灵论题”表达了这个本质性;
Agent 或“机器代理”,也就是“机器智能”,是“人工智能”这个术语的核心意义。“机器智能”典型就是ANN(Artificial Neural Net)的“人工神经网络模型”。非机器性质的“人工智能”即所谓“超人工智能”是现在还不能定义的问题。
“代理计算”(Agent Compute) 就是Matrix,只是在“计算”的实体性意义上区别于数学纯粹性的术语“矩阵代数”。
“算法计算” 可以确定性求解(P算法),要用计算机语言人工编制程序,而且有不同的计算机语言,并在不断地重新设计计算机语言;对于不确定性问题(NP)只能采用最优近似算法求解(NP算法)。人工编程繁琐且易出错而且修改麻烦,但程序可通用;
“机器代理”的“代理计算”首先是Agent自己学习以得到“智能”,然后用于处理实际事务并在工作中不断自行完善、修改。虽然“代理计算”无须事先编程,但需要事先学习(“有监督”或“无监督”),因此需要大量的事前数据进行“学习”以获得处理实际事务的能力,如果说人是经验的个人,“机器代理”首先就是模仿了人的智能而构造的个体性实体或模型,“代理计算”则是学习了人积累的经验而形成自己的“智能”能力,并以这种能力处理实际事务并不断积累和完善自己。在这种理解上的作为人工智能的智能机器确实是人的“代理”。
注意现在广泛使用的以软件建模方式研究ANN是依靠“算法计算”的计算机工具来模仿“机器代理”和“代理计算”的研究方法,也就是计算机理论中常见的“算法建模”和“算法模型”(有时称“模型计算”Model Compute),这种方法与“机器代理”的硬件实体机不同,“机器代理”实体机需要大量的芯片硬件或多核芯片构造单机,这与原则上只有一个“CPU”的“算法计算”的计算机完全不同。当然实际上的研究工作是多种形式、方法混合的,Agent仍然需要软件支持,电脑也有多芯片工作方式,还有采用更复杂的“网络计算”或“云机”等等。
4.机器、逻辑、模型
计算机是模仿人的计算过程发明的算法机器,人的计算是人的能力中很专业的一部份,从儿童屈指计数、乘法表到算盘,从数学家到程序员等等,人都是依靠计算工具完成计算的,而人的数学的能力——从直觉到数学定律的发现和艰难的证明,都有着很大的偶然性,这种能力仍是人的智力中最神秘的部份之一。
1941年以来电子计算机的发展,到1956年 Dartmouth会议提出一个定义模糊但被广泛接受的术语“人工智能”,这个领域成为了大半个世纪以来最引人关注的人类文明历史进程之一,特别是Agent这种与传统计算工具道路不同的机器形式的“计算”出现,带来了隐藏在计算和算法理论后面深刻的问题,这就是,“算法”和“计算”的本质是什么? 它们是人的(智能)属性还是人的(智能)工具?
基于图灵机模式的计算(冯·诺依曼机构)是以字符形式(“计算机语言”)表达的算法和以逻辑电路实现的程序计算过程,一部份专家大体沿着这种“算法计算”的方式来表现机器“智能”,如MCCARTHY的LISP语言(LIST PROCESSING, 1958)、专家系统、大型数据库、超级计算或超级计算机中心等等。另一方面,维纳(Norbert Wiener,1894-1964)认为“智能活动”基于反馈机制(所谓“行为主义”),“反馈”就是一个系统状态自我判断和调整,反馈控制就是一种具有自身自决的能力(与此相伴的就是上世纪的系统论、控制论、信息论、耗散论、协同论、模糊集合等的理论创新),但是一个自决的“系统”还不是一个Agent,比如,电脑中的“虚拟机”不是Agent,Agent具有个体性或实体性,这个本质来源于“人”的性质,正是这个意义上,Agent表达了“人工智能”具有的自主性和交互性的本质。
维纳发现的反馈机制的智能性实际上是以“判断”的逻辑性本质性曲曲折折地进入人工智能理论中的,即以一种“泛逻辑”的“模型”方式表达了“选择”或“判断”这种更基本的逻辑能力,这也一直是人们努力的另一个方向,如艾伦·纽厄尔 (Allen Newell,1927-1992)和赫伯特·亚历山大·西蒙( Herbert Alexander Simon,1916-2001)的Logic Theorist,以及更进一步引用反馈机制的自我学习模型(如“通用解题机” GPS 1957)等。
上世纪五十年代甚至更早就开始了的人工神经网络的研究一直是断断续续地进行着,相关的理论和技术交织在几个交叉领域中,而且思想观念的融合和冲突非常激烈,其中最有代表性的观念就是明斯基(Marvin Minsky,1927-2016)在综合ANN单元模型、统计学中相关技术(支持向量机Support Vector Machine)、逻辑和数学等理论上得到的一个认识:ANN单元构成一阶谓词逻辑(“与”、“或”),而二阶谓逻辑的“异或”(Exclusive OR,XOR)在ANN中无法表达(Perceptrons: an introduction to computational geometry, M. Minsky & S. Papert, 1969)。简单地说, 一阶逻辑只有一个层次,二阶逻辑则有两个层次,“异或”的逻辑意义是:或有且仅有一个为真;而在一阶逻辑中,“或”是可以同时为真的,“与”是必然同时为真,但“异或”与此不同,“异或”是两者的值必然不同(这与逻辑“非”也不一样,“非”是自反),“异或”并不关心各为何值,只是强调两者一定相反,因此“异或”的本质就是一种“不确定性”。
这里特别说明一点,现在的计算机中大量使用的“异或门”逻辑电路是由多个一阶门电路联合表达的异或真值表。物理上不存在一个单体的“异或门”逻辑单元,这也就是被误解的明基斯的中“咒语”:“异或”不可表达。明斯基洞见了数学、逻辑与ANN模型之间存在的原理性隔阂,这一个领域中的深刻思想常常被技术专家们认为“太哲学”、无关“硬技术(科学)”而被轻视,这种情况恰恰造成对人工智能本质的认识的长期困感和研究工作历史上起伏。
虽然明斯基指出了的ANN单元的致命弱点,但从其它领域的渗透和交织,最终使ANN的研究以一种“最优近似”的方式表达了“异或”,这就是多层神经网和相关的“反向传导”(Back Propagation)技术,在某种意义上,“深度学习”的机器作为一个Agent可以看作是对算法计算机中由门电路构成的“异或”逻辑真值表的一种大规模阵列式的体系化。
“代理计算”的原理可以认为是从统计学和运筹学等学科承继下来的,面对大量数据的统计学分类技术,就是基于对数据对象的特征提取,ANN把数据(文字、句子、文章、搜索词、图片、图形、形体、视频、语音,音频、环境表象……)对象化,比如一张图片(或取样单元)就是一个非常长的数据串对象,获得了这串数据对象的特征也就“认出了”对象,这也就是“智能”性。数据特征实质上就是一个基于符号串的“超级符号”,用中国传统术语说,就是“相”或“象”,“大象无形”,用在这里,就是“数据特征”不在数据本身,而是数据对象的可判别性。把数据转换为数据本身的特征,就实现了以识别模式代替了以前的符号算法,最重要的原理区别也就在这里,“代理计算”不是“算法计算”中的逻辑门中完成的计算,而是在多层大量的门电路阵列中进行的非线性转换。ANN就是由逻辑门阵列构成,所谓“深度学习”也就是以大量的芯片建造的多层次的和层次的层次的“深度”上的逻辑阵列。
5.作为“学习”的人工智能
我们自己的大脑似乎是这个世界除了神的问题之外最困难的问题之一(还有一个就是宇宙学问题),但致少大脑是可以直接研究的实体的,因此了解和模仿神经组织的工作成为最有希望得到对人和人的智能实质性的接近,人工神经网络(Artificial Neural Net, ANN)的研究确实带来了突破性的进展,而其中的“学习”这一概念具有特别的重要性,对于人来说“学习”是最基本的智能,但这个基本性对于机器来说,却如首次登月的阿姆斯特朗所说的是“一大步”。
什么是“学习”,对人来说似乎太简单了,但实质并不然,俗语说“人的一生都在学习”,圣人有言“朝闻而夕死”(论语·里仁),可见“学习”这一概念与“人”的本质紧密相连,很难在本质性的意义上下一个精确的定义,我们也很难解释“机器学习”为何成了人工智能中的最突破性的进展之一。“机器学习”是有实体和实体性过程的,但即使是象“深度学习”这样的技术取得了突破性的进展(如谷歌的AlphaGo),但对“机器学习”一般性原理几乎没有深入的研究和充份的解释,正如明斯基的诘难一样,我们仍然需要理解这种诘难为什么会造成那么重要的影响。AlphaGo的成功证实了“人工神经网络”这种不确定性计算的实际能力,而“不确定性”的性质在理论上还是一个远未清晰化的课题,比如,计算理论中的“并行性”概念就远不如算法理论中的“可计算性”概念那样清楚和清晰,ANN模型和AlphaGo的成功证实了“代理计算”的“智能”性,不仅是一个重大的既成事实,更具有理论和和观念上的深刻影响,逼迫人们从科学理论和智能哲学上去重新认识和深入研究与此相关的重要问题。
AlphaGo模仿(“学习”)了人的智能,並且“学习”了大量的人与人的对弈的实际经验,即“学习”了人的学习能力并“学习”了人积累的经验,这首先是技术专家们长期工作和各相关领域的知识的汇集形成“机器代理”,然后是这个“机器代理”的“代理计算”的能力的形成,然后才是AlphaGo的“自己”的“智能”性“工作”。在机器“学习”这个意义上,这应当是对“深度学习”这个术语的一种“深度”诠释,也是对“人工智能”这个概念的一个初步内涵性分析。
人机对弈实际是人(棋手)与“所有的棋手”的对弈,即一个棋手与另一方作为超级联棋手的对弈。所以真正的对弈是个人棋手的专业知识与整个专业知识之间的两种不同的整合的方式和能力的关系的对弈,前者当然是人的一种智能的,但后者仍然是“属人”性质的一种知识能力,机器可以“学习”,但这种学习机器是人的创造,甚至机器还可以“学习”人去创造机器,但机器不能像人一样创造一个具有“不确定性”本质的自己,就是说,无论机器的“能力”如何强大,在最终性质上是还是被人创造的。
“代理计算”的前提是大数据,大数据是即存的事实的记录,没有大数据的积累,机器便无法学习,因此“机器学习”并不能创造没有事前数据记录的新东西,这是“代理计算”的限度。
由于“机器代理”是通过前期训练和后期实际工作得到和完善“代理计算”这种“人工智能”的,所以具有一种“先天”和“后天”的“个体性”,这也“机器代理”区别于“算法机器”的特征。作为一种产品,“机器代理”无法象电脑一样进行硬件和软件直接装配式的流水线大生产,因为无须编程也就不会有通用的软件,原则上说,“机器代理”需要个别化的人工训练过程,即便可以集体式地进行“有监督学习”,但并不能保证这种“学习”具有“算法”一样的无差别的确定性,至于“无监督学习”更是一种个体化的过程。并且“机器代理”是一个在“干中学和学中干”的“代理计算”过程,因此一个“代理机器”一定具有个别性质,可以说这是一种机器的“个性”,但这种机器个性本质上不同于人的个性,这种机器个性本质上脱离不了对人的依赖,即便是为人生活服务的机器人,在与人的交往中所获得的能力仍然是基于本质的(“先天”)的依人性,认为机器能具有“感情”不仅是人的“移情效应”,而且应当说,特种机器人“感情化”是由“造机器者”先天赋与和与使用者后天的依存性形成的,这正是一些科幻电影中机器人所具有感动人情的秘密,实际上这是一种“复杂性”意义上的人机相互关系。
一个具有“大脑”性质的“机器人”仍然是人创造的并和人具有紧密依存的复杂关系的实体Agent,对人工智能的本质的研究使人能通过这种新型的人机关系而反思性地“证明”这样一个人的共识:个人经验和工具能力都是有限的,人的知识和工具方法最终可以确定或近似确定性的得到某个具体性目的,但这总是有限度的,个人与机器的对弈无论谁胜都只是这种性质。一般意义上的“人”才是具有最终造力的人,宗教或神话中的“造人”只是神对自身的模仿,作为一般意义上的“人”的创造能力是未可限制的,这就是人区别于机器的本质。
比如,人创造的AlphaGo并不是一个单纯的ANN模式的Agent,而是各种技术手段的综合和反复的“试错”中的进步的积累,其中对“人的模仿”的模仿才是“机器学习”的根源,“机器学习”是对“人的模仿”能力的模仿,对人的“模仿”是机器本质的“学习”,“机器学习”可以而且只能“模仿”人的“学习”、自己学习,但本质是机器而不是人,就是说只能模仿人的“学习”这种“智能”性质,最多只能是模仿“成为一个人”。比如,AlphaGo 的“策略网络”与“价值网络”的分离和联合性的工作,不过是对人脑左右脑互补性的工具性模仿,我们虽然可以用“模仿”人的学习创造“机器学习”,但要“理解”这种原理仍然需要人对自己的学习,人的最高“模仿”是人对自己的学习。在最终的意义上说,最终的“不确定性”就是“人”自己。
“What magical trick makes us intelligent? The trick is that there is no trick. The power of intelligence stems from our vast diversity, not from any single, perfect principle.”——Marvin Minsky Source/Notes The Society of Mind(1987),p.308
(到底有什么神奇的诀窍使我们如此智能?诀窍就是根本没有诀窍。智能的力量来源于我们自身巨大的多样性,而非来源于某一单个的、完美的准则。——王飞跃的报告:纪念一位真正的科学思想家:人工智能之父马文·明斯基 http://zhuanlan.zhihu.com/#/zhishifenzi/20641727
部份参考资料:
[1]周剑铭:“智能”哲学——人与人工智能,网文。
[2]周剑铭:Computability vs. Nondeterministic and P vs. NP, http://arxiv.org/abs/1305.4029
[3]周剑铭:算法理论与中国理性——现代儒学的科学发展观,网文。
[4]柳渝:不确定性的困惑与NP理论,http://blog.sciencenet.cn/home.php?mod=space&uid=2322490 。
[5]M.Minsky, ed.,Semantic Information Processing, MIT Press, Cambridge, Mass.,1968.
[6]Minsky and Seymour Perceptrons, Introduction to Computational Geometry, Expanded Edition. Cambridge, MA: MIT Press, 1988.
二〇一六年三月三十一日于青庐