制作一个1*2*2的网络,r是一个随机数取值方法是
Random rand1 =new Random();
int ti1=rand1.nextInt(99)+1;
r=sigmoid( (double)ti1/100);
Random rand2 =new Random();
int ti2=rand2.nextInt(99)+1;
r1=sigmoid( (double)ti2/100);
分别向两边输入r和1+r1。并让1*2*2部分的权重共享,前面大量实验表明这种效果相当于将两个弹性系数为k1,k2的弹簧并联成一个弹性系数为k的弹簧,并且让k1=k2=k/2的过程。
将这个网络简写成
d2(r,1+r1)-1-2-2-(2*k),k∈{0,1}
具体进样顺序 | |||||
进样顺序 | 迭代次数 | ||||
δ=0.5 | |||||
r | 1 | 判断是否达到收敛 | |||
1+r1 | 2 | 判断是否达到收敛 | |||
梯度下降 | |||||
r | 3 | 判断是否达到收敛 | |||
1+r1 | 4 | 判断是否达到收敛 | |||
梯度下降 | |||||
…… | |||||
达到收敛标准测量准确率,记录迭代次数n,将这个过程重复199次 | |||||
δ=0.4 | |||||
… | |||||
δ=5e-5 |
这个网络的测试集是
测试集 | 1+r1 | 1 | |
1+r1 | 0 |
也就是用左侧的网络100%的进1+r1进行测试得到的数据
训练集 | c | r | 测试集 | 1+r1 | 1 | |||
a | 1+r1 | 1+r1 | 0 | |||||
S1a-3 | ||||||||
f2[0] | f2[1] | 迭代次数n | 平均准确率p-ave | δ | 耗时ms/次 | 耗时ms/199次 | 耗时 min/199 | 最大准确率p-max |
0.499871 | 0.518355 | 358.9899 | 0.015075 | 0.5 | 1.562814 | 313 | 0.005217 | 1 |
0.606284 | 0.395471 | 9359.442 | 0 | 0.4 | 10.66332 | 2126 | 0.035433 | 0 |
0.706446 | 0.294729 | 15590.79 | 6.04E-05 | 0.3 | 15.19095 | 3025 | 0.050417 | 0.012012 |
0.806376 | 0.194684 | 24128.22 | 0.009995 | 0.2 | 23.17085 | 4613 | 0.076883 | 0.106106 |
0.904596 | 0.095911 | 39105.77 | 0.079034 | 0.1 | 36.47236 | 7269 | 0.12115 | 0.199199 |
0.990699 | 0.009341 | 101692.7 | 0.28767 | 0.01 | 93.98995 | 18709 | 0.311817 | 0.381381 |
0.999075 | 9.27E-04 | 210728.3 | 0.395023 | 0.001 | 193.1508 | 38441 | 0.640683 | 0.48048 |
0.99918 | 8.22E-04 | 218539.4 | 0.402765 | 9.00E-04 | 200.7286 | 39955 | 0.665917 | 0.475475 |
0.999267 | 7.34E-04 | 226591.9 | 0.400607 | 8.00E-04 | 208.2211 | 41443 | 0.690717 | 0.478478 |
0.999354 | 6.47E-04 | 235607.9 | 0.401748 | 7.00E-04 | 216.4573 | 43081 | 0.718017 | 0.472472 |
0.999448 | 5.53E-04 | 247316.1 | 0.40446 | 6.00E-04 | 227.0101 | 45179 | 0.752983 | 0.474474 |
0.999541 | 4.60E-04 | 260840.8 | 0.413987 | 5.00E-04 | 239.3166 | 47626 | 0.793767 | 0.488488 |
0.999629 | 3.71E-04 | 279840.4 | 0.412035 | 4.00E-04 | 256.8794 | 51124 | 0.852067 | 0.483483 |
0.999723 | 2.77E-04 | 306409.8 | 0.416638 | 3.00E-04 | 280.8844 | 55902 | 0.9317 | 0.498498 |
0.999816 | 1.84E-04 | 345659 | 0.419721 | 2.00E-04 | 316.6382 | 63017 | 1.050283 | 0.49049 |
0.999908 | 9.22E-05 | 426519.1 | 0.430908 | 1.00E-04 | 390.8995 | 77795 | 1.296583 | 0.500501 |
0.999917 | 8.31E-05 | 441793.9 | 0.425491 | 9.00E-05 | 404.5075 | 80505 | 1.34175 | 0.48048 |
0.999927 | 7.35E-05 | 455743.8 | 0.428826 | 8.00E-05 | 417.8543 | 83156 | 1.385933 | 0.483483 |
0.999935 | 6.47E-05 | 477427.2 | 0.425712 | 7.00E-05 | 437.9347 | 87155 | 1.452583 | 0.491491 |
0.999944 | 5.56E-05 | 499296.5 | 0.427126 | 6.00E-05 | 457.6884 | 91086 | 1.5181 | 0.496496 |
0.999954 | 4.62E-05 | 528598.3 | 0.426391 | 5.00E-05 | 484.196 | 96362 | 1.606033 | 0.499499 |
0.42365 |
用同样的办法测试网络
d2(r,1+r1)-1-2-2-(2*k),k∈{0,1}
但测试集是
测试集 | 1+r1 | 0 |
1+r1 | 1 |
也就是向右侧的网络100%的进1+r1进行测试
得到的数据
训练集 | c | r | 测试集 | 1+r1 | 0 | |||
a | 1+r1 | 1+r1 | 1 | |||||
S1a-4 | ||||||||
f2[0] | f2[1] | 迭代次数n | 平均准确率p-ave | δ | 耗时ms/次 | 耗时ms/199次 | 耗时 min/199 | 最大准确率p-max |
0.500039 | 0.518919 | 348.0854 | 0.969849 | 0.5 | 1.562814 | 314 | 0.005233 | 1 |
0.606787 | 0.395597 | 9161.643 | 1 | 0.4 | 11.53266 | 2301 | 0.03835 | 1 |
0.706904 | 0.294569 | 15713.05 | 0.99995 | 0.3 | 15.17588 | 3023 | 0.050383 | 1 |
0.806929 | 0.194178 | 24246.87 | 0.987485 | 0.2 | 22.96482 | 4575 | 0.07625 | 1 |
0.90447 | 0.095892 | 38698.99 | 0.910343 | 0.1 | 36.04523 | 7177 | 0.119617 | 1 |
0.990681 | 0.009345 | 101160.9 | 0.707622 | 0.01 | 92.03518 | 18324 | 0.3054 | 0.811812 |
0.99908 | 9.22E-04 | 211606.9 | 0.605414 | 0.001 | 192.1407 | 38239 | 0.637317 | 0.701702 |
0.999176 | 8.25E-04 | 218678.2 | 0.60304 | 9.00E-04 | 198.9146 | 39589 | 0.659817 | 0.712713 |
0.999263 | 7.39E-04 | 226801.4 | 0.602588 | 8.00E-04 | 206.4372 | 41088 | 0.6848 | 0.717718 |
0.999357 | 6.45E-04 | 235405 | 0.592246 | 7.00E-04 | 214.3467 | 42660 | 0.711 | 0.670671 |
0.999443 | 5.58E-04 | 246416.8 | 0.592085 | 6.00E-04 | 224.2312 | 44626 | 0.743767 | 0.683684 |
0.999537 | 4.63E-04 | 260424 | 0.590948 | 5.00E-04 | 236.6935 | 47110 | 0.785167 | 0.690691 |
0.999635 | 3.65E-04 | 280370.6 | 0.58377 | 4.00E-04 | 254.9095 | 50735 | 0.845583 | 0.672673 |
0.999722 | 2.79E-04 | 305102.7 | 0.58469 | 3.00E-04 | 277.1357 | 55157 | 0.919283 | 0.685686 |
0.999816 | 1.84E-04 | 346744.2 | 0.579665 | 2.00E-04 | 314.8543 | 62664 | 1.0444 | 0.655656 |
0.999908 | 9.17E-05 | 427224.1 | 0.572713 | 1.00E-04 | 389.5628 | 77529 | 1.29215 | 0.640641 |
0.999916 | 8.38E-05 | 441486.3 | 0.573191 | 9.00E-05 | 403.3769 | 80276 | 1.337933 | 0.65966 |
0.999926 | 7.38E-05 | 457425 | 0.572442 | 8.00E-05 | 417.8794 | 83161 | 1.386017 | 0.656657 |
0.999935 | 6.50E-05 | 476470.6 | 0.575586 | 7.00E-05 | 435.0201 | 86577 | 1.44295 | 0.647648 |
0.999944 | 5.57E-05 | 502085.7 | 0.578342 | 6.00E-05 | 458.8141 | 91308 | 1.5218 | 0.652653 |
0.999954 | 4.59E-05 | 529153.3 | 0.573569 | 5.00E-05 | 482.8945 | 96098 | 1.601633 | 0.643644 |
0.577108 |
将平均准确率的后10个数取平均值
左 | 右 | |
准确率 | 0.42365 | 0.577108 |
也就是无论用左右那个网络做测试得到的准确率都是一个定值,而且两者的和为1.
现在做第三个网络让这个网络的收敛标准固定为1e-5
具体进样顺序 | ||||
进样顺序 | 迭代次数 | |||
δ=1e-5 | ||||
r | 1 | r=1/100 | 判断是否达到收敛 | |
1+r1 | 2 | 判断是否达到收敛 | ||
梯度下降 | ||||
r | 3 | r=2/100 | 判断是否达到收敛 | |
1+r1 | 4 | 判断是否达到收敛 | ||
梯度下降 | ||||
… | r=s/100 | |||
若没有达到收敛让s=1 | ||||
… | ||||
达到收敛标准测量准确率 |
其中s分别等于50,51….99
也就是改变r的进样范围观察对结果的影响
测试集 | 1+r1 | 0 |
1+r1 | 1 |
也就是用右侧网络100%的进样1+r1
正确的个数 | sigmoid(1+r1) | 1+r1 | s |
1000 | 0.733020149 | 1.01 | 50 |
1000 | 0.733020149 | 1.01 | 51 |
717 | 0.784147189 | 1.29 | 52 |
1000 | 0.733020149 | 1.01 | 53 |
709 | 0.785834983 | 1.3 | 54 |
989 | 0.734972599 | 1.02 | 55 |
681 | 0.787513156 | 1.31 | 56 |
952 | 0.740774899 | 1.05 | 57 |
696 | 0.785834983 | 1.3 | 58 |
952 | 0.744596916 | 1.07 | 59 |
718 | 0.787513156 | 1.31 | 60 |
908 | 0.748381722 | 1.09 | 61 |
696 | 0.787513156 | 1.31 | 62 |
890 | 0.752129111 | 1.11 | 63 |
700 | 0.785834983 | 1.3 | 64 |
880 | 0.753988716 | 1.12 | 65 |
649 | 0.795759698 | 1.36 | 66 |
885 | 0.757679639 | 1.14 | 67 |
652 | 0.795759698 | 1.36 | 68 |
844 | 0.761332715 | 1.16 | 69 |
645 | 0.792489941 | 1.34 | 70 |
831 | 0.764947804 | 1.18 | 71 |
651 | 0.795759698 | 1.36 | 72 |
825 | 0.766741064 | 1.19 | 73 |
649 | 0.792489941 | 1.34 | 74 |
801 | 0.770298949 | 1.21 | 75 |
561 | 0.806901316 | 1.43 | 76 |
769 | 0.773818574 | 1.23 | 77 |
669 | 0.794129628 | 1.35 | 78 |
757 | 0.775564014 | 1.24 | 79 |
635 | 0.797380154 | 1.37 | 80 |
752 | 0.779026108 | 1.26 | 81 |
604 | 0.802183889 | 1.4 | 82 |
725 | 0.780742748 | 1.27 | 83 |
501 | 0.816078273 | 1.49 | 84 |
733 | 0.784147189 | 1.29 | 85 |
490 | 0.816078273 | 1.49 | 86 |
711 | 0.785834983 | 1.3 | 87 |
445 | 0.824913732 | 1.55 | 88 |
692 | 0.789181707 | 1.32 | 89 |
397 | 0.829204518 | 1.58 | 90 |
683 | 0.790840635 | 1.33 | 91 |
504 | 0.820538481 | 1.52 | 92 |
626 | 0.794129628 | 1.35 | 93 |
287 | 0.848128836 | 1.72 | 94 |
649 | 0.795759698 | 1.36 | 95 |
288 | 0.84941242 | 1.73 | 96 |
651 | 0.798991 | 1.38 | 97 |
103 | 0.869891526 | 1.9 | 98 |
624 | 0.800592243 | 1.39 | 99 |
比如最后一组数据的意思当进样1+r1>=1.39的时候网络全部判断为对的,正确率为62.4%,对应的s值为99.将1+r1画成图
将s=奇数的画成图
将s=偶数的画成图。
也就是图1是由图2和图3合成的。
观察当s=奇数的数据
正确的个数 | sigmoid(1+r1) | 1+r1 | s |
1000 | 0.73302 | 1.01 | 51 |
1000 | 0.73302 | 1.01 | 53 |
989 | 0.734973 | 1.02 | 55 |
952 | 0.740775 | 1.05 | 57 |
952 | 0.744597 | 1.07 | 59 |
908 | 0.748382 | 1.09 | 61 |
890 | 0.752129 | 1.11 | 63 |
880 | 0.753989 | 1.12 | 65 |
885 | 0.75768 | 1.14 | 67 |
844 | 0.761333 | 1.16 | 69 |
831 | 0.764948 | 1.18 | 71 |
825 | 0.766741 | 1.19 | 73 |
801 | 0.770299 | 1.21 | 75 |
769 | 0.773819 | 1.23 | 77 |
757 | 0.775564 | 1.24 | 79 |
752 | 0.779026 | 1.26 | 81 |
725 | 0.780743 | 1.27 | 83 |
733 | 0.784147 | 1.29 | 85 |
711 | 0.785835 | 1.3 | 87 |
692 | 0.789182 | 1.32 | 89 |
683 | 0.790841 | 1.33 | 91 |
626 | 0.79413 | 1.35 | 93 |
649 | 0.79576 | 1.36 | 95 |
651 | 0.798991 | 1.38 | 97 |
624 | 0.800592 | 1.39 | 99 |
很容易发现200-(1+r1)*100/100就是精确的准确率。
可以用当s=奇数时1+r1的数据
x | 51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87,89,91,93,95,97,99 |
y | 1.01,1.02,1.05,1.07,1.09,1.11,1.12,1.14,1.16,1.18,1.19,1.21,1.23,1.24,1.26,1.27,1.29,1.3,1.32,1.33,1.35,1.36,1.38,1.39 |
拟合一条直线
拟合方程式:Y = a + b·X
a = 1.005
b = 0.0165
相关系数 R2:0.996261087466688
比较准确率
正确的个数 | 1+r1 | s | a+b*s | 测量准确率(2-(1+r1))*100 | 计算准确率(2-(a+bs))*100 |
1000 | 1.01 | 51 | 1.0215 | 99 | 97.85 |
1000 | 1.01 | 53 | 1.038 | 99 | 96.2 |
989 | 1.02 | 55 | 1.0545 | 98 | 94.55 |
952 | 1.05 | 57 | 1.071 | 95 | 92.9 |
952 | 1.07 | 59 | 1.0875 | 93 | 91.25 |
908 | 1.09 | 61 | 1.104 | 91 | 89.6 |
890 | 1.11 | 63 | 1.1205 | 89 | 87.95 |
880 | 1.12 | 65 | 1.137 | 88 | 86.3 |
885 | 1.14 | 67 | 1.1535 | 86 | 84.65 |
844 | 1.16 | 69 | 1.17 | 84 | 83 |
831 | 1.18 | 71 | 1.1865 | 82 | 81.35 |
825 | 1.19 | 73 | 1.203 | 81 | 79.7 |
801 | 1.21 | 75 | 1.2195 | 79 | 78.05 |
769 | 1.23 | 77 | 1.236 | 77 | 76.4 |
757 | 1.24 | 79 | 1.2525 | 76 | 74.75 |
752 | 1.26 | 81 | 1.269 | 74 | 73.1 |
725 | 1.27 | 83 | 1.2855 | 73 | 71.45 |
733 | 1.29 | 85 | 1.302 | 71 | 69.8 |
711 | 1.3 | 87 | 1.3185 | 70 | 68.15 |
692 | 1.32 | 89 | 1.335 | 68 | 66.5 |
683 | 1.33 | 91 | 1.3515 | 67 | 64.85 |
626 | 1.35 | 93 | 1.368 | 65 | 63.2 |
649 | 1.36 | 95 | 1.3845 | 64 | 61.55 |
651 | 1.38 | 97 | 1.401 | 62 | 59.9 |
624 | 1.39 | 99 | 1.4175 | 61 | 58.25 |
将计算准确率和实测准确率画成图
还有一定的误差然后重复这个实验将s设为1000,得到的数据
正确的个数 | sigmoid(1+r1) | 1+r1 | s |
797 | 0.772064 | 1.22 | 500 |
975 | 0.736916 | 1.03 | 501 |
761 | 0.773819 | 1.23 | 502 |
976 | 0.736916 | 1.03 | 503 |
789 | 0.773819 | 1.23 | 504 |
986 | 0.736916 | 1.03 | 505 |
810 | 0.772064 | 1.22 | 506 |
977 | 0.736916 | 1.03 | 507 |
801 | 0.772064 | 1.22 | 508 |
969 | 0.73885 | 1.04 | 509 |
787 | 0.772064 | 1.22 | 510 |
967 | 0.73885 | 1.04 | 511 |
967 | 0.73885 | 1.04 | 512 |
974 | 0.736916 | 1.03 | 513 |
808 | 0.772064 | 1.22 | 514 |
973 | 0.73885 | 1.04 | 515 |
776 | 0.772064 | 1.22 | 516 |
966 | 0.73885 | 1.04 | 517 |
802 | 0.772064 | 1.22 | 518 |
975 | 0.73885 | 1.04 | 519 |
776 | 0.772064 | 1.22 | 520 |
963 | 0.740775 | 1.05 | 521 |
778 | 0.772064 | 1.22 | 522 |
968 | 0.740775 | 1.05 | 523 |
802 | 0.772064 | 1.22 | 524 |
972 | 0.740775 | 1.05 | 525 |
614 | 0.798991 | 1.38 | 975 |
485 | 0.819061 | 1.51 | 976 |
628 | 0.800592 | 1.39 | 977 |
520 | 0.819061 | 1.51 | 978 |
623 | 0.800592 | 1.39 | 979 |
490 | 0.816078 | 1.49 | 980 |
616 | 0.800592 | 1.39 | 981 |
502 | 0.819061 | 1.51 | 982 |
647 | 0.79738 | 1.37 | 983 |
520 | 0.817574 | 1.5 | 984 |
648 | 0.79738 | 1.37 | 985 |
520 | 0.819061 | 1.51 | 986 |
615 | 0.79738 | 1.37 | 987 |
503 | 0.820538 | 1.52 | 988 |
634 | 0.79738 | 1.37 | 989 |
500 | 0.820538 | 1.52 | 990 |
630 | 0.800592 | 1.39 | 991 |
490 | 0.820538 | 1.52 | 992 |
600 | 0.802184 | 1.4 | 993 |
494 | 0.820538 | 1.52 | 994 |
603 | 0.802184 | 1.4 | 995 |
478 | 0.822006 | 1.53 | 996 |
591 | 0.802184 | 1.4 | 997 |
468 | 0.820538 | 1.52 | 998 |
595 | 0.802184 | 1.4 | 999 |
将1+r1画成图
1+r1的数据与准确率高度相关,可以明显的看到当s增加后1+r1变得平稳了,也就表明随着s的增加网络
d2(r,1+r1)-1-2-2-(2*k),k∈{0,1}
的收敛准确率变得稳定,并最终当s无限大近似随机的时候将趋于1个定值。
观察当s=偶数的图像
当s=奇数的图像
可以看到无论当s=偶数或者s=奇数1+r1的图都平稳的多,可以将s=奇数的图像拟合成直线
x:501,521,541,561,581,601,621,641,661,681,701,721,741,761,781,801,821,841,861,881,901,921,941,961,981
y:1.03,1.05,1.06,1.08,1.09,1.11,1.12,1.14,1.15,1.17,1.19,1.2,1.21,1.23,1.24,1.26,1.27,1.29,1.3,1.32,1.33,1.35,1.35,1.37,1.39
拟合方程式:Y = a + b·X
参数:
a = 0.662805000000009
b = 0.000741153846153835
相关系数 R2:0.998743679397526
正确的个数 | 1+r1 | s | a+b*s | 测量准确率(2-(1+r1))*100 | 计算准确率(2-(a+bs))*100 |
975 | 1.03 | 501 | 1.034123 | 97 | 96.58769231 |
963 | 1.05 | 521 | 1.048946 | 95 | 95.10538462 |
947 | 1.06 | 541 | 1.063769 | 94 | 93.62307692 |
935 | 1.08 | 561 | 1.078592 | 92 | 92.14076923 |
928 | 1.09 | 581 | 1.093415 | 91 | 90.65846154 |
884 | 1.11 | 601 | 1.108238 | 89 | 89.17615385 |
893 | 1.12 | 621 | 1.123062 | 88 | 87.69384615 |
870 | 1.14 | 641 | 1.137885 | 86 | 86.21153846 |
869 | 1.15 | 661 | 1.152708 | 85 | 84.72923077 |
842 | 1.17 | 681 | 1.167531 | 83 | 83.24692308 |
818 | 1.19 | 701 | 1.182354 | 81 | 81.76461538 |
818 | 1.2 | 721 | 1.197177 | 80 | 80.28230769 |
793 | 1.21 | 741 | 1.212 | 79 | 78.8 |
793 | 1.23 | 761 | 1.226823 | 77 | 77.31769231 |
767 | 1.24 | 781 | 1.241646 | 76 | 75.83538462 |
762 | 1.26 | 801 | 1.256469 | 74 | 74.35307692 |
736 | 1.27 | 821 | 1.271292 | 73 | 72.87076923 |
703 | 1.29 | 841 | 1.286115 | 71 | 71.38846154 |
719 | 1.3 | 861 | 1.300938 | 70 | 69.90615385 |
672 | 1.32 | 881 | 1.315762 | 68 | 68.42384615 |
701 | 1.33 | 901 | 1.330585 | 67 | 66.94153846 |
668 | 1.35 | 921 | 1.345408 | 65 | 65.45923077 |
659 | 1.35 | 941 | 1.360231 | 65 | 63.97692308 |
650 | 1.37 | 961 | 1.375054 | 63 | 62.49461538 |
616 | 1.39 | 981 | 1.389877 | 61 | 61.01230769 |
将准确率画成图
可以看到当s增加以后当s=奇数的1+r1曲线与实测准确率重合度大幅增加。可以推测当s趋于无穷大的时候s=奇数的1+r1曲线将与当r随机取值时的准确率相等,
左 | 右 | ||
准确率 | 0.42365 | 0.577108 | |
正确的个数 | sigmoid(1+r1) | 1+r1 | s |
468 | 0.820538 | 1.52 | 998 |
595 | 0.802184 | 1.4 | 999 |
0.42365:0.577108 和468与595已经很接近。当正确的个数为468时s是偶数,当正确个数是595时s为奇数,也就是网络
d2(r,1+r1)-1-2-2-(2*k),k∈{0,1}
左侧对奇数敏感,右侧对偶数敏感,并且对这个网络来说奇数和偶数的重要性不是1:1的。这个网络的准确率与训练集是奇数个还是偶数个是高度相关的。可以用当s=奇数的1+r1对s的曲线高度拟合网络的准确率。这个网络的准确率侧面反映了这个网络对奇数或者偶数个训练集的敏感程度,当s=无穷大的时候这个网络对奇数和偶数的敏感度比值57.7108:42.365.
实验参数
学习率 0.1 |
权重初始化方式 |
Random rand1 =new Random(); |
int ti1=rand1.nextInt(98)+1; |
tw[a][b]=xx*((double)ti1/100); |