Frage

Ist ein genetischer Algorithmus der effizienteste Weg, um die Anzahl von versteckten Knoten und die Menge der Ausbildung auf einem künstlichen neuronalen Netzwerk getan zu optimieren?

Ich entwickle neuronaler Netze die NNToolbox in Matlab. Ich bin offen für alle anderen Vorschläge von Optimierungstechniken, aber ich bin sehr vertraut mit GAs.

War es hilfreich?

Lösung

Tatsächlich gibt es mehrere Dinge, die Sie GA optimieren können mit Bezug auf NN. Sie können die Struktur (Anzahl der Knoten, Schichten, Aktivierungsfunktion etc.) optimieren. Sie können auch GA trainieren verwenden, das heißt, die Gewichte zu setzen.

Genetische Algorithmen wird nie die effizienteste, aber sie in der Regel verwendet, wenn Sie wenig Ahnung, was Zahlen zu verwenden.

Für das Training können Sie auch andere Algorithmen einschließlich backpropagation verwenden, Nelder-Mead usw. .

Sie sagten, Sie Zahl versteckt Knoten, für diesen genetischen Algorithmus kann ausreichend sein, um, wenn auch weit von „optimal“ optimieren wollen. Der Raum, den Sie suchen ist wahrscheinlich zu klein genetischen Algorithmen zu verwenden, aber sie können immer noch arbeiten und afaik, werden sie bereits in Matlab implementiert, so dass kein großes Problem.

Was meinst du getan Menge an Training zu optimieren? Wenn Sie Anzahl der Epochen bedeuten, dann fein das ist, nur nicht vergessen, dass die Ausbildung auf Einwaagen irgendwie abhängig ist, und sie sind in der Regel zufällig, so wird die Fitness-Funktion für GA verwendet nicht wirklich eine Funktion sein.

Andere Tipps

Ein gutes Beispiel für neuronale Netze und genetische Programmierung ist die NEAT-Architektur (Neuro-Evolution of augmentierenden Topologien). Dies ist ein genetischer Algorithmus, die eine optimale Topologie findet. Es ist auch nach unten zu halten, die Anzahl der verborgenen Knoten als gut bekannt.

Sie haben auch ein Spiel dieses namens Nero verwenden. Einzigartig und sehr erstaunlich 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.

Genetische Algorithmen können sinnvollerweise auf die Optimierung neuronale Netze angewendet werden, aber Sie haben ein wenig darüber nachzudenken, 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 wird in der Regel ineffizient sein. Doch wie Sie wurden gefragt, können sie die Topologie des Netzwerks und auch die Parameter für Ihren Trainingsalgorithmus optimieren. Sie werden vor allem der Schaffung von Netzwerken vorsichtig sein müssen, die „über trainiert“ werden aber.

Eine weitere Technik, mit einem modifizierten genetischen Algorithmen können zur Überwindung ein Problem mit Back-Propagation nützlich sein. Back-Propagation findet in der Regel lokale Minima, aber es findet sie genau und schnell. einen genetischen Algorithmus mit Back-Propagation, zum Beispiel in einem Lamarckian GA, bietet die Vorteile beide zu kombinieren. Diese Technik wird bei der GAUL Tutorial

kurz beschrieben

Es ist manchmal nützlich, um einen genetischen Algorithmus zu verwenden, um ein neuronales Netz zu trainieren, wenn Ihre Zielfunktion nicht kontinuierlich ist.

Ich bin mir nicht sicher, ob Sie einen genetischen Algorithmus für diese verwendet werden sollen.

ich die anfängliche Lösung Bevölkerung für Ihren genetischen Algorithmus annehmen würde für neuronale Netz von Trainingssätzen bestehen (ein spezifisches Trainingsmethode angegeben). Normalerweise ist die Ausgangslösung Population besteht aus zufälligen Lösungen für Ihr Problem. Allerdings würden Zufallstrainingssätze nicht wirklich Ihr neuronales Netz trainieren.

Der Auswertungsalgorithmus für Ihren genetischen Algorithmus wäre ein gewichtetes Mittel der Menge der Ausbildung erforderlich sein, die Qualität des neuronalen Netzes ein bestimmtes Problem und die numer von versteckten Knoten zu lösen.

Also, wenn Sie diese laufen, würden Sie den Trainingssatz erhalten, die das beste Ergebnis in Bezug auf neuronale Netzqualität geliefert (= Trainingszeit, Anzahl versteckte Knoten, Problemlösungsfähigkeiten des Netzes).

oder erwägen Sie einen ganz anderen Ansatz?

Ich bin nicht ganz sicher, welche Art von Problem mit dem Sie arbeiten, aber GA klingt wie ein bisschen viel des Guten hier. Je nach Parameterbereich der Sie arbeiten, eine erschöpfende (oder anderweitig unintelligent) Suche arbeiten. Versuchen Sie, Ihre NN die Leistung in Bezug auf die Anzahl der versteckten Knoten für einen ersten paar Werte Plotten, klein anzufangen und springen von größeren und größeren Schritten. Nach meiner Erfahrung Plateau viele NNs in der Leistung überraschend früh; Sie können ein gutes Bild von dem, was Bereich von versteckten Knoten Zahlen erhalten Lage sein, die am meisten Sinn macht.

Das gleiche gilt oft für NNs' Training Iterationen. Mehr Training hilft Netzwerke bis zu einem Punkt, aber bald nicht mehr viel Wirkung haben.

In den meisten Fällen sind diese NN Parameter haben keinen Einfluss auf die Leistung in einem sehr komplexen Art und Weise. Im Allgemeinen sie erhöht für eine Weile Leistung zu erhöhen, aber dann abnehmende Erträge treten in GA nicht wirklich notwendig ist, einen guten Wert auf dieser Art von einfacher Kurve zu finden. wenn die Anzahl der versteckten Knoten (oder Training Iterationen) wirklich die Leistung verursacht in einer komplizierten Art und Weise zu schwanken, dann Metaheuristiken wie GA können passend sein. Aber geben Sie die Brute-Force-Ansatz einen Versuch vor, diesen Weg nehmen.

Ich würde dazu neigen, zu sagen, dass genetische Algorithmen sind eine gute Idee, da man mit einer Minimallösung und wachsen, um die Anzahl von Neuronen beginnen kann. Es ist sehr wahrscheinlich, dass die „Gütefunktion“ für die Sie den optimalen Punkt ist glatt finden wollen und hat nur wenige Beulen.

Wenn Sie das optimale NN zu finden haben häufig würde ich mit Optimierungsalgorithmen und in Ihrem Fall quasi newton empfehlen wie in numerischen Rezepten beschrieben, die für Probleme optimal ist, wo die Funktion teuer zu bewerten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top