Hauptinhalt

Anpassen von Zeitreihendaten mithilfe der App „Neural Net Time Series“

Dieses Beispiel veranschaulicht, wie ein flaches neuronales Netz mithilfe der App Neural Net Time Series für das Anpassen von Zeitreihendaten trainiert werden kann.

Öffnen Sie die App Neural Net Time Series mithilfe des Befehls ntstool.

ntstool

Auswählen des Netzes

Mithilfe der App Neural Net Time Series können Sie drei verschiedene Arten von Zeitreihenproblemen lösen.

  • Bei der ersten Art von Zeitreihenproblem möchten Sie Zukunftswerte einer Zeitreihe y(t) anhand von Vergangenheitswerten dieser Zeitreihe und Vergangenheitswerten einer zweiten Zeitreihe x(t) vorhersagen. Für diese Form der Vorhersage wird ein nichtlineares autoregressives Netz mit exogenem (externem) Eingang, kurz NARX (Nonlinear AutoRegressive with eXogenous input), verwendet.

  • Bei der zweiten Art von Zeitreihenproblem wird nur eine Reihe berücksichtigt. Die Zukunftswerte einer Zeitreihe y(t) werden ausschließlich aus Vergangenheitswerten dieser Reihe vorhergesagt. Diese Form der Vorhersage wird als nichtlinear autoregressiv, kurz NAR (Nonlinear AutoRegressive), bezeichnet.

  • Das dritte Zeitreihenproblem ähnelt der ersten Problemart, da auch hier zwei Reihen berücksichtigt werden: eine Eingangsreihe (Prädiktoren) x(t) und eine Ausgangsreihe (Antworten) y(t). Hier möchten Sie Werte von y(t) aus vorherigen Werten von x(t) vorhersagen, ohne jedoch die vorherigen Werte von y(t) zu kennen.

Für dieses Beispiel verwenden Sie ein NARX-Netz. Klicken Sie auf Select Network > NARX Network.

Auswählen der Daten

Die App Neural Net Time Series enthält Beispieldaten, die Ihnen den Einstieg in das Training eines neuronalen Netzes erleichtern.

Wählen Sie zum Importieren von Beispieldaten eines Prozesses zur Neutralisierung des pH-Werts Import > More Example Data Sets (Weitere Beispieldatensätze) > Import pH Neutralization Data Set (Datensatz pH-Wert-Neutralisierung importieren) aus. Mit diesem Datensatz können Sie ein neuronales Netz trainieren, das anhand der Durchflussrate einer Säure- und Basenlösung den pH-Wert einer Lösung vorhersagt. Wenn Sie Ihre eigenen Daten aus einer Datei oder aus dem Arbeitsbereich importieren, müssen Sie die Prädiktoren und Antworten angeben.

Informationen über die importierten Daten werden im Fenster Model Summary (Modellzusammenfassung) angezeigt. Dieser Datensatz enthält 2001 Zeitschritte. Die Prädiktoren weisen zwei Merkmale auf (Durchfluss der Säure- und Basenlösungen), die Antworten weisen ein einzelnes Merkmal auf (pH-Wert der Lösung).

Unterteilen Sie die Daten in Trainings-, Validierungs- und Testdatensätze. Behalten Sie die Standardeinstellungen bei. Die Daten sind wie folgt unterteilt:

  • 70 % für das Training.

  • 15 % für die Validierung, um festzustellen, ob das Netz generalisiert, und um das Training zu stoppen, bevor es zu einer Überanpassung kommt.

  • 15 %, um unabhängig zu testen, ob das Netz generalisiert.

Weitere Informationen zur Datenunterteilung finden Sie unter Divide Data for Optimal Neural Network Training.

Erstellen des Netzes

Das Standard-NARX-Netz ist ein zweischichtiges vorwärtsgerichtetes Netz (auch: Feedforward-Netz) mit einer Sigmoid-Transferfunktion in der verborgenen Schicht und einer linearen Transferfunktion in der Ausgangsschicht. Dieses Netz verwendet auch gekoppelte Verzögerungslinien, um Vergangenheitswerte der Sequenzen x(t) und y(t) zu speichern. Beachten Sie, dass der Ausgang des NARX-Netzes, y(t), in den Eingang des Netzes rückgekoppelt wird (durch Verzögerungen), da y(t) eine Funktion von y(t1),y(t2),...,y(td) ist. Für ein effizientes Training kann diese Rückkopplungsschleife jedoch geöffnet werden.

Da der wahre Ausgang während des Trainings des Netzes zur Verfügung steht, können Sie die unten abgebildete Architektur mit offener Schleife verwenden, bei der anstelle der Rückkopplung des geschätzten Ausgangs der wahre Ausgang verwendet wird. Dies hat zwei Vorteile. Erstens ist der Eingang zum vorwärtsgerichteten Netz wesentlich genauer. Zweitens weist das resultierende Netz eine reine vorwärtsgerichtete Architektur auf, weshalb für das Training ein effizienterer Algorithmus verwendet werden kann. Dieses Netz wird in Design Time Series NARX Feedback Neural Networks genauer erläutert.

Der Wert für Layer size (Schichtgröße) definiert die Anzahl der verborgenen Neuronen. Behalten Sie die Standardschichtgröße, 10, bei. Ändern Sie den Wert für Time delay (Zeitverzögerung) in 4. Vielleicht möchten Sie diese Zahlen anpassen, wenn die Leistung des Netztrainings schlecht ist.

Die Netzarchitektur wird im Fensterbereich Network angezeigt.

Trainieren des Netzes

Wählen Sie zum Trainieren des Netzes Train > Train with Levenberg-Marquardt aus. Dies ist der Standard-Trainingsalgorithmus. Er ist identisch mit dem Algorithmus, der beim Klicken auf Train verwendet wird.

Das Training mit „Levenberg-Marquardt“ (trainlm) wird für die meisten Probleme empfohlen. Für rauschbehaftete oder kleine Probleme erzielen Sie mit „Bayesian Regularization“ (trainbr) möglicherweise bessere Ergebnisse, allerdings dauert das Training damit länger. Für große Probleme wird „Scaled Conjugate Gradient“ (trainscg) empfohlen, weil dieser Algorithmus Gradientenberechnungen verwendet, die speichereffizienter sind als die Jacobi-Berechnungen, die von den beiden anderen Algorithmen verwendet werden.

Im Fensterbereich Training wird der Trainingsfortschritt angezeigt. Das Training wird so lange fortgesetzt, bis eines der Stoppkriterien erfüllt ist. In diesem Beispiel wird das Training so lange fortgesetzt, bis der Validierungsfehler größer oder gleich dem zuvor kleinsten Validierungsfehler für sechs aufeinanderfolgende Validierungsiterationen ist („Validierungskriterium erfüllt“).

Analysieren der Ergebnisse

Die Modellzusammenfassung enthält Informationen zum Trainingsalgorithmus und zu den Trainingsergebnissen für die einzelnen Datensätze.

Sie können die Ergebnisse weiter analysieren, indem Sie Diagramme generieren. Zum Darstellen der Autokorrelation der Fehler klicken Sie im Abschnitt Plots (Diagramme) auf Error Autocorrelation (Autokorrelation der Fehler). Das Autokorrelationsdiagramm beschreibt, wie die Vorhersagefehler zeitlich zusammenhängen. Für ein perfektes Vorhersagemodell sollte nur ein Wert der Autokorrelationsfunktion ungleich null vorliegen und er sollte mit Nullverzögerung auftreten (hierbei handelt es sich um die mittlere quadratische Abweichung). Dies würde bedeuten, dass die Vorhersagefehler untereinander völlig unzusammenhängend wären (weißes Rauschen). Läge in den Vorhersagefehlern eine signifikante Korrelation vor, sollte es möglich sein, die Vorhersage zu verbessern – vielleicht durch Erhöhung der Anzahl von Verzögerungen in den gekoppelten Verzögerungslinien. In diesem Fall liegen die Korrelationen, mit Ausnahme derjenigen bei der Nullverzögerung, in etwa innerhalb der 95-%-Konfidenzgrenzen um null, sodass das Modell angemessen zu sein scheint. Wenn noch genauere Ergebnisse benötigt würden, könnten Sie das Netz neu trainieren. Dadurch ändern sich die Anfangsgewichtungen und -verzerrungen des Netzes und möglicherweise entsteht nach einem Neutraining ein verbessertes Netz.

Sehen Sie sich das Kreuzkorrelationsdiagramm der Eingangsfehler an, um die Leistung des Netzes zusätzlich zu überprüfen. Klicken Sie im Abschnitt Plots (Diagramme) auf Input-Error Correlation (Eingangsfehlerkorrelation). Das Diagramm mit der Kreuzkorrelation der Eingangsfehler veranschaulicht, wie die Fehler in der Eingangssequenz x(t) korreliert sind. Für ein perfektes Vorhersagemodell sollten alle Korrelationen gleich null sein. Wenn der Eingang mit dem Fehler korreliert, sollte es möglich sein, die Vorhersage zu verbessern – vielleicht durch Erhöhung der Anzahl von Verzögerungen in den gekoppelten Verzögerungslinien. In diesem Fall liegen die meisten Korrelationen innerhalb der Konfidenzgrenzen um null.

Klicken Sie im Abschnitt Plots (Diagramme) auf Response (Antwort). Dadurch werden die Ausgänge, Antworten (Ziele) und Fehler abhängig von der Zeit angezeigt. Außerdem wird angegeben, welche Zeitpunkte für das Training, die Tests und die Validierung ausgewählt wurden.

Wenn Sie mit der Leistung des Netzes nicht zufrieden sind, können Sie eine der folgenden Möglichkeiten nutzen:

  • Trainieren Sie das Netz neu.

  • Erhöhen Sie die Anzahl der verborgenen Neuronen.

  • Verwenden Sie einen größeren Trainingsdatensatz.

Wenn die Trainingsdaten zu einer guten Leistung führt, die Testdaten jedoch nicht, könnte dies auf eine Überanpassung des Modells hinweisen. Durch eine Verringerung der Schichtgröße, und daher auch der Anzahl der Neuronen, kann die Überanpassung reduziert werden.

Sie können die Leistung des Netzes auch anhand eines zusätzlichen Testdatensatzes beurteilen. Um zusätzliche Testdaten zur Beurteilung des Netzes zu laden, klicken Sie im Abschnitt Test auf Test. In der Modellzusammenfassung werden die zusätzlichen Testdatenergebnisse angezeigt. Sie können auch Diagramme generieren, um die zusätzlichen Testdatenergebnisse zu analysieren.

Generieren von Code

Wählen Sie Generate Code > Generate Simple Training Script (Einfaches Trainingsskript generieren) aus, um MATLAB-Programmcode zu erstellen, mit dem die vorherigen Schritte über die Befehlszeile reproduziert werden können. Das Erstellen von MATLAB-Programmcode kann hilfreich sein, wenn Sie lernen möchten, wie die Befehlszeilenfunktionen der Toolbox zum Anpassen des Trainingsprozesses genutzt werden können. In Anpassen von Zeitreihendaten mithilfe von Befehlszeilenfunktionen werden Sie die generierten Skripte näher untersuchen.

Exportieren des Netzes

Sie können Ihr trainiertes Netz in den Arbeitsbereich oder nach Simulink® exportieren. Sie können das Netz auch mit den Tools von MATLAB Compiler™ und anderen Tools zum Generieren von MATLAB-Programmcode bereitstellen. Wählen Sie zum Exportieren Ihres trainierten Netzes und der Ergebnisse die Optionen Export Model > Export to Workspace (In den Arbeitsbereich exportieren) aus.

Siehe auch

| | | | | | | | |

Themen