Diskussion zum Artikel "Der Algorithmus Atomic Orbital Search (AOS) Modifizierung"

 

Neuer Artikel Der Algorithmus Atomic Orbital Search (AOS) Modifizierung :

Im zweiten Teil des Artikels werden wir die Entwicklung einer modifizierten Version des AOS-Algorithmus (Atomic Orbital Search) fortsetzen und uns dabei auf bestimmte Operatoren konzentrieren, um seine Effizienz und Anpassungsfähigkeit zu verbessern. Nach einer Analyse der Grundlagen und der Mechanik des Algorithmus werden wir Ideen zur Verbesserung seiner Leistung und seiner Fähigkeit, komplexe Lösungsräume zu analysieren, diskutieren und neue Ansätze zur Erweiterung seiner Funktionalität als Optimierungswerkzeug vorschlagen.

Im zweiten Teil des Artikels werden wir uns auf die Modifizierung des AOS-Algorithmus konzentrieren, da wir an einer so hervorragenden Idee nicht vorbeigehen können, ohne zu versuchen, sie zu verbessern. Wir werden das Konzept zur Verbesserung des Algorithmus analysieren und dabei besonderes Augenmerk auf die spezifischen Operatoren legen, die dieser Methode eigen sind und ihre Effizienz und Anpassungsfähigkeit verbessern können.

Die Arbeit am AOS-Algorithmus hat mir viele interessante Aspekte in Bezug auf seine Methoden zur Suche im Lösungsraum eröffnet. Während der Recherche habe ich auch eine Reihe von Ideen entwickelt, wie dieser interessante Algorithmus verbessert werden könnte. Insbesondere habe ich mich auf die Überarbeitung bestehender Methoden konzentriert, die die Leistung des Algorithmus durch die Verbesserung seiner Fähigkeit, komplexe Lösungsräume zu erkunden, erhöhen können. Wir werden untersuchen, wie diese Verbesserungen in die bestehende Struktur des AOS-Algorithmus integriert werden können, um ihn zu einem noch leistungsfähigeren Werkzeug für die Lösung von Optimierungsproblemen zu machen. Unser Ziel ist es also nicht nur, die bestehenden Mechanismen zu analysieren, sondern auch andere Ansätze vorzuschlagen, die die Möglichkeiten des AOS-Algorithmus erheblich erweitern können.


Autor: Andrey Dik

 

Vielen Dank für den Artikel!

Ich habe mich gestern und heute eine Weile mit der Hilly-Funktion und den Alglib-Methoden beschäftigt. Hier sind meine Gedanken.

Um das Maximum dieser Funktion zu finden, insbesondere wenn die Anzahl der Parameter 10 und mehr beträgt, ist es sinnlos, Gradientenmethoden anzuwenden, das ist die Aufgabe der kombinatorischen Optimierungsmethoden. Gradientenmethoden bleiben einfach sofort im lokalen Extremum stecken. Und es spielt keine Rolle, wie oft man von einem neuen Punkt des Parameterraums neu startet, die Chance, in den richtigen Bereich des Raums zu gelangen, von dem aus die Gradientenmethode sofort eine Lösung findet, tendiert gegen Null, wenn die Anzahl der Parameter steigt.

Der Punkt des Raums, von dem aus lbfgs oder CG für 2(zwei) Iterationen das Maximum für eine beliebige Anzahl von Parametern findet, ist beispielsweise {x = -1,2 , y = 0.5}.


lbfgs

Aber die Chance, in diesen Bereich zu gelangen, ist wie gesagt einfach Null. Es muss hundert Jahre dauern, um Zufallszahlen zu erzeugen.

Daher ist es notwendig, die im Artikel vorgestellten genetischen Algorithmen irgendwie mit Gradientenmethoden zu kombinieren (so dass sie eine Erkundung durchführen und den Suchraum reduzieren können), um das Extremum schnell von einem günstigeren Punkt aus zu finden.

 
Evgeniy Chernish #:

Vielen Dank für diesen Artikel!

Vielen Dank für Ihr Feedback.

Um das Maximum einer gegebenen Funktion zu finden, insbesondere wenn die Anzahl der Parameter 10 oder mehr beträgt, ist es sinnlos, Gradientenmethoden zu verwenden.

Ja, das ist richtig.

Dies ist die Aufgabe der kombinatorischen Optimierungsverfahren.

Kombinatorische Methoden, wie die klassische "Ameise", sind für Probleme wie das "Travelling Salesman Problem" und das "Knapsack-Problem" konzipiert, d.h. sie sind für diskrete Probleme mit einem festen Schritt (Graphenrand) konzipiert. Für mehrdimensionale "kontinuierliche" Probleme sind diese Algorithmen überhaupt nicht geeignet, zum Beispiel für Aufgaben wie das Training neuronaler Netze. Ja, kombinatorische Eigenschaften sind sehr nützlich für stochastische heuristische Methoden, aber sie sind nicht die einzige und ausreichende Eigenschaft für die erfolgreiche Lösung solcher realitätsnahen Testprobleme. Die Suchstrategien im Algo selbst sind ebenfalls wichtig.

Gradientenbasierte Verfahren bleiben einfach sofort in einem lokalen Extremum stecken. Und es spielt keine Rolle, wie oft man von einem neuen Punkt des Parameterraums neu startet, die Chance, in die richtige Region des Raums zu gelangen, von der aus die Gradientenmethode sofort eine Lösung findet, tendiert gegen Null, wenn die Anzahl der Parameter steigt.

Ja, das stimmt.

Aber die Chance, in diesen Bereich zu gelangen, ist, wie ich bereits sagte, einfach Null. Es würde etwa hundert Jahre dauern, um Zufallszahlen zu erzeugen.

Ja, das ist richtig. In niedrigdimensionalen Räumen (1-2) ist es sehr einfach, in die Nähe des Globalen zu kommen, einfache Zufallsgeneratoren können sogar dafür arbeiten. Aber alles ändert sich völlig, wenn die Dimensionalität des Problems zunimmt, hier beginnen die Sucheigenschaften von Algorithmen eine wichtige Rolle zu spielen, nicht das Glück von Mistress Luck.

Daher müssen wir die in dem Artikel vorgestellten genetischen Algorithmen (die die Erkundung übernehmen und den Suchraum verkleinern) irgendwie mit Gradientenmethoden kombinieren, die dann das Extremum schnell von einem günstigeren Punkt aus finden würden.

"Genetisch" - Sie meinen wahrscheinlich "heuristisch". Warum "der Fisch braucht einen Regenschirm" und "warum brauchen wir einen Schmied? Wir brauchen keinen Schmied.")))) Es gibt effiziente Methoden zur Lösung komplexer mehrdimensionaler Probleme im kontinuierlichen Raum, die in Artikeln über Populationsmethoden beschrieben werden. Und für klassische Gradientenprobleme gibt es eigene Aufgaben - eindimensionale analytisch bestimmbare Probleme (hier gibt es nichts Vergleichbares, es gibt eine schnelle und exakte Konvergenz).

Und, Frage, was sind Ihre Eindrücke von der Geschwindigkeit der Heuristiken?

SZY:

Oh, wie viele wundersame Entdeckungen

Bereiten den Geist der Erleuchtung vor

Und die Erfahrung, den Sohn der Irrtümer,

Und das Genie, den Freund der Paradoxien,

Und den Zufall, den Erfinder Gottes.


ZZZY: Einen Moment. In einem unbekannten Raum der Suche ist es nie möglich, zu irgendeinem Zeitpunkt oder Schritt der Iteration zu wissen, dass es sich tatsächlich um eine vielversprechende Richtung zum Globalen handelt. Daher ist es unmöglich, erst zu suchen und dann zu verfeinern. Nur ganze Suchstrategien können funktionieren, sie funktionieren entweder gut oder schlecht. Jeder wählt den Grad der "Güte" und "Eignung für die Aufgabe" selbst aus, zu diesem Zweck wird eine Bewertungstabelle geführt, um einen Algorithmus entsprechend den Besonderheiten der Aufgabe auszuwählen.

 
Andrey Dik #:
Ja, das ist richtig. In niedrigdimensionalen Räumen (1-2) ist es sehr einfach, in die Nähe eines Globals zu gelangen, einfache Zufallsgeneratoren können dafür sogar nützlich sein. Aber alles ändert sich völlig, wenn die Dimensionalität des Problems zunimmt, hier beginnen die Sucheigenschaften der Algorithmen, nicht die Glücksfee, eine wichtige Rolle zu spielen.

Sie versagen also

Andrey Dik #:
Und, Frage, was halten Sie von der Geschwindigkeit der Heuristiken?

Trotz der Tatsache, dass sie schnell arbeiten. Das Ergebnis für 1000 Parameter etwas über 0,4.

Deshalb habe ich intuitiv gedacht, dass es sinnvoll ist, GA und Gradientenmethoden zu kombinieren, um das Maximum zu erreichen. Andernfalls werden sie einzeln Ihre Funktion nicht lösen. Ich habe es nicht in der Praxis getestet.


P.S. Ich denke immer noch, dass diese Funktion zu dick ist, bei realen Aufgaben (z.B. Training von neuronalen Netzen) gibt es solche Probleme nicht, obwohl auch dort die Fehleroberfläche in lokalen Minima liegt.

 
Evgeniy Chernish #:

1. sie machen ihre Arbeit nicht gut

2. auch wenn sie schnell arbeiten. Das Ergebnis für 1000 Parameter liegt bei etwa 0,4.

3. Deshalb dachte ich intuitiv, dass es sinnvoll ist, GA- und Gradientenmethoden zu kombinieren, um das Maximum zu erreichen. Andernfalls werden sie einzeln die Funktion nicht lösen. Ich habe es nicht in der Praxis getestet.

4. P.S. Ich denke immer noch, dass diese Funktion zu dick ist, bei realen Aufgaben (z.B. Training von neuronalen Netzen) gibt es keine solchen Probleme, obwohl auch dort die Fehleroberfläche in lokalen Minima liegt.

1. Was meinen Sie mit "sie können es nicht bewältigen"? Es gibt eine Begrenzung der Anzahl der Zugriffe auf die Zielfunktion, und derjenige, der ein besseres Ergebnis erzielt hat, ist derjenige, der es nicht schafft)). Sollten wir die Anzahl der erlaubten Zugriffe erhöhen? Nun, dann werden die agileren und besser an komplexe Funktionen angepassten ohnehin die Ziellinie erreichen. Versuchen Sie, die Anzahl der Verweise zu erhöhen, das Bild wird sich nicht ändern.

2. Ja. Und manche haben 0,3, andere 0,2, wieder andere 0,001. Besser sind die, die 0,4 angegeben haben.

3. es hilft nichts, intuitiv wurden hunderte von Kombinationen und Variationen ausprobiert und wieder ausprobiert. Besser ist diejenige, die für eine bestimmte Anzahl von Epochen (Iterationen) bessere Ergebnisse zeigt. Erhöhen Sie die Anzahl der Verweise auf das Ziel, und sehen Sie, wer zuerst die Ziellinie erreicht.

4. Wenn es bei schwierigen Aufgaben Spitzenreiter gibt, glauben Sie dann, dass bei leichten Aufgaben die Spitzenreiter schlechtere Ergebnisse erzielen als die Außenseiter? Das ist nicht der Fall, um es milde auszudrücken. Ich arbeite an einer "einfacheren", aber realistischen Aufgabe zum Gittertraining. Ich werde die Ergebnisse wie immer mitteilen. Es wird interessant sein.


Experimentieren Sie einfach, probieren Sie verschiedene Algorithmen und Aufgaben aus, bleiben Sie nicht an einer Sache hängen. Ich habe versucht, alle Werkzeuge dafür bereitzustellen.

 
Andrey Dik #:

1. Was meinen Sie mit "scheitern"? Es gibt eine Begrenzung der Anzahl der Zugriffe auf die Zielfunktion, derjenige, der das beste Ergebnis erzielt hat, ist derjenige, der es nicht schafft)). Sollten wir die Anzahl der erlaubten Zugriffe erhöhen? Nun, dann werden die agileren und besser an komplexe Funktionen angepassten ohnehin die Ziellinie erreichen. Versuchen Sie, die Anzahl der Verweise zu erhöhen, das Bild wird sich nicht ändern.

2. Ja. Und einige haben 0,3, und andere 0,2, und andere 0,001. Besser sind diejenigen, die 0,4 zeigten.

3. es hilft nichts, intuitiv wurden hunderte von Kombinationen und Variationen ausprobiert und wieder ausprobiert. Besser ist diejenige, die für eine bestimmte Anzahl von Epochen (Iterationen) bessere Ergebnisse zeigt. Erhöhen Sie die Anzahl der Verweise auf das Ziel, und sehen Sie, wer zuerst die Ziellinie erreicht.

4. Wenn es bei schwierigen Aufgaben Spitzenreiter gibt, glauben Sie dann, dass bei leichten Aufgaben die Spitzenreiter schlechtere Ergebnisse erzielen als die Außenseiter? Das ist nicht der Fall, um es milde auszudrücken. Ich arbeite an einer "einfacheren", aber realistischen Aufgabe zum Gittertraining. Ich werde die Ergebnisse wie immer mitteilen. Es wird interessant werden.


Experimentieren Sie einfach, probieren Sie verschiedene Algorithmen und Aufgaben aus, fixieren Sie sich nicht auf eine Sache. Ich habe versucht, alle Werkzeuge dafür bereitzustellen.

Ich experimentiere,

ANS

Was die realistische Aufgabe angeht, so ist es richtig, Algorithmen an kampfnahen Aufgaben zu testen.

Es ist doppelt interessant zu sehen, wie genetische Netzwerke trainiert werden.