ist a Recreation Changer im maschinellen Lernen. In der jüngsten Geschichte von Tiefes Lernendie Idee, Modelle zuzulassen Konzentrieren Sie sich auf die relevantesten Teile einer Eingabesequenz, als eine Vorhersage die Artwork und Weise, wie wir neuronale Netzwerke betrachten, vollständig revolutioniert haben.

Davon abgesehen gibt es eine kontroverse Einstellung, die ich über den Aufmerksamkeitsmechanismus habe:

Der beste Weg zu lernen Der Aufmerksamkeitsmechanismus ist nicht durch natürliche Sprachverarbeitung (NLP)

Es ist (technisch) aus zwei Gründen umstritten.

  1. Menschen verwenden natürlich NLP -Fälle (z. B. Translation oder NSP), da NLP der Grund ist, warum der Aufmerksamkeitsmechanismus überhaupt entwickelt wurde. Das ursprüngliche Ziel battle zu die Grenzen von RNNs und CNNs überwinden Bei der Behandlung von Abhängigkeiten mit langfristigen Sprachen (wenn Sie es noch nicht getan haben, sollten Sie das Papier wirklich lesen Aufmerksamkeit ist alles was Sie brauchen).
  2. Zweitens muss ich auch sagen, dass es sehr intuitiv ist, um die allgemeine Idee zu verstehen, die „Aufmerksamkeit“ auf ein bestimmtes Wort zu setzen, um Übersetzungsaufgaben zu erledigen.

Abgesehen davon, wenn wir verstehen wollen, wie Aufmerksamkeit in einem praktischen Beispiel wirklich funktioniert, glaube ich das Zeitreihe ist der beste Rahmen. Es gibt viele Gründe, warum ich das sage.

  1. Pc sind nicht wirklich „gemacht“, um mit Saiten zu arbeiten. Sie arbeiten mit Einen und Nullen. Alle Einbettungsschritte, die erforderlich sind, um den Textual content in Vektoren umzuwandeln, fügen eine zusätzliche Komplexitätsebene hinzu, die nicht streng mit der Aufmerksamkeitsidee zusammenhängt.
  2. Der Aufmerksamkeitsmechanismus, obwohl er zum ersten Mal für Textual content entwickelt wurde, hat viele andere Anwendungen (z. B. in Pc Imaginative and prescient). Daher magazine ich die Idee, auch die Aufmerksamkeit aus einem anderen Blickwinkel zu erforschen.
  3. Mit Zeitreihe Insbesondere können wir sehr kleine Datensätze erstellen und unsere Aufmerksamkeitsmodelle in Minuten (ja, einschließlich des Trainings) ohne ausgefallene GPUs ausführen.

In diesem Weblog -Beitrag werden wir sehen, wie wir einen Aufmerksamkeitsmechanismus für Zeitreihen aufbauen können, insbesondere in einem Einstufung aufstellen. Wir werden mit Sinuswellen arbeiten und versuchen, eine normale Sinuswelle mit einer „modifizierten“ Sinuswelle zu klassifizieren. Die „modifizierte“ Sinuswelle wird durch erstellt von Abflachung eines Teils des ursprünglichen Indicators. Das heißt, an einem bestimmten Ort in der Welle entfernen wir einfach die Schwingung und ersetzen sie durch eine flache Linie, als ob das Sign vorübergehend angehalten oder beschädigt worden wäre.

Dinge mehr machen scharfWir werden annehmen, dass der Sinus alles haben kann Frequenz oder Amplitude, und das die Standort und Erweiterung (wir nennen es Länge) des „behobenen“ Teils sind ebenfalls Parameter. Mit anderen Worten, der Sinus kann jeder Sinus sein, und wir können unsere „gerade Linie“ überall auf der Sinuswelle setzen.

Nun, OK, aber warum sollten wir uns überhaupt um den Aufmerksamkeitsmechanismus kümmern? Warum verwenden wir nicht etwas Einfacheres, wie das Feed Ahead Neural Networks (FFNs) oder Figolutional Neural Networks (CNNs)?

Nun, da wir wieder davon ausgehen, dass das „modifizierte“ Sign überall „abgeflacht“ werden kann (an welchem ​​Ort der Timeseries) und es für jede Länge abgeflacht werden kann (der behobene Teil kann die Länge haben). Dies bedeutet, dass ein Customary neuronales Netzwerk nicht so effizient ist, da sich der anomale „Teil“ der Timeserien nicht immer im selben Teil des Indicators befindet. Mit anderen Worten, wenn Sie nur versuchen, dies mit einer linearen Gewichtsmatrix + einer nicht linearen Funktion zu bewältigen, werden Sie suboptimale Ergebnisse erzielen, da der Index 300 der Zeitreihe 1 vollständig von Index 300 der Time -Serie 14 unterscheidet. Was wir stattdessen benötigen, ist ein dynamischer Ansatz, der die Aufmerksamkeit auf den anomalen Teil der Serie macht. Deshalb glänzt (und wo) die Aufmerksamkeitsmethode.

Dieser Weblog -Beitrag wird in diese 4 Schritte unterteilt:

  1. Code -Setup. Bevor ich in den Code eingehe, werde ich das Setup mit allen Bibliotheken, die wir benötigen, anzeigen.
  2. Datenerzeugung. Ich werde den Code bereitstellen, den wir für den Datenerzeugungsteil benötigen.
  3. Modellimplementierung. Ich werde die Implementierung des Aufmerksamkeitsmodells bereitstellen
  4. Erforschung der Ergebnisse. Der Vorteil des Aufmerksamkeitsmodells wird durch die Aufmerksamkeitswerte und Klassifizierungsmetriken angezeigt, um die Leistung unseres Ansatzes zu bewerten.

Es scheint, als hätten wir viel Boden zu bedecken. Fangen wir an! 🚀


1. Code -Setup

Bevor wir uns mit dem Code befassen, lassen wir einige Freunde auf, die wir für den Relaxation der Implementierung benötigen.

Dies sind nur Standardwerte, die während des gesamten Projekts verwendet werden können. Was Sie unten sehen, ist die kurze und süße Anforderungen.txt -Datei.

Ich magazine es, wenn sich die Dinge leicht verändern und modular sind. Aus diesem Grund habe ich eine .json -Datei erstellt, in der wir alles am Setup ändern können. Einige dieser Parameter sind:

  1. Die Anzahl der normalen gegen abnormalen Zeitreihen (die Verhältnis zwischen den beiden)
  2. Die Anzahl der Zeitreihenschritte (wie lange Ihre Timeseries sind)
  3. Die Größe des generierten Datensatzes
  4. Die min- und maximalen Stellen und Längen des linearisierten Teils
  5. Viel mehr.

Die .json -Datei sieht so aus.

Bevor Sie zum nächsten Schritt gehen, stellen Sie sicher, dass Sie:

  1. Der Constants.py Die Datei befindet sich in Ihrem Arbeitsordner
  2. Der .Json -Datei in Ihrem Arbeitsordner oder auf einem Pfad, an den Sie sich erinnern
  3. Der Bibliotheken In den Anforderungen.txt -Datei wurden die Datei installiert

2. Datenerzeugung

Zwei einfache Funktionen bauen die normale Sinuswelle und die modifizierte (behobene). Der Code dafür findet sich in Data_utils.py:

Jetzt, wo wir die Grundlagen haben, können wir alle Backend -Arbeiten erledigen Information.py. Dies soll die Funktion sein, die alles macht:

  1. Empfängt die Setup -Informationen aus der .json -Datei (deshalb brauchen Sie sie!)
  2. Baut die modifizierten und normalen Sinuswellen auf
  3. Tritt der Zug/Check aufgeteilt und trainiert/val/check für die Modellvalidierung

Das Skript von Information.Py ist das folgende:

Das zusätzliche Datenskript ist dasjenige, das die Daten für Taschenlampe (Sinuswavetorchdataset) vorbereitet, und es sieht so aus:

Wenn Sie einen Blick darauf werfen möchten, ist dies eine zufällige anomale Zeitreihe:

Bild vom Autor generiert

Und dies ist eine nicht anomale Zeitreihe:

Bild vom Autor generiert

Nachdem wir unseren Datensatz haben, können wir uns um die Modellimplementierung sorgen.


3. Modelimplementierung

Die Implementierung des Modells, des Trainings und des Laders findet sich in der mannequin.py Code:

Lassen Sie mich nun etwas Zeit nehmen, um zu erklären, warum der Aufmerksamkeitsmechanismus hier ein Spielveränderer ist. Im Gegensatz zu FFNN oder CNN, die alle Zeitschritte gleichermaßen behandeln, unterstreicht die Aufmerksamkeit die Teile der Sequenz, die für die Klassifizierung am wichtigsten sind, dynamisch hervor. Auf diese Weise kann das Modell in den anomalen Abschnitt (unabhängig davon, wo es erscheint) „zoomen“ und es für unregelmäßige oder unvorhersehbare Zeitreihenmuster besonders leistungsfähig macht.

Lassen Sie mich hier präziser sein und über das neuronale Netzwerk sprechen.
In unserem Modell verwenden wir ein bidirektionales LSTM, um die Zeitreihe zu verarbeiten, und erfasst bei jedem Zeitschritt sowohl der vergangene als auch zukünftige Kontext. Anstatt die LSTM -Ausgabe direkt in einen Klassifikator zu füttern, berechnen wir die Aufmerksamkeitswerte über die gesamte Sequenz. Diese Ergebnisse bestimmen, wie viel Gewicht jedes Zeitschritt bei der Bildung des endgültigen Kontextvektors zur Klassifizierung haben sollte. Dies bedeutet, dass das Modell lernt, sich nur auf die sinnvollen Teile des Indicators (dh die flache Anomalie) zu konzentrieren, egal wo sie auftreten.

Verbinden wir nun das Modell und die Daten, um die Leistung unseres Ansatzes zu erkennen.


4. Ein praktisches Beispiel

4.1 Coaching des Modells

Angesichts des großen Backend -Teils, den wir entwickeln, können wir Zug Das Modell mit diesem tremendous einfachen Codeblock.

Dies dauerte ungefähr 5 Minuten auf der CPU.
Beachten Sie, dass wir (im Backend) einen frühen Stopp und einen Zug/Val/Check implementiert haben, um eine Überanpassung zu vermeiden. Wir sind verantwortungsbewusste Kinder.

4.2 Aufmerksamkeitsmechanismus

Verwenden wir hier die folgende Funktion, um den Aufmerksamkeitsmechanismus zusammen mit der Sinusfunktion anzuzeigen.

Zeigen wir die Aufmerksamkeitswerte für eine normale Zeitreihe.

Bild generiert vom Autor verwendet den obigen Code

Wie wir sehen können, werden die Aufmerksamkeitswerte in den Bereichen, in denen es einen flachen Teil gibt, der sich in der Nähe der Gipfel befinden, lokalisiert (mit einer Artwork Zeitverschiebung). Trotzdem sind diese auch nur Lokalisierte Spikes.

Schauen wir uns nun eine anomale Zeitreihe an.

Bild generiert vom Autor verwendet den obigen Code

Wie wir hier sehen können, erkennt das Modell (mit der gleichen Zeitverschiebung) den Bereich, in dem die Funktion ausgeht. Diesmal ist es jedoch kein lokalisierter Gipfel. Es ist ein ganzer Abschnitt des Indicators, in dem wir höher als die gewöhnlichen Ergebnisse haben. Bingo.

4.3 Klassifizierungsleistung

Okay, das ist schön und alles, aber funktioniert das? Implementieren wir die Funktion, um den Klassifizierungsbericht zu generieren.

Die Ergebnisse sind die folgenden:

Genauigkeit : 0,9775
Präzision:
0,9855
Abrufen :
0,9685
F1 -Punktzahl:
0,9769
ROC AUC -Rating
: 0,9774

Verwirrungsmatrix:
((1002 14)
(31 953))

Sehr hohe Leistung in Bezug auf alle Metriken. Funktioniert wie ein Zauber. 🙃


5. Schlussfolgerungen

Vielen Dank, dass Sie diesen Artikel gelesen haben. Es bedeutet viel. Fassen wir zusammen, was wir auf dieser Reise gefunden haben und warum dies hilfreich battle. In diesem Weblog -Beitrag haben wir den Aufmerksamkeitsmechanismus in einer Klassifizierungsaufgabe für Zeitreihen angewendet. Die Klassifizierung lag zwischen normalen Zeitreihen und „modifizierten“. Mit „modifiziert“ meinen wir, dass ein Teil (ein zufälliger Teil mit zufälliger Länge) korrigiert wurde (ersetzt durch eine gerade Linie). Wir fanden das:

  1. Aufmerksamkeitsmechanismen wurden ursprünglich in NLP entwickelt. Sie zeichnen sich aber auch aus, Anomalien in Zeitreihendaten zu identifizieren, insbesondere wenn sich die Place der Anomalie zwischen den Proben variiert. Diese Flexibilität ist mit herkömmlichen CNNs oder FFNNs schwer zu erreichen.
  2. Durch Verwendung eine bidirektionale LSTM in Kombination mit einer AufmerksamkeitsschichtUnser Modell lernt, welche Teile der Sign am meisten wichtig sind. Wir haben gesehen, dass ein posteriori durch die Aufmerksamkeitswerte (Alpha), die zeigen, welche Zeitschritte für die Klassifizierung am relevantesten waren. Dieser Framework bietet einen transparenten und interpretierbaren Ansatz: Wir können die Aufmerksamkeitsgewichte visualisieren, um zu verstehen, warum das Modell eine bestimmte Vorhersage gemacht hat.
  3. Mit minimalen Daten und ohne GPU haben wir in wenigen Minuten ein hoch genaues Modell (F1 -Rating ≈ 0,98) geschult, was beweist, dass die Aufmerksamkeit auch für kleine Projekte zugänglich und leistungsfähig ist.

6. über mich!

Nochmals vielen Dank für Ihre Zeit. Es bedeutet viel ❤️

Mein Identify ist Piero Paialunga und ich bin dieser Typ hier:

Ich bin ein Ph.D. Kandidat an der Abteilung für Luft- und Raumfahrttechnik der Universität von Cincinnati. Ich spreche in meinen Weblog -Posts und auf LinkedIn und hier auf TDS über KI und maschinelles Lernen. Wenn Ihnen der Artikel gefallen hat und mehr über maschinelles Lernen erfahren und meinem Studium folgen möchten, können Sie:

A. Folgen Sie mir weiter LinkedInwo ich alle meine Geschichten veröffentliche
B. Folgen Sie mir weiter Githubwo du alle meinen Code sehen kannst
C. Für Fragen können Sie mir eine E -Mail an senden (E -Mail geschützt)

Ciao!

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert