![花](https://www.ccthere.com/bbsIMG/flower.gif)
Alan J. Perlis
上周周末,大学同寝室同学聚在一起吃饭,作为已经是it民工的我们,很快就三句不离本行,聊开了各自在码的活儿。j说,你知道吗,现在的编译技术可先进了,我现在正在用以下的类自然语言写测试案例:
[<Scenario>]
let 当把a从一个小链表中移除后_它不应该包含a() =
对于 [f;g;a;c;k]
|> 当 移除 a
|> 它 不应该 包含 a
|> 它 应该 包含 k
|> 验证一下
我:嗯,好吧,那我要是把“验证一下”敲成“验证”、“验证一下下”、“验证下”、“靠,快验证!”,那行吗?
j:......现在是固定的,不过以后可以改进,现在的programming language正在和自然语言靠拢。
我:问题是,这个还是上下文无关的语言啊,怎么着也不像自然语言啊。
j:......
既然扯到了自然语言,于是乎,我们在痛陈目前大伙儿写的东西是多么没有技术含量之后,话题就从比较靠谱的领域转向不那么靠谱的方面,胡侃了一把自然语言的机器识别问题,曾几何时,俺们都想当科学家。。。然后两人都觉得不是太过瘾,因为两人其实都不懂人工智能,纯扯淡,所以我干脆就搬到西西河上来抛个聊天的话头儿,让河里各位方家、大牛过来,聊点目前这个领域实际的进展。
我们都知道,人类设计制造计算机的一个终极目标就是让机器能像人一样思考,而不是只是让它天天出报表、存文档、放视频,这是非常伟大的理想,有无数科幻作品以此为题材,这个咱们有空另开贴讨论。是个目标,就得有个考量的标准。计算机科学的先贤图灵在一开始就提出了考量的标准,那就是著名的图灵检验,也就是说一个软件如果能跟你qq聊起天来让你感觉不出它是机器人小强,那就证明了它能像人一样思考。这个考量是非常客观的,因为语言是人类思维的结晶,从此以后,无数的计算机科学家都开始了对语言的研究,伟大的计算机革命拉开了序幕。
好了,以上是大家都知道的内容,下面是我当时不靠谱的推测:
机器之所以无法正确的把握有上下文的自然语言,普遍认为是因为首先自然语言中有太多的例外了,机器无法定位词汇在语句中的用途,然后又因为说话人的背景千差万别场景太多,无法穷尽,最多只能靠基本的概率方式来统计,所以不能精确。但是我觉得这些认识都忽略了语言的原本目的,那就是以最简短的编码来表达一个连贯的图像变化过程,即让人能调出认识中的一段或一系列经过特殊组织的图像流。我们读到每一句话,或说出每一句话,其实脑海里都会相应的产生一段映像流,即使再抽象的词汇,其构成或最初的语义都是具有形象的,词汇之所以变得抽象,是因为其已不能被三维空间中的图形变化过程所直接代表,而是代表一系列的原本在空间中毫无相关性的映像的联系。而人所谓的思考和学习,就是打断和重组记忆库中的图像流片段的关联,甚至产生新的图像流片段。对于机器而言,如果它不能映射语言背后所代表的映像,所谓的“理解”无处而来,只不过是简单的图书馆检索而已。
实际上思维是根据感知来的,这也是人工智能对思维的一种基本理解。而人的感知里头9成以上都是靠视觉。所以,貌似可以说,人的思维,就是在不停的处理图像流的过程。而自然语言,则是对经过抽取和组织的图像流片段的各种各样的标记方式。即使是同一个东西,每个人看的角度(这里不是抽象的角度的意思)都是不同的,所以每一个人对同一句话的所产生的映像都是不完全一样的。
如果将人的思维系统拿出来当作某种图形识别引擎来理解,那么我们就可以发现是可以很好的划分成几步的。首先,这个系统每秒处理24帧2d图像,如果图像是连续的话(变的太快人会头晕,感觉虚,系统宕机),则通过匹配图像变化序列当中的光影规则,在这些2d图像中抽取出视界范围内所有物体的大致的3d的图形结构,并推演出物体无法被观测到的面的3d结构,然后记录这些图形结构的相对位置,如果图形结构的相对位置发生变化,则记录这个变化的过程,并按照这些结构的变化的重要性来对过程记录进行截断、归档、关联。而一个图形结构变化片段重要与否,则由这个变化是否会对人的自身维持和繁衍造成影响而决定,这个决定,部分由本能编码而来,部分由对记忆中,类似变化是否有益于自己而学习来。如果我们能 dump我们的意识流出来的话,我们应该能看到海量的图形数据流在不断的刷屏幕。
基于以上认识,是否就可以考虑实现一个简单的有空间认识的自然语言识别器,这个系统能实现人的最简单的甚至是无意识的一步(因为人的这个处理能力是相当快的),那就是根据连续的二维图形上的一个带投影的面把其他的面都补充上来。实现了这个能力,机器就有了所谓的立体观,这样,机器就能理解方位,左右,以至于你我他。然后,就可以给这个机器输入海量的影视资料(当然是配字幕的),编入基本的语法规则(这个就不通过图形来教了,那样太慢),接着再给这个机器输入全部维基百科,这个时候,这个机器就能真正根据知识来学习,形成对自然世界的映像描述了(我们debug的时候就能看到机器在阅读的时候的图像刷屏过程),神经元算法作为一种对人的大脑活动的一种有效的仿真模拟,就适用于这个阶段的根据元编码驱动去修改抽象图形、映像结构的联接枝上。人在与这个机器进行对话的时候,机器首先将输入的语言匹配出现过这个语言的所有映像,然后根据维基的知识推得场景的变化过程,再根据对对方的推断及对自我的认识来决定反馈何种信息。是的,自我,有空间的辨别,很自然就能形成“我”的概念,不过,我个人认为这并不必然的就会有导致机器有啥邪恶的行为,因为机器的源动力(对其而言就是源编码)与其自身存在没关系,这个机器确实可以感知它自我的存在的,不过,是处于一种无关痛痒的状态,源动力作出的刺激会不断修正它的行为,比如说,要它当活雷锋,或者输入三定律,当然不排除它的源被修改成暴力的因素。
在诚实的情况下这个机器应该是完全有非人的思考的,尽管它确实能理解人的语言了。比如说 ,你问它,你今年几岁了,如果它能思考,它不会说它多少岁,因为它就不是人,它应该回答,岁数是人才有的属性,我是在xxxx时候启动的。最终这个机器通过对其被直接编码进去的逻辑控制产生图形认识之后,很可能产生我们所谓的理性思维的能力。
------------------------------ 华丽的分割线 ---------------------------------
说完之后回头一想,我自己都觉得太过科幻不靠谱了。就此请教各位大牛,目前人工智能,语言识别的实际发展如何?
开头的引用来自图灵奖获得者Alan J. Perlis的文章Epigrams in Programming,很有趣,下面是链接: