Ich versuche gerade das VB Beispiel eines NN (daß, das Frank gepostet hat) etwas zu durchleuchten.
Ein Punkt ist mir irgendwie aber sehr suspekt:
(Das ist an der Stelle an der die Gewichtung und der BIAS der einzelnen Neuronen geändert werden)
Die LEARNING_RATE ist eine Konstante.Code:For k = 1 To 2 HiddenNeuron(k).Bias = HiddenNeuron(k).Bias + LEARNING_RATE * 1 * HiddenNeuron(k).Delta HiddenNeuron(k).Weights(1) = HiddenNeuron(k).Weights(1) + LEARNING_RATE * Input1 * HiddenNeuron(k).Delta HiddenNeuron(k).Weights(2) = HiddenNeuron(k).Weights(2) + LEARNING_RATE * Input2 * HiddenNeuron(k).Delta Next k ' See above how the Weight is altered by the Delta multiplied by the ' Learning rate - the larger the delta, and the larger the learning ' rate (which is a constant) - the more we're going to change each ' weight. But - the important part here is that we alter the weight ' of the Neuron also in terms of the INPUT. The larger the input was ' the more important this weight is to alter and so the more we're ' going to alter it by. - Bear this in mind when you look at how ' the weights for two neurons can start moving in the same direction ' initially and then change to moving in opposite directions - this ' is because of the Delta mainly being applied to a weight when ' there is a high input on that weight.
Was mich irgendwie daran stört ist, daß die Gewichtung und der Bias ja immer größer wird:
Bias = Bias + (LearningRate * 1 * Delta)
oder besser :
Bias = Bias + (LearningRate * Delta)
Das würde ja bedeuten, daß der Wert immer größer wird. (Da das Delta ja wohl immer zwischen 0 und 1 liegt.)
(Im Prinzip ja egal, da es ja auf die Gewichtungen in Bezug zueinander wichtig sind).
Ist das wirklich so gewollt ?
Lesezeichen