4 Faktoren zum Testen von Anwendungen für maschinelles Lernen

Maschinelle Lernsysteme scheinen ein bisschen wie ein mathematisches Problem zu sein. Finden Sie den Algorithmus heraus, fügen Sie die Daten ein und die Antworten werden ausgegeben.

Aber woher weißt du, dass die Antworten richtig sind?

Wenn Sie vorhersagen möchten, welche Filme oder Bücher die Leute mögen, kann dies äußerst wichtig sein, der Unterschied zwischen einer Umsatzsteigerung und einem Reputationshit, der auf mediabuzz.com angezeigt wird. Das Testen steht jedoch selten im Vordergrund, wenn wir versuchen, Systeme zu entwickeln und bereitzustellen, die auf Algorithmen für maschinelles Lernen basieren. Es ist schwierig genug, einfach einen guten Satz von Algorithmen zu erstellen, die den Problemraum modellieren. Das Testen ist jedoch Teil des Softwareentwicklungs- und -bereitstellungsprozesses, und wir müssen ernsthaft prüfen, wie diese Systeme getestet werden.

Die erste, häufigere Art des Testens besteht darin, dass die Anwendung von Entwicklern auf Einheitentests getestet, während des Erstellungs- und Integrationsprozesses durch Automatisierung auf Rauch getestet und von Testern manuell getestet wird. Dieser Prozess ist bekannt, hängt jedoch von der Art des zu entwickelnden Systems ab.

Die zweite Art des Testens basiert auf realen Eingaben, die je nach den übergebenen Daten variieren. Beispielsweise hat einer von Matts Kunden Software geschrieben, um das Risiko bei Finanztransaktionen zu begrenzen. Die Software würde den Markt analysieren und über einen Zeitraum von Tagen langsam einen Aktienblock abwickeln, um keine Warnungen auf der Verkaufsseite auszulösen. Die erste Eingabe war der zu verkaufende Block, aber die zweite Eingabe in Echtzeit waren die Finanzmärkte, die sich im Laufe der Zeit ändern, sodass die Verkäufe im Test nicht mit den Verkäufen in der Produktion übereinstimmen. Hier wird das Testen problematischer. Wie testen wir Systeme, die im Laufe der Zeit möglicherweise ein anderes Ergebnis an dieselben Daten zurückgeben? Herkömmliche Testtechniken können ein solches Ergebnis nicht berücksichtigen. Was sollen Tester also tun?

Das qualitative Testen von Systemen für maschinelles Lernen ist nicht dasselbe wie das Testen anderer Softwaretypen. In den meisten Testsituationen möchten Sie sicherstellen, dass die tatsächliche Ausgabe mit der erwarteten übereinstimmt. Bei maschinellen Lernsystemen ist die Suche nach genau der richtigen Ausgabe genau der falsche Ansatz. Sie können wahrscheinlich nicht einmal die „richtige Ausgabe“ berechnen, ohne die Software zweimal zu schreiben. Selbst dann könnte es nicht möglich sein.

Worauf sich Tester bei Anwendungen für maschinelles Lernen konzentrieren müssen:

1. Haben Sie objektive und messbare Akzeptanzkriterien. Kennen Sie die Standardabweichung, die Sie in Ihrem Problembereich akzeptieren können. Dies erfordert einige quantitative Informationen und die Fähigkeit, sicherzustellen, dass Sie diese Messungen verstehen und interpretieren.

2. Testen Sie mit neuen Daten und nicht mit den ursprünglichen Trainingsdaten. Teilen Sie Ihr Trainingsset bei Bedarf in zwei Gruppen auf: eine, die trainiert, und eine, die testet. Besser, erhalten und verwenden Sie frische Daten, wenn Sie in der Lage sind.

3. Verlassen Sie sich nicht darauf, dass alle Ergebnisse genau sind. Betrachten Sie sie als die beste Vermutung basierend auf den verfügbaren Daten. Wenn das nicht gut genug ist, könnte das Problem die Alogirthmn oder wahrscheinlicher der Datensatz sein. In einigen Fällen kann das "Optimieren" des Datensatzes, um eine saubere Eingabe zu erhalten, die schnellste Lösung für dieses Problem sein. 

4. Verstehen Sie die Architektur des Netzwerks als Teil des Testprozesses. Tester werden nicht unbedingt verstehen, wie das neuronale Netzwerk aufgebaut wurde, sondern müssen verstehen, ob es den Anforderungen entspricht. Und basierend auf den Messungen, die sie testen, müssen sie möglicherweise einen radikal anderen Ansatz empfehlen oder zugeben, dass die Software einfach nicht in der Lage ist, das zu tun, worum sie gebeten wurde, mit Zuversicht.

Das Fazit

Der Schlüssel zum Testen des Systems besteht darin, sowohl die Anforderungen an die Produktionsergebnisse als auch die Einschränkungen der Algorithmen zu verstehen. Die Anforderungen müssen in objektive Messungen umgesetzt werden. Idealerweise die Standardabweichung des mittleren Ergebnisses unter der Annahme, dass das mittlere Ergebnis eng mit dem tatsächlichen Ergebnis in den Trainingsdaten zusammenhängt. Sie müssen in der Lage sein, Ihre Ergebnisse unter statistischen Gesichtspunkten und nicht unter Ja-Nein-Gesichtspunkten zu bewerten.

Verlassen Sie sich nicht immer oder sogar die meiste Zeit auf eine genau richtige Antwort. Wie Sie testen und wie Sie bewerten, hängt ganz von den Zielen des Systems ab. Für das Testen ist es von unschätzbarem Wert, eine Plattform wie das Intel Parallel Studio XE zu haben, um Code und Algorithmen sowohl zu entwickeln als auch zu testen.

Jetzt ist es einfacher als je zuvor, Ihren Code für die parallele Ausführung zu schreiben. Testen Sie Intel® Parallel Studio XE 30 Tage lang kostenlos