"New Neural" ist ein Open-Source-Projekt für neuronale Netzwerke für die MetaTrader 5-Plattform. - Seite 69

 
TheXpert:
Danke :) letzter Anstoß.

Ich würde mich lieber um eine Umsetzung kümmern und versuchen, sie zu perfektionieren.

Ich bin vielleicht nicht in der Lage, mit der Genetik zu konkurrieren, was den Umfang angeht (die Aufgabenklassen, die keine explizite Zielfunktion haben), aber was die Effizienz der Nutzung und des Lernens angeht...

Das ist eine sehr gute Entscheidung, denn wenn hier ein Projekt auftaucht, haben Sie bereits eine Menge Vorarbeit geleistet, und wenn das Projekt nicht erscheint, werden Sie ein Ergebnis liefern.

Sie haben eine bessere Chance, das Projekt am Leben zu erhalten.

Geben Sie nicht auf, stellen Sie Ihre Arbeit ein, stellen Sie Fragen, vielleicht wird sich jemand bemühen.

 
Urain:

Verschwinden Sie nicht, stellen Sie Ihre Arbeit zur Verfügung, stellen Sie Fragen, und Sie werden sehen, wer sonst noch mitmachen wird.

Was in Arbeit ist. Ich werde ihn veröffentlichen, sobald er fertig ist.

Ich habe eine C++-Implementierung. Ich muss nur ein paar Dinge umstellen und verbessern.

 
ivandurak:

Ich wünschte, sie würden spucken, aber sie ignorieren mich einfach. Sie wurden um Rat gefragt - ja oder nein.

Wenn (JA), werde ich ein paar kluge Bücher lesen;

oder lesen Sie eine andere und treten Sie in die andere Richtung;

Nikolay, wirf mal die Bücher über Clustering her, die ich dir kürzlich gegeben habe, aber es ist langweilig, die Bibliothek erneut zu durchstöbern.
 
ivandurak:

Guten Tag, ich bin nicht ganz bei der Sache, aber ich brauche einen Rat.

Ich selbst habe eine Aufgabe. Es ist notwendig, ein adaptives Zeitfenster des aktuellen Moments zu wählen und es nicht in Parametern wie z.B. 10 Balken festzulegen. Dann sollten wir den Verlauf eingehend prüfen, um herauszufinden, zu welchem Cluster das ausgewählte Fenster gehört. Können neuronale Netze damit umgehen oder ist es einfacher, etwas anderes zu tun? Wenn es mir nichts ausmacht, schicken Sie mir bitte ein Buch über Gitternetze nur auf der Wurstebene.

Ich weiß nicht, wie es um die Wurst bestellt ist, wie man so schön sagt.

Gerade das Clustering und die Klassifizierung sind die Aufgaben, die Netzwerke am besten erfüllen.

Die Annäherung ist schlechter, aber auch sie ist in Ordnung, aber bei der Extrapolation ist es im Allgemeinen eng. Es hängt jedoch alles von der Umsetzung ab.

Dateien:
 
Urain:

Ich weiß nicht, wie es um die Wurst bestellt ist, wie man so schön sagt.

Clustering und Klassifizierung sind die Aufgaben, die Netzwerke am besten erfüllen.

Die Annäherung ist schlimmer, aber auch in Ordnung, und die Extrapolation ist ein schwieriges Unterfangen. Alles hängt jedoch von der Umsetzung ab.

Vielen Dank, ich gehe und kaue auf dem Granit.
 
yu-sha:
...

Lernen ist ein externer Prozess, der außerhalb des Netzes selbst liegt.

...

Der Vollständigkeit halber sei erwähnt, dass das Lernen nicht nur ein externer Prozess ist, sondern auch ein Insiderprozess, da es häufig nicht nur Zugang zu den Gewichten, sondern auch zu den Daten der Zwischenberechnungen sowie zu den Topologieeigenschaften hat.

Und wegen dieser Eigenschaft des Lernprozesses wird er oft den internen Prozessen des Netzes zugeschrieben.

Sie kommen zu dem Schluss, dass das Netz seine internen Informationen für den Lernprozess preisgeben sollte, während es sie vor der Umwelt verbirgt.

Die logische Vorgehensweise in dieser Situation ist, das Netz selbst in eine Trainingshülle zu verpacken, falls erforderlich,

Wir haben also ein externes Netzobjekt, das über Methoden verfügt:

  • Initialisierung
  • Arbeitsablauf
  • Lernen

Eine Workflow-Methode empfängt das Netz, wie es ist, eine Trainingsmethode empfängt das Netz, das in die Trainingshülle eingepackt ist; eine logische Fortsetzung der Kapselung wäre, eine Netzmethode mit einem Selektionskennzeichen anstelle von zwei Workflow- und Trainingsmethoden zu geben.

 
Urain:

Wir haben also ein externes Netzobjekt, das über Methoden verfügt:

  • Initialisierung
  • laufen.
  • Ausbildung

Bei einer Workflow-Methode wird das Netz so erhalten, wie es ist, bei einer Trainingsmethode wird das Netz in eine Trainingsshell verpackt. Eine logische Erweiterung der Kapselung wäre es, eine Netzmethode mit einem Selektionsflag anstelle von zwei Workflow- und Trainingsmethoden anzubieten.

Im allgemeinsten Fall muss das Netz eine einzige run()-Methode haben

Es führt die Berechnung der Ausgangsneuronen durch und geht davon aus, dass die Eingänge bereits initialisiert wurden

Der "Lehrer" ist ein separates Objekt, das mit den Trainingsparametern initialisiert und durch das Trainingsobjekt gesteuert wird

Sie benötigen einen Validator, um zu prüfen, ob Sie dieses Objekt mit dieser Methode unterrichten können

Aber all diese Dinge sind im allgemeinen Fall schwer zu formalisieren

Aus diesem Grund kann das starre Standarddesign des Typs Netz+Funktion+Lehrer für einen Endbenutzer entwickelt werden und nur die Einstellung einiger Parameter ermöglichen, z. B. die Anzahl der Neuronen in der Schicht

das Netz muss seine internen Informationen dem Lernprozess zur Verfügung stellen, während es sie vor der Umwelt verbirgt

Ich stimme zu. Einige, aber nicht alle, Trainingsmethoden erfordern einen fast vollständigen Zugang zum Inneren des Netzes

 

yu-sha:

...

Einige, aber nicht alle, Trainingsmethoden erfordern einen fast vollständigen Zugriff auf die Interna des Netzes.

Das ist das Problem: Einige Methoden erfordern, dass das Netz nicht nur offengelegt, sondern auch für die Methode richtig strukturiert ist.

Mit anderen Worten: Die Methode selbst wurde für ein bestimmtes Netz geschrieben. Welchen Sinn hat es, diese Methoden in einer Universalmaschine zu implementieren?

Es ist besser, Andrew alles kodieren zu lassen. Ich sehe eine universelle Ausbildungsmethode für den universellen Motor - GA.

Im Rest haben wir: eine Idee des universellen Motors für jede Topologie, eine Idee der universellen Methode der Initialisierung für jede Topologie und GA als universellen Trainer für all dies.

Auf der Habenseite steht die einfache Implementierung neuer Arten von Neuronen, d. h. von standardisierten, aber noch nicht beschriebenen oder nicht standardisierten Neuronen.

Nur eine Trainingsmethode ist ein Minuspunkt.

Wenn jemand herausfindet, wie man andere Trainingsmethoden darin unterbringen kann, wäre das großartig, aber im Moment ist es so.

 
Urain:

Der Rest ist: die Idee eines universellen Motors für jede Topologie, die Idee einer universellen Initialisierungsmethode für jede Topologie und GA als universeller Tutor für all dies.

Auf der positiven Seite ist es einfach, neue Arten von Neuronen zu implementieren, solche, die standardisiert, aber noch nicht beschrieben sind, oder solche, die nicht standardisiert sind.

Die Nachteile sind nur eine Ausbildungsmethode.

Ich habe in der gleichen Weise nachgedacht und bin fast zum gleichen Schluss gekommen)).

Und da GA der wichtigste Lernalgorithmus ist, besteht ein dringender Bedarf an paralleler Datenverarbeitung.

Hier kommen die GPUs ins Spiel.

Параллельные вычисления в MetaTrader 5 штатными средствами
Параллельные вычисления в MetaTrader 5 штатными средствами
  • 2010.11.24
  • Andrew
  • www.mql5.com
Время является неизменной ценностью на протяжении всей истории человечества, и мы стремимся не расходовать его понапрасну. Из этой статьи вы узнаете, как можно ускорить работу вашего эксперта, если у вашего компьютера многоядерный процессор. Причем, реализация описываемого метода не требует знания каких-либо еще языков кроме MQL5.
 
yu-sha:

Ich habe auf dieselbe Weise nachgedacht und bin in etwa zu demselben Schluss gekommen ))

Und da GA der wichtigste Lernalgorithmus ist, besteht ein dringender Bedarf an paralleler Datenverarbeitung.

Hier kommen die GPUs ins Spiel

Wenn Sie aufmerksam gelesen haben, was ich vorhin geschrieben habe, ist Ihnen aufgefallen, dass in meinem Modell eines universellen Netzwerks die Verarbeitung selbst in Schichten unterteilt ist, d.h. Neuronen sind nicht formell (durch Eigentum), sondern tatsächlich in Schichten zusammengefasst (eine Schicht hat ein Gedächtnis und ein Neuron nicht, ein Neuron bleibt nur eine Informationseinheit, die einer Schicht Informationen darüber liefert, wo und warum). Die Parallelität wird also durch die Struktur der Maschine selbst definiert (die Informationen innerhalb der Schicht werden parallel verarbeitet). Ich habe bereits NS mit GA trainiert und der größte Produktivitätsverlust lag genau bei der Berechnung von NS (insbesondere bei großen Netzen). Und als Werbung kann ich sagen, dass für die von joo vorgeschlagene UGA das Lernen von NS ein Kinderspiel ist.

Aber wenn es möglich ist, auch FF-Berechnungen zu parallelisieren (und NS für GA ist ein Teil von FF), bin ich nur dafür. Ich glaube zwar nicht, dass es sich um eine einfache Aufgabe handelt, aber einfache Aktionen werden schichtweise durchgeführt, während die Berechnung von FF eine recht komplexe Sequenz beinhalten kann.