1955年在美国的阿拉莫斯实验室的三名著名的物理学家费米(E.Fermi),帕斯塔(J.Pasta)和乌莱姆(S.Ulam)为了验证能量均分定理,将64个质点用弹簧联结,对少数质点进行激发,看看是否能量是否会均衡的分布到每个质点上。
但意外的是长时间以后能量几乎全部回到了初始的少数质点上。这个结果表明这个非线性系统可以出现孤立波。这就是著名的FPU问题。
模仿这个实验做了一个64层每层1个节点的神经网络,1*1…*1,画成图如下
X0初始化sigmoid(0.9),
所有权重w[63][0]都初始化为0.02,
激活函数是sigmoid
反向传导的方法让左右两边的x相等
差值的计算方法
for(int a=0 ;a<2;a++){
d=x[a][0]*( x[a+1][0]-x[a+2][0] );
}
for(int a=2 ;a<r-2 ;a++){
d=x[a][0]*( x[a+1][0]-x[a+2][0] )+x[a][0]*( x[a-1][0]-x[a-2][0] );
}
for(int a=r-2 ;a<r-1;a++){
d=x[a][0]*( x[a-1][0]-x[a-2][0] );
}
分别迭代了500次,1000次,2000次,5000次,1万次,10万次,100万次
将得到的x[64][0]的值画出来
可以开到一个波包随着迭代次数的增加向右移动
如果把凹陷看作是波,可以看到这个波在向左移动
孤立子有4种类型,波包,凹陷,左扭结,右扭结.随着迭代次数的增加这个波包的波长逐渐增大,到迭代100万次的时候图像看起来像右扭结。
如果这64个神经网络的节点看作是水分子,上面的图像不就是水面上的孤波子吗?
具体数据