Research on Characteristics and Programming of Simulated Human Intelligence ()
1. 引言
获得能像人脑一样进行思考的智能软件一直是人工智能界的理想,而并行存储、并行计算是人脑思考必备的基础功能。如何用计算机实现与人脑相似的并行存储、并行计算是本文的目的之一。
人脑进行并行存储与计算的结构基础是它的并行存储结构。科学界对与人脑类似的并行存储结构研究甚少,更谈不上通过编程获得这样的结构来应用。人工智能理论要突破,必须在并行存储、并行计算、模糊计算兴奋等理论上有所突破。本文讨论了与人脑类似的并行存储有什么特点与要求。然后利用这些特点与要求,通过编程获得了与人脑类似的简单的并行存储结构,并在此基础上向大家展示了如何通过编程获得并行计算、兴奋、记忆、回忆、奖惩、注意力的分配等功能。我在《奖惩与学习》 [1]、《注意力问题的系统讨论》 [2] 这两篇文章中指出了奖惩通过影响控制注意力的分配,注意力通过控制影响对中枢皮质的易化抑制来影响中枢皮质的兴奋。而我在此基础上,通过编程向大家展示了,奖惩如何按一定规则影响控制注意力的分配,注意力再如何按一定的规则,易化或抑制“皮质中枢”相应记忆柱,来影响“中枢皮质”的选择兴奋(即通过影响记忆柱的易化兴奋能力,来影响“联络区记忆柱”的兴奋,进一步影响主注意对象的选择,从而影响回忆起的内容),而实现思想行为的选择(神经网络的选择兴奋)。《认知对思想行为的影响》 [3] 讨论了人或者智能机器人如何在上面的结构功能基础上获得认知与改造自然的能力。
这是一种相比于传统人工智能编程理论,更先进的编写人工智能软件的理论方法。本理论的一系列设定(如:记忆的基本单位所对应的结构之间只有兴奋性“纤维”联系,皮质垂直柱的模拟,展示框的设定等等)使并行存储、并行计算能够很好的实现思维的记忆回忆,从而使人类通过编程获得正真具有像人脑那样具有高级智能的智能软件成为可能。
通过对并行存储与并行计算的讨论得出,要使并行存储与并行计算实用化的最大挑战就是回忆干扰的问题。为解决回忆干扰的问题,我提出了一系列的方法,并在编程中具体应用了这些方法,部分解决了回忆干扰的问题。
本文的讨论部分参考了人脑的存储结构、存储结构之间的联系特点及人脑的一些功能特点。可以说,我们所知道的人脑神经系统的一些结构功能特点是本文进行讨论的“指路明灯”,同时本文的一些讨论结果也有利于我们对人脑的结构功能的认识。
2. 与人脑类似的并行存储结构,必然会具有的一些结构与功能 特点
人脑是个并行存储系统,它具有强大的功能,而并行存储结构、并行计算是这些功能的基础。人脑的并行存储系统有什么特点?我们该如何模拟它?下面先以人脑视觉中枢为例来进行讨论。
休伯尔 [4] 和维泽尔发现,在初级视皮层(17区)有一块1毫米 × 1毫米的区域,其中所有神经细胞的感受野都集中在视觉空间的某个区域里,并且它们相邻细胞的最优朝向在0˚到180˚的范围内连续地作有规则的变化。而在厚度为2毫米的垂直范围内,每个细胞的最优朝向都是一样的,他们称之为“朝向功能柱”。以猴为例,其17区中,每个柱的宽度约为……。每个柱有它自己的方位轴,相邻两个柱的方位轴之间,大约相差10度。视野中每个完整的感受野在视皮质大约占有2到3毫米的区域,感受野中呈任何角度的东西,都有方位轴与之相适应的视皮质细胞柱。另外试验证明对感受野刺激强的信息是图形的边缘。这说明了,一般情况下,一个图形落在视野中,刺激兴奋强的应是与图形边缘对应的感受野中的一系列柱状结构,通过刺激兴奋,这个图形的信息就“可能”对应分散存储在这一系列及随后一系列柱状结构中(这些兴奋最强的柱状结构,应该会再兴奋相应的柱状结构)。参考视觉刺激及其可能的存储特点,我把一个对象的组成信息,分散存储在一组对应的并行结构中定义为并行存储。
2.1. 理想化的并行存储结构
Figure 1. (a) The parallel structure storage g1; (b) The parallel structure storage g2; (c) The parallel structure storage g3
图1. (a) 并行存储结构g1;(b) 并行存储结构g2;(c) 并行存储结构g3
借鉴视觉中枢并行刺激及可能的存储特点,经过简化,我构建了理想化的并行存储结构。顺序存储的特点是,不同信息顺序存储在一个存储空间的不同子空间中,不同信息占用不同的子空间。而本文所指并行存储的特点是,不同信息并行分散存储在一个共同的存储空间的多个子空间中,不同信息占用的子空间往往可能有重叠。举例并行存储:如图1(a)-(c)分别代表并行存储结构g1、g2、g3,分别存储在它们之中的并行信息是a1、a2、a3、c1、c2、c3。并行存储结构g1由2行8列共16个存储单元组成,这16个存储单元中的每一个单元对应一个基本存储结构(我在下面的编程讨论中,用基本记忆柱群来代表它)。而存储的每一个信息都由8个1或者2的数字组成,每个数字按顺序分别存储在对应列的相应行中,比如并行信息结构c1 (c1与信息21112112对应),这个信息的第一个数字2,存储在并行存储结构的第一列的第二行中,第二个数字1,存储在第二列的第一行中……而并行信息结构a1 (a1与信息22222222对应),这个信息的第一个数字2,存储在第一列的第二行中,第二个数字二,存储在第二列的第二行中……并行信息结构c1、a1……分别对应的结构就是某个原始记忆柱群(在下面的编程讨论中要应用这个名词)。
(图中的箭头表示一个并行存储单元的传出联系所指向的其它存储单元,如果用基本记忆柱群表示这些存储单元,就是一个基本记忆柱群的传出纤维的分布特点,箭头指向的基本记忆柱群是传出纤维联系分布的基本记忆柱群。我在下文的编程说明会进一步的讨论)。
2.2. 并行存储结构的信息传入
各种信息传入并行存储结构的原则是:由于计算机存储量及计算能力的限制,传入的信息必须是信息量较少的并行存储信息。但一个或者多个这样的信息组合在一起必须能够特异性的表证一个对象。
根据以上的认识并结合人脑视觉中枢的一些特点,下面以部分模拟视觉中枢的特点为例来讨论外界刺激信息如何传入并行存储结构(对视觉信息的处理可能还有其它更好的方法,但其传入与处理的基本原则应不变)。
Figure 2. Visual information spreading, processing
图2. 视觉信息的传入与处理
“在本文,记忆柱(具体的定义与特点讨论见下文编程讨论部分)是智能软件兴奋的基本单位的。基本记忆柱群是记忆的基本功能单位所对应的一群记忆柱。原始记忆柱群是指一个注意对象的一次刺激所对应兴奋的联络区的记忆柱,它由一群基本记忆柱群组成。”
如图2:假设E区是与图形刺激相对应的地方。当智能软件注意一个对象时,不管这个对象在空间的那个位置,所兴奋的E区的原始记忆柱群都相同(同时,对象的空间位置等参数可转化为相应的刺激,兴奋非E区的相应记忆柱群)。A区(用g1表示)是视觉中枢的联络区的一个亚区,它与对象的轮廓信息相对应。
我们可以这样来设置E区的记忆柱的分布与传入信息的关系,以及A区的记忆柱的分布与E区传入信息的关系。(为了论述的方便,本文假设任一个注意对象的轮廓在g1区只有8个基本存储结构与之对应)。
1) 将E细分成有限的一些区域,任一个区域都与一次有意义视觉传入的最小单位(是相对最小,关键是要能表证对象)相对应(任何一个区域都包含一群记忆柱),把这些区域称为最小反应区。将注意对象所充满的空间进行平面划分,它所划分的区域与E的最小反应区相对应。这些区域的任何一个区域的视觉信息在传入到E之前都转化为具有一定角度的线段信息或非线段的其它信息,注意对象由这些具有一定角度的线段连接起来构画出其轮廓。与最小反应区对应的任何一个具有一定角度的线段在E的相应的最小反应区中只能兴奋一群基本记忆柱群中的一个相应的基本记忆柱群(这群基本记忆柱群分别对不同的线段信息进行反应,一次只能有其中的一个基本记忆柱群兴奋)。
2) 将E区对象的轮廓按一定标准进行处理,转化成仅由8个具有先后顺序且有一定角度的线段组成的对象,使它们与g1区的8个基本存储结构分别对应。比如轮廓的第六个线段只能兴奋g1区的第六行中的相应列的基本存储结构(基本记忆柱群)。
3) 当然我们也可以用专门的程序或者设备来代替E区的功能,直接将视觉刺激信息转换为“适当的”并行存储信息传入g1区(A区)。
4) 这样表证一个对象,必然是模糊表证(因为在不同的环境及时间点下用有限的信息表证一个可能存在一定变化的对象时,很难做到完全一致)。
2.3. 并行存储(记忆)、并行回忆
A区的每个最小反应区如果所区分的线段的最小角度是20,则一个最小反应区能反应不同的角度信息有360/20 = 18,最小反应区的每个角度信息对应一个基本记忆柱群,也就是说一个最小反应区可有18个基本记忆柱群,这样对应的g1区每列有18个基本记忆柱群(为了编程方便,本文进行了简化,一个最小反应区只包含2个基本记忆柱群,分别对应1和2)。一般情况下,最小反应区不能同时有两个基本记忆柱群强烈兴奋。因而,当一个刺激对象引起g1的反应时,g1只能有8个基本记忆柱群同时强烈兴奋(为什么用“强烈兴奋”来对应信息的刺激与兴奋回忆,我在后面的选择性兴奋的讨论中会有答案),兴奋了的基本记忆柱群相互之间能建立起兴奋性记忆联系,从而进行了信息的存储。再进行回忆时,这8个基本记忆柱群通过兴奋性记忆联系又能同时兴奋。记忆时的信息被同时存储在不同的基本记忆柱群中,回忆时又能被同时提取,这样的记忆、回忆便是并行存储(记忆)、并行回忆。
2.4. 并行存储运行、计算模式及并行存储信息对应结构之间必然的 联系特点
我们进行信息的并行存储是为了,在需要时获得有用的并行存储信息来应用。获取并行存储信息的一种重要方式,这也是高级智能所必须具有的:获得一个并行存储信息后,再通过这个并行存储信息获得另一个并行存储信息(就如人脑的兴奋回忆:回忆起一个记忆内容,再通过这个记忆内容回忆起另一个记忆内容) (这一方式是自主思想与行为的基础)。
下面,通过讨论并行存储系统需要具有哪些条件,才能够顺利通过一个并行存储信息获得另一个并行存储信息,来获得实现并行存储所需要的条件。
对于并行存储来说,提取的信息应该是存储的信息(已经有试验证据证明 [5],我们回忆兴奋的神经网络是记忆时兴奋的神经网络)。通过前文对并行存储的结构及表示特点的讨论可知,一个并行存储信息被显现提取,它的空间位置信息(包括组成成分的空间位置信息)也必然直接或间接显现。
这样,要通过一个并行存储结构(g1)中的一个并行存储信息(对应的结构是a1)获得另一个并行存储结构(g2)中的并行存储信息(对应的结构是a2),这两个并行存储信息之间就必须建立有联系。这种联系必然包括:通过a1能够直接或间接获得a2的空间位置信息。也就是说联系建立后a1就会直接或间接的记录了a2的空间位置信息,包括组成a2的八组信息的空间位置。否则通过a1便无法定位a2而使它显现。
要达成这种联系,就需要a1与a2先建立联系,然后在需要时获取a1,再通过a1获取a2。
a1与a2的联系关系讨论。我们可以换一种描述方法,当a1与a2的联系建立的时候,a1直接或间接记录了a2的空间位置,通过记录的空间位置信息a1能使a2显现,这相当于a1与a2建立了“兴奋性记忆”联系(a1能使a2显现)。然后,当a1被选择“兴奋”(显现)后,通过“记忆”的空间位置信息,使与a1有联系的a2、c2……相关的信息被显现或者更容易被显现(“易化兴奋”了与这些信息相应的结构),从而获得a2。
通过上面的描述,可以看出a1与a2建立联系后,再通过a1获取a2的过程,与神经系统中两个“刺激信息”建立兴奋性记忆联系后,再通过与一个“刺激信息”对应的神经网络易化兴奋一些神经网络,并从这些易化兴奋的神经网络中获取与另一个“刺激信息”对应的神经网络的过程与特点相似(一个神经网络“a1”直接或间接记录下另一个神经网络“a2”的空间位置信息,回忆时“a1”先兴奋,“激活”记录的空间位置信息,再通过记录的空间位置信息易化其它的神经网络使它们显现,然后从这些被易化的神经网络中获取目的神经网络)。这也好理解,因为本文讨论的并行存储系统就是参照人脑建立起来的。
因而,我们可以得出这样的结论:我们要建立类似于人脑的并行存储系统,并使它总能够较好的通过存储的一个并行信息获得另一个与它建立有联系的并行信息,这个系统的运行模式必然与人脑神经系统的记忆、易化兴奋、回忆特点具有一定的相似性。由于存在这种相似性,为了方便下面的讨论,我就直接借用了神经科学的一些名词,而且,对于智能软件的编程,也非常多的参照了人脑的结构功能特点。
我们建立并行存储系统,是为了广泛的应用它,这就需要大量的并行存储信息之间建立联系,这样a1就应该有与存储在g2中的众多信息建立直接或者间接联系的能力(就如人脑的记忆)。那么对a1来说,g2中的众多并行存储信息的空间位置信息存储(并行存储信息都存储在相应的空间结构中,只有定位这些空间结构,才能获取它们存储的信息)在哪里?如果存储在另外的结构中,这个结构还要与a2及a1再建立联系,增加了存储结构及联系步骤,不管是顺序存储还是并行存储,都不如这些信息存储在a1、a2中效率高。人脑就是这样存储信息的。
并行存储最大的特点是,经常存在存储信息的结构重叠。所谓存储信息的结构重叠是指存储在同一个存储结构中的信息的组成结构存在共同部分。比如存储在g1中的并行存储信息21112112与22222222,结构重叠部分是第一、第五、第八个数据,它们都对应存储在g1的第二行结构中。
如果代表g2中的并行存储信息的空间结构信息集中存储在a1的某一结构中,会造成这些结构要么存储任务过重,使这些结构过于复杂化,更难编程实现,要么,信息提取的干扰超过我们忍受的范围。比如:记录的空间信息全部存储在a1的第一列中,那么g1中存储的数据信息所对应的结构,只要其第一列所在空间位置与a1相同,通过这些数据信息获得g2中的数据时,所获取的数据都相同(就如人脑中神经网络的兴奋)。也就是说,由于第一列结构相同,而空间位置信息集中存储在第一列,因而,它们应该与通过a1获得的数据相同(因为第一个存储结构相同,会带来即使g1中21112112、22222222、21111111……等不同的并行存储数据,分别与g2中不同的并行存储数据建立了“记忆”联系,但通过21112112、22222222、21111111……等不同的并行存储数据分别进行“回忆”时,在g2中显现获得的并行存储数据会完全相同。如果不好理解,大家可以人脑的记忆柱、神经元为例进行思考,就很好理解了),显然是不行的。信息集中存储在并行存储结构的任何一个存储结构中都与集中存储在它的第一个存储结构中道理相似,都是不行的。
如果a1中的每个存储结构都存储所有其它存储结构的空间信息,显然效率太低(试想人脑皮质的每个柱状结构都与其它所有的柱状结构存在大量纤维联系,显然是不可能的)。
因而,这样就需要存储在a1中的g2中的并行存储结构的空间位置信息直接或间接分散存储在组成a1的各个组成结构中。这种存储模式与人脑类似,也最容易实现。如何分散存储,我们可以参考人脑的纤维联系特点(也可以看我下面的编程讨论)。
2.5. 并行存储运行计算模式
在g1中的a1 (22222222)与c1 (21112112)分别与g2中的a2 (22222222),c2 (21112112)建立了联系,而a1 (22222222)从没有与c2 (21112112)建立过联系的前提下,下面具体讨论,并行存储如何通过a1来获得g2中的a2。
当要通过g1中的a1来获取g2中的信息时,由于信息是分散存储的,而a1与c1存在结构重叠,因而a1除了与a2存在联系,还会通过重叠部分与c2也存在联系(在通过a1来获取a2时,会获得a1记录的空间信息,这些信息包括a1与c1重叠的结构直接或间接记录的部分c2的空间信息),只是a1与a2的联系相对于与c2的联系更丰富、更强。同理,由于并行存储,a1不光与曾经和它建立有联系的对象(a2)有联系,也与那些与a1没有建立过联系,但与a2共用存储结构的对象存在联系,只是比与a2的联系弱,也就是说a1与a2的联系,相对于那些与a1没有建立过联系的众多对象来说,最强。因而,要通过a1来获得g2中的a2,比较可行的方法是:通过a1回忆获取目标并行存储对象时,一般只有选择获取与a1联系最强的并行存储信息才最有可能是目的并行存储对象。
通过长期的大量的记忆联系,a1再显现(被选择兴奋)时,并不会马上知道那个或者那些并行存储信息与它联系最强(那个信息是需要的),只有a1尽可能把其直接或者间接存储的“重要”的(“重要”的一般是联系强的)并行存储信息都显现出来进行选择,才最有可能正确获得与其联系最强的并行存储信息。如果丢失部分影响选择的重要信息最终可能会影响信息的选择,在存在海量信息存储与选择的情况下,这样的丢失对正确选择往往可能是“致命”的。人脑的神经系统就是通过轴突传出兴奋信息,易化所有……人脑的神经系统符合上面的特点,我们编程时可以模拟纤维、突触的联系特点。
当然在实际应用中,往往不会简单的只由a1来“回忆”(往往需要多个并行存储信息才能特异表征一个对象),而是由a1与a2或者更多的对象来共同“回忆”起对象a3。通过上面的讨论可知:如果只有a3,即与a1又与a2存在强的“记忆”联系,当通过a1与a2共同“回忆”时,会显现众多的并行存储对象,一般是a3被“易化”的最强(只有a3被a1与a2共同强烈易化),从而使a3被选择。因而,要通过a1、a2来获得g3中的a3,比较可行的方法是:通过a1、a2共同回忆获取目标并行存储对象时,一般只有选择获取被“易化兴奋”的最强的并行存储对象作为“回忆”出的目的对象,才最有可能是所需要的目的并行存储对象。这是并行存储结构的并行存储信息提取时,最重要的计算特点之一。这种计算方式应该也与人脑类似,即从众多被易化的神经网络中,选择出最易兴奋的神经网络,使它强烈兴奋,作为注意对象。
2.6. 回忆干扰要求记忆的基本单位之间直接的联系只能是兴奋性 联系。也就是说联络区只有兴奋性记忆柱。
g1中的a1 (22222222)能与g2中的任意并行存储对象a2 (22222222)、c2 (21112112)……建立记忆联系,并且a1能通过记忆,兴奋这些对象,产生选择回忆。可以看出,g1的功能与人脑联络区的功能相似。我在这里将具有g1类似结构功能的结构,定义为联络区的结构。
由于人脑的基本兴奋单位是皮质柱状结构,因而我将本文讨论的并行存储的基本兴奋单位定义为记忆柱。
回忆干扰是指,由于在并行存储系统中存储的众多并行信息所对应的结构往往存在重叠,而使在提取(回忆)并行信息的过程中,不仅目标结构会显现(被易化兴奋),有的非目标结构也会显现(被易化兴奋),从而影响目标结构的获取,这便是回忆干扰。回忆干扰是影响并行存储系统应用的最主要因素。并行存储系统必须“相对”解决回忆干扰的问题,否则对存储的并行信息的提取便会出现问题(提取的信息不是我们所需要的信息),这样的系统其作用便大打折扣。为了解决回忆干扰的问题我做了许多设定,其中重要的一条就是联络区的记忆柱都是兴奋性记忆柱(这种设定基于神经科学的某些研究成果 [5] ),其兴奋平衡通过其它机制来获得,如注意的影响,记忆柱的扩布抑制等等。否则如果广泛存在抑制性记忆柱,就会放大回忆干扰的影响,从而使我们回忆的内容很难与记忆的内容保持一致。
至于人的大脑皮质中是否只有兴奋性记忆柱现在无法给出确定的证据,但在皮质局部或不太远的相邻皮质之间的柱状结构之间只存在兴奋性关系 [1]。同时,虽然只有兴奋性柱状结构,但柱状结构包含了大量的神经元(人脑皮质),它们既有兴奋性的也有抑制的,它们应参与限制了柱状结构的过度兴奋。
下面讨论为何规定联络区只有兴奋性而无抑制性记忆柱(如果抑制性的记忆柱的抑制能力弱,对其它记忆柱的兴奋产生不了多大影响,不是这里讨论的对象。当然,这样的抑制性记忆柱也无多少存在的意义)的原因:
比如:用A、B两群记忆柱的兴奋分别对应两个记忆对象的刺激兴奋,且除了A、B之间建立有强烈的兴奋性记忆联系外,A、B也与其它对象建立有弱的记忆联系。A、B分别包含A1、A2、A3、A4、B1、B2、B3、B4几个记忆柱群,每个记忆柱群代表一个记忆的基本单位,如果不存在抑制性记忆柱,当A兴奋后通过记忆兴奋B时,B兴奋的就是A与B建立记忆联系时兴奋的记忆柱群。即使由于回忆干扰,可能只能选择出B1、B2、B3来兴奋,但我们也可以通过一定的方法将它控制在可容忍范围内。但如果存在抑制性的记忆柱群A1,它兴奋后会强烈抑制B2、B3的兴奋。这样,A兴奋后A1会对B包含的记忆柱B2、B3进行强烈抑制,而可使B2、B3不能被选择兴奋,这时选择出的记忆柱群便不会是A与B建立记忆联系时兴奋的记忆柱群(也就是说需要被回忆的内容发生了严重缺失)。再由于回忆干扰B4也不能被选择出来,而更容易超出系统对回忆差错的容忍范围,就会经常出现回忆错误。也就是说如果并行存储系统的联络区广泛存在抑制性的记忆柱,我们将可能无法解决回忆干扰的问题。
为了对抗回忆干扰,我们有必要设置,在并行存储系统的联络区,代表基本记忆单位的记忆柱群(原始记忆柱群)之间的联系只有兴奋性联系。而且在我们能够通过其它方法,容易的使记忆柱的兴奋平衡的情况下,在联络区设置一些抑制性的记忆柱,我也看不出,除了会大大增加回忆的差错率及编程的复杂度外会有什么其它意义。
这便是我规定联络区的记忆柱只有兴奋性的而无抑制性的原因。这也是为什么我在模拟人类智能时,以记忆柱作为记忆的基本兴奋单位,而不是神经元或者功能模糊的神经网络作为记忆的基本兴奋单位的一个重要的原因。
2.7. 并行存储系统与模糊兴奋回忆的关系
a1、c1与g2中大量的并行存储信息建立“记忆”联系后,由于记忆联系建立时,记忆的强弱不同及遗忘的原因,可能会出现以下情况:如果a1 (22222222)与a2 (22222222)的“记忆”联系强度远小于c1 (21112112)与c2 (21112112)之间的“记忆”联系强度,通过a1进行“回忆”时,由于a1、c1存在结构重叠,而使兴奋的即包含于a1又包含于c1中的结构对g2的兴奋能力远强于只包含于c1中的结构,就有可能“回忆”的是22222112 (是a2与c2中在组成结构的混合),而不是22222222,便发生了“回忆”干扰,这是我们不希望看到的结果。但我们可以通过一定的算法减少这种干扰,但由于大量并行存储所带来的大量信息重叠及遗忘等原因,我们并不能完全消除这种干扰。我们需要在这种干扰存在的情况下,“回忆”内容是有效、有用的。否则并行存储系统的建立便失去了意义。也就是说,如果通过a1“回忆”起a2,再通过a2“回忆”起a3,“回忆”起来a3是这次回忆的最终目的,代表回忆是有效、有用的。在回忆干扰的情况下,a1可能“回忆”起与a2相似的22222212或者222222,再通过22222212或者222222“回忆”起a3,最终“回忆”的结果是a3,“回忆”起来a3是这次回忆的最终目的,代表回忆是有效、有用的。那么通过与a2相似的22222212或者222222回忆起a3便是模糊兴奋回忆。这些情况我在后面的小程序运行结果中会有讨论。
随着并行存储信息之间记忆联系建立的越广泛越频繁,同时遗忘发生的越广泛越频繁,记忆、回忆干扰的发生也越严重,我们也越无法完全解决回忆干扰的问题。既然我们无法完全解决回忆干扰,还不如认同它们的存在,只要这些干扰在我们的忍受范围内即可。那么模糊兴奋的存在也是必然的了。
传入信息对对象表证的模糊性,也要求并行存储系统的“兴奋模式”是模糊兴奋。
这样,要使我们部分模拟人脑获得的并行存储系统存在相对广泛的应用价值,并行存储系统对信息的“兴奋、回忆”必然是模糊“兴奋、回忆”。模糊兴奋、模糊记忆、模糊回忆是并行存储系统的固有属性。
2.8. 总结
如果我们要使建立的并行存储系统能够存储大量的并行信息,并能较好的通过存储的某一个并行信息(a1)获得另一个与它建立有联系的并行信息(a2),同时使它具有广泛的应用价值。就需要这个并行存储系统至少具有下面的性质:1) 表征a2的信息在a1中的直接或间接存储是分散的并行存储(如果a2与a1的联系信息通过联系模式表示出来,那么a2与a1的联系模式是分散的、并行的联系)。2) 这个系统的运行模式必然与神经系统的记忆、易化兴奋、回忆特点具有相似性。由于存在这种相似性,我们在建立并行存储系统时可以“借用”神经科学的某些名词来描述并行存储系统的性质。3) 这个系统的兴奋模式必然是选择性兴奋。即选择出最易兴奋(被易化的最强,也是与回忆“发起”对象联系最强的对象)的记忆柱群作为回忆起的对象。4) 回忆干扰是并行存储系统运行的必然,也是最重要的特征之一。我们无法完全消除回忆干扰,但可以通过一系列的措施让回忆干扰带来的影响在我们容忍的范围内。5) 回忆干扰要求联络区只有兴奋性记忆柱。6) 这个并行存储系统对信息的“兴奋、回忆”模式必然是模糊“兴奋、回忆”,这是回忆干扰及传入信息对对象表证的模糊性的必然。
并行存储最主要的问题是回忆干扰的问题,回忆干扰产生的原因是表证不同并行存储信息的原始记忆柱群之间往往会包含一些共同的基本记忆柱群。下面我提供了解决这一问题的一些方法。
1) 与并行存储相对应的并行兴奋、记忆回忆必须是模糊兴奋、记忆回忆。
2) 并行存储系统一次只能有有限的基本记忆柱群强烈兴奋。
3) 记忆迅速遗忘,只有少量记忆能转化为中长期记忆,这样在正常的信息刺激下产生的记忆可使记忆柱之间的兴奋联系密度控制在一定范围内。通过遗忘能使不同记忆柱的兴奋能力出现差异,这种差异是并行回忆的基础之一。
4) 最易兴奋的并行存储对象被选择兴奋。
5) 增加基本记忆柱群数目(减少基本存储单位重叠的比例)。
6) 采取状态兴奋的方法(注意力分配,如a2与a1共同易化回忆)。
7) 采取选择注意的策略(去除干扰,选择出目的对象)。
8) 回忆判断机制(判断回忆正确与否)。
3. 如何编程获得并行存储系统
明确了并行存储具有的一些性质,我们在编程获得并行存储系统时便有了明确的方向。
本文以我用vc#编程获得的一些小程序为例,来向大家介绍我是如何根据上面的讨论来设计智能软件的并行存储系统的基本结构及如何运行的。
我是以记忆柱群作为存储结构的基本单位的,每个记忆柱群又由一个易兴奋的记忆柱和一个不易兴奋的记忆柱组成。记忆柱部分模拟了人脑的皮质垂直柱的功能,皮质垂直柱是特殊的神经网络,每个皮质垂直柱都含有一定数目的传入、传出轴突,它即能被兴奋又能记忆兴奋、遗忘兴奋还能传出兴奋,它的功能建立在组成它的神经元的功能之上。本文的记忆柱与广义的神经网络相比,它是专门为实现各种易化兴奋、记忆、回忆功能而设计,有明确、简单的结构与功能,便于大规模编写与理论思考。
小程序获得的结构分为联络区和非联络区。联络区的功能在上面已经有讨论。每个联络区的结构见图1(a)中g1的结构。每个输入g1中的并行信息(如a1),包含8列数字,每列数字非1即2,数字1输入相应列的第一行对应结构单元,数字2输入相应列的第二行对应结构单元。这个对应的结构单元就是兴奋记忆的基本单位,它由一个易兴奋的记忆柱和一个不易兴奋的记忆柱组成,我称它为基本记忆柱群。其程序代码如下:
“clength[1] = 8; cheight[1] = 2; cwidth[1] = 1; clabel[1] = 1; cq[1] = 1; //g1
clength[2] = 8; cheight[2] = 2; cwidth[2] = 1; clabel[2] = 1; cq[2] = 1; //g2
clength[3] = 8; cheight[3] = 2; cwidth[3] = 1; clabel[3] = 1; cq[3] = 1; //g3
clength[4] = 8; cheight[4] = 2; cwidth[4] = 1; clabel[4] = 1; cq[4] = 1; //g4”
每个记忆柱由9600个recordnumber (用RN来表示)组成,每个RN是一条记录,它记录的可以是突触联系时间或者突触的长短期兴奋记忆,也可以是记忆柱的兴奋时间。
如图3:通过编程获得的记忆柱,主要分为三个功能区,1) 接受突触传入兴奋的功能区。2) 传出兴奋的功能区。3) 综合功能区。1又分为专门记录突触兴奋时间、短期、长期记忆及突触其它兴奋属性的功能区。3又主要分为两个功能区。共有6个功能区,编程用Subzrecordnumber来表示。
Subzrecordnumber共有1600 (我这个小程序是1200个recordnumber)个recordnumber,6个subzrecordnumber共有1600 × 6 = 9600个recordnumber。最后100个recordnumber记录的是高级综合功能。
图3. 记忆柱
为了实现信息的分散存储,参考中枢神经系统纤维的联系特点及结合我的实际情况。我是这样来设计联络区中记忆柱之间的纤维联系的。
1) 联络区中每个基本记忆柱群发出两种纤维联系。一种是与这个联络区中的其它列的基本记忆柱群的纤维联系,为内部联系。另一种是与其它联络区中的其它列的基本记忆柱群的纤维联系,为外部联系。
2) 第一种情况,如图1(a)、图1(b),每个基本记忆柱群发出的纤维分指向与其位于同一联络区,并间隔一列的连续排列的四列记忆柱群。第二种情况,如图1(a)、图1(b),每个基本记忆柱群发出的纤维分指向与其位于不同联络区,并间隔一列的连续排列的三列记忆柱群。
3) 这样,当a1与a2建立记忆联系后,a2的空间信息便通过a1到a2的纤维联系的强化(通过与纤维对应突触的兴奋记忆来实现)得到间接存储。由于纤维联系是分散分布的,存储的空间信息也必然是分散的。
部分代码如下:
if (opn != n)//中枢不相同,这是外部联系。
{
//计算出基本length,height
for (outputsame = 1;outputsame <= outputnotsamen;outputsame++) // outputnotsamen的值表示基本记忆柱群传出纤维联系的列的数目
{
oplengthn = clengthn + 1 + outputsame;//计算第几个传出
if (oplengthn > clength[opn])//计算出length,从第几个基本记忆柱群开始计算
{
oplengthn = oplengthn-clength[opn];
……
if (opn == n) //中枢相同,内部联系
{ //要明确中枢的位置
……
这些简单设定都是结合了我的实际情况而作出的,当然如果你的电脑存储空间足够大,电脑速度足够快,并且编程能力足够好,你也可以把联络区的列与行都增加多倍,同时每个记忆柱的RN也增加到几万甚至几十万个,这样在扩展其功能的同时,也能减少回忆干扰的发生。
4. 顺序计算转换为并行计算
并行存储对应的必然是并行计算,而PC是顺序计算,为了用PC的顺序计算来模拟并行计算,我引入了展示框的概念。展示框是由RN组成的,它的作用是记录某一刻(一短时间段)所有被“兴奋”的记忆柱,以使PC逐一读写完这一时刻被兴奋的记忆柱,并进行一系列操作后,再逐一读写下一时刻被兴奋的记忆柱,通过这种转换就可使一次只能进行一次读写的PC机也能模拟人脑的并行兴奋特点。
下面是程序代码:
下面的的代码定义了展示框6,它的数据记录在文件“d:// xfy.txt”中,
“FileStream xfy = new FileStream(“d:// xfy.txt”, FileMode.Create);//6
……
void fdlabelfun(int fdlabel, ref FileStream fd)
{
switch (fdlabel)
……
case 6:
fd = xfy;
break;”
……
下面的代码是读取与存储数据到展示框6中:
“zsk = 6;
getfun(labelrecordnumber, ref labelnumber, zsk, fd);
……
zsk = 6;
putfun(lingshilabel, xfrecordnumber, zsk, fd);”
下面的代码实现周期性兴奋,一个兴奋周期就是记忆柱的一个兴奋及传出兴奋的周期:
getfun(labelrecordnumber, ref jrlabell, zsk, fd);
for (int labelrecordnumberr = 2; labelrecordnumberr <= jrlabell + 1; labelrecordnumberr++)
{……
#region
//这一兴奋周期的时间。它是记忆柱总的兴奋时间,也是展示框的兴奋时间,
if ((int)label == 1) //确定本兴奋周期读的展示框的标志(label)。
{
label = 2;
qlabel = 1; //后一兴奋周期展示框的标志,也是记忆标志,
}
……
int labelrecordnumber1 = 1;
labelrecordnumber = (label − 1) * 4000 + 1; //本周期被读取的展示框的记录标志。它记录的是前一兴奋周期记录下来的将要兴奋的记忆柱;
int qlabelrecordnumber = (qlabel − 1) * 4000 + 1; //后一兴奋周期将要兴奋的记忆柱。也是前一兴奋周期所在展示框;
#endregion
5. 软件的运行
小程序主要分两部分。一部分是建立文件系统,一部分是程序的功能实现部分。并行存储文件(见附件并行存储文件.txt)中的程序代码是编程建立文件系统的程序,点击调试,程序运行,会出现运行窗口,点击botton按钮,就会在D盘建立几个文件,其中textfil1文本文件就是以记忆柱为基础建立的文件系统。
并行(见附件并行.txt)中的程序代码是程序的功能实现代码。运行程序代码,它就会通过“for (int labelrecordnumberr = 2; labelrecordnumberr <= jrlabell + 1; labelrecordnumberr++)”周而复始的运行,每个周期都是记忆柱的一个兴奋周期。每个计算周期都会重复以下事件。接受刺激传入、主注意对象选择、易化兴奋、传出兴奋、奖惩预期、注意力分配等等。这些事件的运算实现都是围绕展示框进行的。
整个软件运行的核心目的是存储(记忆)有用或可能有用(有用、需要的对象会带来奖赏)的对象,提取(回忆)需要或可能需要的对象,这些对象在被存储与提取时就是主注意对象,主注意对象兴奋的过程就是存储与提取信息的过程。也就是说整个软件运行的核心是围绕主注意对象展开的。
5.1. 小程序运行的主要机理是
各个对象所能带来的预期奖惩按一定计算规则决定注意力的分配,注意力再按一定的计算规则,决定注意力分配中枢对皮质中枢对应存储结构的易化抑制强度,来影响中枢皮质的选择兴奋(即通过影响记忆柱的易化兴奋能力,进一步影响主注意对象的选择),从而影响回忆起的内容。
对象分配的注意力越多,其受到的易化越强,越容易被选择成为主注意对象。而对象分配的注意力的多少的决定因素是奖惩预期,对象与越强的奖赏存在密切关系,其被分配的注意力越多。
下面讨论主注意对象的选择与兴奋。
1) 根据讨论获取的并行存储的特点,我暂时设计了主注意对象的简单选择方法。刺激或者回忆时,按照一定规律,在一个兴奋最强的中枢的每列中,选择出兴奋最强且兴奋到一定程度的易兴奋的记忆柱,组成主注意对象,主注意对象对应的基本记忆柱群就是刺激兴奋或者回忆兴奋的内容。兴奋成为主注意对象的记忆柱群的兴奋能力远大于其他记忆柱群的兴奋能力,这些记忆柱之间产生的兴奋性记忆联系也远强于其他记忆柱之间产生的记忆。这是它们今后成为一个整体被回忆的基础之一。
2) 一主注意对象(a1)兴奋几个兴奋周期后,组成它的易兴奋性记忆柱兴奋停止(这时a1便不能再被选择成为主注意对象)。而不易兴奋的记忆柱的兴奋还持续一段时间,这些不易兴奋的记忆柱与这时选择成为主注意对象的强烈兴奋的易兴奋的记忆柱能建立起强烈的兴奋性记忆联系。这是通过一存储的对象来获取另一个存储对象的基础。
这样当一主注意对象兴奋后,它的不易兴奋的记忆柱就会通过记忆的兴奋,强烈兴奋一些易兴奋的记忆柱,这些易兴奋的记忆柱也会相互兴奋,它们之中曾经同时成为主注意对象的易兴奋的记忆柱相互之间的兴奋能力一般会显著强于其它易兴奋的记忆柱之间的兴奋能力,因而它们的兴奋也显著强……在这一主注意对象的兴奋终止后,它的易兴奋的记忆柱兴奋也停止,这时就会从被不易兴奋的记忆柱强烈兴奋的易兴奋记忆柱之中再选择出兴奋最强的易兴奋的记忆柱对应的原始记忆柱群作为主注意对象。从而开始下一个兴奋周期。
5.2. 程序介绍
这里向大家简单介绍我按照前文的讨论编程的两个小程序。较具体的讨论见链接内容。
小程序的结构、机理及运行过程、结果
这两个小程序向大家展示了,如何编程获得并行存储结构(这种并行存储结构是简单化、理想化的,它是部分模拟了人脑的存储结构而获得的。)和其基本结构功能单位(记忆柱),及它们之间如何联系。如何将并行信息存储在并行存储结构中,存储的信息之间如何建立记忆联系,如何进行并行计算,如何通过刺激或存储的信息易化兴奋相关存储信息,并通过选择获得有用的存储信息等等。
程序的运行实现了记忆、回忆、模糊兴奋、奖惩预期、注意力分配等等功能,展示了奖惩、注意力分配如何影响记忆柱的兴奋,并部分解决了回忆干扰的问题。
对这两个小程序的讨论文章1及一些资料2 (包括程序代码及一些程序运行结果)可通过网盘获取。
6. 高级智能需要与人脑类似的并行存储来参与实现
为什么我认为顺序存储无法实现高级智能,而与人脑类似的并行存储能够实现哪?
首先,通过对我编程的小程序的讨论,证明了编程获得的与人脑类似的并行存储可以实现易化、兴奋、记忆、回忆、奖惩、注意力分配、奖惩预期等高级智能必须具有的功能。
另外,考察人脑的记忆回忆联系可知,在长期的实践过程中,各个记忆对象之间能够方便的建立记忆联系,并相互回忆,这对高级智能来说是非常重要的,比如有了这种能力我们才能轻易的对自己所思考的内容进行评估,又比如对于一个物体(m)的表征,只用m的一个“图形属性”产生的主注意对象来表征m,显然不足以特异性的表征m,必须一群特异的“图形属性”才能将m与大量的其它物体区分开来。要使这一群特异的“图形属性”所对应的主注意对象发挥识别作用,就需要它们之间能够方便的建立记忆联系,并相互回忆。
通过前面的讨论可知,与人脑类似的并行存储结构的各个存储对象之间“天然存在直接或间接的纤维联系”,使它们之间能够容易的建立记忆联系(只要使它们先后或者同时兴奋),并且不会增加存储空间。而顺序存储的各个存储对象之间缺乏“那种天然的联系”,要使它们之间方便的建立记忆回忆联系则比较困难,同时顺序存储建立新的记忆联系时需要增加存储空间,而在长期的学习过程中,这种增加必然是超负荷的。
高级智能一个必须具有的重要特点就是,对某个对象的回忆(比如并行存储对象a6),往往不是通过一个对象孤立的回忆,而是通过多个对象来实现(通过a1、a2、a3等共同回忆来使a6被选择兴奋,a1单独与a6的联系并不是最强,但在a1、a2、a3等的共同参与下,a6受到最强易化。) (比如我们平常所说的情景记忆回忆,及前文关于m的区分,就是这种情况),这种回忆在通过每一个对象(a1)进行回忆时并不能知道那些是需要的回忆,那些是不需要的回忆,因而,需要所有与它们建立过联系的存储对象被易化,并从这些被易化的对象中选择出目标对象。并行存储能通过注意力分配中枢轻松高效实现上面所述过程(因为并行存储要实现上述过程,虽然需要易化的对象是非常多的,但它只需要易化有限的一些基础存储结构就可以实现易化趋于无限的并行存储对象,也就是说需要易化的对象是非常有限的),而顺序存储则如何实现呢?很难,即使强行实现,效率也低,缺乏实用价值。
可以看出,这样编程出来的人工智能软件的存储对象之间能够容易的建立直接或者间接的联系,也就是说智能软件在奖惩及注意力分配的限制下,能够通过直接或者间接的兴奋,回忆起与它所感知与思考的对象相关的存储内容(比如一些属性,一些认知等等),并通过这些回忆的存储内容对它们产生认知,从而意识到它们(正确的认知能带来奖赏)。因而,从理论上说,未来我们可以通过适当的编程,让这样的人工智能软件具有意识。
由于这个小软件它不断追求更强的奖赏,并逃避惩罚,因而它可以有自主行为。
7. 结论
通过前文的讨论可知,与人脑类似的并行存储必然具有以下特点:1) 其存储信息的联系模式是分散的、并行的联系。2) 这个系统的运行模式必然与神经系统的记忆、易化兴奋、回忆特点具有相似性。由于存在这种相似性,我们可以“借用”神经科学的某些名词来描述并行存储系统的性质。3) 这个系统的兴奋模式必然是选择性兴奋。即选择出最易兴奋(被易化的最强,也是与回忆“发起”对象联系最强的对象)的记忆柱作为回忆起的对象。4) 回忆干扰是并行存储系统运行的必然,也是最重要的特征之一。我们无法完全消除回忆干扰,但可以通过一系列的措施让回忆干扰带来的影响在我们容忍的范围内。5) 回忆干扰要求联络区只有兴奋性记忆柱。6) 这个并行存储系统对信息的“回忆兴奋”模式必然是模糊“回忆兴奋”,这是回忆干扰的必然。要使这样的并行存储结构实用化,就必须解决回忆干扰的问题。在以上讨论的基础上,本文提供了并行存储与计算的基础理论与编程方法,随后按照这些理论与方法进行了编程讨论,证明了这样编程获得的软件可以实现易化、兴奋、模糊兴奋、记忆、回忆、遗忘、奖惩学习、思想行为的动力预期、注意力分配等等这些人的高级智能所必须具有的功能。
高级智能需要与人脑类似的并行存储来参与实现。
本文的并行存储与计算是与当前流行的人工智能理论(比如深度学习、机器学习等等)在基础结构与计算方法上都有所不同的理论,它更多的模拟了人脑的存储结构与计算模式,是一种全新的人工智能编程理论与方法,它的一系列的设定实现了并行存储与计算,使高级智能的编程获得成为可能。
拟人智能的特点及编程研究
摘要:本文通过讨论得出,与人脑类似的并行存储必然具有以下特点:1) 其存储信息的联系模式是分散的、并行的联系。2) 这个系统的运行模式必然与神经系统的记忆、易化兴奋、回忆特点具有相似性。由于存在这些相似性,我们可以“借用”神经科学的某些名词来描述并行存储系统的性质。3) 这个系统的兴奋模式必然是选择性兴奋。4) 回忆干扰是并行存储系统运行的必然,也是最重要的特征之一。我们无法完全消除回忆干扰,但可以通过一系列的措施让回忆干扰带来的影响在我们容忍的范围内。5) 回忆干扰要求联络区只有兴奋性记忆柱。6) 这个并行存储系统对信息的“回忆兴奋”模式必然是模糊“回忆兴奋”,这是回忆干扰的必然。随后,本文介绍、讨论了如何在上述结论的基础上进行编程及为什么这样编程。包括编程实现记忆、回忆、刺激传入、模糊兴奋、兴奋、奖惩、注意力分配等功能,及兴奋、奖惩、注意力分配之间的关系以及它们对解决回忆干扰的意义。
关键词:拟人智能,并行存储,回忆干扰,注意力分配,兴奋,奖惩
NOTES
1链接:https://pan.baidu.com/s/1-afn6Uhbryreoh9YJFKbQg,提取码:wwik。
2链接:https://pan.baidu.com/s/1eLTW9MB_6h_NoZ3vtwtIVQ,提取码:ugp7。