Die Planung von ML-Projekten unterscheidet sich von der Planung typischer Softwareentwicklungsprojekte. ML-Projekte sind in der Regel nicht linear und weisen unterschiedliche Unsicherheitsgrade auf. Sie erfordern einen iterativen Ansatz und eine experimentelle Denkweise.
Projektunsicherheit
Die Planung in der Anfangsphase kann schwierig sein, da der beste Ansatz zu Beginn eines Projekts in der Regel nicht klar ist. Diese inhärente Unsicherheit erschwert die Schätzung von Zeitplänen.
Ein aktueller Kaggle-Wettbewerb veranschaulicht die Unsicherheit von ML-Projekten. In den ersten Wochen eines Wettbewerbs nahmen 350 Teams teil. Die besten Teams konnten die Qualität der Benchmark-Prognose von 35% auf 65 % steigern. In den nächsten zwei Wochen stieg die Anzahl der Teams, die an dem Problem arbeiteten, von 350 auf 1.400. Das beste Modell erreichte jedoch nur eine Vorhersagequalität von 68%.
Abbildung 3 veranschaulicht die Unsicherheit bei der ML-Entwicklung. Sie zeigt den erheblichen Anstieg des Arbeitsaufwands, aber nur minimale Verbesserungen bei der Modellqualität.
Abbildung 3. Innerhalb von zwei Wochen stieg die Anzahl der Teams, die an dem Problem arbeiteten, um das Vierfache, die Qualität des Modells blieb jedoch nahezu gleich. Das zeigt, wie schwierig es ist, den Aufwand für eine ML-Lösung zu schätzen.
Mit anderen Worten: Über tausend Teams, die jeweils mit einer Vielzahl von Datentransformationen, Architekturen und Hyperparametern experimentierten, konnten nur ein Modell mit einer Vorhersagequalität von 68% entwickeln.
Ein Beispiel aus der Industrie veranschaulicht die Nichtlinearität von ML-Projekten, bei denen die Ausgabe nicht proportional zu den Eingaben ist. Zwei Teams benötigten mehrere Monate, um ein Modell mit einer Vorhersagequalität von 90% zu trainieren. Es dauerte jedoch mehr als fünf Jahre, bis mehrere Teams das Modell mit einer Vorhersagequalität von 99,9% für die Produktion bereitstellen konnten.
Diese Beispiele verdeutlichen, dass die Entwicklung produktionsreifer ML-Modelle ein explorativer Prozess ist, der sowohl wissenschaftliche als auch technische Kenntnisse erfordert.
Experimenteller Ansatz
In den meisten Fällen ähnelt die ML-Entwicklung eher dem Durchführen von Experimenten als dem traditionellen Softwareentwicklungsprozess. Beim maschinellen Lernen müssen verschiedene Funktionen getestet, mehrere Architekturen ausprobiert und Hyperparameter genau abgestimmt werden. Tests sind per Definition nicht immer erfolgreich. Aus diesem Grund ist es am besten, ein Test-Framework zu verwenden.
Sehen wir uns einen typischen Softwareentwicklungsplan an, um zu sehen, wie er sich von einem ML-Projektplan unterscheidet.
Softwareentwicklungsprojekte planen
In einem typischen Softwareentwicklungsplan definieren Sie die Anforderungen, skizzieren die Komponenten, schätzen den Aufwand und planen die Arbeit. Es gibt einen klar definierten Weg zu einer Lösung. Entwickler wissen beispielsweise oft mit hoher Sicherheit, welche Aufgaben sie erledigen müssen, um eine Anwendung zu entwickeln, die den Designanforderungen entspricht.
Wenn sie die Zeit vorhersagen, die für die Erledigung einer Aufgabe benötigt wird, können sie die Arbeit anhand ähnlicher Projekte schätzen. Es treten zwar immer wieder Herausforderungen auf, wie unbekannte Abhängigkeiten oder sich ändernde Anforderungen, die die Schätzung manchmal erschweren können, aber es gibt in der Regel einen klaren Weg zur Lösung.
Im Gegensatz dazu gibt es bei ML-Projekten normalerweise keinen klaren Weg zum Erfolg.
ML-Projekte planen
Bei den meisten ML-Projekten finden Sie die beste Lösung, indem Sie mit mehreren Ansätzen im Rahmen eines Versuch-und-Irrtum-Prozesses experimentieren. Normalerweise wissen Sie nicht, welche Lösung für Ihr Problem am besten geeignet ist, bevor Sie versuchen, es zu lösen. Die Architektur der optimalen Lösung kann beispielsweise ein einfaches lineares Modell, ein neuronales Netzwerk oder ein Entscheidungsbaum sein. Nur wenn Sie alle Ansätze ausprobieren, können Sie die beste Lösung finden.
Diese Unklarheit erschwert die Planung. Wie bereits erwähnt, ist es schwierig, den Aufwand für ein ML-Projekt vorherzusagen. Nur wenn Sie versuchen, das Problem zu lösen, können Sie ein besseres Gefühl dafür bekommen, wie viel Zeit und Ressourcen eine Lösung möglicherweise erfordert.
Für die Planung von ML-Arbeiten empfehlen wir die folgenden Strategien:
Legen Sie eine Zeitspanne für die Arbeit fest. Legen Sie klare Zeiträume fest, um Aufgaben zu erledigen oder eine bestimmte Lösung zu versuchen. Sie können beispielsweise zwei Wochen einplanen, um festzustellen, ob Sie Zugriff auf die richtigen Daten erhalten. Wenn Sie die Daten erhalten können, sollten Sie zwei weitere Wochen einplanen, um zu sehen, ob ein einfaches Modell darauf hindeutet, dass eine ML-Lösung machbar ist. Wenn ein einfaches Modell versagt, können Sie zwei weitere Wochen für ein neuronales Netzwerk einplanen. Am Ende jedes Zeitraums haben Sie mehr Informationen, um zu entscheiden, ob es sich lohnt, weiterhin Ressourcen für das Problem zu verwenden.
Begrenzen Sie den Umfang der Projektanforderungen. Wenn eine ML-Lösung vielversprechend erscheint, aber keine wichtige Funktion für Ihr Produkt oder Ihren Dienst ist, sollten Sie die Anforderungen einschränken. Wenn Sie beispielsweise die Arbeit für das nächste Quartal planen, können Sie eine sehr einfache Lösung ausprobieren. In den folgenden Quartalen können Sie dann planen, die Lösung iterativ zu verbessern. Viele Teams haben durch die Implementierung einer ML-Lösung mit kontinuierlichen Verbesserungen über einen längeren Zeitraum hinweg wirkungsvolle ML-Lösungen entwickelt.
Projekt für Praktikanten oder neue Mitarbeiter Wenn Sie einen Praktikanten oder eine neue Mitarbeiterin anleiten und dabei unterstützen, eine ML-Lösung zu entwickeln, können Sie sich mit einem neuen Bereich mit unbekannten Ergebnissen vertraut machen. Nach Abschluss des Projekts haben Sie ein besseres Gefühl dafür, welchen Aufwand eine ML-Lösung erfordert und welche Ansätze sich versprechen – oder ob die Ressourcen woanders eingesetzt werden sollten.
Bei jeder Strategie ist es ratsam, schnell zu scheitern. Versuchen Sie zuerst Ansätze mit den niedrigsten Kosten, aber möglicherweise dem höchsten Gewinn. Wenn der Ansatz funktioniert, haben Sie eine gute Lösung gefunden. Falls nicht, haben Sie nicht viel Zeit und Ressourcen verschwendet.
Mit zunehmender Erfahrung und Übung beim Durchführen von Tests können Teams den Aufwand für einen Test besser einschätzen, was die Planung vorhersehbarer macht. Das Ergebnis eines Tests ist jedoch fast immer unbekannt, sodass die Anzahl der Tests, die zur Findung der besten Lösung erforderlich sind, nicht im Voraus geschätzt werden kann.
Wenn Sie Ansätze mit einer experimentellen Denkweise planen, können Sie Ihr Team auf Erfolgskurs bringen. Wenn ein Ansatz zu einer Sackgasse führt, sind die Teammitglieder nicht entmutigt, sondern verstehen, dass dies Teil des Prozesses zur Suche nach einer ML-Lösung ist. Noch wichtiger ist, dass Sie durch die Diskussion der inhärenten Unsicherheit bei der ML-Entwicklung mit den Stakeholdern realistischere Erwartungen setzen können.
Wissen testen
Wichtig
Das Planen mehrerer ML-Ansätze erfordert Zeit und Erfahrung. Ihr Projektplan erfordert möglicherweise häufige Aktualisierungen. Betrachten Sie es als ein dynamisches Dokument, das sich ständig weiterentwickelt, während Ihr Team mit verschiedenen Ansätzen experimentiert. Wenn Sie sich auf die folgenden Hauptideen konzentrieren, erhöhen Sie Ihre Erfolgschancen:
- Schätzen Sie die Kosten und Erfolgschancen für jeden Ansatz.
- Versuchen Sie es mit einem Portfolio von Ansätzen.
- Ermitteln Sie die gewonnenen Erkenntnisse und versuchen Sie, das System nach und nach zu verbessern.
- Planen Sie Ausfälle ein.
Gelegentlich führt ein früher Ansatz zu einem Durchbruch. Möglicherweise wird ein Fehler in der Datengenerierungspipeline oder in der Aufteilung in Trainings- und Validierungsdaten gefunden. Mit einer guten Planung und einer gründlichen Dokumentation erhöhen Sie die Wahrscheinlichkeit, dass Sie ein Modell finden, das Ihr Geschäftsproblem früher als erwartet löst.