banner

Blog

Jun 11, 2023

Wie ich als Tester zu einem maschinellen Lernsystem beigetragen habe: Chancen, Herausforderungen und Erkenntnisse

InfoQ-Homepage-Artikel Wie ich als Tester zu einem maschinellen Lernsystem beigetragen habe: Chancen, Herausforderungen und Erkenntnisse

16. Februar 2023 10 Minuten Lesezeit

von

Shivani Gaba

rezensiert von

Ben Linders

Das Testen wird als wichtiger Aspekt im Softwareentwicklungslebenszyklus (SDLC) betrachtet, daher sind Tester beteiligt, um die Qualität der Anwendung sicherzustellen. Dies gilt für herkömmliche Softwaresysteme, einschließlich Webanwendungen, mobile Anwendungen, Webdienste usw.

Aber haben Sie sich jemals über Systeme gewundert, die auf maschinellem Lernen basieren? In diesen Fällen tritt das Testen in den Hintergrund. Und selbst wenn einige Tests durchgeführt werden, werden diese größtenteils von den Entwicklern selbst durchgeführt. Die Rolle eines Testers wird in solchen Bereichen nicht klar dargestellt.

Tester haben normalerweise Schwierigkeiten, ML-basierte Systeme zu verstehen und herauszufinden, welche Beiträge sie in solchen Projekten leisten können. In diesem Artikel werde ich meinen Weg zur Qualitätssicherung von ML-basierten Systemen als Tester teilen. Ich werde meine Herausforderungen, Erkenntnisse und meine Erfolgsgeschichte hervorheben.

Wie die meisten Tester war ich an der Prüfung herkömmlicher Systeme beteiligt, die Web-Apps, native Apps, Backends, Microservices usw. umfassten. In solchen Systemen werden Eingaben von Menschen (hauptsächlich Entwicklern) übernommen und die Logik geschrieben, um eine zu erstellen deterministische Ausgabe. Als Tester liegt unser Fokus darauf, die erwartete Ausgabe anhand der spezifizierten/impliziten Anforderungen zu überprüfen.

Interessanterweise hatte ich vor einigen Jahren die Gelegenheit, ein ML-basiertes Empfehlungssystem zu testen. Es ist ganz anders als herkömmliche Systeme, deshalb war ich gleichzeitig aufgeregt und besorgt.

In ML-Systemen werden zahlreiche Datenmengen mit Mustern als Eingabe bereitgestellt. Es wird einem Modell zugeführt, das Logik lernt, um diese Muster zu entdecken und zukünftige Ereignisse vorherzusagen.

Um die Qualität sicherzustellen, ist es wichtig zu testengelernte Logik . Also fragte ich mich, wie teste ich diesen Lernprozess und dieLogik gelernt nach dem Modell? Ist es überhaupt möglich, diese Logik zu testen? Ist ein Modell eine komplette Blackbox?

Da mir viele solcher Fragen im Kopf herumschwirrten, war ich neugierig, sie zu erforschen und zu lernen. Ich war bereit für eine Achterbahnfahrt :)

In meiner Aufregung und Neugier, schnell etwas beizutragen, habe ich getan, was die meisten von uns tun würden: die Testideen googeln! Die meisten Ressourcen, auf die ich mich bezog, verwiesen auf Modellbewertungsmetriken wie Präzision, Rückruf, Verwirrungsmatrix usw. Sie fühlten sich für mich wie Fachjargon an. Ehrlich gesagt habe ich sie nicht verstanden. Aber ich habe meinen Entwicklern meine unausgegorenen Erkenntnisse mitgeteilt, und sie haben mir gesagt, dass sie diese Kennzahlen bereits berücksichtigen.

Mir wurde klar, dass die Entwickler sich mit ihrer Domäne gut auskannten. Um als Tester Wirkung zu erzielen, musste ich die Perspektiven einbringen, die ihnen entgangen waren.

Als Tester sind wir mit der großen Fähigkeit gesegnet, die richtigen Fragen zu stellen, das Gesamtbild zu verstehen, unkonventionell zu denken, tiefergehendes Produktwissen anzuwenden, den Status Quo in Frage zu stellen usw. Wenn diese Fähigkeiten angewendet werden Durch das Testen von ML-Systemen könnten viele Probleme verhindert werden.

Mir wurde auch klar, dass ich versuchte, etwas zu testen, ohne überhaupt zu verstehen, wie das System funktioniert und was die Bausteine ​​sind. Um jedoch ein System besser testen zu können, sollte dies der erste Schritt sein.

Ich habe diesen Ansatz mit meinen Entwicklern besprochen, um gemeinsam das System tiefgreifend zu verstehen und meine Testfähigkeiten in jeder Phase anzuwenden.

Die Entwickler, die anfangs skeptisch waren, einen Tester an Bord zu haben, waren begeistert, als sie von diesem Plan hörten, und freuten sich auf den Mehrwert, den ich bieten konnte.

Gemeinsam mit meinem Team habe ich verstanden, dass beim maschinellen Lernen eine riesige Menge an Daten mit bestimmten Mustern gesammelt, gefiltert und einem Modell zugeführt wird. Das Modell identifiziert diese Muster und sagt die Wahrscheinlichkeit zukünftiger Ereignisse voraus.

Unser Projekt bestand beispielsweise darin, Artikelempfehlungen für unsere Nutzer bereitzustellen. Daher wurde eine große Menge an Daten wie Artikelinteraktionen, Benutzereigenschaften und Benutzerverhalten auf der Plattform gesammelt und in das Modell eingespeist. Das Modell lernte dann Muster in den Daten und bildete Regeln, um zukünftige Möglichkeiten der Benutzerinteraktion mit dem Artikel vorherzusagen.

Der Prozess ist in zwei Phasen unterteilt:

Phase A – Lernprozess maschineller Lernsysteme

In der Lernphase lernt das Modell, die Muster aus den Daten zu erkennen und entwickelt eine Logik, um zukünftige Vorhersagen zu treffen.

Es gibt zwei Arten von Lernprozessen: überwachtes Lernen und unüberwachtes Lernen. Unser Projekt hatte überwachtes Lernen, bei dem die gewünschten Ausgabebeispiele in den Trainingsdaten selbst verfügbar sind.

Der detaillierte Lernprozess war wie folgt:

Schritt 1 – Datenerfassung : Das Training von ML-Systemen hängt stark von Eingabedaten ab. Als Faustregel gilt: „Je mehr Daten, desto besser das Training“. Aber im Allgemeinen besteht die Tendenz, nicht darauf zu achtenQualität der Daten.

Ich würde in der Tat sagen: „Je höher die Qualität der Daten, desto besser das Training.“

Als Tester können wir Entwicklern dabei helfen, alle Qualitätsdimensionen zu überprüfen/zu korrigieren, wie zum Beispiel:

Nehmen wir ein einfaches Beispiel. In unseren Daten hatte eine Spalte mit dem Namen „article_age“ in bestimmten Fällen negative Werte. Diese Spalte gibt an, vor wie vielen Stunden ein Artikel erstellt wurde, und dies sollte sicherlich nicht negativ sein. Wir haben festgestellt, dass diese negativen Werte auf einen Fehler bei der Zeitzonenkonvertierung zurückzuführen sind, und haben ihn daher behoben, um die Daten zu korrigieren.

Alle derartigen Prüfungen sollten zur Validierung der Datenqualität hinzugefügt und in die Pipeline integriert werden.

Schritt 2 – Aufbau von Modellfunktionen : Nachdem die Daten gesammelt und verfeinert wurden, besteht der nächste Schritt darin, Modellfunktionen zu entwerfen. Es wird eine Tabelle mit allen Daten erstellt, die dem Modell zugeführt werden. Jede Spalte wird als Modellmerkmal bezeichnet, mit Ausnahme einer Spalte, bei der es sich um den Zielwert handelt. Alle Spalten haben numerische Werte.

Für unser Artikelempfehlungssystem gab es beispielsweise Funktionen im Zusammenhang mit Benutzerspezifika wie Alter, Geschlecht, Dauer des Benutzerabonnements; artikelspezifische Merkmale wie die Zeit seit der Veröffentlichung, Gesamtansichten/Impressionen des Artikels, Gesamtklicks auf den Artikel; Funktionen zur Interaktion eines Benutzers mit Artikeln, z. B. wie oft ein Benutzer den Artikel angesehen oder darauf geklickt hat usw. und vieles mehr.

Der Zielwert spiegelt wider, ob der Benutzer mit dem Artikel interagiert hat oder nicht.

Um ein Modell richtig zu trainieren, ist es wichtig, die richtigen Funktionen auszuwählen.

Als Tester half ich bei der Überprüfung aller Funktionen, der Standardisierung der darauf angewendeten Regeln und der Anwendung von Produktkenntnissen, um Fehler zu finden/Funktionen zu verbessern. Einige Beispiele:

Eine wichtige Rolle, die ich spielte, war auch die Dokumentation von Features mit ihrer Beschreibung, Regeln usw.

Schritt 3 – Training und Validierung des Modells: Nachdem die Daten gesammelt und die Funktionen festgelegt wurden, ist es an der Zeit, diese Daten in das Modell einzuspeisen und es zu trainieren.

Hier entwickelt das Modell Regeln, um zukünftige Zielwerte vorherzusagen, wenn ihm neue Daten zur Verfügung gestellt werden.

Es sollten nicht alle Daten zum Trainieren des Modells verwendet werden. Die Daten sollten jedoch in Trainingsdaten und Testdaten aufgeteilt werden. Das Modell sollte mit den Trainingsdaten trainiert werden und die Logik, dass das gelernte Modell mit den Testdaten unter Verwendung verschiedener Modellbewertungsmetriken wie Präzision, Rückruf, rpAUC usw. überprüft werden muss.

Eine gewisse Bewertung könnte auch durch die Analyse der Bedeutung jedes Modellmerkmals erfolgen (z. B. durch Verwendung von SHAP-Werten). Tester könnten dabei helfen, das Feature-Wichtigkeitsdiagramm auszuwerten und die richtigen Fragen zu stellen.

In unserem Modell, das Artikel empfiehlt, wurde mir beispielsweise klar, dass die Funktion über das Alter des Artikels von der Modellvorhersage als am wenigsten wichtig erachtet wurde. Ich war überrascht und habe dieses Problem angesprochen, denn wenn das Modell lernen würde, dass das Alter in den Daten am wenigsten wichtig ist, dann könnte es alte und neue Artikel mit der gleichen Wahrscheinlichkeit empfehlen. Dies könnte bei zeitrelevanten Artikeln problematisch sein, da neu veröffentlichte Artikel viel wichtiger sind als alte veröffentlichte Artikel. Die Entwickler stellten fest, dass während des Trainings ein Fehler aufgetreten ist, der zu diesem Fehler führte, und haben daher das Modell neu trainiert.

PHASE B – Bereitstellung des (neuen) Modells

Nachdem das Modell nun mit den vergangenen Daten trainiert wurde, besteht der nächste Schritt darin, neue, noch nicht sichtbare Daten bereitzustellen, um die Wahrscheinlichkeit zukünftiger Ereignisse vorherzusagen, was im Grunde bedeutet, dass das neue Modell in der Produktion eingesetzt wird.

Um die Bereitstellung eines neuen Modells zu testen, ist es wichtig, dessen Einrichtung in der Produktion zu verstehen.

In unserem Fall mit Artikel-Empfehlern wurde beispielsweise eine API-Anfrage gestellt, um Vorhersagen des Modells zu erhalten, wenn ein Benutzer Empfehlungen anforderte. Zusätzlich zum Ergebnis des Modells wurden auch einige Filter und Re-Ranker angewendet. Filter bezogen sich auf Geschäftsregeln, die einige vom Modell vorhergesagte Elemente entfernen. Re-Ranker waren Geschäftsregeln, die einige der vom Modell vorhergesagten Elemente neu ordnen.

Wann immer wir im obigen Setup vorhatten, das neu trainierte Modell als Ersatz für das vorhandene Modell einzusetzen, wurden vor dem Ersetzen bestimmte Tests durchgeführt, um zu bestätigen, dass es sich lohnt, es zu ersetzen.

Wir haben eine Vergleichsanalyse zwischen dem Endergebnis durchgeführt, das Benutzer mit der alten und der neuen Version sehen würden. Wir haben die Top-X-Artikel aus der Ausgabe beider Versionen gesammelt und sie anhand verschiedener Kennzahlen verglichen, z. B. wie viele Artikel geändert/gleich sind, welche Auswirkung das durchschnittliche Artikelalter hat, welche Auswirkung die Artikelvielfalt hat usw.

Die sorgfältige Analyse dieser Ergebnisse half uns bei der Entscheidung, ob wir das neue Modell einsetzen sollten oder nicht. Als wir beispielsweise feststellten, dass im neuen Modell das Durchschnittsalter der den Benutzern angezeigten Top-10-Artikel um einen enormen Betrag gesunken ist, war dies für uns ein Hindernis bei der Bereitstellung, da wir den Benutzern ältere Inhalte nicht anzeigen wollten, wenn sie neu waren Artikel waren verfügbar.

Die Durchführung solcher Tests hat uns stets Vertrauen in die Qualität des neuen Modells gegeben.

Darüber hinaus habe ich bei jeder Änderung der Filter- oder Re-Ranking-Regel die entsprechende Änderung getestet und manchmal sogar entscheidende Fehler gefunden. Wir wollten beispielsweise einen Filter hinzufügen, der nur zwei Artikel mit demselben Autor behalten und die restlichen Artikel von diesem Autor entfernen sollte. Mir ist jedoch aufgefallen, dass der Filter drei Artikel aus demselben statt zwei Artikeln zuließ. Die Entwickler erkannten, dass dieser Fehler aufgrund unklarer Anfragen aufgetreten war, und haben ihn behoben. Diese kleine Korrektur hat die Ergebnisse für unsere Benutzer tatsächlich erheblich verändert.

Daher ist es auf jeden Fall wichtig, vor der Bereitstellung zu testen, wann immer Änderungen am Setup vorgenommen werden.

Letztlich sind jedoch unsere Benutzer unsere letzten Tester. Anstatt also nur das neue Modell zu veröffentlichen, haben wir immer einen A/B-Test durchgeführt, bei dem die Benutzergruppe in zwei Gruppen aufgeteilt wurde. Benutzer in Gruppe A erhielten die alte Version und Benutzer in Gruppe B erhielten die neue Version. Nachdem wir den Test für eine bestimmte Dauer (einige Wochen) laufen ließen, sammelten wir Daten von beiden Gruppen und analysierten, ob das neue Modell/Reranker/Filter tatsächlich eine bessere Leistung erbrachte, basierend auf Metriken wie Klickverhältnis, Scroll-Distanz, Interaktion mit Elementen usw. Basierend auf den Ergebnissen haben wir entschieden, ob es sich lohnt, die neue Version allen zur Verfügung zu stellen. Diese Daten werden dann gesammelt und auch zum erneuten Trainieren des neuen Modells verwendet.

Am Anfang war ich meiner Rolle in einem ML-Systemprojekt sehr skeptisch gegenüber.

Aber wenn ich an meine Reise zurückdenke, habe ich gelernt, welche große Wirkung Tester haben können. Ich habe gelernt, welche Fehler passieren können, wenn keine Tests durchgeführt werden. Ich habe gelernt, wie Tester eng mit Entwicklern zusammenarbeiten und selbst bei ML-Systemen Probleme finden können.

Kurz gesagt, ich habe gelernt, dass es höchste Zeit ist, die Wahrnehmung zu ändern, dass „Tester keinen Beitrag zu ML-Systemen leisten können“.

Vielen Dank an Rahul Verma, Prabhu und Ben Linders für die Motivation, diesen Artikel zu schreiben und ihn gründlich zu lesen, um ihn in seine aktuelle Form zu bringen.

Das Schreiben für InfoQ hat viele Türen geöffnet und die Karrierechancen erhöht Für mich. Ich konnte mich intensiv mit Experten und Vordenkern austauschen, um mehr über die von mir behandelten Themen zu erfahren. Und ich kann meine Erkenntnisse auch an die breitere Tech-Community weitergeben und verstehen, wie die Technologien in der realen Welt eingesetzt werden.

Ich habe das Mitwirkendenprogramm von InfoQ Anfang dieses Jahres entdeckt und es seitdem genossen! Das Peer-to-Peer-Review-System von InfoQ bietet mir nicht nur eine Plattform, auf der ich meine Erkenntnisse mit einer globalen Community von Softwareentwicklern teilen kann, sondern hat auch mein Schreiben erheblich verbessert . Wenn Sie nach einem Ort suchen, an dem Sie Ihr Software-Know-how teilen können, beginnen Sie mit der Mitarbeit bei InfoQ.

Ich habe angefangen, Nachrichten für die InfoQ .NET-Warteschlange zu schreiben, um auf dem neuesten Stand der Technik zu bleiben, aber ich habe so viel mehr daraus gemacht. Ich habe sachkundige Leute kennengelernt, weltweite Sichtbarkeit erlangt und meine Schreibfähigkeiten verbessert.

Redakteur für InfoQ zu werden war eine der besten Entscheidungen meiner Karriere . Es hat mich herausgefordert und mir in vielerlei Hinsicht geholfen, zu wachsen . Wir würden uns über mehr Leute freuentrete unserem Team bei.

InfoQ sucht einen Chefredakteur in Vollzeit dem internationalen, stets remote arbeitenden Team von C4Media beizutreten. Entdecken Sie mit uns die innovativsten Technologien unserer Zeit, arbeiten Sie mit den besten Software-Experten der Welt zusammen und helfen Sie mehr als 1,6 Millionen Entwicklerteams bei der Einführung neuer Technologien und Praktiken, die die Grenzen dessen erweitern, was Software und Teams leisten können!

Jeden Dienstag wird eine Zusammenfassung der Inhalte der letzten Woche auf InfoQ verschickt. Treten Sie einer Community von über 250.000 erfahrenen Entwicklern bei. Sehen Sie sich ein Beispiel an

Wir schützen Ihre Privatsphäre.

Sie müssen ein InfoQ-Konto registrieren oder sich anmelden oder anmelden, um Kommentare zu posten. Aber hinter der Registrierung steckt noch viel mehr.

Holen Sie das Beste aus dem InfoQ-Erlebnis heraus.

Zulässiges HTML: a,b,br,blockquote,i,li,pre,u,ul,p

von Charles Chan,

von Charles Chan,

Ihre Nachricht wartet auf Moderation. Vielen Dank für Ihre Teilnahme an der Diskussion.

Vielen Dank, dass Sie den Artikel geschrieben haben und teilen Sie ihn mit der Community. Es beschreibt die Herausforderungen, denen ein Tester gegenübersteht, wenn er mit einer scheinbar „Black Box“ zu tun hat. Es ist großartig zu sehen, dass wir mit einem ML-basierten System argumentieren können, indem wir jeden Schritt des Trainingsprozesses verstehen.

Zulässiges HTML: a,b,br,blockquote,i,li,pre,u,ul,p

Zulässiges HTML: a,b,br,blockquote,i,li,pre,u,ul,p

Treten Sie einer Expertengemeinschaft bei.gelernte LogikLogik gelerntPhase APhase BPhase A – Lernprozess maschineller LernsystemeSchritt 1 – DatenerfassungQualität der DatenSchritt 2 – Aufbau von ModellfunktionenSchritt 3 – Training und Validierung des ModellsPHASE B – Bereitstellung des (neuen) ModellsShivani Gabahat viele Türen geöffnet und die Karrierechancen erhöhtVivian HuDas Peer-to-Peer-Review-System von InfoQ hat mein Schreiben erheblich verbessertOghenewede Emenierlangte weltweite Sichtbarkeit und verbesserte meine SchreibfähigkeitenEdin Kapićbeste Entscheidungen meiner Karrierehat mir in vielerlei Hinsicht geholfen, zu wachsentrete unserem Team beiThomas Bettshauptamtlicher ChefredakteurDas InfoQHolen Sie das Beste aus dem InfoQ-Erlebnis heraus.von Charles Chan
AKTIE