Einsatz neuronaler Netze im Handel - Seite 39

 

Es ist schade, dass es keine 'Pioniere' gibt. Ich werde weiter graben...

 
Ich habe die Hartley-Transformation ausprobiert, ein Analogon der Fourier-Transformation. Die Aufgabe bestand darin, eine rechteckige Fensterfunktion zu verwenden, die zeitlich in die "Vergangenheit" verschoben wurde. Die resultierenden Vektoren werden in Komponenten zerlegt und für den NS-Eingang verwendet. Als Vorhersage - Änderung der Spektralkomponenten, gefolgt von einer inversen Transformation. Die daraus resultierende inverse Transformation des vorhergesagten Spektrums wird im Indikator verwendet. HIER ausführlicher beschrieben.
 

Ich habe einen so unterhaltsamen Artikel gelesen.

Ich interessiere mich für das Prinzip der Strukturierung des Gehirns als neuronales Netz - zunächst wird eine große Anzahl von Verbindungen aller Art rekrutiert, ohne auf deren Qualität zu achten, dann wird die Auswahl nach dem Prinzip "entferne alles, was nicht notwendig ist, um das Ergebnis zu erreichen" gestartet.

Es ist möglich, dass dieser Ansatz sowohl gegen Übertraining als auch gegen "strukturelles Versagen" hilft.

In diesem Zusammenhang eine Frage: Ist niemand auf Studien zu einem ähnlichen Prinzip in der NS-Theorie gestoßen?

 
alsu:

Ich habe einen so unterhaltsamen Artikel gelesen.

Ich interessiere mich für das Prinzip der Strukturierung des Gehirns als neuronales Netz - zunächst wird eine große Anzahl von Verbindungen aller Art rekrutiert, ohne auf deren Qualität zu achten, dann wird die Auswahl nach dem Prinzip "entferne alles, was nicht notwendig ist, um das Ergebnis zu erreichen" gestartet.

Es ist durchaus möglich, dass dieser Ansatz dazu beiträgt, sowohl Übertraining als auch "strukturelles Versagen" sozusagen zu bekämpfen.

In diesem Zusammenhang eine Frage: Ist niemand auf Studien zu einem ähnlichen Prinzip in der NS-Theorie gestoßen?

Ich habe etwas mit "Nettoausdünnung" gesehen, wenn ein kleiner absoluter Wert in den Koeffizienten festgestellt wird.

Aber so etwas habe ich in den letzten Jahren nicht gesehen, und als Grundprinzip gilt "großer, großer Überschuss, dann Reduktion". Willst du eine machen?

Ich bin interessiert. Nur die Rechenressourcen würden nicht ausreichen. // Ich weiß nicht, wie ich die GPU anpassen kann - es lohnt sich, nur die gleiche Art von Schemata zu berechnen, und hier ist die Netztopologie jedes Mal anders.

 

MetaDriver:

Willst du einen Anschluss finden?

Das tue ich. Aber im Moment denke ich: Ich muss darüber nachdenken, welchen Reduktionsalgorithmus ich verwenden soll. Die erste Idee ist, wirklich nach dem absoluten Wert auszudünnen und den Schwellenwert von der Anzahl der bereits präsentierten Beispiele abhängig zu machen: Je größer die Trainingsstichprobe, desto schwieriger sollte es für die Links sein, zu überleben.

 
MetaDriver:
Ich weiß nicht, wie man GPU anpassen kann - es ist vorteilhaft, nur die gleiche Art von Schemata zu berechnen, aber hier ist die Netztopologie jedes Mal anders.
Einzeltyp und Hardware-implementiert. Die Effizienz paralleler Berechnungen wird im Allgemeinen stark übertrieben, in der Tat (es gibt echte Berechnungen und sogar Doktorarbeiten darüber) sind sie im Allgemeinen sogar langsamer als sequenzielle; der Grund dafür ist der Zeitverbrauch für die Datenübertragung.
 
alsu:
Derselbe Typ, und zwar ein hardwareimplementierter. Die Effizienz des parallelen Rechnens wird stark übertrieben (es gibt echte Berechnungen und sogar Doktorarbeiten, die sich damit befassen), im Allgemeinen ist es sogar langsamer als das sequentielle Rechnen; der Grund dafür ist die Zeit, die für die Datenübertragung aufgewendet wird.

Ich kann dem nicht sofort zustimmen. Wenn Sie sich mit den Besonderheiten auskennen, können Sie Hunderte von Mal mehr Geschwindigkeit aus der einige von Aufgaben. Bei intensiven Berechnungen ist es daher immer sinnvoll, das Problem auf eine Klasse von "einigen" zu reduzieren. Wenn es funktioniert, kann der Gewinn enorm sein. Wenn nicht, dann nicht - rechnen Sie sequentiell auf einem normalen Prozessor.

--

So ist beispielsweise die genetische Optimierung von neuronalen Netzen desselben Typs (mit derselben Topologie) mit einer großen Anzahl von Trainingsbeispielen äußerst vorteilhaft (die Ausführungsgeschwindigkeit ist um das Zehn- oder Hundertfache höher). Das einzige Problem ist, dass für jede Topologie ein neues OpenCL-Programm erforderlich ist. Dies kann durch die Konstruktion grundlegender ocl-Templates und die automatische (programmatische) Generierung neuer ocl-Programme für eine bestimmte Topologie gelöst werden.

Übrigens, hier. Beim Schreiben des obigen Textes kam mir eine Idee, wie Sie Ihr Problem auf eine für GPU-Berechnungen vorteilhafte Klasse reduzieren können. Schritt für Schritt: In jedem Schritt müssen wir alles in ein OCL-Programm einlesen, aber auf Nullkoeffizienten reduzieren (im Wesentlichen imitieren). Und für einen neuen Schritt erzeugen Sie ein neues Programm, in dem die Kürzungen des vorherigen Schrittes bereits in das Programm "eingeflasht" wurden. Und so weiter. Dies ist jedoch der Fall, wenn genetisches "Lernen" eingesetzt wird.

 
MetaDriver:
Dem kann ich nicht auf Anhieb zustimmen. Wenn Sie ein gutes Verständnis für die Besonderheiten haben, können Sie hundertmal mehr Geschwindigkeit aus den einige von Aufgaben. Daher ist es bei komplexen Berechnungen immer sinnvoll zu versuchen, das Problem auf die Klasse der "Einige" zu reduzieren. Wenn es funktioniert, kann der Gewinn enorm sein. Wenn nicht, dann nicht - zählen Sie sequentiell auf einem normalen Prozessor.

Soweit ich mich erinnere, ist der kritische Wert das Verhältnis der Ausführungszeit der parallelen Aufgaben zu den nicht parallelen (Datenaufbereitung, Datenübertragung) in der Hauptschleife, und je höher die Parallelität ist, desto strenger sind die Anforderungen an dieses Verhältnis. Deshalb sollten wir nicht nur versuchen, den Algorithmus auf eine "Parallel-Datei" zu reduzieren, sondern auch den nicht-parallelen Teil zu minimieren.

So sind z. B. beim inzwischen in Mode gekommenen (und übrigens auch in Five implementierten) Cloud Computing die Gewinnbeschränkungen gerade wegen der Übertragungszeit sehr gravierend. Fairerweise sollte angemerkt werden, dass diese Einschränkungen nur dann auftreten, wenn ein Cloud-Netzwerk nicht weniger als zehn Prozent belastet wird.

Nun, aber darum geht es jetzt nicht - es gibt bei dieser Aufgabe wirklich nicht viel an Parallelität.

 
MetaDriver:// Das einzige Problem ist, dass jede Topologie ein neues OpenCL-Programm erfordert. Dies kann durch die Konstruktion grundlegender ocl-Templates und die automatische (programmatische) Generierung eines neuen ocl-Programms für eine bestimmte Topologie gelöst werden.


Es gibt keine Parallelität: Die Vorlagen hängen nacheinander voneinander ab, so dass man sie alle im Voraus erstellen muss, aber dann gibt es Billionen davon, und die meiste Zeit wird damit verbracht, die richtige im Moment zu finden.)
 
alsu:

Es wird keine Parallelität geben: Vorlagen hängen nacheinander voneinander ab, so dass wir sie alle im Voraus erstellen müssen, aber dann wird es Billionen von ihnen geben und die meiste Zeit wird damit verbracht, die im Moment benötigten zu finden)
Das stimmt nicht. Ich habe dies für neuronale Netze eines einzigen Typs getan. Ich kann Ihnen sogar einen Codegenerator schicken. Die Frage ist eine andere: Wie können Sie Ihre Aufgabe auf eine rentable Klasse reduzieren? Lesen Sie noch einmal meinen vorherigen Beitrag - ich habe ihn dort hinzugefügt.

Nun, das werde ich nachmachen:

Übrigens, hier. Beim Schreiben der obigen Ausführungen kam mir eine Idee, wie man Ihr Problem auf eine Klasse von vorteilhaften GPU-Berechnungen reduzieren kann. Schritt für Schritt: In jedem Schritt müssen wir alles in ein OCL-Programm einlesen, aber auf Nullkoeffizienten reduzieren (im Wesentlichen imitieren). Und für einen neuen Schritt erzeugen Sie ein neues Programm, in dem die Kürzungen des vorherigen Schrittes bereits in das Programm "eingeflasht" wurden. Und so weiter. Dies ist jedoch der Fall, wenn genetisches "Lernen" eingesetzt wird.