Erstausgabe: 2020/3/3
Verfasser: Soichi Takashige, Masahiro Ito, Hitachi, Ltd.
In diesem Beitrag werden wir das Entwurfs-Know-how der Datenvorverarbeitung und das Ergebnis der Leistungsüberprüfung der numerischen Datenvorverarbeitung beim Entwurf eines Systems mit einem Modell für maschinelles Lernen vorstellen.
In der ersten Folge werden wir die Datenvorverarbeitung des maschinellen Lernsystems und die Gliederung seines Entwurfs vorstellen.
** Beitragsliste: **
Datenanalysen mit KI-Technologie wie maschinellem Lernen ziehen die Aufmerksamkeit auf sich, und die Anzahl der Projekte mit KI nimmt zu. In KI-Projekten analysieren wir Kundendaten, um Modelle für maschinelles Lernen zu erstellen, um Einblicke zu gewinnen und Prognosen zu automatisieren. In vielen Fällen werden AI-Projekte 1) PoC (Proof of Concept) unter der Leitung von Datenwissenschaftlern durchgeführt, die Experten für Datenanalyse sind, und die Nützlichkeit von Datenanalyse- und maschinellen Lernmodellen bestätigt, und 2) die Ergebnisse. Zusätzlich wird der Systemingenieur (im Folgenden als SE bezeichnet) das Produktionssystem herstellen, das in zwei Schritten ausgeführt wird. Zusätzlich zu dem dem Kunden vorgelegten Bericht enthalten die PoC-Ergebnisse des Datenwissenschaftlers Quellcode in einer Sprache wie Python, die SE entwirft und systematisiert.
Eine der Herausforderungen bei der Systematisierung auf der Grundlage von PoC-Ergebnissen ist die Erhöhung der Datenmenge in der Produktionsumgebung. Da es sich bei PoC nur um eine Überprüfung handelt, ist die Datenmenge, die uns von Kunden anvertraut wird, häufig gering. Selbst wenn eine große Datenmenge vorhanden ist, werden die Daten häufig abgetastet und zur schnellen Überprüfung verwendet. Wie Sie sehen können, verwendet PoC normalerweise eine kleine Datenmenge, die auf einem einzelnen Desktop-Computer verarbeitet werden kann. Da andererseits das maschinelle Lernsystem basierend auf den Daten lernt, ist die Vorhersagegenauigkeit umso höher, je größer die Datenmenge ist. Daher wird bei der Herstellung eines Produktionssystems häufig eine große Datenmenge verwendet, um die Vorhersagegenauigkeit zu verbessern, und das maschinelle Lernsystem muss eine hohe Datenverarbeitungsleistung aufweisen.
Während Datenwissenschaftler mit Modellen für maschinelles Lernen umgehen, wird die Datenvorverarbeitung im Allgemeinen hauptsächlich von Ingenieuren wie SE entwickelt. Die Datenvorverarbeitung ist eine Technologie, die eng mit dem Modell des maschinellen Lernens verwandt ist, erfordert jedoch auch Kenntnisse als SE, wie z. B. Infrastrukturdesign, Dimensionierung und Fehlerbehandlung im Fehlerfall. Zu diesem Zeitpunkt ist es nicht effizient, die Vorverarbeitung auf der SE-Seite mit hohen Kosten und Zeit von Grund auf neu zu gestalten und zu implementieren. Daher ist ein Ansatz effektiv, der die Systematisierung durch Verwendung von Prototypen fördert, die von Datenwissenschaftlern in Python usw. entwickelt wurden. Derzeit gibt es jedoch nicht viele öffentliche Informationen über ein solches Design-Know-how. In diesem Beitrag werden wir das Entwurfsverfahren und die Punkte der Datenvorverarbeitung vorstellen, die auf den Erkenntnissen basieren, die aus den Ergebnissen der Leistungsüberprüfung für SEs gewonnen wurden, die die PoC-Phase abgeschlossen haben, und ein System entwerfen, das ein maschinelles Lernmodell enthält. Ich werde.
In einem System, das maschinelles Lernen verwendet, ist es denkbar, eine Datenvorverarbeitung hauptsächlich in den drei Phasen Lernen, Inferenz und Wiederlernen durchzuführen. Abbildung 1 gibt einen Überblick.
Abbildung 1 Übersicht über das maschinelle Lernnutzungssystem
In verschiedenen Formaten gespeicherte Datensätze werden in eine Datenstruktur konvertiert, die zum Trainieren eines bestimmten Modells geeignet ist, und Daten werden normalisiert und aggregiert, um die Genauigkeit zu verbessern. Bei der Vorverarbeitung zum Zeitpunkt des Lernens gibt es viele Fälle, in denen alle Daten gleichzeitig verarbeitet werden, und der Verarbeitungsaufwand ist im Vergleich zum Zeitpunkt der Inferenz tendenziell sehr groß.
Inference verwendet ein Modell, um Trends für Daten zu klassifizieren und vorherzusagen, die im Bereich des tatsächlichen Betriebs gesammelt wurden. Inferenz kann Latenzanforderungen wie Sekunden auferlegen. In diesem Fall unterliegt die Vorverarbeitung auch Latenzanforderungen. Die Datenvorverarbeitung zum Zeitpunkt der Inferenz ist eine Verarbeitung, die eine Konvertierung durchführt, so dass sie dieselben Merkmale wie zum Zeitpunkt des Lernens aufweist, jedoch nur für die abzuleitenden Daten durchgeführt wird, und die Verarbeitung kann vereinfacht werden. Da das Modell bei jeder Verwendung des Modells ausgeführt werden muss, wird es im Produktionssystem häufig kontinuierlich aufgerufen.
Wenn Daten, die zum Lernen verwendet werden können, basierend auf den tatsächlichen Daten am Betriebsort akkumuliert werden, kann das Modell unter Verwendung dieser Daten aktualisiert werden. In einem solchen Fall wird dieselbe Verarbeitung wie bei der Datenvorverarbeitung zum Zeitpunkt des Lernens durchgeführt.
Da PoC von Datenwissenschaftlern häufig mit einer kleinen Datenmenge durchgeführt wird, wird die Vorverarbeitung während des PoC häufig in Python implementiert. Wenn Sie dagegen versuchen, die Vorverarbeitung in Python während der Systematisierung zu implementieren, treten die in Tabelle 1 aufgeführten Probleme auf. Tabelle 1 zeigt auch eine Lösung für dieses Problem.
Tabelle 1 Probleme und Lösungen des Datenvorverarbeitungssystems
# | Aufgabe | Lösungsplan |
---|---|---|
① | Die Vorverarbeitung dauert aufgrund der großen Datenmenge, auf die abgezielt werden soll, sehr lange | Nutzung der Big-Data-VerarbeitungsinfrastrukturEntwickelt und implementiert, sodass die in Python usw. geschriebene Vorverarbeitung parallel ausgeführt und auf einer Verarbeitungsplattform wie Spark verteilt werden kann, wenn die Datenmenge groß ist. |
② | Wenn die Big-Data-Verarbeitungsplattform in (1) verwendet wird, ist eine Neuimplementierung der Vorverarbeitung erforderlich und erfordert viel Personal | Implementierung vor der Verarbeitung im Hinblick auf die Systematisierung ab der PoC-PhaseBei PoC werden wir eine Implementierungsmethode für die Python-Verarbeitung übernehmen und implementieren, die bei der Konvertierung in Spark ohne größere Änderungen funktioniert. |
Entwerfen Sie ein System, das maschinelles Lernen verwendet (siehe Abbildung 2). Wie zu Beginn dieses Beitrags erwähnt, ist es üblich, PoC durchzuführen, um die Nützlichkeit des maschinellen Lernens zu bestätigen und die Logik zu systematisieren, deren Nützlichkeit dort bestätigt wurde.
Abbildung 2 Überblick über den Entwurfsprozess eines Systems, das maschinelles Lernen verwendet
Wie in Abb. 1 gezeigt, gibt es zwei Hauptsysteme, die maschinelles Lernen verwenden: Lernsysteme und Inferenzsysteme. Von nun an werden wir uns mit Lernsystemen befassen. Im Allgemeinen wird das Inferenzsystem mit dem Lernsystem verglichen.
Es gibt eine Tendenz.
Tabelle 2 zeigt die Entwurfselemente beim Entwerfen und Implementieren der Datenvorverarbeitung des Lernsystems. Hier werden nur die Teile angezeigt, die für maschinelles Lernen charakteristisch sind.
Tabelle 2 Liste der Designelemente für Lernsysteme
# | Designartikel | Einzelheiten |
---|---|---|
1 | Prüfung der Systemanforderungen |
|
2 | Datenentwurf |
|
3 | Ressourcenschätzung nach tatsächlicher Maschine |
|
4 | Implementierung |
|
5 | Verfügbarkeitsdesign |
|
6 | Betriebsdesign |
|
Im Lernsystem ist der wichtigste Punkt, ob die Modellentwicklung unter Verwendung der Zieldaten innerhalb des von den Systemanforderungen geforderten Zeitraums abgeschlossen werden kann. In der PoC-Phase werden die Zieldaten häufig nur für einen Teil des Zeitraums (Geräte, Formulare usw.) verarbeitet, in der nachfolgenden Systematisierung werden jedoch der gesamte Zeitraum und alle Arten von Daten verarbeitet. Dies kann zu einer großen Datenmenge führen. Für die Vorverarbeitung ist es wichtig, die für das Systematisierungsdesign erforderlichen Ressourcen (Anzahl der CPUs, Speichermenge) zu schätzen, damit die Verarbeitung innerhalb einer akzeptablen Verarbeitungszeit für große Datenmengen abgeschlossen werden kann.
Wenn Sie die für die Vorverarbeitung erforderlichen Ressourcen ermitteln möchten, überprüfen Sie zunächst die Größe und Verarbeitungszeit der Eingabe- / Ausgabedaten anhand eines kleinen Datensatzes für jeden Prozess in der Vorverarbeitung. Überprüfen Sie auch die Prozesse (Prozesse mit einer großen Anzahl von Wiederholungen), von denen erwartet werden kann, dass sie die Verarbeitungslogik optimieren, die in der zweiten und den folgenden Sitzungen beschrieben wird.
In Bezug auf die Anzahl der CPUs unter den Ressourcen wird die Verarbeitungszeit des Produktionssystems aus der Eingabedatengröße des Produktionssystems basierend auf der Eingabedatengröße und der Verarbeitungszeit bei Verwendung eines kleinen Datensatzes geschätzt (zu diesem Zeitpunkt ist die Verarbeitungszeit Daten). Sie muss proportional zur Größe sein. Indem Sie diese Zeit durch die in den Systemanforderungen angegebene Verarbeitungszeit dividieren, können Sie die ungefähre Anzahl der benötigten CPUs schätzen.
In Bezug auf die Speichermenge wird die Datengröße jedes Prozesses im Produktionssystem basierend auf der Eingabedatengröße jedes Prozesses bei Verwendung eines kleinen Datensatzes geschätzt und die Gesamtgröße geschätzt.
Als Grundlage für die Ausführung der Datenvorverarbeitung des Produktionsvorverarbeitungssystems kann entschieden werden, ob eine Umgebung zum Ausführen von in Python geschriebenem PoC-Code wie in Python oder auf einer verteilten Verarbeitungsplattform wie Spark erstellt werden soll. Wird benötigt. Grundsätzlich ist es aufgrund der Schätzung der erforderlichen Ressourcen eine Richtlinie, mit Spark vorzuverarbeiten, wenn der Speicher nicht ausreicht, und mit Python, wenn es kein Problem mit der Speichermenge gibt.
In diesem Beitrag haben wir einen Überblick über die Datenvorverarbeitung und deren Design für Systeme gegeben, die maschinelles Lernen verwenden. Beim nächsten Mal werde ich das Know-how zur Leistungsverbesserung der Vorverarbeitung numerischer Daten mit Python und das Ergebnis der Leistungsüberprüfung auf dem tatsächlichen Computer vorstellen.
Die zweite: Leistungsüberprüfung der Vorverarbeitung durch maschinelles Lernen numerischer Daten (1)
Recommended Posts