Tests

Tests tragen dazu bei, die Machbarkeit eines Projekts zu erhöhen. Es sind testbare und reproduzierbare Hypothesen. Bei der Durchführung von Tests besteht das Ziel darin, durch die Bewertung verschiedener Modellarchitekturen und ‑funktionen kontinuierliche, inkrementelle Verbesserungen vorzunehmen. Beachten Sie beim Testen Folgendes:

  • Bestimmen Sie die Referenzleistung. Legen Sie zuerst einen Referenzmesswert fest. Die Baseline dient als Maßstab für den Vergleich von Tests.

    In einigen Fällen kann die aktuelle Lösung ohne maschinelles Lernen den ersten Messwert für den Vergleich liefern. Wenn derzeit keine Lösung vorhanden ist, erstellen Sie ein ML-Modell mit einer einfachen Architektur und wenigen Funktionen und verwenden Sie die Messwerte als Referenz.

  • Nehmen Sie einzelne, kleine Änderungen vor. Nehmen Sie immer nur eine kleine Änderung vor, z. B. an den Hyperparametern, der Architektur oder den Funktionen. Wenn sich das Modell durch die Änderung verbessert, werden die Messwerte dieses Modells zum neuen Referenzwert, an dem zukünftige Tests verglichen werden.

    Die folgenden Beispiele zeigen Tests mit einer einzelnen, kleinen Änderung:

    • die Funktion X enthalten.
    • Verwenden Sie für die erste verborgene Schicht einen Dropout von 0,5.
    • die logarithmische Transformation des Attributs Y.
    • Ändern Sie die Lernrate in 0,001.
  • Notieren Sie den Fortschritt der Tests. Sie müssen höchstwahrscheinlich viele Tests durchführen. Auch Experimente mit einer schlechten (oder neutralen) Vorhersagequalität im Vergleich zur Kontrollgruppe sind nützlich. Sie zeigen an, welche Ansätze nicht funktionieren. Da der Fortschritt in der Regel nicht linear ist, ist es wichtig, zu zeigen, dass Sie an dem Problem arbeiten. Heben Sie dabei neben Ihren Fortschritten bei der Verbesserung der Grundqualität auch alle Methoden hervor, die nicht funktioniert haben.

Da jedes vollständige Training mit einem echten Datensatz Stunden oder Tage dauern kann, sollten Sie mehrere unabhängige Tests gleichzeitig ausführen, um den Bereich schnell zu erkunden. Mit jeder Iteration nähern Sie sich hoffentlich dem Qualitätsniveau, das Sie für die Produktion benötigen.

Abweichungen bei Testergebnissen

Beachten Sie, dass bei den Testergebnissen Abweichungen auftreten können, die nicht auf Änderungen am Modell oder an den Daten zurückzuführen sind. Daher ist es schwierig zu beurteilen, ob eine von Ihnen vorgenommene Änderung das Modell tatsächlich verbessert hat. Die folgenden Beispiele zeigen, was zu Abweichungen bei den Testergebnissen führen kann:

  • Datenmix: Die Reihenfolge, in der die Daten dem Modell präsentiert werden, kann sich auf die Leistung des Modells auswirken.

  • Variableninitialisierung: Die Art und Weise, wie die Variablen des Modells initialisiert werden, kann sich ebenfalls auf die Leistung auswirken.

  • Asynchroner Parallelismus: Wenn das Modell mit asynchronem Parallelismus trainiert wird, kann sich auch die Reihenfolge, in der die verschiedenen Teile des Modells aktualisiert werden, auf die Leistung auswirken.

  • Kleine Testsätze: Wenn der Testsatz zu klein ist, ist er möglicherweise nicht repräsentativ für die Gesamtleistung des Modells. Dies führt zu ungleichmäßigen Schwankungen bei der Qualität des Modells.

Wenn Sie einen Test mehrmals ausführen, können Sie die Testergebnisse bestätigen.

Testmethoden abstimmen

Ihr Team sollte genau wissen, was ein „Test“ ist, und eine Reihe von Praktiken und Artefakten haben. Die Dokumentation sollte Folgendes enthalten:

  • Artefakte Was sind die Artefakte für einen Test? In den meisten Fällen ist ein Test eine getestete Hypothese, die reproduziert werden kann. Dazu werden in der Regel die Metadaten (z. B. die Features und Hyperparameter) protokolliert, die die Änderungen zwischen den Tests angeben und wie sich diese auf die Modellqualität auswirken.

  • Programmierpraktiken Verwenden alle Teilnehmer ihre eigenen Testumgebungen? Wie einfach ist es, die Arbeit aller in gemeinsamen Bibliotheken zusammenzuführen?

  • Reproduzierbarkeit und Tracking: Was sind die Standards für die Reproduzierbarkeit? Sollte das Team beispielsweise dieselbe Datenpipeline und dieselben Versionierungspraktiken verwenden oder ist es in Ordnung, nur Diagramme zu zeigen? Wie werden experimentelle Daten gespeichert: als SQL-Abfragen oder als Modell-Snapshots? Wo werden die Protokolle der einzelnen Tests dokumentiert: in einem Dokument, einer Tabelle oder einem CMS zur Verwaltung von Tests?

Falsche Vorhersagen

Kein Modell aus der Praxis ist perfekt. Wie geht Ihr System mit falschen Vorhersagen um? Überlegen Sie sich frühzeitig, wie Sie damit umgehen möchten.

Eine Best Practices-Strategie ermutigt Nutzer, falsche Vorhersagen richtig zu labeln. Beispielsweise erfassen E-Mail-Apps fälschlicherweise klassifizierte E-Mails, indem sie die E-Mails protokollieren, die Nutzer in den Spamordner verschieben, und umgekehrt. Wenn Sie Ground-Truth-Labels von Nutzern erfassen, können Sie automatisierte Feedbackschleifen für die Datenerhebung und die Modellneuschulung entwerfen.

Beachten Sie, dass in der Benutzeroberfläche eingebettete Umfragen zwar Nutzerfeedback erfassen, die Daten aber in der Regel qualitativ sind und nicht in die Daten für die Neuschulung einfließen können.

End-to-End-Lösung implementieren

Während Ihr Team mit dem Modell experimentiert, sollten Sie mit dem Aufbau von Teilen der endgültigen Pipeline beginnen, sofern Sie die dafür erforderlichen Ressourcen haben.

Wenn Sie verschiedene Teile der Pipeline einrichten, z. B. die Datenaufnahme und das erneute Training des Modells, lässt sich das endgültige Modell leichter in die Produktion übernehmen. So kann beispielsweise eine End-to-End-Pipeline zum Aufnehmen von Daten und Bereitstellen von Vorhersagen dem Team helfen, das Modell in das Produkt einzubinden und frühzeitige Nutzertests durchzuführen.

Fehlerbehebung bei in der Schwebe befindlichen Projekten

Es kann vorkommen, dass der Fortschritt eines Projekts ins Stocken gerät. Vielleicht arbeitet Ihr Team an einem vielversprechenden Test, kann das Modell aber seit Wochen nicht verbessern. Was solltest du tun? Im Folgenden sind einige mögliche Ansätze aufgeführt:

  • Strategic (strategische Phase). Möglicherweise müssen Sie das Problem neu formulieren. Nachdem Sie einige Zeit in der Testphase verbracht haben, verstehen Sie das Problem, die Daten und die möglichen Lösungen wahrscheinlich besser. Mit einem besseren Verständnis der Branche können Sie das Problem wahrscheinlich genauer formulieren.

    Angenommen, Sie wollten ursprünglich die lineare Regression verwenden, um einen numerischen Wert vorherzusagen. Leider waren die Daten nicht gut genug, um ein praktikables lineares Regressionsmodell zu trainieren. Vielleicht zeigt eine weitere Analyse, dass das Problem gelöst werden kann, indem vorhergesagt wird, ob ein Beispiel über oder unter einem bestimmten Wert liegt. So können Sie das Problem als binäre Klassifizierung neu formulieren.

    Wenn der Fortschritt langsamer als erwartet ist, geben Sie nicht auf. Kleine Verbesserungen im Laufe der Zeit sind möglicherweise die einzige Möglichkeit, das Problem zu lösen. Wie bereits erwähnt, solltest du nicht erwarten, dass du jede Woche denselben Fortschritt erzielst. Oftmals ist viel Zeit erforderlich, um eine produktionsreife Version eines Modells zu erhalten. Die Modellverbesserung kann unregelmäßig und unvorhersehbar sein. Auf Phasen mit nur langsamen Fortschritten können Phasen mit deutlichen Verbesserungen folgen oder umgekehrt.

  • Technisch Nehmen Sie sich Zeit, um falsche Vorhersagen zu diagnostizieren und zu analysieren. In einigen Fällen können Sie das Problem finden, indem Sie einige falsche Vorhersagen herausfiltern und das Verhalten des Modells in diesen Fällen diagnostizieren. So können Sie beispielsweise Probleme mit der Architektur oder den Daten aufdecken. In anderen Fällen kann es hilfreich sein, mehr Daten zu erheben. Möglicherweise erhalten Sie ein klareres Signal, das darauf hindeutet, dass Sie auf dem richtigen Weg sind. Es kann aber auch mehr Rauschen verursachen, was auf andere Probleme im Ansatz hinweist.

    Wenn Sie an einem Problem arbeiten, für das von Menschen beschriftete Datensätze erforderlich sind, ist es möglicherweise schwierig, einen beschrifteten Datensatz für die Modellbewertung zu erhalten. Hier finden Sie Ressourcen, mit denen Sie die Datensätze für die Bewertung abrufen können.

Möglicherweise ist keine Lösung möglich. Legen Sie einen Zeitrahmen für Ihren Ansatz fest und beenden Sie ihn, wenn Sie innerhalb des Zeitrahmens keinen Fortschritt erzielt haben. Wenn Sie jedoch eine gute Problembeschreibung haben, rechtfertigt das wahrscheinlich eine Lösung.

Wissen testen

Ein Teammitglied hat eine Kombination von Hyperparametern gefunden, mit der sich der Messwert des Ausgangsmodells verbessern lässt. Was sollten die anderen Teammitglieder tun?
Vielleicht einen Hyperparameter einbeziehen, aber mit den Tests fortfahren.
Korrekt. Wenn einer der Hyperparameter eine vernünftige Wahl zu sein scheint, können Sie ihn ausprobieren. Nicht alle Hyperparameter sind jedoch in jedem Testkontext sinnvoll.
Ändern Sie alle Hyperparameter in Ihrem aktuellen Test so, dass sie mit denen Ihres Kollegen übereinstimmen.
Hyperparameter, die ein Modell verbessert haben, führen nicht automatisch zu einer Verbesserung eines anderen Modells. Die anderen Teammitglieder sollten mit ihren Tests fortfahren, was die Baseline später sogar noch verbessern könnte.
Erstellen Sie eine End-to-End-Pipeline, die zum Implementieren des Modells verwendet wird.
Ein Modell, das die Baseline verbessert, ist nicht unbedingt das Modell, das letztendlich in der Produktion verwendet wird. Sie sollten mit ihren Tests fortfahren, da sich die Baseline später möglicherweise noch weiter verbessern lässt.