"New Neural" ist ein Open-Source-Projekt für neuronale Netzwerke für die MetaTrader 5-Plattform. - Seite 62
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Was schneller ist, ist klar. Aber wie oft werden Sie während der gesamten Ausbildung in die Datei schreiben müssen? - Einmal?
Daher ist die Geschwindigkeit nicht entscheidend, aber die visuelle Kontrolle wird vereinfacht.
Ich würde nicht sagen, dass eine xml-Datei visuell leicht zu kontrollieren ist.
Ich kann immer noch eine Art Vorlage in Form einer xml-Datei verwenden, aber die Visualisierung eines Gitters mit 1500 Neuronen in einer Schicht wäre eine Qual, so dass man sich die Mühe macht, eine xml-Datei zu erstellen, und sowieso keine gute Visualisierung erhält. Ich lehne es zwar nicht ab, aber wenn Sie es speichern, können Sie es auch in xml duplizieren.
Was meine ich mit Initialisierung? Wenn Gewichte geladen werden, ist das eine Sache. Wenn die Konfiguration des Gitters und das Laden von Gewichten etwas anderes ist.
--
Richtig. Ich werde singen.
Es gibt zwei Möglichkeiten, die Konfiguration des Zwischennetzes (Struktur, Typ) auf den mql5-Code abzubilden.
Die erste: dynamische Konfiguration des Netzes während der Initialisierung aus Bibliotheksklassen. Ein solches Netz ist reich an dynamischen Arrays und Verknüpfungen über Zeiger. Dieser Ansatz hat bisher implizit dominiert.
Es gibt aber noch eine zweite Möglichkeit: Erzeugen Sie ein starres Netz (mit statischen Arrays und direkten Zugriffen auf die gewünschten Adressen (Indizes)) nach der Vorkonfiguration und dem Mapping auf xml.
Eine solche Maschine kann für die Nutzer aufgrund der (deutlich) höheren Geschwindigkeit des erzeugten Netzes viel attraktiver sein. Allerdings ist die Implementierung komplizierter, denn man müsste einen xml2mql-Compiler erstellen.
Ich bin in der Tat für den zweiten Weg. Ich hoffe, die Meta-Zitate helfen, wenn wir nicht weiterkommen.
Erster Weg.
Die zweite Alternative wurde verworfen (ich erinnere mich nicht genau, aber in den ersten Seiten), weil in der Zukunft in der Kategorie der "Benutzer" wird auch Menschen, die nicht wissen, was ist F7.
Außerdem soll die Engine leicht erweiterbar sein, und jeder, der den Zweck von F7 kennt, kann einen anderen Gittertyp hinzufügen oder einen eigenen erfinden.
ZY versteht Ihre Verbundenheit mit der Template-Kodierung, stimmt aber zu, dass wir in der zweiten Variante große Probleme mit der Implementierung sowohl der Lernalgorithmen als auch der Erweiterung der Neuronentypen haben werden, und dass dies noch für die GPU optimiert werden muss. Es gibt schwerwiegende Probleme mit der ersten Variante, die einfachsten Dinge, die jeder tun kann, und nur zu beschreiben, das Projekt der universellen Motor macht mein Gehirn braten.
Morgen werde ich meine Arbeit an der Speicherung von Netzwerkprototypen, der Einrichtung von Trainingsaufgaben und der Speicherung der gefundenen Lösungen von meinem Arbeitscomputer hierher kopieren.
Alles in xml
Ich denke, die Ressourcenintensität des Parsens von Xml-Dateien wird zu sehr übertrieben.
Vergessen Sie nicht, dass es sich um ein einmaliges Verfahren handelt.
Darüber hinaus ist das Schreiben eines nativen Parsers für Xml-Dateien für MQL5 eine triviale Aufgabe im Vergleich zur Komplexität eines neuronalen Netzwerkprojekts.
Der erste Weg.
Die zweite Alternative wurde verworfen (ich erinnere mich nicht mehr genau, aber auf den ersten Seiten), weil in Zukunft Leute, die nicht wissen, was F7 ist, in die Kategorie "Benutzer" aufgenommen werden.
Außerdem soll diese Engine leicht erweiterbar sein, und wer den Zweck von F7 kennt, kann für sich selbst weitere Meshes hinzufügen oder eigene erfinden.
Ich habe nur eine Frage, weil ich mich mit Maschentypen nicht auskenne.
Kann ein Netztyp eindeutig durch eine Nachschlagetabelle definiert werden, d. h. können wir ein universelles abstraktes Netz erstellen, das sich einfach aus einer gegebenen Nachschlagetabelle ergibt? Mit anderen Worten, ein wirklich universelles Netz?
Wenn die Antwort "Ja" lautet, dann wird der Rastertyp im Editor für die Rasterkonfiguration definiert , BEVOR die Zwischenansicht erstellt wird, und es ist keine Änderung der Universalbibliothek erforderlich. Das Einzige, was man tun kann, ist, sie zu optimieren, die Bibliothek der nichtlinearen Konverter, der Trainingsmethoden usw. zu erweitern.
Falls nein, können Sie mir gerne einige Links zu Ausnahmen nennen, die nicht auf diese Weise zustande kommen.
--
Wenn die xml-Darstellung der Netzwerkbeschreibung gründlich durchdacht und vollständig von der mql-Implementierung abstrahiert ist (was richtig ist), dann sehen die Alternativen nicht widersprüchlich aus. Sie können nicht nur beide umgesetzt werden, sondern auch miteinander kombiniert werden.
...
Die Antwort ist nicht binär,
Einerseits ist die Antwort negativ, da die Beziehungstabelle selbst keine Angaben zur Typisierung der Neuronen enthält.
Andererseits ist die Antwort positiv, es ist möglich, Typen in numerischer Form anzugeben (Sie erstellen ein Objekt eines bestimmten Typs, der von einem gemeinsamen Vorfahren durch den Schalter geerbt wurde).
Insgesamt sind also ein parametrisches Array und eine Beziehungstabelle in Ordnung.
Andererseits gibt es sogar im Konfigurationseditor Parameter (Anzahl der Schichten, Anzahl der Neuronen in jeder Schicht, Arten von Neuronen in der Schicht), und zwar vor dem Erstellen von Verknüpfungen.
Mit anderen Worten: ein wirklich universelles Netz?
Aus der Vorwärtsbewegung, ja. Bei den anderen muss man sich die Topologie ansehen.
Die Topologie wird durch die Verknüpfungstabelle.... festgelegt.
?
Die Topologie wird durch die Verknüpfungstabelle .... festgelegt.
Und die Funktionalität der zu verbindenden Teile.
OK, lassen Sie uns hier ein wenig mehr ins Detail gehen.
Kann diese Funktionalität durch eine endliche (kleine) Tabelle gegeben werden? Was ist der Unterschied zwischen Neuronen verschiedener Typen (abgesehen von Aktivierungsfunktionen)?
OK, lassen Sie uns hier ein wenig mehr ins Detail gehen.
Kann diese Funktionalität durch eine endliche (kleine) Tabelle gegeben werden? Was ist der Unterschied zwischen Neuronen verschiedener Typen (abgesehen von Aktivierungsfunktionen)?
Streng genommen, nein.
Zunächst ein einfacher Fall. Nehmen wir an, wir haben lineare, sigmoide und tangentiale Neuronen. Wenn wir eine neue Art der Aktivierung hinzufügen wollen, müssen wir die Aufzählung der Aktivierungsarten erweitern.
Im Grunde genommen, also was soll's. Aber warum braucht die Ausgabeschicht z. B. im Kohonen-Netz ein Vorzeichen von some=some Aktivierungsfunktionen? Dies ist eine überflüssige, redundante Information.
Zweitens: Diese Liste ist theoretisch unbegrenzt.
Drittens kann jedes Netz Besonderheiten in seiner Funktionsweise und Anordnung aufweisen. Ein Kohonen-Netz (SOM) kann z. B. über eine Einstellung für die Nachbarschaftsfunktion und eine Markierung verfügen, die angibt, ob die Ergebnisse als Ausgang ausgegeben werden sollen oder nur der Spitzenreiter (wobei alle Nicht-Spitzenreiter eliminiert werden)
Bei Logikmodellen zum Beispiel befinden sich die konfigurierbaren Parameter in der Aktivierungsfunktion. Ist dies auch im allgemeinen Modell der Fall?
In der MLP-Schicht könnte es sich um ein einzelnes Neuronen-Präsenz-Flag handeln.
____________________________
Übrigens ist Xml viel einfacher auf Gültigkeit zu prüfen als die binäre Darstellung. Und das Speichern/Wiederherstellen ist im Grunde genommen nicht zeitkritisch.
1. Streng genommen, nein.
Zunächst ein einfacher Fall. Nehmen wir an, wir haben lineare, sigmoide und tangentiale Neuronen. Wenn wir eine neue Art der Aktivierung hinzufügen wollen, müssen wir die Aufzählung der Aktivierungsarten erweitern.
Im Grunde genommen, also was soll's. Aber warum braucht die Ausgabeschicht z. B. im Kohonen-Netz ein Vorzeichen von some=some Aktivierungsfunktionen? Dies ist eine unnötige und überflüssige Information.
Zweitens: Diese Liste ist theoretisch unbegrenzt.
Drittens kann jedes Netz seine eigenen Besonderheiten in Betrieb und Struktur aufweisen. Ein Kohonen-Netz (SOM) kann z. B. über eine Einstellung für die Nachbarschaftsfunktion und eine Markierung verfügen, die angibt, ob die Ergebnisse als Output oder nur der Leader ausgegeben werden sollen (wodurch alle Nicht-Leader gelöscht werden).
Bei Logikmodellen zum Beispiel befinden sich die konfigurierbaren Parameter in der Aktivierungsfunktion. Ist dies auch im allgemeinen Modell der Fall?
In einer MLP-Schicht kann ein einzelnes Neuron als Flagge dienen.
____________________________
2. xml ist übrigens viel einfacher auf Gültigkeit zu prüfen als die binäre Darstellung. Und die Rettung ist im Grunde genommen nicht zeitkritisch.
1. warum nicht. Meine Idee ist in etwa die folgende - eine universelle "Elementbasis" zu schaffen, aus der neuronale Netze jeder Art "gelötet" werden können (kann durchaus erweiterbar sein). Die Elemente in dieser Basis werden durch exakte, eindeutige Definitionen - Formeln - festgelegt. Erforderlichenfalls mit Anwendung von Pseudocode. Aber nicht in Form von mql-Code, um sich von den Implementierungen zu lösen - diese können mit der Zeit verbessert werden. Nachdem die abstrakte Elementbasis erstellt wurde (wenn möglich), können Sie eine xml-Datei formatieren, die alle Verbindungen zwischen den Elementen beschreiben kann. Nachdem die xml-Beschreibung genehmigt wurde, kann das Projekt leicht parallelisiert werden: Schreiben Sie separat
1) Implementierung von Komponenten. => die Ausgabe ist eine Bibliothek von Komponenten.
2) Netzwerktyp/Strukturkonfigurator(en) => Ausgabe - grafisch, Schritt-für-Schritt oder beliebige andere Konfiguratoren, Speichern der Konfiguration in einer xml-Datei.
3) Übersetzung(en) in mql-Code. => die Ausgabe ist entweder (1) ein super-duper selbstkonfigurierendes mql-neuronales Netz, das eine xml-Datei als Parameter annimmt, oder (2) ein Compiler für ein bestimmtes mql-basiertes starres Netz.
Etwa so. Das scheint sinnvoll zu sein.
2. Ja.