在学习阶段的神经网络中,有两种机制发生。前馈和后向传播。以异或操作为例。神经网络学习阶段的反向传播后会发生什么?
A B Q
0 0 0
0 1 1
1 0 1
1 1 0
对于第一遍(0,0-> 0)的前馈发生时,然后反向传播happens.After此步骤被重新计算所有的权重。
现在会发生什么?
问题1:同样的输入0,0是用新计算的权重(反向传播期间)前馈,然后反向加工直至错误变为无效?如果是的话,如果错误从来没有发生过,会发生什么?这使我想到下一个问题。
问题2:何时会发生下一次传球(0,1-> 1)的学习?
问题3:假设第一遍的结束权重为10.3,-2.3,5.5。第二遍(0,1-> 1)以第一遍的结束权重开始前馈?
如果我必须通过代码来描述下面的代码将是正确的
常用代码,下列选项中的每个计算
averageErrorUntilLearn = 0.002;
inputs = [
[0, 0],
[0, 1],
[1, 0],
[1, 1]
];
outputs = [0, 1, 1, 0];
inputNeurons = 2;
hiddenLayers = 1;
outputNeurons = 1;
//initialize the Neural Net
neuralNetObj = NeuralNet();
neuralNetObj.createTopology(inputNeurons, hiddenLayers, outputNeurons);
weightsForTheNetwork = randomWeights();
问题3个scenario- 权重通过发送到下一个通道
问题1 scenario-每个过程都与它自己的权重计算,直至达到理想的学习,然后在权重发下来的新通
//learn
for i in range(0,len(input)):
while (averageError > averageErrorUntilLearn):
console.log("Current Pass-" + i);
neuralNetObj.learningParams(inputs[i], outputs[i]);
neuralNetObj.initializeWeights(weightsForTheNetwork);
neuralNetObj.feedforward();
neuralNetObj.backPropagate();
weightsForTheNetwork = neuralNetObj.getNewWeights();
averageError = neuralNetObj.getAverageError();
还是我完成什么错在这里并没有以上情况是真正?
1)Backprop不会在“错误为0时停止”,当梯度为0时它会“停止”,错误可以是任意的。 2)实际上相反 - 使用“全批”是训练神经网络的正确方式,而小批量或单个实例一次是随机逼近,其主要用于计算效率,但事实上他们仍然学习“任何一种方式”是一个不平凡的数学问题(尽管一次学习整个训练集是微不足道的数学证明)。 – lejlot