11

Ist ein genetischer Algorithmus der effizienteste Weg, um die Anzahl verdeckter Knoten und den Umfang des Trainings in einem künstlichen neuronalen Netzwerk zu optimieren?Neuronales Netz Optimieren mit genetischem Algorithmus

Ich binde neuronale Netze mit der NNToolbox in Matlab. Ich bin offen für andere Vorschläge von Optimierungstechniken, aber ich kenne GAs am besten.

Antwort

11

Eigentlich gibt es mehrere Dinge, die Sie optimieren können mit GA in Bezug auf NN. Sie können die Struktur optimieren (Anzahl der Knoten, Layer, Aktivierungsfunktion usw.). Sie können auch mit GA trainieren, dh die Gewichte einstellen.

Genetische Algorithmen werden niemals die effizientesten sein, aber sie werden normalerweise verwendet, wenn Sie wenig Ahnung haben, welche Zahlen zu verwenden sind.

Für das Training können Sie auch andere Algorithmen einschließlich backpropagation verwenden, nelder-mead etc ..

Sie sagten, Sie Zahl versteckt Knoten, für diese genetischen Algorithmus kann ausreichend sein, um, wenn auch weit von „optimal“ optimieren wollten. Der Raum, den Sie suchen, ist wahrscheinlich zu klein, um genetische Algorithmen zu verwenden, aber sie können immer noch funktionieren und afaik, sie sind bereits in Matlab implementiert, also kein Problem.

Was meinen Sie mit der Optimierung des Trainingsumfangs? Wenn Sie die Anzahl der Epochen meinen, dann ist das in Ordnung, denken Sie daran, dass das Training irgendwie von den Startgewichten abhängig ist und sie sind in der Regel zufällig, so dass die für GA verwendete Fitnessfunktion nicht wirklich eine Funktion ist.

+0

danke. Das ist die genaue Information, nach der ich gesucht habe. – ServAce85

+0

Ich würde es gerne in C/C++ programmieren und dann 1000 Amazon EC2 Server für ein paar Stunden einschalten. –

+0

Welchen Vorteil hat das Training eines ANN mit GA gegenüber der ausschließlichen Verwendung von GP? ANNs haben den Vorteil, dass sie ein Gehirn nachahmen, und dass sie Methoden verwenden können, um die Gewichte auf intelligente Weise zu aktualisieren, wie zum Beispiel Backpropagation, um sicherzustellen, dass sich das Netzwerk in die richtige Richtung entwickelt (genau wie im Gehirn). Aber wenn du GA zum Aktualisieren der Gewichte verwendest, verlierst du all das und es scheint mir nicht so, als hättest du einen wirklichen Vorteil gegenüber GP mehr, da es jetzt einfach Zufall ist, ob das Netzwerk sich verbessert oder nicht. Was ist deine Meinung dazu? – HelloGoodbye

0

Ich bin mir nicht sicher, ob Sie dafür einen genetischen Algorithmus verwenden sollten.

Ich nehme an, die erste Lösungspopulation für Ihren genetischen Algorithmus würde aus Trainingssätzen für Ihr neuronales Netzwerk bestehen (bei einer bestimmten Trainingsmethode). Normalerweise besteht die erste Lösungspopulation aus zufälligen Lösungen für Ihr Problem. Zufällige Trainingssätze würden jedoch Ihr neuronales Netzwerk nicht wirklich trainieren. Der Auswertungsalgorithmus für Ihren genetischen Algorithmus wäre ein gewogener Durchschnitt der benötigten Trainingsmenge, der Qualität des neuronalen Netzwerks bei der Lösung eines spezifischen Problems und der Anzahl der versteckten Knoten.

Also, wenn Sie dies ausführen, würden Sie das Training-Set erhalten, das das beste Ergebnis in Bezug auf neuronale Netzwerkqualität (= Trainingszeit, Anzahl verdeckter Knoten, Problemlösungsfähigkeiten des Netzwerks) lieferte.

Oder denken Sie über einen ganz anderen Ansatz nach?

0

Ich bin nicht ganz sicher, mit welcher Art von Problem Sie arbeiten, aber GA klingt hier ein wenig übertrieben. Je nach den Parametern, mit denen Sie arbeiten, kann eine erschöpfende (oder nicht intelligente) Suche funktionieren. Versuchen Sie, die Leistung Ihres NN in Bezug auf die Anzahl der versteckten Knoten für die ersten paar Werte aufzuzeichnen, beginnend mit klein und springen Sie in immer größeren Schritten. Meiner Erfahrung nach haben viele NNs eine überraschend hohe Performance. Sie können sich vielleicht ein gutes Bild davon machen, welcher Bereich verdeckter Knotennummern am sinnvollsten ist.

Das gleiche gilt oft für Trainings-Iterationen von NNs. Mehr Training hilft Netzwerken bis zu einem gewissen Punkt, hat aber bald keine Wirkung mehr.

In den meisten Fällen beeinflussen diese NN-Parameter die Leistung nicht auf sehr komplexe Weise. Im Allgemeinen erhöht eine Erhöhung die Leistung für eine Weile, aber dann treten geringere Renditen ein.GA ist nicht wirklich notwendig, um einen guten Wert für diese einfache Kurve zu finden; Wenn die Anzahl der versteckten Knoten (oder Trainingsiterationen) tatsächlich dazu führt, dass die Leistung auf komplizierte Weise schwankt, dann können Metaheuristiken wie GA geeignet sein. Aber versuchen Sie es mit dem Brute-Force-Ansatz, bevor Sie diesen Weg gehen.

+0

Brute Force funktioniert nicht für meine Anwendung, weil meine Daten sehr laut sind (denke EEG-Daten). – ServAce85

0

Ich würde sagen, dass genetische Algorithmen eine gute Idee ist, da Sie mit einer minimalen Lösung beginnen und die Anzahl der Neuronen wachsen können. Es ist sehr wahrscheinlich, dass die "Qualitätsfunktion", für die Sie den optimalen Punkt finden möchten, glatt ist und nur wenige Unebenheiten aufweist.

Wenn Sie diese optimale NN häufig finden müssen, empfehle ich die Verwendung von Optimierungsalgorithmen und in Ihrem Fall Quasi Newton wie in numerischen Rezepten beschrieben, was optimal für Probleme ist, bei denen die Funktion teuer zu bewerten ist.

2

Genetische Algorithmen können sinnvoll eingesetzt werden, um neuronale Netzwerke zu optimieren, aber Sie müssen ein wenig darüber nachdenken, was Sie tun möchten.

Die meisten "klassischen" NN Trainingsalgorithmen wie Back-Propagation optimieren nur die Gewichte der Neuronen. Genetische Algorithmen können die Gewichte optimieren, aber dies ist typischerweise ineffizient. Wie Sie jedoch gefragt haben, können sie die Topologie des Netzwerks und auch die Parameter für Ihren Trainingsalgorithmus optimieren. Sie müssen besonders vorsichtig sein, wenn Sie Netzwerke erstellen, die "übertrainiert" sind.

Eine weitere Technik mit einem modifizierten genetischen Algorithmus kann nützlich sein, um ein Problem mit der Rückpropagation zu überwinden. Back-Propagation findet normalerweise lokale Minima, aber sie findet sie genau und schnell. Die Kombination eines genetischen Algorithmus mit einer Rückpropagation, z. B. in einem Lamarckian GA, ergibt die Vorteile von beiden. Diese Technik wird kurz während der GAUL tutorial

4

beschrieben. Ein gutes Beispiel für neuronale Netze und genetische Programmierung ist die NEAT-Architektur (Neuro-Evolution von Augmentting Topologies). Dies ist ein genetischer Algorithmus, der eine optimale Topologie findet. Es ist auch bekannt, dass es gut ist, die Anzahl der versteckten Knoten niedrig zu halten.

Sie machten auch ein Spiel mit diesem namens Nero. Ziemlich einzigartige und sehr erstaunliche greifbare Ergebnisse.

Dr. Stanley-Homepage:

http://www.cs.ucf.edu/~kstanley/

Hier finden Sie fast alles NEAT verwandte finden, wie er derjenige, der es erfunden ist.

+0

es gibt auch eine C# -Bibliothek dafür -> SHARPNEAT http://sharpneat.sourceforge.net/ – JohnIdol

1

Es ist manchmal nützlich, einen genetischen Algorithmus zu verwenden, um ein neurales Netzwerk zu trainieren, wenn die Zielfunktion nicht kontinuierlich ist.

+0

Warum nicht einfach GP in diesem Fall verwenden?Wenn Sie GA verwenden, um die Gewichtungen in dem neuronalen Netzwerk zu aktualisieren, anstelle einer intelligenten Methode, die sicherstellt, dass die Gewichtungen alle in der richtigen Richtung aktualisiert werden, scheint es, als ob Sie den Vorteil der Verwendung eines neuronalen Netzes über nur mit GP verlieren. – HelloGoodbye

Verwandte Themen