Andrew Eun "Passion pour l'apprentissage automatique." Traduction des chapitres 47 à 58



Ceci est le deuxième article avec une traduction de chapitres individuels du livre d'Andrew Un, Passion for Machine Learning. Vous pouvez lire la traduction des chapitres précédents ici .

Cet article se concentrera sur l'apprentissage en profondeur de bout en bout, et l'auteur du livre partagera quelques façons d'analyser les erreurs d'algorithme d'apprentissage.

Apprentissage en profondeur de bout en bout



Chapitre 47. La croissance de l'apprentissage de bout en bout



Supposons que vous souhaitiez créer un système de vérification des avis sur les produits sur Internet, qui vous dira automatiquement si l'auteur de l'avis a aimé ou non ce produit. Par exemple, vous espérez reconnaître l'examen suivant comme très positif:

  • "Ceci est une grande vadrouille!"

et ce qui suit est extrêmement négatif:

  • "Ce balai est de mauvaise qualité, désolé pour l'achat"

Le problème de la reconnaissance des opinions positives et négatives est appelé «classification des humeurs». Pour créer ce système, vous pouvez créer un «pipeline» de deux composants:

  1. Analyseur : Un système qui annote le texte avec des informations, identifiant les mots les plus importants. 1 Par exemple, vous pouvez utiliser l'analyseur pour désigner tous les adjectifs et noms. Par conséquent, vous recevrez le texte annoté suivant:

    • Ceci est une grande vadrouille!

    1 En fait, l'analyseur annote le texte beaucoup plus riche que décrit, mais cette description simplifiée suffira à expliquer le deep learning de bout en bout.

  2. Sentiment Classifier : un algorithme d'apprentissage qui prend en entrée du texte annoté et prédit son humeur générale. Les annotations de l'analyseur peuvent être d'une grande aide pour cet algorithme: en donnant plus de poids aux adjectifs, votre algorithme peut être rapidement évoqué en traitant des mots importants tels que "excellent" et en ignorant des mots moins importants tels que "ceci".

Nous pouvons visualiser ce pipeline de deux composants comme suit:



Récemment, il y a eu une tendance à remplacer les pipelines par un seul algorithme d'apprentissage. Un algorithme d'apprentissage de bout en bout pour cette tâche prendrait simplement le texte brut et original "Ceci est une grande vadrouille!" En entrée et essayez de reconnaître directement son humeur:



Les réseaux de neurones sont couramment utilisés dans les systèmes d'apprentissage de bout en bout. Le terme «pass-through» fait référence au fait que nous demandons à l'algorithme d'apprentissage de passer directement de l'entrée au résultat souhaité. C'est-à-dire que l'algorithme d'apprentissage relie directement "l'extrémité d'entrée" du système à "l'extrémité de sortie".

Dans les tâches où il y a beaucoup de données, les systèmes de bout en bout ont été extrêmement efficaces. Mais ce n'est pas toujours un bon choix. Les prochains chapitres donneront plus d'exemples de systèmes transversaux, ainsi que des conseils sur quand et quand ne pas les utiliser.


Chapitre 48. Autres exemples d'apprentissage transversal



Imaginez que vous souhaitiez créer un système de reconnaissance vocale. Vous pouvez construire un système de trois composants:



Les composants fonctionnent comme suit:

  1. Fonctions de calcul: récupérez des fonctionnalités conçues manuellement, telles que MFCC ( Mel-Frequency cepstrum coefficients ), qui tentent de capturer le contenu d'une instruction tout en ignorant les propriétés moins importantes telles que la hauteur dans la dynamique.
  2. Reconnaissance des phonèmes: Certains linguistes pensent qu'il existe des unités de base du son appelées «phonèmes». Par exemple, le son initial «k» dans «garder» est le même phonème que le son «c» dans «gâteau». Ce système tente de reconnaître des phonèmes individuels dans les enregistrements audio.
  3. End Recognizer: prend une séquence de phonèmes reconnus et essaie de les relier ensemble dans un enregistrement de sortie.

Contrairement à ce «pipeline», le système de bout en bout peut recevoir un enregistrement audio à l'entrée et essaiera de le transférer directement vers l'enregistrement de sortie:



Jusqu'à présent, nous n'avons décrit que des «convoyeurs» complètement linéaires d'apprentissage automatique: la sortie est transmise séquentiellement d'un étage à l'autre. Mais les convoyeurs peuvent être plus complexes. Par exemple, voici une architecture simple pour un véhicule sans pilote:



Ce convoyeur comprend trois composants: l'un détecte les autres voitures à l'aide de l'image de la caméra, le second détecte les piétons, et enfin, le dernier composant calcule le chemin de notre voiture pour éviter les collisions avec d'autres voitures et piétons.

Tous les composants de ce pipeline ne seront pas formés. Par exemple, la littérature sur la "planification du mouvement des robots" décrit de nombreux algorithmes pour le calcul final du trajet d'une voiture. Beaucoup de ces algorithmes ne nécessitent aucune formation.

Au contraire, l'approche de bout en bout peut essayer de recevoir des lectures de capteur et donner directement au volant un tour dans la bonne direction:



Bien que la formation de bout en bout ait conduit à de nombreux succès, ce n'est pas toujours la meilleure approche. Par exemple, la reconnaissance vocale de bout en bout fonctionne bien. Mais je suis sceptique quant à la formation transversale de la conduite autonome pour les systèmes sans pilote. Les prochains chapitres expliquent pourquoi.


Chapitre 49. Formation transversale: avantages et inconvénients



Prenons l'exemple précédent du pipeline de reconnaissance vocale:



Beaucoup de ses pièces sont conçues "manuellement":

  • MFCC est un ensemble de fonctionnalités audio spécialement conçues. Et bien qu'ils fournissent un résumé raisonnable de tout l'audio reçu à l'entrée, ils simplifient également le signal entrant en supprimant certaines informations.
  • Les phonèmes sont une invention des linguistes. Ils sont une représentation imparfaite des sons de la parole. Étant donné que les phonèmes sont une mauvaise approximation de la réalité, un algorithme qui utilise des phonèmes pour représenter la parole limitera l'efficacité de l'ensemble du système de reconnaissance vocale.

  • Les signes de MFCC sont résistants à certaines propriétés de la parole qui n'affectent pas le contenu, comme la hauteur du locuteur. Ainsi, ils aident à simplifier la tâche de l'algorithme d'apprentissage.
  • Dans la mesure où les phonèmes sont une représentation raisonnable de la parole, ils peuvent également aider l'algorithme d'apprentissage à comprendre les composants sonores de base et, par conséquent, à augmenter son efficacité.

Le fait d'avoir plus de composants conçus à la main permet le plus souvent à un système de reconnaissance vocale d'apprendre de moins de données. Les connaissances obtenues «manuellement» à l'aide de MFCC et de phonèmes «complètent» les connaissances que notre algorithme obtient des données. Lorsque nous avons peu de données, cette connaissance est utile.

Considérons maintenant le système de bout en bout:



Ce système ne possède pas suffisamment de connaissances obtenues "manuellement". Par conséquent, lorsque l'ensemble d'entraînement est petit, ce système peut fonctionner moins bien qu'un convoyeur conçu manuellement.

Cependant, lorsque l'ensemble de formation est volumineux, il n'y a aucune restriction due à l'utilisation de MFCC ou de phonèmes. Si l'algorithme d'apprentissage est un réseau neuronal suffisamment grand, et s'il est entraîné sur un ensemble d'entraînement suffisamment grand, il a un grand potentiel, et peut-être même approche le taux d'erreur optimal.

Les systèmes de bout en bout ont tendance à réussir quand il y a beaucoup de données marquées pour les deux extrémités - «l'extrémité d'entrée» et «l'extrémité de sortie». Dans cet exemple, nous avons besoin d'un grand ensemble de ces paires (audio et transcription). Lorsque des données de ce type ne vous sont pas disponibles, approchez-les par l'apprentissage avec grand soin.

Si vous travaillez sur une tâche d'apprentissage automatique dans laquelle l'ensemble de formation est très petit, la plupart des informations qui seront disponibles pour votre algorithme seront obtenues grâce à votre compréhension humaine, c'est-à-dire à partir de composants conçus manuellement.

Si vous préférez ne pas utiliser un système de bout en bout, vous devez décider quelles étapes seront dans votre pipeline et comment elles devraient s'emboîter. Dans le chapitre suivant, nous proposerons quelques idées pour concevoir de tels systèmes.


Chapitre 50. Sélection des composants de pipeline: disponibilité des données



Lorsque vous construisez un convoyeur qui n'est pas un système de bout en bout, quels composants de ce convoyeur seront un bon choix? La façon dont vous concevez le convoyeur affectera considérablement les performances globales du système. Un facteur important est la capacité de collecter facilement des données pour la formation de chaque composant.

Par exemple, considérons cette architecture de conduite autonome:



Vous pouvez utiliser des algorithmes d'apprentissage automatique pour détecter les voitures et les piétons. De plus, il n'est pas difficile pour eux de collecter des données: il existe de nombreux ensembles prêts à l'emploi de données de vision par ordinateur avec un grand nombre de voitures et de piétons balisés. Vous pouvez également utiliser le crowdsourcing (comme Amazon Mechanical Turk) pour obtenir des ensembles de données encore plus volumineux. Par conséquent, il sera relativement facile de collecter des données d'entraînement pour créer un détecteur de voiture et un détecteur de piéton.

Au contraire, considérons un système propre de bout en bout:



Pour entraîner ce système, nous avons besoin d'un large ensemble d'éléments déjà cartographiés (image = volant tournant dans le bon sens). Il s'agit d'une tâche très longue et coûteuse. Pour collecter ces données, il est nécessaire que les gens conduisent des voitures et enregistrent des données sur chaque tour de volant. Vous aurez besoin de toute une flotte de voitures spécialement équipées et d'un grand nombre d'heures de conduite pour couvrir le plus large éventail possible de situations. Cela rend le système de bout en bout très difficile à apprendre. Il est beaucoup plus facile de prendre un grand nombre d'images étiquetées de voitures et de piétons.

De manière plus générale, s'il y a beaucoup de données disponibles pour la formation de modules de convoyeurs «intermédiaires» (comme un détecteur de voiture ou un détecteur de piétons), alors vous devez penser à utiliser un convoyeur composé de plusieurs composants. Cette méthode pourrait mieux fonctionner, car Vous pouvez utiliser toutes les données disponibles pour la formation des modules intermédiaires.

Jusqu'à ce qu'il y ait plus de données pour les modèles de bout en bout, je pense que l'approche traditionnelle est beaucoup plus prometteuse pour la conduite autonome: son architecture correspond mieux à la disponibilité actuelle des données.


Chapitre 51. Choix des composants du convoyeur: simplicité des tâches



En plus de la disponibilité des données, vous devez également considérer le deuxième facteur lors du choix des composants de pipeline: à quel point les tâches que les composants individuels résolvent sont-elles simples? Vous devez essayer de sélectionner les composants du convoyeur afin qu'ils soient faciles à construire ou faciles à apprendre. Mais qu'est-ce que cela signifie pour un composant d'être facile à apprendre?



Considérez les tâches d'apprentissage automatique suivantes, répertoriées par ordre croissant de complexité:

  1. La définition est surexposée à l'image présentée (comme dans l'exemple ci-dessus).
  2. Déterminer si une image est prise à l'intérieur ou à l'extérieur.
  3. Déterminer s'il y a un chat dans l'image.
  4. Déterminer s'il y a un chat dans l'image avec une fourrure noire et blanche.
  5. Détermination de la présence d'un chat siamois dans l'image (toute race particulière de chats).

Pour chacune de ces tâches de classification binaire, vous devez obtenir une image à l'entrée et à la sortie 0 ou 1. Mais les tâches répertoriées plus haut dans la liste semblent aux réseaux de neurones être «plus faciles» à apprendre. Vous pouvez entraîner l'algorithme pour des tâches plus simples avec moins d'exemples de formation.

Au stade actuel de l'apprentissage automatique, il n'existe pas de bonne définition formelle de ce qui rend une tâche simple facile ou difficile. 2 Avec la croissance de l'apprentissage profond et des réseaux de neurones multicouches, nous appelons parfois le problème facile s'il peut être résolu avec moins d'étapes de calcul (par exemple, en utilisant des réseaux de neurones avec un petit nombre de couches), et nous appelons la tâche difficile si elle nécessite plus d'étapes l'informatique (qui correspond à un réseau neuronal profond). Mais c'est une définition informelle.
2 Dans la théorie algorithmique de l'information, il y a le concept de complexité de Kolmogorov, qui stipule que la complexité de la fonction étudiée est la longueur du programme informatique le plus court qui peut produire cette fonction. Ce concept théorique a trouvé plusieurs applications pratiques en IA.

Si vous avez la possibilité de décomposer une tâche complexe en sous-tâches plus simples, puis en encodant avec précision chaque sous-tâche, vous donnerez à l'algorithme des connaissances plus importantes qui pourront l'aider à résoudre plus efficacement l'ensemble du problème.



Imaginez que vous concevez un détecteur de chat siamois. Voici une architecture de bout en bout propre:



Au contraire, vous pouvez utiliser un convoyeur à deux composants:



Dans la première étape (détecteur de chat), tous les chats de l'image seront reconnus.



Ensuite, dans la deuxième étape, les images recadrées de chacun des chats détectés, une à la fois, sont transférées au classificateur de race. Et enfin, si l'un des chats détectés est un chat siamois, nous obtenons "1" à la sortie.



Comparé à l'enseignement d'un classificateur purement intermédiaire qui n'utilise que des balises 0/1, chacun des deux composants du pipeline (détecteur de chat et classificateur de race) semble plus facile à apprendre et nécessite beaucoup moins de données. 3
3 Si vous êtes familier avec les algorithmes de détection d'objets qui sont réellement utilisés dans la pratique, vous comprendrez qu'ils sont formés non seulement avec les étiquettes d'image 0/1. Au lieu de cela, ils sont formés en utilisant le cadre restrictif fourni dans le cadre des données de formation. Leur discussion dépasse le cadre de ce chapitre.

Et le dernier exemple, rappelons à nouveau le pipeline pour la tâche de conduite autonome:



En utilisant ce convoyeur, vous dites à l'algorithme qu'il y a trois étapes clés dans la conduite d'une voiture:

  • Reconnaissez les autres voitures.
  • Reconnaissez les piétons.
  • Planifiez la direction du mouvement ultérieur.

Chacune de ces étapes est une tâche plus simple et peut être formée sur moins de données qu'avec une approche purement transversale.

Par conséquent, lorsque vous décidez quels doivent être les composants du pipeline, essayez de créer un pipeline où chaque composant est une fonction relativement «simple» qui ne peut être formée que sur une petite quantité de données.


Chapitre 52. Apprendre avec des informations immersives



L'algorithme de classification d'image prend une image d'entrée X et produit un entier, qui est une étiquette pour la catégorie de l'objet. L'algorithme peut-il produire à la place une phrase entière décrivant l'image?

Par exemple:



Y = "Un bus jaune roule sur la route au milieu des arbres et de l'herbe verte."

L'application traditionnelle de l'enseignement avec un enseignant implique la présence d'une fonction formée h: X → Y, où la sortie (y) est généralement représentée par un nombre entier ou naturel. Par exemple:

DéfiXOui
AntispamCourrielSpam / Pas de spam (0/1)
Reconnaissance d'imageImageÉtiquette entière
Prévisions des prix de l'immobilierCaractéristiques de la maisonPrix ​​en dollars
Recommandation de produitSpécifications du produit et du clientProbabilité d'achat


L'un des aspects les plus passionnants de l'apprentissage en profondeur transversal est qu'il nous permet d'apprendre directement Y, ce qui est beaucoup plus compliqué que les chiffres. Dans l'exemple avec la tâche de description d'image mentionnée ci-dessus, vous pouvez appliquer une image (x) à l'entrée du réseau neuronal et obtenir une description immédiate (y) à la sortie.

Voici quelques exemples:

DéfiXOuiCitation du travail
Description des imagesImageTexteMao et autres, 2014
Traduction automatiqueTexte anglaisTexte françaisSuskever et autres, 2014
Réponses aux questionsPaire (texte + question)Réponse à la questionBordes et autres, 2015
Reconnaissance vocaleAudioTranscriptionHannun et autres, 2015
Synthèse vocaleBalises de texteAudioVan der Oord et al., 2016


C'est une tendance croissante dans l'apprentissage en profondeur: lorsque vous avez les paires étiquetées (entrée, sortie) correctes, vous pouvez parfois choisir une formation de bout en bout, même si la sortie est une phrase, une image, un audio ou toute autre sortie qui contient beaucoup plus d'informations, que de simples numéros d'étiquette.

Analyse d'erreur partielle


Chapitre 53. Analyse des erreurs dans les pièces



Supposons que votre système soit construit à l'aide d'un pipeline d'apprentissage automatique sophistiqué et que vous souhaitez améliorer l'efficacité du système. Quelle partie du convoyeur faut-il améliorer? En attribuant des erreurs à des parties spécifiques du pipeline, vous pouvez décider comment hiérarchiser votre travail.

Utilisons notre exemple de classificateur de chats siamois:



La première partie, un détecteur de chat, détecte les chats et les découpe de l'image entière. La deuxième partie, le classificateur de race de chat, décide si ce chat est un chat siamois. Vous pouvez passer des années à travailler pour améliorer l'un de ces deux composants du convoyeur. Comment décidez-vous sur quel composant se concentrer?

En effectuant l'analyse des erreurs dans les parties, vous pouvez essayer d'attribuer chaque erreur de l'algorithme à l'une des deux parties du pipeline (et parfois les deux à la fois). Par exemple, l'algorithme classe incorrectement cette image comme ne contenant pas de chat siamois (y = 0), bien que l'étiquette correcte soit y = 1.



Vérifions manuellement ce que fait l'algorithme dans chacune des deux étapes. Supposons qu'un détecteur de chat siamois ait détecté un chat comme suit:



Cela signifie que le classificateur de race de chat recevra cette image:



Le classificateur de race classe correctement cette image comme ne contenant pas de chat siamois.Ainsi, le classificateur de race de chat est innocent: il a reçu un tas de pierres à l'entrée et a donné une note très raisonnable y = 0. En fait, une personne qui classe l'image recadrée ci-dessus prédirait également y = 0. Ainsi, vous pouvez clairement attribuer cette erreur à détecteur de chat.

En revanche, si un détecteur de chat affiche la boîte englobante suivante:



alors vous concluriez que le détecteur de chat a fait son travail correctement, et l'erreur s'est produite à cause du classificateur de race.

Supposons que vous ayez parcouru 100 images classées incorrectement d'un échantillon de validation et trouvé que 90 erreurs liées à un détecteur de chat, et seulement 10 erreurs liées à un classificateur de race de chat. Vous pouvez conclure en toute sécurité que vous devez vous concentrer davantage sur l'amélioration de votre détecteur de chat.

De plus, vous avez également réussi à trouver 90 exemples où le détecteur de chat a fait apparaître la mauvaise boîte de délimitation. Vous pouvez utiliser ces 90 exemples pour une
analyse plus approfondie des erreurs de détection de chat pour voir comment l'améliorer.

Notre description de la façon d'attribuer l'erreur à une partie du pipeline a jusqu'à présent été informelle: vous regardez la sortie de chaque partie et voyez si vous pouvez décider laquelle a commis l'erreur. Cette méthode informelle peut suffire. Mais dans le chapitre suivant, vous verrez également une manière plus formelle d'attribuer les erreurs.


Chapitre 54. Attribution d'erreur à une partie spécifique



Continuons avec notre exemple:



Supposons que le détecteur de chat ait produit cette boîte englobante:



Ainsi, le classificateur de race a reçu cette image recadrée, après quoi il a incorrectement émis y = 0, c'est-à-dire qu'il n'y a pas de chat sur la photo.



Le détecteur de chat a fait un mauvais travail. Alors qu'une personne formée sera sans aucun doute capable de reconnaître le chat siamois dans cette image recadrée. Par conséquent, nous attribuons cette erreur à un détecteur de chat, à un classificateur de race ou aux deux? Pas clair.

Si le nombre de ces cas controversés est faible, nous pouvons prendre n'importe quelle décision et obtenir un résultat similaire. Mais voici un test plus formel, qui nous permet d'attribuer plus précisément l'erreur à exactement une partie:

  1. Remplacez la sortie du détecteur de chat par un cadre marqué manuellement.
  2. Passez l'image recadrée correspondante à travers le classificateur de race. Si le classificateur de race ne classe toujours pas l'image correctement, attribuez l'erreur au classificateur de race. Sinon, attribuez l'erreur au détecteur de chat.

En d'autres termes, effectuez une expérience dans laquelle vous soumettez des données idéales à l'entrée du classificateur de roche. Dans ce cas, 2 options sont possibles:

  1. Même avec un cadre idéal, le classificateur de race y = 0 par erreur. Dans ce cas, le classificateur est sans aucun doute à blâmer.
  2. Ayant reçu un cadre idéal, le classificateur de race correctement y = 1. Cela montre que si seulement le détecteur de chat produisait une boîte de délimitation plus parfaite, alors la conclusion générale du système serait correcte. Ainsi, nous attribuons l'erreur au détecteur de chat.

Après avoir effectué une telle analyse d'images classées incorrectement à partir de l'échantillon de validation, vous pouvez désormais attribuer sans ambiguïté chaque erreur à un composant. Cela vous permet d'estimer la proportion d'erreurs associées à chaque composant du pipeline et, par conséquent, de décider sur quoi concentrer votre attention.


Chapitre 55. Le cas principal des erreurs d'attribution



Voici les étapes générales d'attribution des erreurs. Supposons que le pipeline comporte trois étapes A, B et C, où A est directement alimenté en B et B est directement alimenté en C.



Pour chaque erreur que le système fait sur l'échantillon de validation:

  1. Essayez de remplacer manuellement la sortie de l'étage A par une sortie «idéale» (c'est-à-dire une boîte de délimitation «idéale» pour le chat) et continuez avec le reste du convoyeur B, C avec une telle sortie. Si l'algorithme produit maintenant le résultat correct, cela indique que seule la phase A devrait améliorer sa propre sortie afin que l'algorithme entier fonctionne correctement. Ainsi, vous pouvez attribuer cette erreur au composant A. Sinon, passez à l'étape 2.
  2. Essayez de remplacer manuellement la sortie de l'étage B par une sortie «parfaite». Si l'algorithme entier a commencé à fonctionner correctement, attribuez l'erreur au composant B. Sinon, passez à l'étape 3.
  3. Attribuez l'erreur au composant C.

Jetez un œil à un exemple plus complexe:



Votre drone utilise ce convoyeur. Comment, à l'aide d'une analyse d'erreur fragmentaire, déterminer sur quel composant se concentrer?

Vous pouvez marquer les composants comme suit:

  • A. Reconnaître les voitures.
  • B. Reconnaissez les piétons.
  • C. Planifiez le chemin.

En suivant la procédure décrite ci-dessus, supposons que vous testiez votre voiture sur un terrain d'entraînement fermé et que vous trouviez un cas où la voiture choisit une manœuvre dans une direction plus nette que ne le ferait un conducteur expérimenté. Dans le monde de la conduite sans pilote, un tel événement est généralement appelé script. Dans ce cas:

  1. A ( ) «» (.. ). B C , C ( ) «» A. , , A , . A. 2.
  2. B ( ) «» . , B. 3.
  3. C.

Les composants du pipeline d'apprentissage automatique doivent être organisés selon un graphique acyclique dirigé (DAG), ce qui signifie que vous devriez pouvoir les calculer dans un ordre fixe de gauche à droite, et les composants ultérieurs ne devraient dépendre que des sorties des composants précédents. Tant que la
disposition des composants dans l'ordre A → B → C correspond à l'ordre du DAG, l'analyse d'erreur se déroulera correctement.

Vous pouvez obtenir des résultats légèrement différents si vous échangez A et B:

  • A. Reconnaître les piétons (anciennement reconnaissance automobile)
  • B. Reconnaître les voitures (anciennement reconnaissance des piétons)
  • C. Planifiez votre chemin de voiture

Mais le résultat de cette analyse restera vrai et donnera de bonnes indications sur ce sur quoi vous devez concentrer votre attention.


Chapitre 56. Analyse des erreurs dans les pièces et comparaison avec l'efficacité au niveau humain



La réalisation d'une analyse d'erreurs dans un algorithme d'apprentissage est similaire à l'utilisation de la science des données pour analyser les erreurs du système ML afin de se faire une idée de ce qu'il faut faire ensuite. Dans la plupart des cas, une analyse d'erreur fragmentaire nous dira quel composant mérite d'être amélioré avant tout.

Disons que vous disposez d'un ensemble de données sur les clients qui achètent des choses sur un site Web. Un data scientist peut analyser les données de différentes manières. Il peut tirer de nombreuses conclusions différentes sur la question de savoir si le site devrait augmenter les prix, sur la valeur des clients acquis grâce à diverses campagnes de marketing, etc. Il n'y a pas une seule et même «bonne» façon d'analyser un ensemble de données, de nombreuses idées utiles peuvent surgir. De même, il n'y a pas de «bonne» façon d'analyser les erreurs. Dans ces chapitres, vous avez appris certains des modèles de conception les plus courants pour obtenir des informations utiles sur votre système ML, mais vous pouvez également expérimenter librement d'autres méthodes d'analyse d'erreurs.

Retour à l'application de véhicule sans pilote, dans laquelle l'algorithme de détection de voiture affiche l'emplacement (et éventuellement la vitesse) des voitures à proximité, l'algorithme de détection des piétons affiche l'emplacement des piétons les plus proches, et ces deux sorties sont finalement utilisées pour planifier le chemin de la voiture.



Pour déboguer ce pipeline et ne pas suivre strictement la procédure que vous avez vue dans le chapitre précédent, vous pouvez poser les questions suivantes:

  1. Dans quelle mesure l'algorithme de reconnaissance de voiture est-il loin de l'efficacité humaine pour résoudre un problème similaire?
  2. Dans quelle mesure l'algorithme de reconnaissance des piétons est-il loin des performances humaines pour résoudre un problème similaire?
  3. ? , , ( ). , « » , ?

Si vous constatez que l'un des composants du système est loin de l'efficacité humaine, vous aurez alors une bonne occasion de vous concentrer sur l'amélioration de l'efficacité de ce composant.

De nombreux processus d'analyse d'erreurs fonctionnent mieux lorsque nous essayons d'automatiser quelque chose qu'une personne peut faire, nous comparons donc les résultats avec les résultats d'une personne. La plupart de nos exemples précédents avaient cette hypothèse implicite. Si vous construisez un système ML dans lequel la sortie finale ou certains des composants intermédiaires font des choses que même une personne ne peut pas bien faire, alors certaines de ces procédures ne s'appliqueront pas.

C'est un autre avantage de travailler sur des problèmes que les gens peuvent résoudre - vous disposez d'outils plus puissants pour analyser les erreurs et, par conséquent, vous pouvez hiérarchiser plus efficacement le travail de votre équipe.


Chapitre 57. Détection d'erreurs dans le pipeline ML



Que se passe-t-il si chaque composant individuel de votre convoyeur ML montre une efficacité au niveau humain ou un peu plus faible, mais le convoyeur général ne correspond pas jusqu'à présent au niveau humain? Cela signifie généralement que le convoyeur a des défauts et doit être repensé. L'analyse des erreurs peut également vous aider à déterminer si votre pipeline doit être repensé.



Dans le chapitre précédent, nous avons posé la question: chacune des trois composantes montre-t-elle une efficacité au niveau humain? Supposons que la réponse aux trois questions soit oui. Ensuite:

  1. , , () .
  2. , , () .
  3. , , , , , ( ).

Néanmoins, votre véhicule sans pilote fait face à une conduite bien pire qu'une personne. Autrement dit, les personnes qui ont accès aux images de la caméra peuvent mieux planifier le trajet de la voiture. Quelle conclusion pouvez-vous tirer?

La seule conclusion possible est que votre pipeline ML n'est pas conçu correctement. Dans ce cas, le composant qui planifie le trajet de la voiture fonctionne aussi bien qu'il autorise les données entrantes qui ne contiennent pas suffisamment d'informations. Vous devez vous demander quelles autres informations qui ne figurent pas dans la sortie des deux composants précédents sont nécessaires pour une excellente planification du parcours de la voiture. En d'autres termes, quelles autres informations sont utilisées par un conducteur expérimenté?

Supposons que vous compreniez qu'un conducteur humain doit également voir les marquages ​​routiers. Cela suggère que vous devez inverser l'ingénierie du pipeline comme suit: 4


4 , , . «Task simplicity», 51, , . « » — , / .

En fin de compte, si vous pensez que votre pipeline dans son ensemble ne pourra pas atteindre l'efficacité humaine, même si chaque composant individuel a une efficacité au niveau humain (rappelez-vous que vous comparez avec une personne qui a la même entrée que le composant) , alors un tel convoyeur présente des inconvénients et doit être repensé.

Conclusion


Chapitre 58. Construisez une super équipe, partagez ces connaissances avec vos camarades



Félicitations pour avoir terminé ce livre!
Dans le chapitre 2, nous avons expliqué comment ce livre peut vous aider à devenir un super-héros dans votre équipe.


La seule chose qui peut être meilleure que d'être un super-héros est de faire partie d'une équipe de super-héros. J'espère que vous partagez des exemplaires de ce livre avec vos amis et coéquipiers et que vous aidez à créer d'autres super-héros!

Source: https://habr.com/ru/post/fr485190/


All Articles