Diskussion zum Artikel "Datenwissenschaft und maschinelles Lernen (Teil 21): Neuronale Netze entschlüsseln, Optimierungsalgorithmen entmystifiziert"

 

Neuer Artikel Datenwissenschaft und maschinelles Lernen (Teil 21): Neuronale Netze entschlüsseln, Optimierungsalgorithmen entmystifiziert :

Tauchen Sie ein in das Herz der neuronalen Netze, indem wir die Optimierungsalgorithmen, die innerhalb des neuronalen Netzes verwendet werden, entmystifizieren. In diesem Artikel erfahren Sie, mit welchen Schlüsseltechniken Sie das volle Potenzial neuronaler Netze ausschöpfen und Ihre Modelle zu neuen Höhen der Genauigkeit und Effizienz führen können.

Es scheint so, als ob heutzutage jeder an Künstlicher Intelligenz interessiert ist, sie ist überall, und die Großen der Tech-Industrie wie Google und Microsoft, die hinter openAI stehen, drängen auf die Anpassung von KI in verschiedenen Aspekten und Branchen wie Unterhaltung, Gesundheitswesen, Kunst, Kreativität usw. 

Ich sehe diesen Trend auch in der MQL5-Community, warum nicht? Nachdem Metatrader5 Matrizen und Vektoren und ONNX eingeführt hat, ist es nun möglich, künstliche Intelligenz Handelsmodelle von beliebiger Komplexität zu machen. Sie müssen nicht einmal ein Experte in der linearen Algebra oder ein Nerd sein, um alles, was in das System geht zu verstehen.

Trotz alledem sind die Grundlagen des maschinellen Lernens heute schwieriger zu finden als je zuvor, und doch sind sie so wichtig, um Ihr Verständnis von KI zu festigen. Sie lassen Sie wissen, warum Sie tun, was Sie tun, was Sie flexibel macht und Sie Ihre Optionen ausüben lässt. Heute werden wir sehen, welche Optimierungsalgorithmen es gibt, wie sie gegeneinander abschneiden, wann und welchen Optimierungsalgorithmus Sie für eine bessere Leistung und Genauigkeit Ihrer neuronalen Netzwerke wählen sollten.

neural network optimizers

Autor: Omega J Msigwa

 

Das Skript aus dem Artikel gibt einen Fehler:

2024.11.21 15:09:16.213 Optimization Algorithms testScript(EURUSD,M1) Zero divide, check divider for zero to avoid this error in 'D:\Market\MT5\MQL5\Scripts\Optimization Algorithms testScript.ex5'

 
Andrey Dik (EURUSD,M1) Zero divide, check divider for zero to avoid this error in 'D:\Market\MT5\MQL5\Scripts\Optimization Algorithms testScript.ex5'

Es stellte sich heraus, dass das Problem darin bestand, dass das Skript die Datei mit den Trainingsdaten nicht gefunden hat. Aber in jedem Fall sollte das Programm einen solchen Fall behandeln, wenn die Datendatei nicht gefunden wird.

Aber jetzt gibt es ein solches Problem:

2024.11.21 17:27:37.038 Optimierungsalgorithmen testScript (EURUSD,M1) 50 nicht gelöschte dynamische Objekte gefunden:
2024.11.21 17:27:37.038 Optimierungsalgorithmen testScript (EURUSD,M1) 10 Objekte der Klasse 'CTensors'
2024.11.21 17:21 17:27:37.038 Optimierungsalgorithmen testScript (EURUSD,M1) 40 Objekte der Klasse 'CMatrix'
2024.11.21 17:27:37.038 Optimierungsalgorithmen testScript (EURUSD,M1) 14816 Bytes an ausgelaufenem Speicher gefunden

Es scheint, dass die Objekte der Klassen nicht gelöscht worden sind.
 
Andrey Dik #:

Das Problem bestand darin, dass das Skript die Datendatei für das Training nicht gefunden hat. Aber auf jeden Fall sollte das Programm einen solchen Fall behandeln, wenn die Datendatei nicht gefunden wird.

Aber jetzt gibt es ein solches Problem:

2024.11.21 17:27:37.038 Optimierungsalgorithmen testScript (EURUSD,M1) 50 nicht gelöschte dynamische Objekte gefunden:
2024.11.21 17:27:37.038 Optimierungsalgorithmen testScript (EURUSD,M1) 10 Objekte der Klasse 'CTensors'
2024.11.21 17:21 17:27:37.038 Optimierungsalgorithmen testScript (EURUSD,M1) 40 Objekte der Klasse 'CMatrix'
2024.11.21 17:27:37.038 Optimierungsalgorithmen testScript (EURUSD,M1) 14816 Bytes an ausgelaufenem Speicher gefunden

Es scheint, dass die Klassenobjekte nicht gelöscht worden sind.

Das liegt daran, dass nur eine "fit"-Funktion für eine Instanz einer Klasse aufgerufen werden sollte. Ich habe mehrere Fit-Funktionen aufgerufen, was dazu führt, dass mehrere Tensoren im Speicher erstellt werden, und das war nur zu Lehrzwecken.

/*
 Mehrere Fit-Funktionen einer Neuronalen Netzwerkklasse in einem Programm aufzurufen ist eine schlechte Idee, da zu viele Objekte
 ungelöscht im Speicher verbleiben. Die beste Idee wäre, jede Instanz einer Klasse zu löschen und sie nach jeder 
 Fit-Funktion erneut aufzurufen.
*/

  nn.fit(x_train, y_train, new OptimizerMinBGD(nn_learning_rate), nn_epochs, nn_batch_size, show_batch);
  nn.fit(x_train, y_train, new OptimizerRMSprop(nn_learning_rate, 0.1), nn_epochs, nn_batch_size, show_batch);
  nn.fit(x_train, y_train, new OptimizerAdaGrad(nn_learning_rate), nn_epochs, nn_batch_size, show_batch);
  nn.fit(x_train, y_train, new OptimizerAdam(nn_learning_rate), nn_epochs, nn_batch_size, show_batch);
  nn.fit(x_train, y_train, new OptimizerAdaDelta(nn_learning_rate), nn_epochs, nn_batch_size, show_batch);
  nn.fit(x_train, y_train, new OptimizerNadam(nn_learning_rate), nn_epochs, nn_batch_size, show_batch);
   
  delete nn; 

Es sollte so sein;

//---

  nn = new CRegressorNets(hidden_layers, AF_RELU_, LOSS_MSE_); 
  
  x_train = scaler.fit_transform(x_train);

  nn.fit(x_train, y_train, new OptimizerMinBGD(nn_learning_rate), nn_epochs, nn_batch_size, show_batch);
   
  delete nn; 
  
//---

  nn = new CRegressorNets(hidden_layers, AF_RELU_, LOSS_MSE_); 
  
  x_train = scaler.fit_transform(x_train);

  nn.fit(x_train, y_train, new OptimizerAdam(nn_learning_rate), nn_epochs, nn_batch_size, show_batch);
   
  delete nn;