一个AI具体可行的想法

5 提交 / 0个新回复
最新回复
一个AI具体可行的想法

我是一名人工智能业余爱好者,如果您因为看到这句而放弃后面的阅读的话,说明你已经做出了一个自我选择的动作。
人工智能是可以实现的。问题在于如何落实。尝试回答下面这个问题:
你读过“荷马史诗”吗?
你会迅速的回答“是”或者“不是”,你的大脑反应如此之快,仿佛不经搜索而得出结论。同样的问题如果是问一台电脑,它需要搜索一段时间才能得出答案。这个实验说明了一个问题,如果使用当前电脑的顺序工作方式,无法实现人脑的工作机制。什么样的机制会有类似的快速反应?分布式并行机制可以实现这一点。
十个MCU通过TCP/IP互联,在它们的局域网上广播一个信息“荷马史诗有木有”,你会得到非常迅速的回答,因为每个MCU只需要搜索自己的内容,在有限时间内会给出答案,超出这个时间可以认为没有一个MCU含有荷马史诗的内容。当MCU的个数按指数级增长,这个速度会不会变慢呢?不会。你的大脑里丰富的思考单元(cell),它们可以在一个很短的时间,例如1ms内完成对自身信息的搜索,并给出答案。
基于以上,在我的思考范畴内,我把大脑定义为大量并行的cell协同工作的结果。其实,大家早就知道这一点,只是关于它怎么协同没搞清楚。下面我来试试抽丝剥茧。
长期的编程习惯和自我反思令我相信两个现象,即使是协同工作它们仍需要一个分析判断中枢,显意识是占人脑中内存的很小一部分,大量的心理活动在潜意识。比如说你看到一个美女,特漂亮,她令你有许多心理活动,这些都是在潜意识发生的。比如你听一首歌,产生了共感,令你看透了人生的一些烦恼,这些也是在潜意识发生的。比如说,你在做数学题,有天精神不错,忽然发现了一个定理,这也是在潜意识发生的。包括反馈放大器中的反馈链路的运用,发明者也称自己这个想法是忽然产生的。我们倾向于认为灵感会受某些外物的启发,其实大部分的灵感就像闪电一样出现,哪怕你是在蹲马桶。因此灵感来源于潜意识,是大脑中大量cell协作的结果,它所进行的运算占了大脑的大量工作量,甚至包括产生了你现在的心情。
上一段说了两件事,大脑需要分析中枢,需要潜意识。它们和cell是如何配合工作。我建了个模型。而且这几年来我不停的仿真我这个模型能不能实现人脑的学习功能,二是我这个模型能不能用当前的技术实现。目前为此在我的思考范畴内是可以的,也许下一步我应该试着用数学语言证明这一点。
模型奉上:
上万或更多的cell,它们是一张卡片,分两栏,一是关键字,二是内容。当模型收到外部输入时,中枢获得外部输入的关键字,它开始在网络上广播这个关键字,cell对比自身关键字与当前广播的关键字是否相同,或者类似,而产生响应。产生响应送往中枢,中枢进行判断。每个cell含有经验值,正确完成一次响应后经验值加1,经验值起大响应时间越快。因此中枢只接收响应最快的那个cell的回答,于是开始调用cell中的内容。把cell中的动作放到行动层上。行动层是个任务(task)管理器,它可以递归的管理任务。cell中的动作形成一个task后,要开始执行。要执行这个task必然会遇到问题,那么它会递归的产生一个任务,递归实际上是靠堆栈实现的。这个新产生的任务实际上是cell的内容,而它是当前任务,因此中枢把它广播到网上去,寻到下一个与这个内容有关的cell。直至找到最小的动作来完成当前任务。然后递归完成所有的任务。
其实码完上面的字,我发现要表达的东西实在太多,一下子不能系统的表达出来。而我更喜欢用循序渐进的方式解决问题。因此我们慢慢来吧:
为什么要这么建模呢?我是从心理的角度把它映射过来的。比方说:我现在要去外边吃饭。那我的大脑会自动告诉我:带好手机,钱包,钥匙。这是“去外边“这个关键字,在大脑的cell中引起的反应。那边接下来任务完成没呢?没,还没吃到饭,那大脑继续工作。处理第一个字“去”,这个词汇大脑中有,它的cell的关键词就是“去”,内容就是“动脚,移动位置”,“动脚,移动位置”这是个最小动作,因此我们动身了,“动身”这个动作是当前动作,大脑中有个巡航系统,在大脑执行任务列表里面的递归任务的同时,它还不停的做自检,并检查周围的环境。现在它发现了一个动作“动身”,准备,或正在执行。它把它丢给中枢,中枢立马在任务列表里又生成了一个任务,并且把“动身”这个关键字向网络广播,负责移动的cell立马响应,它的关键字是“动身”,它的内容是“确定下一个落脚点”,这个cell中的“确定下一个落脚点“并不是最小动作,因此它在任务列表中又生成了一个任务,并且把"确定下一个落脚点"当做关键字,放到网上搜索,大脑中负责定位移动的cell立刻响应,它的关键字是“确定下一个落脚点”,内容是调用“记忆系统进行定位”,再调用“地图系统”确定下一个落脚点。这已经是个最小动作,但它包含若干个动作,因此它同样生成了一个任务,这个任务,首先调用”记忆系统进行定位“,也就是到大脑的缓存区里找到你现在所处在的位置,然后再调用”地图系统“,也就是把”当前位置要去 目的位置“当成关键字在网上广播,这时”地图系统“的cell就会响应,它的关键字就是类似”某地要去 某地“,内容就是给根据cell中记录的地图,输出一个当前的方向。所以大脑中它含有各种的cell,它们大体是相同的,对于找路这种特定功能,它们的结构又稍有不同。现在我们已经得到了当前的方向了那,关键字”确定下一个落脚点“的任务完成了,于是我们做出了一系列动作,走到了门口边,继续完成”去外边吃饭“这个任务列表中未完成的任务。当走到门口边的时候,大脑的巡航系统根据视觉输入“门口”这个关键字,立即把它放到大脑的网上广播,这时立刻有个cell响应了,它是干什么的呢?是个穿鞋cell,它的关键字是“走近门口”,内容是“换鞋”。因此我们开始换鞋。完毕后出门,走在路上。这时我们不停的向大脑广播一个信息“现在在哪哪哪要去 哪哪哪”,这个广播的内容来自“去外边吃饭”,“去”字所建立起来的任务还在执行中,之前说过“去”的内容里第一项是“动身”,“动身”任务已经完成了,大脑没有明确的下一个任务,于是又回到了“去外面吃饭”这个关键字。语法系统分析了一下这行语句,得出一个任务集“确定吃饭的地方-规划路线-走路-到达目的地-开始吃饭”。语法系统也是一个cell,我们这里假定“去外面吃饭”这句话是听别人说的,也就是我们被要求执行“去外面吃饭”这条指令,后面如果有时间我会说自我产生“去外面吃饭”这条指令的过程。继续说语法系统也是一个cell,它收到一句话后进行了分析,产生了任务集,现在开始执行第一个“确定吃饭的地方”,LZ显然属于走在路上才想准备去哪吃饭的类型,大家相同的有木有?
“确定吃饭的地方”这个任务完成后,接着把“要去的地方”丢给“规划路线“cell,cell会返回一条路线,于是走哇走。但是路上,显意识和潜意识同时工作着,显意识看路看车,“看路看车”也是个cell,走在路上这件事产生了“在路上”这个关键词输入中枢,中枢建立了调度系统,一边完成“走路”这个任务,隔一会要完成一下“看路看车”这个任务。那走路上坡下坡,力度控制也得大脑控制啊,这个属于运动系统,而运动系统很多动作都是在潜意识下完成的,也就是显意识和潜意识,它居然还是个双核工作机制。有的人说,我去熟悉的地方吃饭根本不用想那么多,脑里还想着昨天打麻将的事,一脚就到饭馆了。好吧,你的大脑使用潜意识完成了这个任务。为什么呢?当人们熟悉的事已经做了很多遍以后,它形成了默认的顺序任务列表,并交给潜意识来完成,从一开始运作后,你显意识可以不怎么理它,偶尔监督下进展就行了,它自然会完成。当潜意识的默认顺序任务列表无法完成时,才会重新交由显意识来处理。为什么要强调“顺序”这个词呢?举个例子,有一天你精神不好,显意识一直在想着某个问题,于是你把打鸡蛋这件事交给了潜意识处理,你打了鸡蛋,然后把蛋黄蛋清扔到垃圾框里,把蛋壳放到了碗里。怎么回事?潜意识它也在忙着处理你的情绪问题,给你想办法,一不小心把顺序任务列表的任务排错了,就出现了上面的错误。如果你集中精力用显意识来处理是不可能犯这个错误,但是为什么你不能集中精力用显意识来处理呢?一你那天精力不足,二打蛋这件事真的打了很多遍,大脑已经愿意把它交给潜意识处理。
那么,我算是说完了这个模型的雏形了吗?还早,但是框架已经有了。先补充几点说明再继续。就是所说的“关键字”,有人说大脑里处理的大部分是感觉,并不存在用“关键字”搜索广播这回事。事实上感觉也是一种符号文字或信息,它是用特殊的电信号记录的信息,我们无法相互告诉对方,我此刻的感觉,那么怎么办呢?发明了语言文字,人类目前的语言文字已经能表达相当大一部分的感觉,因此文字是人类社会外部的符号信息传输方法,而人身体内部也有一套信息传输,记录方法,它就是感觉。感觉来自于全身各个传感器的感受。要描述眼前从未见过的现象,文字上说是“****”,感觉上说是“眼前看到的,听到的,摸到的,身上所有器官所感觉到的的总和”当然一般以五官的感觉最为强烈。那么感觉这个报文同样当作关键字记录在了大脑的cell里。当大脑要处理一件事,要以A为基础,实现B时,A就做为关键字输入中枢中,并进行广播,那么实际广播的肯定是一个以感觉描述的报文字,它究竟是怎么一个编码,脑科学的物理研究有一天可能会破译出来。但是可以肯定的是这种感觉,它是一种符号体系,因此它同样可以被更换,替代成另一种符号体系,那就是文字语言。我们构建一个人工智能,没必要,或暂时没必要让它具有丰富的传感器,丰富的感觉记录体系,但可以让它先具有类似人脑的符号工作,判断体系。
那么接下来要说,既然通过心理分析,了解了大脑的工作体系,我们要怎么建立人工智能。之前有一段已经说过具体的建模,但是说的比较枯燥,不好理解。简单来说,我们就是要有大量的cell,和中枢,和能够广播的网络把中枢,cell连为一体,还要有任务列表,中枢负责广播和与cell联系,并在任务列表里不断生成任务,任务列表也在不停工作,要求执行当前的任务,如果当前任务不是最小动作,就把它新建一个任务,并在中枢中广播出去,寻找有相关的cell,尝试执行这个cell的内容,看问题是否解决,以寻找由A到B的途径。如果一个任务成功解决了,那么这个解决问题的cell经验值会增加,这样下次该同样的关键字广播时,这个cell就能以最快速度响应了,这样就抢在其它没有成功经验的cell前面,得到了执行的机会。
那么人类目前已经成长了,大脑中有大量的cell,人工智能怎么可以拥有这么大量的cell呢?即使人工智能拥有了一定量的cell后,我们怎么让他(她,它?)们自主的学习,从而创造新的cell呢?如果只有固定的cell那和以前按编程运行的机器又有什么两样?别急。总会有办法的。
一个较好的思路是,先给人工智能预装我们人类的语言,文字符号系统。当前的机译,或者说专家系统也好,或者说智能聊天机器人也好,我们经常说,它们不理解它们说的话,所以它们不是人工智能。其实我们操之太急,它们既然不理解它们所说的话,就先不要让它们说话,直到它们理解以后再说话。
第一步让机器能够理解一句话的意思。何为理解一句话的意思,风花雪月这个不做要求,起码我问你名字你要答得出,我让你找个资料你能帮我找齐,我问你最近状态怎么样,你要回答出来吧?这个问可不是针对特定问题问,而是像图灵测试一样,随意的问。但是不能问太深的,比如你问一个小学生关于感情方面的问题,他(她)都不知道,肯定是随便答。
人类的语言文字系统是通过早期的学习得到的,得到以后就立刻提高了知识获取的速度,因此人工智能最需要的就是学会语言文字系统。但是从零开始教一个人工智能人类语言,恐怕要花不止数十年的时间,而且根本没必要,根据对语言符号系统的研究成果,对一句话“请问你叫什么名字”,主谓宾定状补一分,名词,动词,代词一分,疑问句,感叹句,祈使句一分,就能知道这句话的意义:要求机器输出它的代号。因此,我们要给人工智能的机器里预装一堆东西,先是词汇。代词你,我,他,输进去,形成一个cell。各个词汇也都输进去,基本的名词,动词,像声词等等。每个词汇一个cell ,并注明词性。当收到文字输入时,多个cell会产生响应,应该把所有的响应cell都放到新开辟的“语言区”,其中一个“句式”cell是必须响应的,它判别当前是什么样的句式,以产生相应的任务列表,任务列表有特定的关键字,这方面做语言文字分析的高手应该比我熟练得多,我只提一点就是对一个语句的理解,是多个cell的相互作用,多个cell用内容对其他cell进行过滤,一步步减少cell的数量,最后剩下的cell就是要输出的动作。举个例子。“请问你叫什么名字?”首先“句式”cell判断这是疑问句,产生了一个任务“输出”,输出产生后立刻到当前的N多cell的“语言区”广播,注意它是只在语言区广播,所以这时的cell,应该说是已经相当于从潜意识空间提取到显意识空间了,因此它只是在显意识空间广播。因为如果在整个空间广播的话,产生的结果将无穷无尽,无法缩小这句文字的具体意思。现在开始广播“输出”了,现在都有哪些cell呢?“请”cell,它的内容写着“ ”,因为它没啥实际含义,所以这行暂时空着,“问”cell,它的内容写着,“等待输入“,还有许多不同的cell,”你“ cell,它的内容写着“本机”,“叫”cell,它的内容写着“输出声音”,“什么”cell,它的内容写着“输出”,“名字”cell,它的内容写着“张三”,有的"名字"cell,内容是“李四”。总之这些cell都响应了。那到底会输出什么呢?
我们退后一步看,对机器输入的任何指令,或者说我们对别人说的每一句话,目的都是对方产生变化,做出行动,哪怕是心理上的变化。因此当输入“请问你叫什么名字?”这句话时,机器的反应应该是从听到第一个字开始做反应,并在输入结束后,做出总的综合反应。“请“,的内容是礼貌用语,此时机器没反应,”问“的内容,机器开始落实等待输入后面的文字,怎么落实”等待输入“这行指令呢,它会建一个任务,这个任务以"等待输入"做为关键字进行广播,这时候"等待输入"的cell就会响应,它的内容为一个最小动作即《等待输入并新开一个任务把后面的输入当做任务的关键字》,这行字不是语言,而是代码,它要求新开一个任务,把后面的输入当做关键字进行广播。接下来广播的是“你叫什么名字”。这时候机器的各个cell开始活跃起来,“你”cell有很多个,每个cell都记录了一条关于本机的信息。那么所有的“你”cell都已经调到了“语言区”,“叫”cell也有很多个,其中至少一个的内容是《检查机器的输出系统是否正常》,这也是个最小动作,因此机器立刻执行了这条动作。“什么”cell的内容是《输出》,这个已经是最小动作了,因此立刻执行这个动作,但是一检查发现输出参数还没有,于是再建一个任务,来获取输出的内容。怎么获取呢,一找关键字,二广播,这时候来“名字”这个cell。可见人类语言的特点,当已经需要获取关键字的时候,关键字就在什么后面。这时候把“名字”这个关键字在“语言区”一广播,响应的都是原来的“名字”cell,这些cell的内容各不相同,有的叫“张三”,有的叫“李四”,这样显示不能输出一个精确的值,因此我们的cell模型这时要升级了。“你”cell有多个,举例"你"cell中内容继续向下分栏,第一栏“性别”,第二栏“男”;另外一个“你”cell中内容继续向下分栏,第一栏“名字”,第二栏“阿给”。“名字“cell中继续向下分栏,第一栏“你”,第二栏“阿博”,另外一个"名字"cell中继续向下分栏,第一栏“我”,第二栏“阿给”。因此如果以“名字”为关键字的话会有多个cell响应,其中“名字”cell中不能直接得到输出,而“你”cell中,可以直接输出内容“阿给”。因此,此时的输出就是阿给。“叫” cell中有时也可以有含有,"名字"为关键字的cell。比如牙牙学语的儿童,他经常叫一条小猫的名字做“花花”,那他大脑中的“叫”cell下是含有“名字”一栏,第二栏是“花花”的。因此,你问他,你叫什么名字?有时他会回答你“花花”。但在长期的生活中,这个答案是错误的,因此“叫”cell中,含有“名字”一栏的经验值很低,如果提前仅仅是“叫名字”的话,会让人产生“叫谁名字”的反问,因为“叫”cell中含有“名字”一栏,又含有“某某”第二栏的个数有很多个,无法确定输出哪一个。其实我们可以想像一下。现在有“叫”cell很多个,“名字”cell很多个,“你”cell很多个,它们都有若干栏,有的栏里避免不了总会有"名字"这个关键字。那么此时输出哪一个?准则是尽量靠近上层输出,输出时相同的cell中应该尽量少,或只有一个,而且事实上只有经验值最大的,又靠近上层的才能最早输出,从而阻断了其他输出的可能。
看到这里,其这人类的语言特点可以说是很明显了,用语法来描述人类的语言只能是更上层,更精确的表达意思。但人类语言最基础的特征是,它可以无序。比方说你英语语法不好,你跟老外交流,嗑嗑巴巴,用零散的单词也能交流,但是慢慢你会学会按某种顺序把单词发出来,交流会更有效。按顺序的目的是使人的思维按顺序的工作。还是原来的例子“你叫什么名字”,我可以换个说法“你什么名字叫”,“什么名字你叫”,甚至“什么叫你名字”,大脑对这些说法的反应是一样的,都是先把各个cell调到“语言区”,遇到“什么”时,开始寻找关键字,如果“什么”后面刚好有“名字”这个关键词就更节省大脑的工作时间,否则,建立任务后没有关键词,只好从头开始找关键词。比如“你叫名字什么”,或者“你叫什么”,“什么”后面就没词了,那就返回来用“你”做关键字,一样能找到答案。
事实上,教一台机器学会一个回答“请问你叫什么名字”是挺费时间的,不知道有没有更好的办法或技巧。但是机器一旦学会这个回答后,就会生成一个cell,“请问你叫什么名字的”cell,它的存在时间有限,如果不经常问的话,它会慢慢被遗忘,遗忘代表着它的经验值往负分增长,-1,-2,当负数过大时删除这个cell。如果你经常问的话,他的经验值就会增长,当你问另外一个问题,比如“这只河马叫什么名字”时,这个cell会活跃起来。这个cell的内容是保存了得到输出的过程,即先使用"请"cell,再使用“什么”cell,最后使用"你"cell的路线。再次发问时,这个路线会直接被用到。这样有什么好处呢?不需要提取大量的cell到语言区,而只是提取少量的,使用过的cell到语言区,如果问题可以解决的话就省去了时间。当然问题无法完全解决时,还是要重新提取新的cell到语言区。
以上我们讲完了怎样教机器理解我们的语言。这样费了不少时日后,机器慢慢理解了各种句式,并能根据句式给出正确的回答,或者形成正确的新cell。此时转折点就到了,让机器独立的看书,看资料,上网自主学习,不断形成新的cell。这样机器的知识储备将很快超过我们,并能够帮我们解决我们所不能解决的问题。此时,一个新的时代就会到来。
作者 g527727372