Frage

Ich war ein wenig für neuronale Netzwerke interessiert und habe darüber nachgedacht, eine in Python für ein Lichtprojekt zu verwenden, das verschiedene Minimierungstechniken in einem Zeitbereich vergleicht (das am schnellsten ist).

Dann wurde mir klar, dass ich nicht einmal wusste, ob ein NN gut zur Minimierung ist. Was denkst du?

War es hilfreich?

Lösung

Neuronale Netze sind Klassifikatoren. Sie trennen zwei Klassen von Datenelementen. Sie lernen diese Trennung (normalerweise) durch ausgeschlossene Datenelemente. Also sage ich: Nein, es sei denn, Sie machen eine große Strecke über den Bruch hinaus.

Andere Tipps

Es klingt für mich so, dass dies ein Problem ist, das besser geeignet ist genetische Algorythmen als neuronale Netze. Neuronale Netze benötigen tendenziell ein begrenztes Problem, um zu lösen, das Training gegen bekannte Daten usw. erfordert - während genetische Algorithmen funktionieren, indem sie immer bessere Lösungen für ein Problem finden, ohne Schulung zu erfordern.

Die Rückstrafe bewirkt, indem der Fehler minimiert wird. Sie können jedoch wirklich minimieren, was Sie wollen. Sie können also die rücken-prop-ähnlichen Update-Regeln verwenden, um die künstlichen neuronalen Netzwerkeingaben zu finden, die die Ausgabe minimieren.

Dies ist eine große Frage, Entschuldigung für die kurze Antwort. Ich sollte auch hinzufügen, dass mein vorgeschlagener Ansatz im Vergleich zu etablierteren Methoden ziemlich ineffizient klingt und nur eine lokale Minima finden würde.

Der Schulungsprozess eines neuronalen Netzwerks von Back-Propagation funktioniert, indem der Fehler aus dem optimalen Ergebnis minimiert wird. Ein geschulter neuronales Netzwerk zu haben, das das Minimum einer unbekannten Funktion findet, wäre jedoch ziemlich schwierig.

Wenn Sie das Problem auf eine bestimmte Funktionsklasse beschränken, kann es funktionieren und auch ziemlich schnell sein. Neuronale Netze sind gut darin, Muster zu finden, wenn es welche gibt.

Sie sind ziemlich schlecht für den Zweck; Eines der großen Probleme der neuronalen Netze ist, dass sie in lokalen Minima stecken bleiben. Vielleicht möchten Sie stattdessen Support -Vector -Maschinen untersuchen.

Eigentlich könnten Sie das NN verwenden, um ein Funktion zu finden, aber es würde am besten mit genetischen Algorithmen kombiniert werden, die von genannt werden Erik.

Grundsätzlich NN -Zelt, um Lösungen zu finden, die einer Funktion lokalem Minimum oder Maximum entsprechen, dies jedoch ziemlich präzise ist (um sich zu Kommentaren zu kommentieren Tetha Antwort, dass NN Klassifikatoren sind, die Sie verwenden können, wenn die Dateneingabe minimal ist oder nicht)

Im Gegensatz dazu neigen genetische Algorithmen dazu, eine universellere Lösung aus dem gesamten Bereich der möglichen Eingaben zu finden, geben Ihnen jedoch die nahezu nahezu stehenden Ergebnisse.

Die Lösung besteht darin, die 2 Welten zu kombinieren

  1. Holen Sie sich das ungefähre Ergebnis von genetischen Algorithmen
  2. Verwenden Sie dieses Ergebnis, um die präzisere Antwort mit NN zu finden

Sie können ein NN beibringen, eine Funktion zu approximieren. Wenn eine Funktion differenzierbar ist oder Ihr NN mehr als eine versteckte Ebenen hat, können Sie sie beibringen, um eine Funktion zu liefern.

Beispiel:

You can train  a 1 input 1 output NN to give output=sin(input)

You can train it also give output=cos(input) which is derivative of sin()

You get a minima/maxima of sin when you equate cos to zero.

Scan for zero output while giving many values from input. 0=cos() -> minima of sin

Wenn Sie die Ausgabe von Null erreichen, wissen Sie, dass der Eingangswert die Minima der Funktion ist.

Das Training dauert weniger und dauert für Null.

Obwohl dies für den Autor dieser Frage etwas zu spät kommt. Vielleicht möchte jemand einige Optimierungsalgorithmen testen, wenn er dies liest ...

Wenn Sie mit Regressionen im maschinellen Lernen (NN, SVM, multipler linearer Regression, k nächster Nachbarn) arbeiten und Sie Ihre Regressionsfunktion minimieren (maximieren) möchten, ist dies tatsächlich möglich, aber die Effizienz solcher Algorithmen hängt von der Geschmeidigkeit ab, die (ordnungsgemäß) ((() (Abhängig ", (abhängig von der Geschmeidigkeit hängt von der Geschmeidigkeit ab, ((((( Stufengröße ... usw.) der Region, in der Sie suchen.

Um solche "Regressionen für maschinelles Lernen" zu konstruieren, können Sie verwenden scikit- lerne. Sie müssen Ihre MLR trainieren und validieren Unterstützen Sie die Vektorregression. ("Fit" -Methode)

SVR.fit(Sm_Data_X,Sm_Data_y)

Dann müssen Sie eine Funktion definieren, die eine Vorhersage Ihrer Regression für ein Array "x" zurückgibt.

def fun(x):
    return SVR.predict(x)

Sie können verwenden scipiy.optimize.minimize zur Optimierung. Siehe die Beispiele nach den DOC-Links.

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