Teile und herrsche (Nr. 2)

Ich vermute, dass das tiefe neuronale Netz durch das One-Hot-Encoding in Wirklichkeit nicht ein generalistisches Modell darstellen wird, sondern quasi pro Tankstelle ein Submodell beinhaltet, das sich durch die Aktivierung geringer Teile der Neuronen ergibt. Der Vorteil eines so großen Modells, sehr komplexe Zusammenhänge abbilden zu können, würde damit gar nicht zum Tragen kommen.

Warum trainiere ich also nicht einfach pro Tankstelle ein eigenes Modell? Möglich wäre es, jedoch bieten nicht alle Tankstellen alle drei Spritsorten an. Die Methodiken zur Preisanpassung können sich deshalb auch je nach Spritsorte unterscheiden, so dass ich nicht nur pro Tankstelle ein Modell brauche, sondern auch pro Spritsorte. Bei knapp 14.500 aktiven Tankstellen und drei Spritsorten ergäbe das 43.500 Modelle, aber da eben nicht alle Tankstellen alles anbieten, runde ich auf 40.000 Modelle ab.

40.000 Modelle zu trainieren, klingt für mich erstmal nach einem Wahnsinn, der viel Rechenleistung erfordert. Bei näherer Betrachtung zeigt sich aber, dass das gar nicht so sein muss.

Da jedes Modell genau eine Tankstelle und eine Spritsorte abdeckt, sinkt der Trainingsaufwand beträchtlich. Denn für eine Tankstelle sind nur die anderen Tankstellen in unmittelbarer Nähe relevant und deren aktuelle Preise kann ich schnell bestimmen. Das hält den Eingabevektor fürs Modell kompakt.

Das Modell wird zudem relativ schnell trainierbar sein, da es insgesamt sehr klein sein kann. Der größte Vorteil ist aber die unschlagbare Flexibilität. Eine neue Tankstelle wurde eröffnet? Kein Problem, ich trainiere jeweils ein Modell für diese und alle Tankstellen in der Nähe. Eine Tankstelle wurde geschlossen oder bietet eine Spritsorte nicht mehr an? Auch kein Thema, ich lösche überflüssige Modelle und trainiere die Modelle der Tankstelle in der Nähe neu.

Dies lässt sich alles sehr einfach automatisieren und ist überhaupt kein Vergleich zum Neutrainieren eines tiefen, neuronalen Netzes, das alle Tankstellen berücksichtigen muss.

Maschinelles Lernen auf Datenströmen als Schlüssel

Jedoch muss ich noch Concept Drifts/Shifts erkennen bzw. kompensieren, die sich durch die Veränderung der Methodik zur Preisanpassung einer Tankstelle ergeben können. Interessanterweise gibt es auch eine wissenschaftliche Community, die sich mit dem temporalen, maschinellen Lernen auf Datenströmen beschäftigt und so angepasste Lernverfahren hervorbringt, die sich sehr schnell an geänderte Zusammenhänge anpassen können.

  • Preisentwicklung für Diesel an einer Tankstelle (Bild: Andreas Meier)
  • Entwicklung der Anzahl registrierter Tankstellen; alte nicht gelöscht (Bild: Andreas Meier)
  • Angedachte Spritpreisvorhersage  (Bild: Andreas Meier)
  • Kontinuierliches maschinelles Lernen auf Datenströmen, hier per Windowing, mit Vorhersage von i' (Bild: Andreas Meier)
  • Ablauf der Trainings- und Inferenzkomponente (Bild: Andreas Meier)
Kontinuierliches maschinelles Lernen auf Datenströmen, hier per Windowing, mit Vorhersage von i' (Bild: Andreas Meier)

Das Grundprinzip dieser Verfahren zur Adaption an geänderte Zusammenhänge ist immer mehr oder weniger das gleiche: Sie implementieren eine Technik, um vergessen zu können. Dabei werden die Modelle häufig kontinuierlich neu trainiert, sobald ein neues Datum vorliegt.

So können diese Modelle dann etwa nur die n neuesten Daten berücksichtigen ("Windowing", wie in Abb. 4 dargestellt), oder sie arbeiten mit einer Gewichtung, die ältere Daten als unwichtiger als neuere Daten erscheinen lässt.

Je nachdem, wie klein man das Window oder die Gewichtungsverteilung definiert, variiert das "Gedächtnis" des Modells und versetzt es in die Lage, schneller neue Zusammenhänge zu erkennen. Allerdings kann ein Modell bei zu kurzem Gedächtnis auch empfindlicher gegenüber Rauschen werden und schneller vermeintlich neue Zusammenhänge erkennen, die es gar nicht gibt.

Spannend ist zudem, dass typische Ansätze des klassischen maschinellen Lernens für die temporale Variante nicht mehr gelten. Die Unterteilung eines Datensatzes in Trainings-, Validierungs- und Testdaten in der Entwicklungsphase ist nicht mehr erforderlich. Da das Modell auf einem Datenstrom arbeitet, sagt es immer nur den nächsten Wert voraus. Da der tatsächliche nächste Wert aber mit dem nächsten Datum des Datenstroms bekannt wird, wird dieses Datum automatisch Teil des Trainingsdatensatzes.

Das temporale Modell kann also kontinuierlich auf Basis der ehemaligen Vorhersagen lernen und so seine Güte verbessern. Dies führt übrigens dazu, dass klassische Metriken zur Performancemessung nicht mehr gut funktionieren, weshalb es etwa von (Cohen's) Kappa mittlerweile auch eine temporale Variante gibt.

Programmschleife mit kontinuierlich neu gelernten Modellen

  • Preisentwicklung für Diesel an einer Tankstelle (Bild: Andreas Meier)
  • Entwicklung der Anzahl registrierter Tankstellen; alte nicht gelöscht (Bild: Andreas Meier)
  • Angedachte Spritpreisvorhersage  (Bild: Andreas Meier)
  • Kontinuierliches maschinelles Lernen auf Datenströmen, hier per Windowing, mit Vorhersage von i' (Bild: Andreas Meier)
  • Ablauf der Trainings- und Inferenzkomponente (Bild: Andreas Meier)
Ablauf der Trainings- und Inferenzkomponente (Bild: Andreas Meier)

Wenn ich alle Ideen zusammenfüge, ergibt sich die wesentliche Programmschleife aus der Abbildung. Diese wird alle zehn Minuten wiederholt und aktualisiert die Prognosen für die Preisentwicklung der nächsten dreißig Minuten. Dazu werden zu Beginn die aktuellen Preise für alle Tankstellen aus der Datenbank in den RAM geladen.

Innerhalb des Programms habe ich einen Cache-Service integriert, damit nicht ständig über JDBC die Datenbank angefragt werden muss, sondern stattdessen die Werte schnell aus einer internen Map bereitgestellt werden können. Anschließend wird nacheinander jedes Modell einer Tankstelle und Spritsorte vom Dateisystem geladen und anhand des aktuellen Preises an dieser Tankstelle das Modell weiter trainiert. Dieses Modell wird anschließend wieder persistent gespeichert und eine Preisvorhersage für die nächsten 30 Minuten bestimmt, die wiederum gecacht wird.

Zehn Minuten klingen als Schleifendauer erst einmal lang, sind aber tatsächlich ziemlich kurz. Denn innerhalb dieser 600 Sekunden müssen 40.000 Modelle aktualisiert und zur Preisprognose genutzt werden. Das sind gerade mal 15 Millisekunden pro Modell, wenn ich eine Parallelisierung außen vorlasse.

Natürlich könnte ich die Modelle nur on demand aktualisieren, also immer dann, wenn eine Preisvorhersage angefragt wird. Jedoch reichen aufgrund der Umkreissuche nach Tankstellen schon relativ wenige, über Deutschland verteilte parallele Anfragen, um einen Großteil der Tankstellen anzufragen.

Zudem ist die Stärke des maschinellen Lernens auf Datenströmen, dass ich ständig die Modelle aktualisieren kann. Wird ein Modell nur sehr selten benötigt, hätte das zur Folge, dass ich alle Preisänderungen seit der letzten Abfrage dieses Modell rekonstruieren und aus der Datenbank abfragen müsste, was wieder einiges an Zeit kostet.

Insofern ist es einfacher, wenngleich auch bei geringer Nutzerzahl rechenaufwendiger, einfach ständig alle Modelle zu aktualisieren. Klar ist aber auch, dass das Training und die Inferenz deshalb sehr schnell ablaufen müssen.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Warum Deep Learning diesmal keine gute Idee istDie Wahl des Lernverfahrens 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7.  


ChristophMoehl 27. Apr 2023 / Themenstart

Danke für die ausführliche und erhellende Antwort. Der Punkt mit den Standortfaktoren ist...

Brennholzverleih 25. Apr 2023 / Themenstart

Aber solange sein Hobby jedes mal bei mir übers Grundstück geht nervt mich das schon...

Lemo 25. Apr 2023 / Themenstart

Ich danke dir für die Warnung, allerdings glaube ich, dass mein Motor das mit seinen...

Emulex 25. Apr 2023 / Themenstart

Die Deutschen sind Sparfüchse, die wollen das. Man kauft im Angebot - im Supermarkt...

Kommentieren



Aktuell auf der Startseite von Golem.de
Forschung
Erstes Röntgenbild von einem einzelnen Atom

Bisher war die Röntgenemission eines einzelnen Atoms zu schwach, um es auf einer Röntgenaufnahme abzulichten. Mit einer neuen Technik geht das jetzt.

Forschung: Erstes Röntgenbild von einem einzelnen Atom
Artikel
  1. Streaming: Verbraucherschützer warnen vor Netflix-Phishing
    Streaming
    Verbraucherschützer warnen vor Netflix-Phishing

    Phishing-Nachrichten im Namen von Netflix sind nichts Neues - in der aktuellen Verwirrung rund um das Kontensharing könnten sie aber einfacher verfangen.

  2. Chatsoftware: Microsoft will Teams zum Discord-Konkurrenten machen
    Chatsoftware
    Microsoft will Teams zum Discord-Konkurrenten machen

    Microsoft bringt das Community-Feature in Teams für Windows 11. Außerdem können User mittels KI Bilder und Ankündigungskarten erstellen.

  3. US Air Force: KI-Drohne bringt in Gedankenexperiment Befehlshaber um
    US Air Force  
    KI-Drohne bringt in Gedankenexperiment Befehlshaber um

    Die US Air Force und der verantwortliche Offizier stellen klar, dass es sich nur um ein Gedankenspiel handelt - und keinen echten Test.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    • Daily Deals • Tiefstpreise: AMD Ryzen 9 7900X3D 534€, KFA2 RTX 3060 Ti 329,99€, Kingston Fury SSD 2TB (PS5-komp.) 129,91€ • Sony Days of Play: PS5-Spiele & Zubehör bis -70% • Roccat PC-Zubehör bis -50% • AVM Modems & Repeater bis -36% • Sony Deals Week [Werbung]
    •  /