接上篇,正文部分最后一章,讲讲怎么对之前篇幅中提到的脑神经系统内的状态进行计量和建模。
首先强调一遍这里的目的,我们并不是要对神经网络结构进行计量和建模,因为前文讲了网络怎么通过超限构造法这个数学上构造全集的方法来保证覆盖所有输入的组合的。
虽然你可以用遗传算法来优化这个网络的局部特性,但优化后它依旧保持了它工作的基本模式,就是利用微弱全局刺激和输入信号来构造维持比较久的当前状态(你感受到的意识),然后当前状态作为向下一个状态转移的条件,和当前输入共同作用。
这一章我们讨论,如何对神经看似杂乱的状态转移建立计量,并且针对某个已确定的“神经网络结构和记忆来”来进行预测。(也就是说我们不研究在遗传算法中正在进化着的网络,也不研究正在学习着外部环境中信息的网络,虽然它们也很重要,但研究它们的方法和这一章的内容是共通的)
下面在强调一下脑子里时序可能的表示方法。
时序,而且因为上述结构的特点,时序代表元可以和时序产生的片段进行互联而迭代,我们就可以利用一对有序的概念构造出无限长度的时序。数论上成为有序偶,有序偶大概就是{{x,y},x}这样的集合。或者别的定义方法,你随便怎么定义,然后你令它等价于(x,y)。这时候你惊奇的发现你利用元素间无偏序关系的集合构造了一对有序的二元组。当然它还可以被推广为偏序集。
之前我们讲到了混沌现象的研究方法。我们假设我们看到了“图1”中的一个轨迹。因为混沌系统对初始条件的微小差异有敏感性,我们就没法精确预测轨迹,这时,我们退而求其次,计算整个一些其他统计学属性,比如我们利用球体A把空间分成两个部分(球里和球外),我们可以统计一段时间T内,轨迹处于球A内所占的时间t,我们计算t/T。当T→∞的时候,我们得到了一个固定的测度m = t/T,它和你取的初始条件无关。当然我们可以跟踪轨迹,每当它通过球体(邻域ABC)中的一个的时候,我们记录下A、B或者C,这样我们得到一个序列。它具有随机性,可能是AABCCBCABCCBACBBCBCABCBCAABC,我们取序列长度L,计算其中"BC"出现的次数n,令L→∞,我们就得到测度e = n/L。
那么要计算这些测度,对于一个混沌动力系统的某一瞬间,我们就需要函数b = f(P,τ),函数输入P代表当前时刻状态沿着轨迹运行到了空间中的哪一点P,输入τ代表我们所规定的邻域(比如图1中的那个球体A),函数输出给我们b,它的取值是0或者1,代表在不在邻域内。
对于动力系统这太简单,我们计算欧氏距离d=√((X-Xo)²+(Y-Yo)²+(Z-Zo)²),它就是勾股定理。τ的半径是R,f于是做这件事,如果d > 0输出0,否则输出1。
由于是不可预测的系统,我们就无法得到精确的测度,但是我们通过数值计算模拟,就可以尽量长的模拟这个过程。我们的测度随着我们采样的增加逐渐趋于稳定。就和掷硬币一样,掷硬币的次数越多概率越趋近于50%。比如我们要精度精确到1%,那么当测度的波动范围不超出1%范围的时候,我们就不用继续模拟系统了。
到此,要建立测度我们就要有3个条件。
系统可以模拟并且运行(对物理系统我们有微分方程数值解法)
我们可以计算出距离(距离是范数的一个实例)
系统存在测度(不存在测度的系统有好多种,但它们通常很好理解,比如阻尼摆,它会停机,又或者俄罗斯轮盘赌,它是古典概型的)
对于神经网络我们怎么理解呢,首先它是在计算机里模拟的。我们知道计算机是二值的,那么网络的状态总数肯定是有限的。(比如你的内存有4G,那么你内存里的数据有2^8^4G种组合状态(我们忽略寄存器和程序计数器EIP))
那么我们可以建立一个空间R(多少维度,是平滑的还是有张量的,还是支离破碎的,还是和面条一样的,我们现在不知道)把网络的每种状态对应为空间中的一个点(我们把空间称为神经网络的状态空间,其实它并没有2^8^4G这么大,因为大部分状态程序是永远不会经过的)
由于网络可以运行,它的运行过程现在映射成了空间R内的一个轨迹。
现在我们讨论条件。
1、本来就做得到。3、我们相信它有测度,我们试了才能知道。
然后问题就是2。
我们知道邻域包含关系判别函数f的两个输入P和τ,其实可以看作P,Po和R。
我们计算范数||(P-Po)|| > R这个命题就好了。
我们现在需要做的就是构造一个函数d = g(P, Po),输入是状态空间内两个点(换句话说就是输入两个神经网络的瞬时状态),输出是他们在状态空间内的范数(理解为距离)d。
再换言之,我们需要一个函数g(α,β),来比较神经网络2个任意状态的相似程度,并且把相似程度描述为一个标量d。
这个函数我们有许多种方法得到(但它们效果不一定会很好)。一筹莫展的情况下,由于我们已知在很短的时间内,神经网络自然演进的两个状态距离很小。利用这个作为激励,我们可以用遗传算法训练一个小的神经网络,来作为我们要研究的神经网络的范数公式,以此帮我们求得我们要研究的神经网络两个状态间的相似程度。
当然计算相似度不必大动干戈的用一个神经网络,因为它的效果不一定比传统的机械比较好。
当一个神经网络没学习过任何东西的时候,无输入,给出全局刺激(模拟脑波),神经网络里没有任何一个神经响应。
那么这个空间就有点抽象,我们想象一个宇宙空间,每个星球是一个点,其他星球都在以光速远离你,那么你无法到达任何一个其他星球了。
当网络学习了一些东西的时候,状态之间就可以互相转化了。
这时候我们找一个时间点,把神经网络存档下来(就好像存了一个即时档),然后从这里对神经网络里神经的电压给一些微扰,然后继续模拟网络后续变化状态。
我们研究上述计量。