加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

代码与智能

(2015-05-26 12:26:39)
标签:

it

前些日子参与微信群里面关于人工智能的讨论,有朋友提出了一种很有代表性的观点,我也当即亮出了我自己的观点进行切磋。之后又见到类似观点在其他地方出现,也引发了我的进一步思考。我在这里把这一观点的要点先罗列出来,然后展开进一步的讨论。

这种观点认为: 

(1)       机器只能干“代码规定干”的事情;

(2)       机器有没有智能,只能到代码里去寻找;

(3)       代码是死的,人是活的,智能是活的;

(4)       因此,靠代码运转的数字计算机这种机器,不可能有智能。

我对数字计算机是否可能有智能这个问题本身并无确切的回答,但对于从上面(1)到(4)的这个论证方法,有话要说。我先举几个例子。 

第一个例子是声纳制导的路径规划机器人。这种机器人原理非常简单,就是向周围发射超声波,根据回波时间选择离障碍物最远的路径行走。这种“机器”,核心的“代码”非常简单,但是在障碍物布局非常复杂的环境里,能够走出非常复杂的、看似只有动用智能才能产生出来的路径。

第二个例子是采用联网协同推荐新词策略的输入法。别人经常输入的热词,通过网络变成了你的热词。输入法本身的“代码”里并不确切地规定哪个具体的热词优先,但是联网用户的群体输入行为与输入法本身“代码”相结合,能够比较人性化地确定哪个具体的热词优先。 

第三个例子是诸如JVMJava虚拟机)这样的通用解释器。解释器本身的“代码”可能并不体现什么智能,但是如果运行于其上的BYTECODE如果包含智能,那么这类BYTECODE作为数据喂给JVM,却可以使二者结合的整体体现出智能。

第四个例子是联网用户分享出来的菜谱、乐谱、舞谱、剧本等内嵌了动作时序、条件判断和流程控制要素的文本。这类文本本身看起来是数据,但是跟一些对它们进行解释执行的高级驱动对接以后,却可以产生看上去智能的行为。然而,单纯看那些解释执行这类文本的高级驱动程序的“代码”,也是找不到智能的。 

当然,还有通过大语料训练后获得语音、图像识别能力的神经网络,单纯看,学习算法的“代码”不具备语音、图像识别能力,神经网络本身就是一些权值,运行训练好的神经网络的通用程序“代码”也不具备语音、图像识别能力。但是用学习算法训练出来的权值一旦与通用的神经网络运行引擎相结合,却能够产生出一定的智能特征。

以上例子充分说明:代码里找不到智能,不代表没有和不可以有智能。其实,计算机科学界的老祖宗早就回答了这个问题。冯诺依曼体系结构(有人觉得不应该把这个功劳给冯诺依曼,这另说了)告诉我们,程序和数据在存储形态下不分彼此,完全看执行的时候把它看做什么。通用图灵机把任意一台图灵机的编码当做输入,然后就可以模拟出该图灵机的行为。Lisp语言里面的程序是表,数据也是表。可执行程序也不过就是编译环境吐出来的数据而已。代码和数据,并没有截然的界限。所以,向“代码”中寻找智能而空返,既不说明这样的代码与特定数据结合后不可能产生智能行为,也不说明“代码”的编写者已经料定这代码在任何数据下的表现都在自己的预期之内。只向代码寻求智能,是一个误区。不仅如此,从互联网、大数据技术与人工智能技术相融合的发展情况来看,寓智能于数据之中,乃是人工智能进一步发展的大势所趋。

回过头来看我们人类,硬编码于神经器件当中的那一部分,究竟体现了多少人类智能,其实也是要打一个问号的。说不定,人类智能的复杂性、灵活性被神经器件硬编码所承载的想法,也不过是我们人类的一种幻觉而已。很有可能,硬编码非常简单,但我们出生以后接触到的数据非常复杂。我们人类智能的复杂性主要地取决于我们后天接触的数据的复杂性。就像河流的形状主要地取决于地貌,水往低处流的流体力学原理非常简单一样。对此,本文先不展开。

最后一点和NLP有关系。上面提到的菜谱和剧本,都是自然语言文本。要把菜谱、剧本里面用自然语言描述的过程或流程,转变成炒菜或演戏的真实过程或流程,离不开用NLP武装起来的高级“驱动程序”。从这一点看,人类的群体智能以自然语言为载体,经过NLP的解析,转化为人工智能,是一条非常值得关注的路径。这对从事自然语言处理研究的同行们来说,真是一个极其难得的发展机遇。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有