Java 多层神经网络的退火:异或实验
我是这个概念的初学者,我尝试学习前馈型神经网络(拓扑结构为2x2x1): 因此,[-4,4]的范围似乎比其他的好 问题:与温度限制和温度下降率相比,有没有办法找到合适的重量和偏差限制 注意:我在这里尝试两种方法。首先是对每个试验的所有权重和偏差进行一次随机化。第二种方法是在每次试验中仅随机分配单个重量和单个偏差。(降低温度前50次迭代)。单次重量变化的结果更糟Java 多层神经网络的退火:异或实验,java,neural-network,xor,simulated-annealing,Java,Neural Network,Xor,Simulated Annealing,我是这个概念的初学者,我尝试学习前馈型神经网络(拓扑结构为2x2x1): 因此,[-4,4]的范围似乎比其他的好 问题:与温度限制和温度下降率相比,有没有办法找到合适的重量和偏差限制 注意:我在这里尝试两种方法。首先是对每个试验的所有权重和偏差进行一次随机化。第二种方法是在每次试验中仅随机分配单个重量和单个偏差。(降低温度前50次迭代)。单次重量变化的结果更糟 (n+1) is next value, (n) is the value before TempMax=2.0 TempMin
(n+1) is next value, (n) is the value before
TempMax=2.0
TempMin=0.1 ----->approaching to zero, error of XOR output approaches to zero too
Temp(n+1)=Temp(n)/1.001
Weight update:
w(n+1)=w(n)+(float)(Math.random()*t*2.0f-t*1.0f)); // t is temperature
(same for bias update)
Iterations per temperature=50
Using java's Math.random() method(Spectral property is appropriate for annealing?)
Transition probability:
(1.0f/(1.0f+Math.exp(((candidate state error)-(old error))/temp)))
Neuron activation function: Math.tanh()
经过多次尝试,结果几乎相同。重新清理是否是逃避更深的局部极小值的唯一解决方案
我需要一个合适的重量/偏差范围/限制,根据总神经元数量和层数以及启动/发动机温度。3x6x5x6x1可以计算3位输入并给出输出,可以近似阶跃函数,但我需要始终使用范围
对于该训练数据集,输出误差太大(193个数据点,2个输入,1个输出):
1932 1
0.499995 0.653846
1.
0.544418 0.481604
1.
0.620200 0.320118
1.
0.595191 0.404816
0
0.404809 0.595184
1.
0.171310 0.636142
0
0.014323 0.403392
0
0.617884 0.476556
0
0.391548 0.478424
1.
0.455912 0.721618
0
0.615385 0.500005
0
0.268835 0.268827
0
0.812761 0.187243
0
0.076923 0.499997
1.
0.769231 0.500006
0
0.650862 0.864223
0
0.799812 0.299678
1.
0.328106 0.614848
0
0.591985 0.722088
0
0.692308 0.500005
1.
0.899757 0.334418
0
0.484058 0.419839
1.
0.200188 0.700322
0
0.863769 0.256940
0
0.384615 0.499995
1.
0.457562 0.508439
0
0.515942 0.580161
0
0.844219 0.431535
1.
0.456027 0.529379
0
0.235571 0.104252
0
0.260149 0.400644
1.
0.500003 0.423077
1.
0.544088 0.278382
1.
0.597716 0.540480
0
0.562549 0.651021
1.
0.574101 0.127491
1.
0.545953 0.731052
0
0.649585 0.350424
1.
0.607934 0.427886
0
0.499995 0.807692
1.
0.437451 0.348979
0
0.382116 0.523444
1.
1 0.500000
1.
0.731165 0.731173
1.
0.500002 0.038462
0
0.683896 0.536585
1.
0.910232 0.581604
0
0.499998 0.961538
1.
0.903742 0.769772
1.
0.543973 0.470621
1.
0.593481 0.639914
1.
0.240659 0.448408
1.
0.425899 0.872509
0
0 0.500000
0
0.500006 0.269231
1.
0.155781 0.568465
0
0.096258 0.230228
0
0.583945 0.556095
0
0.550746 0.575954
0
0.680302 0.935290
1.
0.693329 0.461550
1.
0.500005 0.192308
0
0.230769 0.499994
1.
0.721691 0.831791
0
0.621423 0.793156
1.
0.735853 0.342415
0
0.402284 0.459520
1.
0.589105 0.052045
0
0.189081 0.371208
0
0.533114 0.579952
0
0.251594 0.871762
1.
0.764429 0.895748
1.
0.499994 0.730769
0
0.415362 0.704317
0
0.422537 0.615923
1.
0.337064 0.743842
1.
0.560960 0.806496
1.
0.810919 0.628792
1.
0.319698 0.064710
0
0.757622 0.393295
0
0.577463 0.384077
0
0.349138 0.135777
1.
0.165214 0.433402
0
0.241631 0.758362
0
0.118012 0.341772
1.
0.514072 0.429271
1.
0.676772 0.676781
0
0.294328 0.807801
0
0.153846 0.499995
0
0.500005 0.346154
0
0.307692 0.499995
0
0.615487 0.452168
0
0.466886 0.420048
1.
0.440905 0.797064
1.
0.485928 0.570729
0
0.470919 0.646174
1.
0.224179 0.315696
0
0.439040 0.193504
0
0.408015 0.277912
1.
0.316104 0.463415
0
0.278309 0.168209
1.
0.214440 0.214435
1.
0.089768 0.418396
1.
0.678953 0.767832
1.
0.080336 0.583473
1.
0.363783 0.296127
1.
0.474240 0.562183
0
0.313445 0.577267
0
0.416055 0.443905
1.
0.529081 0.353826
0
0.953056 0.687662
1.
0.534725 0.448035
1.
0.469053 0.344394
0
0.759341 0.551592
0
0.705672 0.192199
1.
0.385925 0.775385
1.
0.590978 0.957385
1.
0.406519 0.360086
0
0.409022 0.042615
0
0.264147 0.657585
1.
0.758369 0.241638
1.
0.622380 0.622388
1.
0.321047 0.232168
0
0.739851 0.599356
0
0.555199 0.366750
0
0.608452 0.521576
0
0.352098 0.401168
0
0.530947 0.655606
1.
0.160045 0.160044
0
0.455582 0.518396
0
0.881988 0.658228
0
0.643511 0.153547
1.
0.499997 0.576923
0
0.575968 0.881942
0
0.923077 0.500003
0
0.449254 0.424046
1.
0.839782 0.727039
0
0.647902 0.598832
1.
0.444801 0.633250
1.
0.392066 0.572114
1.
0.242378 0.606705
1.
0.136231 0.743060
1.
0.711862 0.641568
0
0.834786 0.566598
1.
0.846154 0.500005
1.
0.538462 0.500002
1.
0.379800 0.679882
0
0.584638 0.295683
1.
0.459204 0.540793
0
0.331216 0.430082
0
0.672945 0.082478
0
0.671894 0.385152
1.
0.046944 0.312338
0
0.499995 0.884615
0
0.542438 0.491561
1.
0.540796 0.459207
1.
0.828690 0.363858
1.
0.785560 0.785565
0
0.686555 0.422733
1.
0.231226 0.553456
1.
0.465275 0.551965
0
0.378577 0.206844
0
0.567988 0.567994
0
0.668784 0.569918
1.
0.384513 0.547832
1.
0.288138 0.358432
1.
0.432012 0.432006
1.
0.424032 0.118058
1.
0.296023 0.703969
1.
0.525760 0.437817
1.
0.748406 0.128238
0
0.775821 0.684304
1.
0.919664 0.416527
0
0.327055 0.917522
1.
0.985677 0.596608
1.
0.356489 0.846453
0
0.500005 0.115385
1.
0.377620 0.377612
0
0.559095 0.202936
0
0.410895 0.947955
1.
0.187239 0.812757
1.
0.768774 0.446544
0
0.614075 0.224615
0
0.350415 0.649576
0
0.160218 0.272961
1.
0.454047 0.268948
1.
0.306671 0.538450
0
0.323228 0.323219
1.
0.839955 0.839956
1.
0.636217 0.703873
0
0.703977 0.296031
0
0.662936 0.256158
0
0.100243 0.665582
1我非常怀疑是否有任何严格的规则来解决你的问题。首先,权重的限制/界限严格取决于输入数据表示、激活函数、神经元数量和输出函数。在这里,您可以依靠的是最佳情况下的经验法则
首先,考虑经典算法中的初始权值。权重量表的一些基本思想是,对于小层,在
[-1,1]
的范围内使用它们,对于大层,将其除以t的平方根
(n+1) is next value, (n) is the value before
TempMax=2.0
TempMin=0.1 ----->approaching to zero, error of XOR output approaches to zero too
Temp(n+1)=Temp(n)/1.001
Weight update:
w(n+1)=w(n)+(float)(Math.random()*t*2.0f-t*1.0f)); // t is temperature
(same for bias update)
Iterations per temperature=50
Using java's Math.random() method(Spectral property is appropriate for annealing?)
Transition probability:
(1.0f/(1.0f+Math.exp(((candidate state error)-(old error))/temp)))
Neuron activation function: Math.tanh()