我在《拟人智能的基础编程》这篇文章中讨论了记忆柱的结构及编程实现的问题,本文主要是具体讨论记忆柱的易化兴奋、记忆及传出兴奋的功能。程序代码见:https://mp.csdn.net/mp_blog/creation/editor/127817564。
记忆柱的易化抑制主要通过两种方式,一种是通过突触的易化,第二种是非突触方式,它包括易兴奋与不易兴奋的记忆柱之间的易化抑制及状态中枢的记忆柱与对应皮质记忆柱之间的易化。(记忆柱的突触、传出纤维都是功能结构,都用记忆柱的recordnmber表征。它们的功能都分别用一小段代码来实现。)
不管是突触形式还是非突触形式,记忆柱的易化兴奋的计算过程相似,突触形式的易化只是多了对突触的计算。
不管是什么传入刺激,传入记忆柱后,就会根据传入刺激的强弱、记忆柱是否被易化兴奋、传入突触的兴奋性记忆的强弱等等对产生不同的计算结果,其过程是刺激传入,对记忆柱产生易化作用,这种易化达到一定程度后便会兴奋记忆柱。兴奋的记忆柱会产生记忆并传出兴奋,易化相应记忆柱。
图2是各种刺激传入后发生的各种事件的大概流程图。图1是通过突触传入记忆柱的刺激信息所产生的各种事件的具体的流程图。

下面的函数执行的是突触传入易化兴奋模式:
public void cdtcsub(int cdtc, int tccrqd, int zrecordnumber, int subzrecordnumber, int qztime, int label, int zsk, int qlabelrecordnumber, int zqtime, int jyzxfqdlabel, int tcxfyz, int tcxfqda, int tcxfds, int jcvalue)
{
……
(计算获得突触所在的记忆柱)
int tcszjyz = (cdtc / zrecordnumber) * zrecordnumber;
int xfrecordnumber = tcszjyz + zrecordnumber - 100 + 78;
……
(获取突触计算相关的参数,并计算突触兴奋记忆遗忘情况,然后记录下来。当然我的小程序关于突触记忆遗忘的计算只是简单的计算,还有缺陷,存在很大改进的地方)
zsk = 8;
int cdtc1 = cdtc + 1 * subzrecordnumber;
int cdtc2 = cdtc + 2 * subzrecordnumber;
getfun(cdtc2, ref tccqjy, zsk, fd);
getfun(cdtc, ref tctime, zsk, fd);
……
tcjy(tcjytime, ref tcdqjy, ref tccqjy, jyzxfqdlabel); //计算突触的遗忘
……
if (tccqjy >= 150 & tccrqd >= 80 | bz == 8) // 兴奋传入较强或者记忆柱正处于兴奋状态,传入的兴奋才参与计算
{
//主要是修改记忆柱的一些总的参数,兴奋后根据易与不易来记入不同展示框,
……
(下面是针对兴奋传入记忆柱后,面对的各种情况的不同计算)
if (jyzxftime < zqtime) //本兴奋周期,这一记忆柱还没有被易化过jyzxfds = 1
{
if (qzjyzxftime == qztime)
{
//前一兴奋周期它被选择兴奋,这一兴奋周期它正在兴奋
……
}
if (qzjyzxftime < qztime | qzjyzxftime > qztime)
{
//前一兴奋周期它没有兴奋。;
……
}
if (jyzxftime == zqtime)
{
if (qzjyzxftime == qztime)
{
//这种情况下,这一刻这个记忆柱的传入易化不是第一次。前一周期它兴奋
……
}
if (qzjyzxftime < qztime | qzjyzxftime > qztime)
{
//这种情况下,这一刻这个记忆柱的传入易化不是第一次。前一周期它没有兴奋。
……
}
}
//记入记忆柱的段
if (cdtc % 9600 < 5000)
{
(兴奋并易化了记忆柱的突触被记录下来,为突触后面的记忆计算做准备)
……
}
//记忆柱没有记录入过展示框的情况。(需要专门的sub);
(记忆柱兴奋后,但本兴奋周期还没有记入展示框的记录,需要记入相应展示框,如果有则不需要记入)
if (zjyzxftime < zqtime && jyzxfqd >= 1000)
{
//分易兴奋的与不易兴奋的记忆柱。;
……
}
}
}
下面的函数执行的是非突触传入易化兴奋模式,其计算除了突触计算外,其它的与突触计算模式的计算基本相似:
public void cjcr(int qlabelrecordnumber, int xfrecordnumber, int xfqdrecordnumber, int zqtime, int qzqtime, int label, int jyzxfqdlabel, int jcvalue)
{
……
}

兴奋的记忆柱会产生记忆。下面的函数执行的是记忆柱的记忆功能,其过程是记忆柱兴奋后,顺序读取记忆柱记录的对这次记忆柱兴奋产生正面影响的突触,并根据这些突触数目、记忆柱的兴奋强度,计算出每个突触应该额外获得的兴奋能力,并记录在突触中(相应recordnmber中)。记忆的主要是各种信息传入记忆柱时所通过的突触的兴奋能力的加强。记忆柱产生的兴奋越强,突触通过记忆获得地兴奋能力也越强。
public void xfjy(int xfrecordnumber, int qlabel, int subjyzrecordnumber, int qzqtime, int zrecordnumber, int zqtime, int jyzxfqdlabel, int jcvalue)
{……}
兴奋的记忆柱会传出兴奋。下面的函数执行的是记忆柱的兴奋传出功能。其过程是记忆柱兴奋后,顺序读取记忆柱记录的相应recordnmber(其标志的是这个记忆柱传出纤维对应分布的突触),然后通过recordnmber找到相应突触,将兴奋传入相应记忆柱。不同类型的记忆柱有不同的兴奋传出模式。
public void xfcc(int xfrecordnumber, int qlabel, int subzrecordnumber, int qzqtime, int zrecordnumber, int zqtime, int zsk, int label, int z, int jyzxfqdlabel, int qdjlrecordnumber, int jyzjcxfqd, int zzymdxfqd, int jcvalue, int qdbz, int tcxfyz)
{
……
lingshilabel = xfrecordnumber - 78 + 67 + (qlabel - 1) * 3 + 2;
getfun(lingshilabel, ref tcxfqda, zsk1, fd);
(tcxfqda是本次记忆柱兴奋的强度,其传出兴奋的强度与其兴奋的强度成正比)
……
int ccjl = 0; int cdtc = 0;
if (z == 1)
{
//根据jyz的兴奋强度传出。;
(这段代码是根据兴奋强度传出信息,比如奖惩中枢传出信息到奖惩预期中枢)
……
(下面的代码把兴奋强度转换成相应的表征强度的并行存储数据,根据这些数据通过适当的计算就能够获得,本记忆柱记录的表征其兴奋后所传到的其它记忆柱的突触)
for (int number = 1; number <= 8; number++)
{
……
getfun(lingshilabel, ref cdtc, zsk1, fd);
(cdtc是计算获得的一个突触的recordnumber)
int xfqdrecordnumber = tcxfqda;
jyzxfqdlabel = 200 * 5;
cjcr(qlabelrecordnumber, cdtc, xfqdrecordnumber, zqtime, qzqtime, label, jyzxfqdlabel, fjcvalue);
(记忆柱的兴奋传到这个突触所产生的计算)
}
zhongjie = 0;
}
else
{
//根据记录的recordnumber顺序直接传出。;
zsk1 = 8;
getfun(xfccrecordnumber, ref ccjl, zsk1, fd);
(通过ccjl来计算获得记忆柱有多少个兴奋传出)
……
for (int cc = 1; cc <= ccjl; cc++)
{
……
(这段程序是感觉中枢联络区记忆柱的传出兴奋)
if (z == 3)
{
(这段程序是状态中枢的记忆柱群兴奋后的兴奋传出计算)
……
}
}
}
}
本文探讨了记忆柱在拟人智能编程中的实现,包括易化兴奋、记忆存储与兴奋传出等功能,并提供了具体的编程代码实例。

330

被折叠的 条评论
为什么被折叠?



