Au sein d'un réseau de neurones pendant la phase d'apprentissage, deux mécanismes se produisent. Feedforward et Backpropagation. Prenons un exemple d'opération XOR.Que se passe-t-il après rétropropagation dans la phase d'apprentissage au sein de Neural Network?
A B Q
0 0 0
0 1 1
1 0 1
1 1 0
Pour la première passe (0,0-> 0) feedforward a lieu, alors rétropropagation happens.After cette étape les coefficients de pondération sont recalculées.
Que se passe-t-il maintenant?
Question-1: Encore une fois la même entrée 0,0 est feedforward avec les nouveaux poids calculés (pendant la rétropropagation) et ensuite backprogated jusqu'à ce que l'erreur devienne nill? Si oui, que se passe-t-il si l'erreur n'est jamais nulle? Ce qui m'amène à la question suivante.
Question-2: Quand l'apprentissage de la passe suivante (0,1-> 1) se produira-t-il?
Question-3: Supposons que les poids finis pour la 1ère passe sont 10.3, -2.3,5.5. La deuxième passe (0,1-> 1) commence l'anticipation avec les poids finis de la première passe?
Si je dois décrire via le code qui le code suivant serait correct
Code commun pour les options ci-dessous
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();
Question 3 Les poids de scénarios calculés dans chaque passe est envoyé à la passe suivante
Question 1 Chaque passage est de scénarios calculé avec ses propres poids jusqu'à ce qu'il atteigne l'apprentissage souhaité, puis les poids sont envoyés en bas de la nouvelle passe
//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();
Ou suis-je complète mal ici et aucun des scénarios ci-dessus sont vrai?
1) Backprop ne se limite pas « lorsque l'erreur est égal à 0 », on « arrête » lorsque gradient est égal à 0, l'erreur peut être arbitraire. 2) C'est en fait l'inverse - l'utilisation du "batch complet" est la bonne façon de former un réseau neuronal, et les mini-batchs ou instances uniques sont des approximations stochastiques, introduites principalement pour l'efficacité de calcul, mais le fait qu'ils apprennent encore "de toute façon" est un problème mathématique non trivial (alors que l'apprentissage sur l'ensemble de l'ensemble de la formation est trivial pour justifier mathématiquement). – lejlot