2017-08-13 1 views
1

Als Titel, nach dem Training und Testen meines neuronalen Netzwerkmodells in Python.Kann ich SQP (Sequentielle quadratische Programmierung) in scipy für die Regressionsoptimierung des neuronalen Netzes verwenden?

Kann ich SQP-Funktion in scipy für neuronale Netzwerk-Regression Problemoptimierung verwenden?

Zum Beispiel verwende ich Temperatur, Luftfeuchtigkeit, Windgeschwindigkeit, diese drei Funktionen für die Eingabe, Vorhersage des Energieverbrauchs in einem Bereich.

Also benutze ich ein neuronales Netzwerk, um die Beziehung zwischen Input und Output zu modellieren, jetzt möchte ich wissen, welcher Energieverbrauch am niedrigsten ist, welche Eingabemerkmale sind (zB welche Temperatur, Feuchtigkeit, Windsaat). Dieses Beispiel mag unrealistisch klingen .

Weil, soweit ich weiß, nicht so viele Leute nur scipy für neuronale Netzwerkoptimierung verwenden. Aber in einigen Einschränkungen, scipy ist das idealste Optimierungstool, was ich bis jetzt (ps .: Ich kann cvxopt nicht verwenden).

Kann mir jemand einen Rat geben? Ich werde sehr dankbar sein!

+0

Quadratic Programmierung in diesem Fall nicht einmal anwendbar ist, wie der Verlust Oberfläche nicht konvex ist. –

+0

Aber ich habe einige Papiere über NN Optimierung Problem mit sqp gesehen? –

Antwort

2

Sicher, das ist möglich, aber Ihre Frage ist zu breit, um eine vollständige Antwort zu geben, da alle Details fehlen.

Aber: SLSQP ist nicht das richtige Werkzeug!

  • Es gibt einen Grund, NN Ausbildung von erster Ordnung Methoden wie SGD dominiert wird und all seine Varianten
    • Schnelle Berechnung von Steigungen und einfach in Mini-Batch-Modus zu tun (nicht bezahlen für den vollen Gradienten; weniger Speicher)
    • Sehr unterschiedliche Konvergenztheorie für Stochastic-Gradient-Descent, die normalerweise für große Probleme viel besser ist
    • Im Allgemeinen: schnelle Iterationsgeschwindigkeit (zB Zeit pro Epoche) während möglicherweise nee mehr Epochen ding (für eine vollständige Konvergenz)
  • NN unbeschränkten kontinuierliche Optimierung ist
    • SLSQP eine sehr allgemeine Optimierung der Lage ist, Einschränkungen zu bewältigen, und Sie werden für die (Leistung und Robustheit) zu zahlen
    • LBFGS ist tatsächlich das einzige Werkzeug, manchmal (was ich sah) verwendet, dass (und auch in scipy) zu tun
      • Es ist ein gebundener-constrained Optimierer (keine allgemeinen Einschränkungen als SLSQP)
      • Es nähert sich der inverse hessischen und daher Speichernutzung stark zu BFGS verglichen reduziert und auch SLSQP
    • Beide Methoden Voll Batch-Verfahren sind (im Gegensatz zum Online/mini Art von S GD
      • Sie verwenden auch Line-Suchen oder etwas Ähnliches, was zu weniger Hyper-Parametern führt: keine Lernraten!

Ich glaube, Sie SGD bleiben sollte und es Varianten.

Wenn Sie für die zweite Ordnung Ansatz gehen: learn from sklearn's implementation using LBFGS

+0

Meiner Meinung nach, NN-Training mit wie SGD, ist es passende Eingabe und Ausgabe Datenmuster. Aber wie oben erwähnt, zum Beispiel verwende ich jetzt bereits Temperatur, Feuchtigkeit, Windgeschwindigkeit, diese Merkmale für die Eingabe zum Trainieren von NN zur Vorhersage des Energieverbrauchs, d. Die Beziehung zwischen Input und Output modelliere ich, und ich benutze SGD zum Trainieren. Nun möchte ich den tiefsten Punkt der Energienutzung kennen, d. h. welche Eingangsbedingungen (d. h. welche Temperatur, Feuchtigkeit, Wind) die Energienutzung dieses Gebietes auf den niedrigsten Punkt bringen. Vielleicht ist dieses Problem ein weiteres Optimierungsproblem? Kannst du meine Frage klären? Vielen Dank!!! –

Verwandte Themen