在學習階段的神經網絡中,有兩種機制發生。前饋和後向傳播。以異或操作爲例。神經網絡學習階段的反向傳播後會發生什麼?
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