4 facteurs pour tester les applications d'apprentissage automatique

Les systèmes d'apprentissage automatique ressemblent un peu à un problème mathématique. Déterminez l'algorithme, insérez les données et les réponses sortent.

Mais comment savez-vous que les réponses sont exactes?

Lorsque vous essayez de prédire les films ou les livres que les gens aiment, cela peut être extrêmement important, la différence entre une augmentation des revenus et une réputation qui apparaît sur mediabuzz.com. Pourtant, les tests sont rarement au cœur de nos préoccupations alors que nous essayons de développer et de déployer des systèmes basés sur des algorithmes d'apprentissage automatique. Construire simplement un bon ensemble d'algorithmes qui modélisent l'espace des problèmes est déjà assez difficile. Mais les tests font partie du processus de développement et de déploiement de logiciels, et nous devons examiner sérieusement comment ces systèmes seront testés.

Le premier type de test, le plus courant, est celui où l'application est testée unitaire par les développeurs, «testée en fumée» par automatisation pendant le processus de construction et d'intégration, et testée manuellement par les testeurs. Ce processus est bien connu, bien qu'il varie en fonction du type de système en cours de développement.

Le deuxième type de test est basé sur des données réelles, qui varient en fonction des données transmises. Par exemple, l'un des clients de Matt a écrit un logiciel pour limiter les risques dans les transactions financières. Le logiciel analyserait le marché et déroulerait lentement un bloc d'actions sur une période de plusieurs jours, conçu pour ne pas déclencher les avertissements de vente. La première entrée était le bloc à vendre, mais la seconde entrée en temps réel était les marchés financiers, qui varient dans le temps, de sorte que les ventes testées ne correspondent pas aux ventes en production. C'est là que les tests deviennent plus problématiques. Comment tester les systèmes qui peuvent renvoyer un résultat différent aux mêmes données au fil du temps? Les techniques de test traditionnelles n'ont aucun moyen de prendre en compte un tel résultat. Alors, que sont censés faire les testeurs?

Tester qualitativement les systèmes d'apprentissage automatique n'est pas la même chose que tester tout autre type de logiciel. Dans la plupart des situations de test, vous cherchez à vous assurer que la sortie réelle correspond à celle attendue. Avec les systèmes d'apprentissage automatique, rechercher exactement le bon résultat est exactement la mauvaise approche. Vous ne pouvez probablement même pas calculer la «bonne sortie» sans écrire deux fois le logiciel. Même dans ce cas, cela pourrait ne pas être possible.

Sur quoi les testeurs doivent se concentrer pour les applications d'apprentissage automatique:

1. Avoir des critères d'acceptation objectifs et mesurables. Connaissez l'écart type que vous pouvez accepter dans votre espace de problème. Cela nécessite des informations quantitatives et la capacité de s'assurer que vous comprenez et interprétez ces mesures.

2. Testez avec de nouvelles données plutôt qu'avec les données d'entraînement d'origine. Si nécessaire, divisez votre ensemble de formation en deux groupes: un pour l'entraînement et l'autre pour les tests. Mieux, obtenez et utilisez de nouvelles données si vous le pouvez.

3. Ne vous attendez pas à ce que tous les résultats soient exacts; considérez-les comme la meilleure estimation basée sur les données disponibles. Si cela ne suffit pas, le problème pourrait être l'alogirthmn ou, plus probablement, l'ensemble de données. Dans certains cas, "peaufiner" l'ensemble de données pour obtenir une entrée propre peut être la solution la plus rapide à ce problème. 

4. Comprendre l'architecture du réseau dans le cadre du processus de test. Les testeurs ne comprendront pas nécessairement comment le réseau neuronal a été construit, mais doivent comprendre s'il répond aux exigences. Et sur la base des mesures qu'ils testent, ils devront peut-être recommander une approche radicalement différente ou admettre que le logiciel n'est tout simplement pas capable de faire ce qu'on lui a demandé de faire avec confiance.

La ligne de fond

La clé pour tester le système est de comprendre à la fois les exigences relatives aux résultats de production et les limites des algorithmes. Les exigences doivent se traduire par des mesures objectives; idéalement, l'écart type du résultat moyen, en supposant que le résultat moyen est étroitement lié au résultat réel trouvé dans les données d'apprentissage. Vous devez être en mesure d'évaluer vos résultats d'un point de vue statistique, plutôt que d'un point de vue oui-non.

Ne comptez pas sur une bonne réponse exacte tout le temps, ni même la plupart du temps. La façon dont vous testez et comment vous évaluez dépend entièrement des objectifs du système. Pour les détails des tests, il est inestimable de disposer d'une plate-forme telle que Intel Parallel Studio XE pour développer et tester du code et des algorithmes.

Il est maintenant plus facile que jamais d'écrire votre code pour qu'il s'exécute en parallèle - Essayez Intel® Parallel Studio XE gratuitement pendant 30 jours