这是关于我的小魔鬼的系列实验的开端,照理说应该好好庆祝一下的,但是最近太忙了,就直接开始吧。
细胞自动机(Cellular Automata)不是一个新概念,其实它是一个很古老的计算机游戏,google一下的话就知道了,这里就不详述了。我们这里要做的是对每个细胞单元的能力作一些增强,但是不改变它的单纯性。具体来说,有以下几点:
1、每个细胞单元可以存储有限数量的信息(比如,限定长度的字节数组)
2、细胞单元之间可以通过某种形式进行信息交流,这种交流的建立通过一种叫做细胞突的附加单元来完成
3、细胞单元都有其特有的能量阈值,达到阈值以后就会激活,并且可以保持在激活状态一段时间
4、细胞单元之间的交流就是能量传播的过程
这样有几个问题还需要讨论:
1、细胞单元及其关联的表示方式?
我们可以用普通矩阵,但是对存储压力可能会很大;或者用稀疏矩阵,用哈西表查找;或者建立索引表和反查表来确定细胞单元之间的关系。主要问题是,一个细胞单元可能和非常多的细胞单元有关联,不管使用什么存储方式都会有不小的存储量。
暂时决定使用的方案是一张通用的索引表(哈西表),然后我们根据输入和细胞单元的索引来进行查找,我们可能需要一种特殊的哈西表。
2、细胞单元的能量是针对每个存储单元的还是细胞本身的?
现在暂时决定为细胞本身的,但是我怀疑这样做可能会激发错误的能量传导回路。
3、能量的传播是否会有加权?
我们可能一开始不考虑加权,或者说只考虑信号自身在细胞单元里的加权,以后我们还会有一些更多的想法来实施。
针对断句的功能来说,我们暂时对如何自组织没有概念,所以还是自己设计了一套学习机制:
1、我们把整个自动机系统中的细胞单元分为两类:(输入)感应单元和(断句)识别单元。和人类的感应能力不同,输入感应单元直接识别ASCII码或者Unicode,然后将能量传导给识别单元进行识别。
2、识别单元相对单纯,感应单元则存储有限数量的字符的断句权值,及其阈值和当前能量值,我们初始只有一个识别单元,随着输入信息的增加,识别单元会自我分裂(当然这只是为了方便)并将存储的信息均分到两个新的单元中去。当然,我们需要相应更改关联信息。
3、上面已经说过了,识别单元和感应单元的关联,以及感应单元之间的关联都通过全局索引表来实现。
4、我们现在只有这样一个简单的双层结构,是否会增加为多层还需要看试验的进一步结果。
好了,理论部分就说这些,接下来就是付诸实践了……
笔记2010/2/5:
关联查找表准备用hash字典了,但是这样还是会面临查找关系爆炸所带来的压力,一台机器肯定是无法完全模拟这个模型的。现在的时间同步方式也很简单……开始觉得这个模型太复杂了……