找回密码
 注册

QQ登录

只需一步,快速开始

楼主: ruiaijun

[原创]用计算机如何模拟反射?(设计思路)

[复制链接]
 楼主| ruiaijun 发表于 2004-12-2 10:16:00 | 显示全部楼层

  3、综合模拟反射的结构设置。

  G、响应。在我们的程序中,响应是接收刺激后,信号码被送到反射表中检索,检索到输入信息在反射表中存在后发出的回应。设置它首先是多刺激间反射实现的要求。其次响应对其它反射也有作用,作为实现反射的开始。
  H、测量和比较响应度。当响应发生后,该程序要从反射表中计算一条纪录中响应的数量,从而测量出响应度。同时有响应的纪录条会很多,该程序把它们的各自的响应度加以比较,确定数量最大的一个为实现反射的那条纪录。对于其它类型的反射,他们接受的刺激数量很少,测量和比较响应度的工作不会影响它们的实现
  I、奖励识别。该程序对接受的刺激进行识别,确定它是否为奖励。从本质上说,它也是一种非叫间反射,刺激与有益类反应(对自身有好处的)间的非条件反射,也可以为其建立非条件反射表。不过又要为系统设置判断有益类反应的程序。在初步实验中一般不要搞得那么复杂。

 楼主| ruiaijun 发表于 2004-11-27 15:29:00 | 显示全部楼层
  6、多刺激间反射。
  多刺激间反射是已有资料中讨论最少的反射。目前我还没有见到有关实验。我是由前几种反射推想它的存在,并在对人和动物的观察中确定它的存在的。例如人眼视网膜上图像模式的形成。一个图像模式(如人头)因为多次反复刺激在视网膜上,它们间产生多刺激间反射,从而形成这个模式。(可能有人会指责这样不够科学,但是由于大家共知的原因,很多实验不是想做就有条件做的。)
  这种反射的特点是在同时反复的条件下,反射建立在接受刺激的多个神经部位。它不同于条件反射,没有非条件反射(先天性反射)的支持。它不同于工具性条件刺激和简化的工具性条件作用,没有偶然性动作的参与。它的要件只有受刺激的神经部位,但是数量不固定。
  模拟多刺激间反射的反射表的每一条有很多项,其项的数目与受刺激的神经部位数相对应。该反射表必须有一条能够容纳不同项的数据结构。
  模拟建立多刺激间反射时只要把表示受刺激的神经部位的刺激码记录下来就可以了。这个刺激码中包含着代表接受刺激的神经部位的存储单元地址和刺激信号的特征码。如果要模拟强化过程,需要设置强化程序,此时只有那些满足同时、反复条件的才会被纪录。
  对照人眼的识别,我们会看到,不经强化的多刺激间反射得到的一条纪录,就是一幅图像的文件。而模拟强化的反射,将能够得到一幅图像中稳定的部分,也就是图像模式。所以,要想用多刺激间反射完成提取图像模式的任务,模拟强化过程是必不可少的。
  在介绍了对条件反射和工具性条件作用的模拟以后,我们看到模拟多刺激间的反射比简单。它不需要模拟非条件反射程序的支持,也不需要偶然活动程序的支持,更没有识别奖励的过程。但是它也有它的麻烦,受刺激的神经部位越多,反射表的一条就越大。保存多条这样纪录的反射表,将会是系统沉重的负担。因此就出现优化存储的问题。
  模拟多刺激间反射的实现反而比较复杂。因为每一个接受刺激的神经部位都会参与不同的反射,如果仅凭一个刺激调出反射纪录,就会有大量的反射条被调出。反射的实现反而变得无法完成,因此需要设置一个反射识别机制,确定调出哪一个。怎样才能做到这一点呢?
  这里我们约定两个概念,不同意者请暂时使用,直到有更合适的概念名称为止,不必进行对名词的无谓争执。它们一个叫响应,一个叫响应度。
  刺激是加在神经部位(在计算机中是加在对应的存储单元),而不是加在反射表上。接受刺激后,刺激信号首先传到响应部位(存储单元),如果该刺激信号与前次刺激信号相同(通过对反射表的检索得知),该信号便被确认。被确认的存储单元发出一个回应信号。我们把这种回应叫做响应。响应是神经部位(神经元)的行为(在计算机中响应可以看成是存储单元的行为),它在真实神经系统表现为神经细胞的兴奋,在计算机中表现为存储单元发出的回应信号。
  我们把存储单元对某多刺激信号做出响应的数量叫作响应度。一个外界的多信号刺激(如一幅图像),会在反射表的不同条产生不同数量的响应度(大脑中没有反射表,显然不会以这种形式反映响应度)。显然,反射表中响应度最大的那一条,就最可能是要实现的反射。
  因此,模拟多刺激间反射时需要有一个能够测量响应度的识别机制。这个识别机制要求设计一个程序,它能够测量各个有响应的反射条的响应度,比较各反射条响应度的大小,选择出响应度最大的反射条。这个在反射表中响应度最大的反射条,就是我们需要确定的反射条。确定了它,我们就模拟了多刺激间反射的实现。
 楼主| ruiaijun 发表于 2004-12-4 09:50:00 | 显示全部楼层
  4、模拟反射式的数据形式
  在前边的介绍中我们只是简单地说,接受刺激后,译码程序把刺激信号转变为码,送到反射表中。这个码的内容是什么呢?我们没有详细讨论。如果不认真考虑它,编程还是完不成。
  由于真实的神经系统中没有反射表,反射表只是一种模拟技术措施,所以我们只能对比神经系统考虑模拟反射的数据形式。
  在模拟反射程序中,我们用一部分存储单元表示神经元,用反射表记录建立反射的存储单元的联系。因此反射表中主要纪录的应该是相关的存储单元的地址。它显然是我们前面所说码的一部分。
  我们还要考虑刺激信号的多种形式。有些刺激信号仅有有无之分,这种刺激信号比较好办,只有在它“有”的时候才能有相关反射,反射表中不必考虑记录刺激信号。
  但是很多刺激信号不仅是有无的问题,还有强弱,眼睛看到的还有色彩。这表明,同一神经部位可能有多种不同信号分别与其它部位建立反射。这种刺激信号的不同纪录在什么地方呢?真实的神经系统可能就纪录在受刺激的神经细胞中,或者每一个神经元都有一些细胞配合它记忆不同信号。这个事目前人们还说不清楚。我们的模拟程序没有细胞,一个存储单元存储的数据也有限,不可能记录下那么多不同的刺激信号,因此我们把信号也纪录在反射表中,这样反射表中的码就要包括相关的刺激信号。
  这就是我们为什么要设计译码程序的原因。译码程序要把受刺激部位的地址和信号编写在一起,送到反射表中供反射表保存。写、读反射表程序也要由与译码程序对应的程序段,适应它的码。
  这种设计就大大减轻了模拟神经元的存储单元的负担,它的任务就只剩下接收刺激了。
  进一步考虑,模拟神经元的存储单元甚至可以设计成虚存储器,就是完全没有此存储器,只有一个名义上的地址,因为它没有真实的存储任务。这个名义地址的发放工作也完全可以交给译码程序来做。这样程序占用的内存空间又会大大降低。
  虚存储器,大概又是一个很怪很怪的名称,不知大家是否能够理解它的设置原理。
  由于接收刺激需要一个接收体,建立反射需要记录下这个接收体,实现反射时需要检索这些接收体之间的关系。我们就必须用一些存储单元表示这些接收体(神经元、神经部位),地址就是这些接收体的代号。而这些接收体又没有自己的存储任务(八位的长度也储存不了什么东西),所以这些存储单元没有必要真正占用内存,象征性地发放一些数字表示它们的地址就可以了。这就是所谓虚存储器。
  不过。使用虚存储器的只限于接收刺激的神经部位。在模拟条件反射和工具性条件作用时,记录在反射表中的还得是真实地址,因为那是反应(对条件反射而言)或动作(对工具性条件作用而言)程序的首址,没有它就找不到程序。这一问题在编写译码程序时注意到就是了,让它在发放地址码时做到“区别对待”。
 楼主| ruiaijun 发表于 2004-12-4 09:53:00 | 显示全部楼层
  5、综合模拟反射的程序结构。
  A、确定反射程序的任务。编制一个模拟反射程序,首先要确定要通过反射干什么。从理论上讲,生物神经系统的反射能够干什么,我们的模拟反射系统也应该能够干什么。但是这要通过大量的编程实验来证明,目前还不能够说大话。
  而且目前的电子计算机还有很多生物功能不能模拟,例如视觉、例如听觉,这也限制了模拟反射系统的功能。所以在确定模拟反射系统要干什么时,应该根据自己的计算机的情况。为了说明这一点,我们在后面还具体介绍一些例子。
  B、根据任务确定要使用的程序。
比如你只模拟不强化的综合反射,你就不要选择强化程序。而非条件反射支持的、偶然活动程序的支持、识别奖励程序、测量响应度和比较响应度的程序、译码程序、非条件反射读程序、反射表读写程序、你所需要的反应程序等都要选择。
  C、安排程序顺序。
要仔细考虑好程序运行的先后安排,比如我们曾经指出,接受刺激信号后,非条件反射应该优先被检索和实现。而系统运行后,首先要接受刺激。再比如在模拟工具性条件作用时,要考虑是否设置偶然活动的引擎,如果不设置,那么偶然活动程序就要优先的运行,以便于刺激的接收相遇。等等。总之这项工作是一个非常细致的工作。
  D、写出程序流程。
  E、编写并条时程序。
  以上过程对于熟悉编程的人来说是小事一段。
 楼主| ruiaijun 发表于 2004-12-4 09:54:00 | 显示全部楼层
  四、推荐一些实验程序或应用程序。
  1、推荐你试编的语言条件反射程序。
  我们知道由于一般计算机的外设很少,限制了我们模拟条件反射的程序实验。我们尽管了解了模拟反射程序的编制方法,但是我们还不能做模拟条件反射的实验。因为我们的计算机连狗都不如,它不能看见食物,它不能分泌唾液,它不能看见灯光,它不能听到铃声。
  这里向你推荐一个程序设计,它用语言表示上述购的看、听和反应。能够象征性的模拟条件反射。
这个程序的设计思想很简单。利用计算机的文字输入输出功能,用显示文字的方式显示上述狗的反应。
  对于模拟条件反射系统来说,输入的文字和食物、灯光、铃声一样都是外界刺激信号,输出文字和反应一样都是输出信息。都要经过译码程序翻译成刺激码,记录到反射表中,或到反射表中检索。因此我们完全可以用于输入文字和输出文字模拟条件反射。
  该程序设计的关键是译码程序和反应程序。比如你用“看见食物”“看见灯光”“听见铃声”等文字输入代替狗接受的实际刺激信号,译码程序要能够识别这些输入文字,并把它们翻译成刺激码。而反应程序要能够在非条件刺激(此时是文字)出现时。输出“分泌唾液”。这样在条件反射建立后,条件刺激输入后,反应程序也能够输出“分泌唾液”了。
  沿着这个思路,你还可以设想出各种文字输入和文字输出,让它们在这程序中建立反射。如果你在这个程序中还设计了对条件反射链的模拟,那么你输入一个文字信号,就会得到很多文字信号的输出,这实际就是在模拟联想(在巴甫洛夫理论中,联想就是靠条件反射链实现的)。注意,这里的联想与现在普遍使用的联想程序不一样,我们这里的联想是系统原来没有资料,通过条件反射学习的。现在普遍使用的联想程序是人为设置好资料的联想。
  通过了我们前面推荐的语言条件反射程序,我们再次证明了巴甫洛夫的联想理论。也打破了人们对联想的崇拜。联想不是一种高级的思维能力,它不过是依据低级的条件反射链完成的信号输出。
 楼主| ruiaijun 发表于 2004-12-6 14:57:00 | 显示全部楼层
  2、在模拟反射的程序中引入生物钟。
  神经网络是由神经元组成的物质结构,仅凭反射建立的联系是共时性的。就是说它是靠同时出现的刺激(或稍有先后出现的刺激)之间的联系工作的。对于智能来说这样的联系远远是不够的。起码我们大脑对于事件的记忆就是历时性的,也就是说它们是按照时间顺序排列的。
  神经网络如何用联系(反射)的方式表示这种历时性事物呢?一种可能是有两类神经元,一类从事共时联系,另一类从事历时联系。如果是这样的话,一定会从脑解剖中发现这种分工的迹象。
  还有一种可能,就是靠一个与时间有关系的连续刺激物,使事件的细节与这个刺激物的顺序建立反射。如果是这样的话,神经网络的性质就不必改变,只要在反射机制中引入一个与时间有关的内部刺激就可以了。我们采用后一种说法。
目前,这种说法仅仅是一个假设。于是问题出现了,凭什么在假设的基础上讨论问题?我们在另外的主题中已经讨论过了,人工智能不是智能理论,它面向的是人工智能技术,它不需要特别严格的生物实验支持。人工神经网络就是一个建立在大量假设基础上的人工智能理论。你如果承认人工智能理论,你就没有理由反对我们的假设。
  我们要引入的与时间有关的刺激物就是生物钟。我们引入生物钟的原因是大量实验证明生物钟是存在于生物体中的。生物体中的生物钟不能发出类似分秒的刺激信号,它只能发出一些表示先后顺序的信号。由于生物钟位于系统内部,它是与外来刺激不同的一种刺激。我们叫做内部刺激。
  在顺序事件发生的同时,生物钟也在发出顺序的时间信号,生物钟的内部刺激与事件的外部刺激由于同时和反复建立起反射,这样便把事件的顺序性保存下来(记忆)。在回忆事件时,回忆是由事件的某个情节引发的,回忆便从这里开始(显然是反射的结果),与此同时建立反射并保存起来的生物钟信号也出现,它按照往前和往后两个方向,顺序调出事件细节。于是完成了回忆。
  这样,我们就可以完全在反射理论的基础上,解释顺序事件的记忆和回忆了。
 楼主| ruiaijun 发表于 2004-12-12 07:39:00 | 显示全部楼层
  3、推荐你编写一个简单的记忆事件的程序。
  对于普通计算机来说,它只能把输入资料保存起来。你如果让它记忆一个事件(假定这个系统有看到事件的能力),它也办不到。因为它没有把组织不成文件的资料保存起来的能力。直接保存的事件资料纯粹是没有语法的。
  但是直接保存事件资料,是系统把它加工为有语法的文件的基础,人脑也是这样干的。所以让计算机系统记忆事件是一件重要的事情。
这里的程序是在前面的模拟反射程序基础上设计的,它需要增加一个生物钟机制。为了便于编程人员的掌握, 我们就设计一个能够发出顺序数字的小程序(函数),用顺序数字表示时间顺序。这不是大脑的真实情况,大脑是不识数的,它不可能使用顺序数字作时间信号。我们也没有必要为考察它究竟用什么信号花太多脑筋,就用顺序数字好了!
  生物钟在事件刺激开始后便发出顺序的内部刺激信号,这个刺激信号与事件的细节建立反射,记录在反射表中,就实现了对顺序事件的记忆。回忆时,由事件的某一个片断引起回忆(要编制程序实现这一点),然后反射表就反射出其相应的事件顺序码,由这个码向前或向后查表(也要编制程序实现这一点)就可以调出全部事件的情况。于是便完成了回忆。由于反射程序的结构我们已经说了很多了,就不详细说了。
  如果你的系统能够“看”,它保存的就是一个个情节的图像,回忆出的也是这些图像。
  如果你的计算机没有看的功能,也可以用语言作为事件的情况输入,但是输入的是没有语法结构的语言片断,回忆的也是没有语法结构的语言片断,而不是组织好的文件。这是这个程序获得的记忆资料与一般计算机存储文件的最大区别。不过不用担心,由于事件细节是与时间对应输入的,它在回忆时还是与时间对应着回忆出来,尽管不是文章,但也是一段段的文字,可以看出事件的原来样子。比如,你输入你早上的活动:闹钟铃响 起床 穿衣 洗脸漱口 泡方便面 吃东西 拿包 出门。 空格的地方表示你输入时回车的地方。需要回忆时,你只要健入一个情节,如穿衣,程序就会向前或向后搜索,把上述情节输出给你(每段间是空格还是换行由你在程序中设定)。
  这个用模拟反射程序来记忆顺序事件的实验还告诉我们大脑可能的记忆结构。它不是文章化的,不是有语法结构的。这对于煞费苦心研究语法并编入人工智能程序中的人来说,不是一个愉快的消息。
  显然,很多程序都能够做到这种先入先出式的顺序存储,但是那些程序文件的调入调出都要操作者控制,这里则完全是系统的一种自动的记忆,自动的回忆。与人脑的功能就更接近了。
    在进一步模拟中,如果能够使系统学会把上述材料组织成文章,人工智能就会取得令人刮目的成绩了。
 楼主| ruiaijun 发表于 2005-1-27 07:56:00 | 显示全部楼层

    2、推荐你用条件反射程序作为编程软件。
  由于模拟反射的程序具有控制程序的功能,因此模拟反射程序可以作为一个编写程序的仿真器。因此我这里推荐你不妨用模拟反射程序作一个编写程序的的实验。这个实验将为我们用模拟反射程序自编程序打下基础。
  对于生物系统来说,它有很多生物反应、肢体小活动可供反射作为组成大活动的基础。而我们使用的计算机实在无能,它没有什么反应、动作的能力,我们以什么为它编写程序的基本单元呢?显然不能让它用机器指令码作为编写程序的基本单元。 那样它需要有很多知识。我们眼前的程序几乎没有任何知识。
  于是我们产生了这样一个思路:生物体的反应、动作无非是生物体在执行一些小的程序(从计算机角度看),生物体的大的、复杂活动无非是把那些小程序连接在一起执行。我们在模拟编程时只要把现在计算机中的一些小程序拿出来连接就算是在编写程序了。如果它们连接成功,并能够组成大程序运行,就说明模拟条件反射程序可以作为编写程序的软件使用。到我们真正面对一个有很多动作的机器人系统的时候,再把那些被连接的程序换成机器人的动作程序就可以了。
  运用上述思想后,我们就完全可以用自然语言为编写程序的语言,并开始着手先用模拟条件反射程序完成编写程序的任务。设计的关键就在编制非条件反射表上。在非条件散射表的某一条的反应项中写入被调用小程序的首址,在它的非条件刺激码项中写入你设定的词汇,在将来的运行中,你输入一个设定的语言指令,程序就可以在非条件反射表中检索到它,并调用相应的小程序。
  这个程序也要和模拟记忆的程序一样设置生物钟,用生物钟信号作为小程序顺序连接的依据。
    编写程序的工作就很简单了,你输入一个语言指令,程序就调用执行它对应的小程序,这个语言指令同时与生物钟内部刺激码建立反射。你继续输入语言指令,其相应的小程序又被调用执行并与生物钟信号建立反射。当你把语言指令输入完毕,一条与生物钟时序对应的、有你编排的小程序组成的、新编程序就被记录下来。  
    如果你对这个新编程序不满意,你就输入其它编排形式的指令,那条不满意的新编程序由于不被强化,就自动消失了。如果你对新编程序满意,就需要输入多次,通过强化巩固该程序。
    在条件反射表中还要设置一个程序调用指令项,为新编程序起一个名字,以后把这个名字作为指令,就可以调用新编程序了。调用时生物钟信号起规定程序时序的作用。
    与其它程序编辑器比,这里使用的程序语言非常简单,也无需语法格式,也没有控制流向的分支语句。这是由于智能系统有思维活动判断各活动程序的流向,活动程序本身反而没有必要自己确定自己的流向。显然这种程序只适合人工智能系统使用。
    与DOS操作系统相比,这里编写的程序相当于它由多个DOS命令组成的批文件。它们也有很大的区别。区别之一是,DOS批文件中还是有一些控制程序流向的语句;另一区别是,用模拟条件反射程序编写程序过程中建立文件与调用文件都是自动的,不需要操作者操心管理。

 楼主| ruiaijun 发表于 2005-1-3 11:03:00 | 显示全部楼层

  五、对运用模拟反射程序自编程序的讨论。
  1、“模拟反射程序”对系统小程序的控制。

  B、外界对程序的后天影响。外界对生物系统的影响是可以改变的,谁在左右这种改变呢?左右这种改变的就是条件反射。
  条件刺激就是外界对生物系统的新影响,它通过建立条件反射过程,又通过非条件刺激与反应间的关系,建立起新刺激与反应的关系。
  还是与计算机系统比较,还是拿DOS操作系统为例,条件刺激引起反应的现象相当于我们为原来的DOS命令改名。一般情况下我们不这样做,何必自找麻烦呢!但是也不是不可能,DOS操作系统提供了写批文件的手段,可以让我们为命令改名。比如,我们要想把“DIR”改名为中文“列目录”,我们就建立一个叫做“列目录”的批文件,文件内容中写上“DIR”,有了这个批文件,你再键入中文“列目录”,系统就会为你显示目录了。其实WINDOWS也提供了类似功能,只不过它平时用点击鼠标的方式非常方便,人们很少朝着方面想就是了。 
  不过写批文件与条件反射有一个最大的区别,写批文件是人工的,建立条件反射是系统自动的。
  反射的建立就是一种学习(反射学习过程)。模拟条件反射本质上就是通过学习改变影响活动的外界刺激。从程序角度看,就是通过学习,系统自动改变调用程序的命令。

 楼主| ruiaijun 发表于 2005-2-2 13:01:00 | 显示全部楼层
    3、反射和学习的关系。
  生物体神经系统之间的后天反射,是生物体学习的依据。下面我们讨论几个重要的基本学习过程与反射的关系。
  A、反射与反射学习过程。反射学习过程是学习的基本过程之一。反射学习过程是指单纯由建立反射完成的学习。例如在条件反射建立前,条件刺激原来与反应并没有关系,通过条件反射的建立,条件刺激就与反应有了关系。也就是说系统在后天学习中获得条件刺激对系统的新影响,系统能够进行学习了。
  再例如工具性条件作用和简化的工具性条件作用,在反射建立前,刺激原来与某一动作也是无关的,通过建立反射,刺激就和动作建立了关系。也就是说,系统在学习中获得了在刺激条件下进行特定活动的能力。系统也通过反射进行学习了。
  还有多刺激键反射。多刺激信号来自外界,它们在外界是有联系的,但是系统不了解它们是有联系的,通过建立反射使多刺激的联系记录到系统中来,系统便知道了这些多刺激信号在外界联系的本来面目。这也是通过反射进行的学习。
  再有用反射实现的对事件的顺序记忆。也是通过反射对外界事件进行学习并加以纪录的的实例。
  以上对各种模拟反射的分析,都表明反射支持着系统的学习,反射直接实现了学习,反射是反射学习过程的支柱。

[此帖子已被 ruiaijun 在 2005-2-2 13:06:28 编辑过]

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|生物行[生物导航网] ( 沪ICP备05001519号 )

GMT+8, 2025-6-28 09:53 , Processed in 0.020139 second(s), 12 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表