andrewekhalel / MLQuestions

Une collection de questions d’entrevue techniques pour les postes d’ingénieur en apprentissage automatique et en vision par ordinateur.

1) Quel est le compromis entre le biais et la variance?

Si notre modèle est trop simple et a très peu de paramètres, il peut avoir un biais élevé et une faible variance. D’un autre côté, si notre modèle a un grand nombre de paramètres, il aura une variance élevée et un faible biais. Nous devons donc trouver le bon / bon équilibre sans surajuster et sous-ajuster les données.

2) Qu’est-ce que la descente de gradient ?

3) Expliquer le sur- et le sous-ajustement et comment les combattre?

4) Comment combattre la malédiction de la dimensionnalité ?

  • Sélection manuelle des caractéristiques
  • Analyse en composantes principales (PCA)
  • Mise à l’échelle multidimensionnelle
  • Intégration linéaire locale

5) Qu’est-ce que la régularisation, pourquoi l’utilisons-nous et donnons quelques exemples de méthodes courantes?

Une technique qui décourage l’apprentissage d’un modèle plus complexe ou flexible, afin d’éviter le risque de surajustement.Exemples

  • Crête (norme L2)
  • Lasso (norme L1)
    L’inconvénient évident de la régression de crête est l’interprétabilité du modèle. Cela réduira les coefficients pour les prédicteurs les moins importants, très proches de zéro. Mais cela ne les rendra jamais exactement nuls. En d’autres termes, le modèle final inclura tous les prédicteurs. Cependant, dans le cas du lasso, la pénalité L1 a pour effet de forcer certaines estimations de coefficients à être exactement égales à zéro lorsque le paramètre d’accord λ est suffisamment grand. Par conséquent, la méthode lasso effectue également une sélection de variables et donne des modèles clairsemés.

6) Expliquer l’Analyse en composantes principales (APC)?

7) Pourquoi ReLU est-il meilleur et plus souvent utilisé que Sigmoid dans les réseaux de neurones?

Imaginez un réseau avec des poids initialisés aléatoires (ou normalisés) et près de 50% du réseau donne 0 activation en raison de la caractéristique de ReLu (sortie 0 pour les valeurs négatives de x). Cela signifie que moins de neurones se déclenchent (activation clairsemée) et que le réseau est plus léger.

8) Compte tenu des tailles de stride S et de noyau pour chaque couche d’un CNN (à 1 dimension), créez une fonction pour calculer le champ réceptif d’un nœud particulier dans le réseau. Il s’agit simplement de trouver le nombre de nœuds d’entrée qui se connectent réellement à un neurone dans un CNN.

9) Implémenter des composants connectés sur une image/matrice.

10) Implémenter une classe de matrice clairsemée en C++.

11) Créez une fonction pour calculer une image intégrale et créez une autre fonction pour obtenir des sommes de surface à partir de l’image intégrale.

12) Comment supprimeriez-vous les valeurs aberrantes lorsque vous essayez d’estimer un plan plat à partir d’échantillons bruyants?

13) Comment fonctionne le CBIR?

14) Comment fonctionne l’enregistrement des images? Flux optique clairsemé vs dense et ainsi de suite.

15) Décrivez le fonctionnement de la convolution. Qu’en est-il si vos entrées sont des images en niveaux de gris par rapport aux images RVB? Qu’est-ce qui détermine la forme de la couche suivante?

16) Expliquez-moi comment vous créeriez un modèle 3D d’un objet à partir d’images et de mesures de capteurs de profondeur prises sous tous les angles autour de l’objet.

17) Implémentez SQRT (const double & x) sans utiliser de fonctions spéciales, juste de l’arithmétique fondamentale.

18) Inverser une chaîne de bits.

19) Implémentez la suppression non maximale aussi efficacement que possible.

20) Inverser une liste chaînée en place.

21) Qu’est-ce que la normalisation des données et pourquoi en avons-nous besoin?

La normalisation des données est une étape de prétraitement très importante, utilisée pour redimensionner les valeurs pour les adapter à une plage spécifique afin d’assurer une meilleure convergence lors de la rétropropagation. En général, cela se résume à soustraire la moyenne de chaque point de données et à diviser par son écart-type. Si nous ne le faisons pas, certaines des fonctionnalités (celles de grande magnitude) seront plus pondérées dans la fonction de coût (si une fonctionnalité de plus grande magnitude change de 1%, alors ce changement est assez important, mais pour les fonctionnalités plus petites, c’est assez insignifiant). La normalisation des données permet de pondérer toutes les fonctionnalités de manière égale.

22) Pourquoi utilisons-nous des circonvolutions pour les images plutôt que de simples calques FC?

Premièrement, les circonvolutions préservent, encodent et utilisent réellement les informations spatiales de l’image. Si nous n’utilisions que des couches FC, nous n’aurions aucune information spatiale relative. Deuxièmement, les réseaux de neurones convolutifs (CNN) ont une variance de traduction partiellement intégrée, car chaque noyau de convolution agit comme son propre filtre / détecteur de fonctionnalités.

23) Qu’est-ce qui rend la traduction CNNs invariante ?

Comme expliqué ci-dessus, chaque noyau de convolution agit comme son propre filtre / détecteur de caractéristiques. Supposons donc que vous fassiez une détection d’objet, peu importe où se trouve l’objet dans l’image, car nous allons appliquer la convolution de manière coulissante sur toute l’image de toute façon.

24) Pourquoi avons-nous une mise en commun maximale dans les CNN de classification ?

pour un rôle dans la vision par ordinateur. La mise en commun maximale dans un CNN vous permet de réduire le calcul car vos cartes d’entités sont plus petites après la mise en commun. Vous ne perdez pas trop d’informations sémantiques puisque vous prenez l’activation maximale. Il existe également une théorie selon laquelle la mise en commun maximale contribue un peu à donner aux CNN plus de variance de traduction. Découvrez cette superbe vidéo d’Andrew Ng sur les avantages du max-pooling.

25) Pourquoi les CNN de segmentation ont-ils généralement un style /une structure codeur-décodeur ?

Le codeur CNN peut essentiellement être considéré comme un réseau d’extraction de caractéristiques, tandis que le décodeur utilise ces informations pour prédire les segments d’image en “décodant” les caractéristiques et en les mettant à l’échelle à la taille de l’image d’origine.

26) Quelle est l’importance des réseaux résiduels?

La principale chose que les connexions résiduelles faisaient était de permettre un accès direct aux fonctionnalités à partir des couches précédentes. Cela facilite beaucoup la propagation des informations sur tout le réseau. Un article très intéressant à ce sujet montre comment l’utilisation de connexions de saut locales donne au réseau un type de structure multi-chemins d’ensemble, donnant aux fonctionnalités plusieurs chemins à propager dans tout le réseau.

27) Qu’est-ce que la normalisation par lots et pourquoi fonctionne-t-elle?

L’entraînement des réseaux neuronaux profonds est compliqué par le fait que la distribution des entrées de chaque couche change pendant l’entraînement, à mesure que les paramètres des couches précédentes changent. L’idée est alors de normaliser les entrées de chaque couche de telle sorte qu’elles aient une activation moyenne de sortie de zéro et un écart type de un. Ceci est fait pour chaque mini-lot individuel à chaque couche, c’est-à-dire calculer la moyenne et la variance de ce mini-lot seul, puis normaliser. Ceci est analogue à la façon dont les entrées des réseaux sont standardisées. Comment cela aide-t-il? Nous savons que la normalisation des entrées d’un réseau l’aide à apprendre. Mais un réseau n’est qu’une série de couches, où la sortie d’une couche devient l’entrée de la suivante. Cela signifie que nous pouvons considérer n’importe quelle couche d’un réseau neuronal comme la première couche d’un réseau ultérieur plus petit. Considéré comme une série de réseaux de neurones s’alimentant les uns les autres, nous normalisons la sortie d’une couche avant d’appliquer la fonction d’activation, puis l’introduisons dans la couche suivante (sous-réseau).

28) Pourquoi utiliseriez-vous beaucoup de petits noyaux convolutifs tels que 3×3 plutôt que quelques gros noyaux?

Ceci est très bien expliqué dans le document VGGNet. Il y a 2 raisons: Premièrement, vous pouvez utiliser plusieurs noyaux plus petits plutôt que quelques gros pour obtenir le même champ réceptif et capturer plus de contexte spatial, mais avec les noyaux plus petits, vous utilisez moins de paramètres et de calculs. Deuxièmement, parce qu’avec des noyaux plus petits, vous utiliserez plus de filtres, vous pourrez utiliser plus de fonctions d’activation et ainsi avoir une fonction de mappage plus discriminante apprise par votre CNN.

29) Pourquoi avons-nous besoin d’un ensemble de validation et d’un ensemble de test? Quelle est la différence entre eux?

Lors de la formation d’un modèle, nous divisons les données disponibles en trois ensembles distincts:

  • L’ensemble de données d’entraînement est utilisé pour ajuster les paramètres du modèle. Cependant, la précision que nous obtenons sur l’ensemble d’entraînement n’est pas fiable pour prédire si le modèle sera précis sur de nouveaux échantillons.
  • L’ensemble de données de validation est utilisé pour mesurer l’efficacité du modèle sur des exemples qui ne faisaient pas partie de l’ensemble de données d’entraînement. Les métriques calculées sur les données de validation peuvent être utilisées pour régler les hyperparamètres du modèle. Cependant, chaque fois que nous évaluons les données de validation et que nous prenons des décisions en fonction de ces scores, nous divulguons des informations des données de validation dans notre modèle. Plus il y a d’évaluations, plus les informations sont divulguées. Nous pouvons donc nous retrouver surajustés aux données de validation, et encore une fois le score de validation ne sera pas fiable pour prédire le comportement du modèle dans le monde réel.
  • L’ensemble de données de test est utilisé pour mesurer l’efficacité du modèle sur des exemples inédits. Il ne doit être utilisé qu’une fois que nous avons réglé les paramètres à l’aide du jeu de validation.

Donc, si nous omettons l’ensemble de test et n’utilisons qu’un ensemble de validation, le score de validation ne sera pas une bonne estimation de la généralisation du modèle.

30) Qu’est-ce que la validation croisée stratifiée et quand devrions-nous l’utiliser?

La validation croisée est une technique de division des données entre les ensembles de formation et de validation. Lors de la validation croisée typique, cette division est effectuée de manière aléatoire. Mais dans la validation croisée stratifiée, la division préserve le rapport des catégories sur les ensembles de données de formation et de validation.

Par exemple, si nous avons un ensemble de données avec 10% de la catégorie A et 90% de la catégorie B, et que nous utilisons la validation croisée stratifiée, nous aurons les mêmes proportions dans la formation et la validation. En revanche, si nous utilisons une validation croisée simple, dans le pire des cas, nous pouvons constater qu’il n’y a pas d’échantillons de catégorie A dans l’ensemble de validation.

La validation croisée stratifiée peut être appliquée dans les scénarios suivants:

  • Sur un ensemble de données avec plusieurs catégories. Plus l’ensemble de données est petit et plus les catégories sont déséquilibrées, plus il sera important d’utiliser la validation croisée stratifiée.
  • Sur un jeu de données avec des données de différentes distributions. Par exemple, dans un jeu de données pour la conduite autonome, nous pouvons avoir des images prises de jour et de nuit. Si nous ne nous assurons pas que les deux types sont présents dans la formation et la validation, nous aurons des problèmes de généralisation.

31) Pourquoi les ensembles ont-ils généralement des scores plus élevés que les modèles individuels?

Un ensemble est la combinaison de plusieurs modèles pour créer une seule prédiction. L’idée clé pour faire de meilleures prédictions est que les modèles doivent faire des erreurs différentes. De cette façon, les erreurs d’un modèle seront compensées par les bonnes suppositions des autres modèles et ainsi la note de l’ensemble sera plus élevée.

Nous avons besoin de divers modèles pour créer un ensemble. La diversité peut être obtenue par:

  • En utilisant différents algorithmes de ML. Par exemple, vous pouvez combiner la régression logistique, les k-voisins les plus proches et les arbres de décision.
  • En utilisant différents sous-ensembles de données pour la formation. C’est ce qu’on appelle l’ensachage.
  • Donnant un poids différent à chacun des échantillons de l’ensemble d’entraînement. Si cela se fait de manière itérative, en pondérant les échantillons en fonction des erreurs de l’ensemble, on parle de boosting.De nombreuses solutions gagnantes aux concours de science des données sont des ensembles. Cependant, dans les projets d’apprentissage automatique réels, les ingénieurs doivent trouver un équilibre entre le temps d’exécution et la précision.

32) Qu’est-ce qu’un ensemble de données déséquilibré ? Pouvez-vous énumérer quelques façons d’y faire face?

Un ensemble de données déséquilibré est celui qui a des proportions différentes de catégories cibles. Par exemple, un ensemble de données contenant des images médicales où nous devons détecter une maladie comportera généralement beaucoup plus d’échantillons négatifs que d’échantillons positifs — disons que 98% des images sont sans la maladie et 2% des images sont avec la maladie.

Il existe différentes options pour traiter les ensembles de données déséquilibrés:

  • Suréchantillonnage ou souséchantillonnage. Au lieu d’échantillonner avec une distribution uniforme à partir de l’ensemble de données d’apprentissage, nous pouvons utiliser d’autres distributions afin que le modèle voit un ensemble de données plus équilibré.
  • Augmentation des données. Nous pouvons ajouter des données dans les catégories les moins fréquentes en modifiant les données existantes de manière contrôlée. Dans l’exemple de jeu de données, nous pourrions retourner les images avec des maladies ou ajouter du bruit aux copies des images de manière à ce que la maladie reste visible.
  • En utilisant des métriques appropriées. Dans l’exemple de jeu de données, si nous avions un modèle qui faisait toujours des prédictions négatives, il atteindrait une précision de 98%. Il existe d’autres métriques telles que la précision, le rappel et le score F qui décrivent mieux la précision du modèle lors de l’utilisation d’un ensemble de données déséquilibré.

33) Pouvez-vous expliquer les différences entre l’apprentissage supervisé, non supervisé et l’apprentissage par renforcement?

Dans l’apprentissage supervisé, nous formons un modèle pour apprendre la relation entre les données d’entrée et les données de sortie. Nous avons besoin d’avoir des données étiquetées pour pouvoir faire de l’apprentissage supervisé.

Avec l’apprentissage non supervisé, nous n’avons que des données non étiquetées. Le modèle apprend une représentation des données. L’apprentissage non supervisé est fréquemment utilisé pour initialiser les paramètres du modèle lorsque nous avons beaucoup de données non étiquetées et une petite fraction de données étiquetées. Nous formons d’abord un modèle non supervisé et, après cela, nous utilisons les poids du modèle pour former un modèle supervisé.

Dans l’apprentissage par renforcement, le modèle a des données d’entrée et une récompense en fonction de la sortie du modèle. Le modèle apprend une politique qui maximise la récompense. L’apprentissage par renforcement a été appliqué avec succès aux jeux stratégiques tels que Go et même aux jeux vidéo Atari classiques.

34) Qu’est-ce que l’augmentation des données? Pouvez-vous donner quelques exemples?

L’augmentation de données est une technique permettant de synthétiser de nouvelles données en modifiant des données existantes de manière à ce que la cible ne soit pas modifiée ou qu’elle soit modifiée de manière connue.

La vision par ordinateur est l’un des domaines où l’augmentation des données est très utile. Il y a beaucoup de modifications que nous pouvons apporter aux images:

  • Redimensionner
  • Retournement horizontal ou vertical
  • Faire pivoter
  • Ajouter du bruit
  • Déformer
  • Modifier la couleurchaque problème nécessite un pipeline d’augmentation de données personnalisé. Par exemple, sur OCR, faire des retournements changera le texte et ne sera pas bénéfique; cependant, les redimensionnements et les petites rotations peuvent aider.

35) Qu’est-ce que le test de Turing?

Le test de Turing est une méthode pour tester la capacité de la machine à correspondre à l’intelligence du niveau humain. Une machine est utilisée pour défier l’intelligence humaine que lorsqu’elle réussit le test, elle est considérée comme intelligente. Pourtant, une machine peut être considérée comme intelligente sans connaître suffisamment les gens pour imiter un humain.

36) Qu’est-ce que la précision ?

La précision (également appelée valeur prédictive positive) est la fraction des instances pertinentes parmi les instances récupérées
Précision = vrai positif / (vrai positif + faux positif)

37) Qu’est-ce que le rappel?

Le rappel (également appelé sensibilité) est la fraction des instances pertinentes qui ont été récupérées sur le nombre total d’instances pertinentes.Rappel = vrai positif / (vrai positif + faux négatif)

38) Définir le score F1.

C’est la moyenne pondérée de la précision et du rappel. Il tient compte à la fois des faux positifs et des faux négatifs. Il est utilisé pour mesurer les performances du modèle.
F1-Score = 2 * (précision * rappel) / (précision + rappel)

39) Qu’est-ce que la fonction de coût?

La fonction de coût est une fonction scalaire qui quantifie le facteur d’erreur du réseau de neurones. Abaissez la fonction de coût mieux le réseau neuronal. Par exemple: Jeu de données MNIST pour classer l’image, l’image d’entrée est le chiffre 2 et le réseau de neurones prédit à tort qu’elle est 3

40) Répertoriez différents neurones ou fonctions d’activation.

  • Neurone Linéaire
  • Neurone à Seuil Binaire
  • Neurone Binaire Stochastique
  • Neurone Sigmoïde
  • Fonction Tanh
  • Unité Linéaire Rectifiée (ReLU)

41) Définissez le taux d’apprentissage.

Le taux d’apprentissage est un hyper-paramètre qui contrôle dans quelle mesure nous ajustons les poids de notre réseau par rapport au gradient de perte.

42) Qu’est-ce que l’élan (optimisation w.r.t NN)?

Momentum permet à l’algorithme d’optimisation de se souvenir de sa dernière étape et d’en ajouter une partie à l’étape en cours. De cette façon, même si l’algorithme est bloqué dans une région plate, ou un petit minimum local, il peut sortir et continuer vers le vrai minimum.

43) Quelle est la différence entre la Descente de Gradient par Lots et la Descente de Gradient stochastique?

La descente de gradient par lots calcule le gradient à l’aide de l’ensemble de données entier. Ceci est idéal pour les collecteurs d’erreurs convexes ou relativement lisses. Dans ce cas, nous nous dirigeons un peu directement vers une solution optimale, locale ou globale. De plus, la descente de gradient par lots, compte tenu d’un taux d’apprentissage recuit, finira par trouver le minimum situé dans son bassin d’attraction.

La descente de gradient stochastique (SGD) calcule le gradient à l’aide d’un seul échantillon. SGD fonctionne bien (pas bien, je suppose, mais mieux que la descente de gradient par lots) pour les collecteurs d’erreurs qui ont beaucoup de maxima / minima locaux. Dans ce cas, le gradient un peu plus bruyant calculé en utilisant le nombre réduit d’échantillons a tendance à secouer le modèle des minima locaux dans une région qui, espérons-le, est plus optimale.

44) Époque vs Lot vs Itération.

Époque: une passe avant et une passe arrière de tous les exemples d’entraînement
Lot: exemples traités ensemble en une seule passe (avant et arrière)
Itération: nombre d’exemples d’entraînement / Taille du lot

45) Qu’est-ce que le gradient de disparition?

À mesure que nous ajoutons de plus en plus de couches cachées, la propagation arrière devient de moins en moins utile pour transmettre des informations aux couches inférieures. En effet, au fur et à mesure que l’information est renvoyée, les gradients commencent à disparaître et deviennent petits par rapport aux poids des réseaux.

46) Que sont les décrocheurs?

L’abandon scolaire est un moyen simple d’empêcher un réseau de neurones de surajuster. C’est l’abandon de certaines unités d’un réseau neuronal. Il est similaire au processus de reproduction naturel, où la nature produit des progénitures en combinant des gènes distincts (en abandonnant d’autres) plutôt que de renforcer la co-adaptation de ceux-ci.

47) Définir LSTM.

Mémoire à long terme à court terme – sont explicitement conçus pour résoudre le problème de dépendance à long terme, en maintenant un état de ce qu’il faut retenir et de ce qu’il faut oublier.

48) Énumèrent les composants clés du LSTM.

  • Gates(forget, Memory, update & Read)
  • tanh(x)(valeurs comprises entre -1 et 1)
  • Sigmoid(x)(valeurs comprises entre 0 et 1)

49) Énumérez les variantes de RNN.

  • LSTM: Mémoire Longue à Court Terme
  • GRU: Unité récurrente fermée
  • Réseau de bout en bout
  • Réseau de mémoire

50) Qu’est-ce que l’Autoencodeur, nommez quelques applications.

L’encodeur automatique est essentiellement utilisé pour apprendre une forme compressée de données données. Peu d’applications incluent

  • Débruitage des données
  • Réduction de la dimensionnalité
  • Reconstruction d’image
  • Colorisation d’image

51) Quels sont les composants du GAN?

  • Générateur
  • Discriminateur

52) Quelle est la différence entre le boosting et l’ensachage?

L’amplification et l’ensachage sont similaires, en ce sens qu’ils sont tous deux des techniques d’ensemblage, où un certain nombre d’apprenants faibles (classificateurs / régresseurs qui sont à peine meilleurs que de deviner) se combinent (par la moyenne ou le vote maximum) pour créer un apprenant fort capable de faire des prédictions précises. L’ensachage signifie que vous prenez des échantillons bootstrap (avec remplacement) de votre ensemble de données et que chaque échantillon forme un apprenant (potentiellement) faible. Boosting, en revanche, utilise toutes les données pour former chaque apprenant, mais les instances qui ont été mal classées par les apprenants précédents reçoivent plus de poids afin que les apprenants suivants leur accordent plus d’attention pendant la formation.

53) Expliquez comment fonctionne une courbe ROC.

La courbe ROC est une représentation graphique du contraste entre les taux positifs réels et le taux de faux positifs à différents seuils. Il est souvent utilisé comme proxy pour le compromis entre la sensibilité du modèle (vrais positifs) et la chute ou la probabilité qu’il déclenche une fausse alarme (faux positifs).

54) Quelle est la différence entre les erreurs de type I et de type II?

L’erreur de type I est un faux positif, tandis que l’erreur de type II est un faux négatif. En bref, une erreur de type I signifie que quelque chose s’est passé alors que ce n’est pas le cas, tandis qu’une erreur de type II signifie que vous prétendez que rien ne se passe alors qu’en fait quelque chose l’est.Une façon intelligente d’y penser est de penser que l’erreur de type I signifie dire à un homme qu’il est enceinte, tandis que l’erreur de type II signifie que vous dites à une femme enceinte qu’elle ne porte pas de bébé.

55) Quelle est la différence entre un modèle génératif et discriminatif ?

Un modèle génératif apprendra des catégories de données tandis qu’un modèle discriminatif apprendra simplement la distinction entre différentes catégories de données. Les modèles discriminants surpasseront généralement les modèles génératifs sur les tâches de classification.

Contributions

Les contributions sont les plus bienvenues.

  1. Fork le référentiel.
  2. Validez vos questions ou réponses.
  3. Demande de tirage ouverte.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.