ich arbeite mich momentan in das Thema "Neuronale Netze" ein und möchte gerne den Backpropagation-Algorithmus in Matlab implementieren. Die NN-Toolbox möchte ich nicht benutzen. Beispielhaft teste ich den Algorithmus am XOR-Problem, leider funktioniert mein aktuelles Programm dafür nicht und ich sehe meinen Fehler nicht, habt ihr eine Idee woran es liegen könnte?
Hierbei wird auf einfache Weise das Backpropagation hergeleitet. Im Anhang befinden sich die Folien als PDF. Auf der Letzten Seite (s. 4 ist der Algorithmus zusammengefasst, nach diesen Formeln habe ich mein Programm geschrieben.
maxIter=5e3; % maximal number of iterations
eta=0.1; % learningrate
T=[110; 011; 101; 000]; % training data, [input1 input2 target]
W=zeros(5,5); % weightmatrix, wij node i connected to node j
W(1,3)=randn(1); W(1,4)=randn(1); W(2,3)=randn(1); W(2,4)=randn(1); W(3,5)=randn(1); W(4,5)=randn(1); % random init
Theta=zeros(1,5); % bias
% back propagation algorithm
errCount=zeros(1,maxIter); % keep track of sum of squared errors for i=1:maxIter
idx=randi([1size(T,1)-1]); % choose random training data
O=evalNeuralNetwork(T(idx,1:end-1),W,Theta);
leider funktioniert mein aktuelles Programm dafür nicht und ich sehe meinen Fehler nicht,
Bitte beschreibe noch, was genau nicht funktioniert und wie Du darauf kommst, dass ein Fehler vorliegt. Es ist leichter einen Fehler zu verbessern als zu erraten, wo er liegt.
ich sehe den Fehler bei der Berechnung der neuen Gewichte, bzw. deren Änderung dW und den Änderungen der Bias-Werte dTheta. Die Formeln aus der PDF wurden meiner Meinung nach aber richitg angewandt. Ggf. liegt der Fehler auch bei meinem Verständis, kann man das XOR Problem mit meiner gewählten Struktur überhaupt lösen? Brauche ich vllt. eine andere Aktivierungsfunktion oder mehr Neuronen?
Ich habe das Netz auch mal ohne Backpropagation und mit dem Optimierungssolver Fminunc trainiert. Ca. jedes 5-Mal wird das Netz dabei richitg trainiert und liefert die gewünschten Outputs. Daher auch meine Vermutung, dass es bei der Berechnung von dW und dTheta liegen muss.
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.