制作一个4*4*2结构的神经网络,向这个网络输入吸引子并让这个网络向1,0收敛
将这个网络简单表示成
s(c)-4-4-2-(2*k),k∈(0,1)
用同样的办法制作一个4*4*2的网络向这个网络输入排斥子,并让这个网络向0,1收敛将这个网络表示成
s(p)-4-4-2-(2*k),k∈(0,1)
现在用这两个网络组成一个网络,并让4*4*2部分的权重共享,前面大量实验表明这种效果相当于将两个弹性系数为k1,k2的弹簧并联成一个弹性系数为k的弹簧,并且让k1=k2=k/2的过程。
将这两个网络
s(c)-4-4-2-(2*k),k∈(0,1)
s(p)-4-4-2-(2*k),k∈(0,1)
合起来简化成
d(c,p)-4-4-2-(2*k),k∈(0,1)
这个网络的收敛标准是
if (Math.abs(f2[0]-y[0])< δ && Math.abs(f2[1]-y[1])< δ )
因为对应每个收敛标准δ都有一个特征的迭代次数n与之对应因此可以用迭代次数曲线n(δ)来评价网络性能。
本文尝试了δ从0.5到1e-7在内的35个值.
具体进样顺序 | |||
进样顺序 | 迭代次数 | ||
δ=0.5 | |||
c | 1 | 判断是否达到收敛 | |
p | 2 | 判断是否达到收敛 | |
梯度下降 | |||
c | 3 | 判断是否达到收敛 | |
p | 4 | 判断是否达到收敛 | |
梯度下降 | |||
…… | |||
达到收敛标准测量准确率,记录迭代次数,将这个过程重复199次 | |||
δ=0.4 | |||
… | |||
δ=1e-7 |
其中吸引子为
Random rand1 =new Random();
int ti1=rand1.nextInt(98)+1;
x[0]=((double)ti1/100);
Random rand2 =new Random();
int ti2=rand2.nextInt(98)+1;
x[3]=((double)ti2/100);
排斥子为
Random rand1 =new Random();
int ti1=rand1.nextInt(98)+1;
x[0]=1+((double)ti1/100);
Random rand2 =new Random();
int ti2=rand2.nextInt(98)+1;
x[3]=1+((double)ti2/100);
得到的数据
f2[0] | f2[1] | 迭代次数n | 平均准确率p-ave | δ | 耗时ms/次 | 耗时ms/199次 | 耗时 min/199 |
0.4971798 | 0.6221749 | 77.246231 | 0 | 0.5 | 0.9447236 | 188 | 0.003133333 |
0.3845949 | 0.6054663 | 714.47739 | 0 | 0.4 | 1.8542714 | 385 | 0.006416667 |
0.461226 | 0.542424 | 1496.4422 | 0 | 0.3 | 3.758794 | 748 | 0.012466667 |
0.8074469 | 0.2004141 | 2202.7136 | 0 | 0.2 | 4.9346734 | 982 | 0.016366667 |
0.9127876 | 0.091302 | 3383.8744 | 0 | 0.1 | 6.5477387 | 1303 | 0.021716667 |
0.9911862 | 0.0090039 | 8291.6432 | 0 | 0.01 | 13.889447 | 2765 | 0.046083333 |
0.9991082 | 9.02E-04 | 17873.312 | 0 | 0.001 | 28.422111 | 5704 | 0.095066667 |
0.9999093 | 9.12E-05 | 35607.754 | 0 | 1.00E-04 | 56.798995 | 11303 | 0.188383333 |
0.9999191 | 8.14E-05 | 37798.116 | 0 | 9.00E-05 | 60.125628 | 11965 | 0.199416667 |
0.999928 | 7.24E-05 | 37683.543 | 0 | 8.00E-05 | 59.643216 | 11886 | 0.1981 |
0.9999368 | 6.36E-05 | 41542.548 | 0 | 7.00E-05 | 66.874372 | 13308 | 0.2218 |
0.9999461 | 5.42E-05 | 40211.523 | 0 | 6.00E-05 | 64.030151 | 12742 | 0.212366667 |
0.9999553 | 4.49E-05 | 42300.095 | 0 | 5.00E-05 | 68.236181 | 13595 | 0.226583333 |
0.9999638 | 3.63E-05 | 47197.432 | 0 | 4.00E-05 | 76.834171 | 15290 | 0.254833333 |
0.9999733 | 2.69E-05 | 48845.975 | 0 | 3.00E-05 | 77.954774 | 15514 | 0.258566667 |
0.999982 | 1.81E-05 | 56957.04 | 0 | 2.00E-05 | 91.623116 | 18233 | 0.303883333 |
0.999991 | 9.00E-06 | 63660.739 | 0 | 1.00E-05 | 103.31658 | 20575 | 0.342916667 |
0.9999918 | 8.28E-06 | 65146.025 | 0 | 9.00E-06 | 104.68342 | 20864 | 0.347733333 |
0.9999928 | 7.22E-06 | 67970.698 | 0 | 8.00E-06 | 109.41206 | 21773 | 0.362883333 |
0.9999937 | 6.32E-06 | 70787.05 | 0 | 7.00E-06 | 114.21106 | 22728 | 0.3788 |
0.9999946 | 5.44E-06 | 74924.146 | 0 | 6.00E-06 | 120.14573 | 23925 | 0.39875 |
0.9999955 | 4.49E-06 | 77173.342 | 0 | 5.00E-06 | 123.59296 | 24612 | 0.4102 |
0.9999964 | 3.65E-06 | 78510.518 | 0 | 4.00E-06 | 126.51759 | 25193 | 0.419883333 |
0.9999973 | 2.71E-06 | 83886.447 | 0 | 3.00E-06 | 136.93467 | 27281 | 0.454683333 |
0.9999982 | 1.81E-06 | 97791.07 | 0 | 2.00E-06 | 157.86935 | 31417 | 0.523616667 |
0.9999991 | 8.99E-07 | 104116.33 | 0 | 1.00E-06 | 168.39698 | 33511 | 0.558516667 |
0.9999992 | 8.16E-07 | 113022.57 | 0 | 9.00E-07 | 182.17588 | 36285 | 0.60475 |
0.9999993 | 7.26E-07 | 113242.4 | 0 | 8.00E-07 | 181.37688 | 36094 | 0.601566667 |
0.9999994 | 6.35E-07 | 113600.84 | 0 | 7.00E-07 | 182.63317 | 36360 | 0.606 |
0.9999995 | 5.44E-07 | 125167.88 | 0 | 6.00E-07 | 202.27638 | 40253 | 0.670883333 |
0.9999995 | 4.56E-07 | 127589.14 | 0 | 5.00E-07 | 205.37186 | 40869 | 0.68115 |
0.9999996 | 3.64E-07 | 126430.22 | 0 | 4.00E-07 | 204.93467 | 40798 | 0.679966667 |
0.9999997 | 2.71E-07 | 133013.72 | 0 | 3.00E-07 | 214.10553 | 42607 | 0.710116667 |
0.9999998 | 1.83E-07 | 144383.77 | 0 | 2.00E-07 | 234.1809 | 46602 | 0.7767 |
0.9999999 | 9.06E-08 | 173535.34 | 0 | 1.00E-07 | 281.52764 | 56024 | 0.933733333 |
得到迭代次数曲线
迭代次数随着δ的减小不断增加。
从表格可以合理假设当δ无限减小的时候迭代次数n会随着无限增加,就向在吸引子和排斥子之间有一种排斥力随着两个分类对象的接近而增加;或者也可以理解成两个对象之间的排斥力之所以随着距离的减小而增加是因为两个对象在任意小的精度上的差别都在变小,但两个对象的差别在任意小的精度上一直存在。
实验参数
学习率 0.1 |
权重初始化方式 |
Random rand1 =new Random(); |
int ti1=rand1.nextInt(98)+1; |
tw[a][b]=xx*((double)ti1/100); |