Neural network 神经网络ConvNetJs-为什么不能收敛

Neural network 神经网络ConvNetJs-为什么不能收敛,neural-network,conv-neural-network,Neural Network,Conv Neural Network,首先。。。我不认为这是ConvNetJs的问题,我认为这是我对神经网络理解的问题 给定2个随机数,检测加在一起的结果是否为偶数 例如: [4,6]=正确 [3,4]=错误 我的设置: var layer_defs = []; layer_defs.push({type:'input', out_sx:1, out_sy:1, out_depth:2}); layer_defs.push({type:'fc', num_neurons:20, activation:'relu'}); layer_

首先。。。我不认为这是ConvNetJs的问题,我认为这是我对神经网络理解的问题

给定2个随机数,检测加在一起的结果是否为偶数

例如:

[4,6]=正确

[3,4]=错误

我的设置:

var layer_defs = [];
layer_defs.push({type:'input', out_sx:1, out_sy:1, out_depth:2});
layer_defs.push({type:'fc', num_neurons:20, activation:'relu'});
layer_defs.push({type:'softmax', num_classes:2});

net = new convnetjs.Net();
net.makeLayers(layer_defs);
var trainer = new convnetjs.Trainer(net, {method: 'adadelta', l2_decay: 0.001,batch_size: 10}
然后我用随机数对它进行10000次迭代训练。它永远不会接近。最多大约56%的准确率

使用相同的设置但存在不同的问题:

第一个数大于第二个数。 它在1000次迭代中获得99%的准确率

我尝试过的事情: 更多层 更多的神经元 svm与softmax


我想知道这是否是一个不可分类的问题

问题是两个数字相加并将结果分类为奇数或偶数的问题不适合神经网络。神经网络试图估计一个函数。被估计的函数越平滑,神经网络就越容易收敛。这可能不是100%正确,但可以解决这个问题

为了帮助理解为什么这两个问题如此不同,我们先假设第一个数字为常数。现在考虑问题的图表,你添加第二个数字,并试图确定结果是奇数还是偶数。该图将随着第二个数字的每个增量来回振荡


然而,第二个问题是一个简单得多的图表。图表将只有一个点,从小于、等于到大于。我跟着你。当你问一个不是真正的函数的问题时,有没有一种简单的方法可以告诉你?我想试着想想解决方案的可能图。并不总是很容易想象。如果图表平滑,一切都会好得多。你提出的两个问题很有趣,因为它们证明了极端性。一个非常不平滑的振荡和一条平滑的简单曲线。