主题:关于自然语言的机器识别的一种构想--内有科幻内容,慎入 -- 陶醉
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,很有趣,下面是链接:
这里的问题的计算机处理图像的能力比文字还差。而且没有联想的功能。
这里还可以引申到,鼓励惩罚机制。人的学习实在不断的被鼓励和被惩罚的过程中进行的。如何鼓励计算机,或是惩罚计算机? 让他总结什么是对的联想,什么是错的联想。这个非常难。
人可以饿肚子,打屁屁,高兴了给个巧克力。计算机??断电?加电压?
计算机只会记忆,不会学习。
貌似你的设想有点像semantic network。
但是你说的每一句话,其实脑海里都会相应的一段映像流。我觉得很有新意。但是这样的话,每个人对每段话,甚至每个词的理解,相应的映像应该不同。比如,感动这个词,每个人第一次理解这个词,脑海里的场面是不同的,以后每次说感动这个词的时候,可能会有不同的映像。我觉得理论上,这好像是往真正的智能方向靠拢,但是物理条件限制,如果不是达不到,至少很长时间内做不到。
现在还是要等人体生理的研究有突破。我还是同意那种观点:想产生出智能,首先得知道什么是智能和智能工作的机理。
不过现在应该有一种趋势,初级的生理指数和人工智能算法相结合,比如对于感动这个词,你可以说有人流泪,有人有痛哭流涕的表情(这些是映像),同时也可以测量有关血压,心跳的指数。
好像听说过,微软有通过身体骨骼的回音数据,消掉手机电话噪音的研究。
我也就是最近有些看到计算机视觉的库才产生了这个联想,不过目前识别些字符车牌还好,貌似要是反推就很差劲了。
假使,万一,如果,可能,保不定真有人要实现这个系统的话,那么我觉得他要面对的最主要的问题就是图像处理,这个也是真难,因为人的图像处理能力是相当精密,即使是粗粗的模仿也很复杂。
在视觉处理方面,我觉得至少要实现三个图像处理的子系统,分别是图形构成系统、静态比较检索系统、动态关联记录系统。首先,构成系统将二维图像抽取成各种各样的带属性的三维结构(只黑白也没关系,就当色弱了),这首先形成空间观;然后就是三维结构的比较检索系统,比如说,我们一说碗,脑海里就会产生各种类似的椭圆形状的物体,这就是所谓的三维结构比较系统了,这个系统实现了,给机器扫进各种各种的碗的图片的话,虽然它不知道这些东西叫碗,但是因为形态相近它也能给这些东西一个唯一的索引值;然后就是动态关联记录系统了,万事万物都在发生相对位移,结构本身也在被塑造和打破,必须用最有效的方式将这些图形的关联变化都记录下来,以便于检索,匹配,当机器在接受外界新的图像的时候,如果发现这个动态的过程有过差不多的记录,它就知道这个过程叫啥,接下来可能发生啥,并且这个时候,给定语法了,机器也能根据语言组合已有的三维结构产生新的记录,也就是俗称看书。。。。
又一段闲扯。。。
人的惩罚机制很明显啦,软件的话,就需要编程吧,嘿嘿,扯下去就是机器人三定律啥的了。
你这样的空想很好,有利于大家开阔视角。
谢谢你的讨论。
我一直在琢磨开发一个帮助进行软件设计的软件。为了有个可靠的模型作为所有发散性思维的基点,常常需要跳出我的ego,作为一个观察者、旁观者去琢磨“他”在软件设计中如何思考。往前略进一步,就是一般化地琢磨人怎样运转思维。对人的思维过程的观察(其实大部分是对自我的观察),我得到的想法和你很相似,尤其是“刷屏”的说法!
但我也没有时间去search,瞎琢磨。
观察人自己的思维过程(图像。。。),通过计算机来模拟,这个路子、细节上肯定有很多障碍,但大局上我看不到有什么不通的地方,也许有一天会成为现实。
视觉是形成语言的重要因素,但不是绝对的,天生失明的人也能学会语言。
其实想想自己的思考过程,有时是想象图像,但更多的应该是意识中的自言自语。
好像天生聋子能学会书写文字。
很好奇,天生又盲又聋的人能否学会语言(口头或书面)。
我感觉如果天生失明而能学会表达自然语言是因为,人凭声音和触觉的感知也是能形成粗略的空间感的,当然这点人不如蝙蝠,而且人的声音识别也是非常精密的。我们思考的时候确实很多时候在自言自语,我感觉这是因为重组音频流比重组视频流的能耗要低得多的原因,在对映像进行切割关联的时候,人同时也没少了将同步的声音进行切割关联,这些自组的声音同时也已经抽象的代表映像了,这其实也是语言的本意。文字就更加先进一些了,就是用抽象的图像代表图像流。不但处理图像比声音麻烦,对于人而言,输出也是处理图像比声音麻烦的多的多。
不过,这么说起来,貌似建立一个由立体声(用声纳感应啥的)识别系统进行认知关联的自然语言系统要比基于视频识别的要相对简单很多,同时也能进行比较成熟的思维。呃,好吧,其实也是非常非常难的。
这个不是一般的难啊。就说定义吧,谁能给出个简单物体的最小化精确定义?比如:人
但是我觉得,这也并非不可能,如果图形图像素材库丰富,只要稍微加重新组合即可,因为大多数的重组连基本的空间构成,物理定律都不满足,虽然还是不是一般的难。至于最小化精确定义简单物体,我觉得到抽象正方形圆形锥体就够了,对复杂事物的定义,实际上也是人人都有人人的看法(映像的),统一的定义是有思维能力之后学习到的。每个机器处理过程不同,应该也不一样。
如果把人脑也作为计算机的话,与现实世界的计算机有2个很大的区别。
1.人的存储器不准确,但容量大,估计是以模拟信号的形式存储信息的,计算机的存储器非常准,但目前来说容量还有限(一定要量化,有字长限制等)。
2.人的运算器可以自己设计算法,计算机的运算器目前还不能自行设计算法。
如果按照诺依曼体系,就是指令存储,顺序执行的话,估计计算机在人工智能上想突破是比较难的,我偶尔也设想过如何设计一个能够自我进化的软件,比如开设若干进程,每个进程可看作一个生物体,自己可以随即产生指令序列,并制定一个规则,适应规则的进程可得到奖励(如ram, cpu time),否则就被惩罚,不知道这样运行一段时间后,会不会产生物种进化一样的效果?
纯属瞎扯,呵呵
虽然她的残疾不是天生的