Pourquoi les réseaux de neurones ont-ils besoin d'une sélection / ingénierie de fonctionnalités?


14

Particulièrement dans le contexte des compétitions kaggle, j'ai remarqué que la performance du modèle est une question de sélection / ingénierie de fonctionnalités. Bien que je puisse pleinement comprendre pourquoi c'est le cas dans le cas des algorithmes ML plus conventionnels / old-school, je ne vois pas pourquoi ce serait le cas lors de l'utilisation de réseaux de neurones profonds.

Citant le livre Deep Learning:

L'apprentissage profond résout ce problème central dans l'apprentissage de la représentation en introduisant des représentations qui sont exprimées en termes d'autres représentations plus simples. L'apprentissage en profondeur permet à l'ordinateur de construire des concepts complexes à partir de concepts plus simples.

Par conséquent, j'ai toujours pensé que si "l'information est dans les données", un réseau neuronal suffisamment profond et bien paramétré capterait les bonnes caractéristiques avec un temps d'entraînement suffisant.


4
votre cerveau est encore plus puissant qu'une machine, donc un peu d'aide d'un humain va très loin
Aksakal

qui dit avoir besoin d'une sélection / ingénierie de fonctionnalités? pouvez-vous donner des références? lorsque vous travaillez avec des images, elles fonctionnent pratiquement de bout en bout ...

@ user2137591 c'est le point. J'ai l'impression que dans la littérature, les réseaux de neurones sont souvent décrits comme un pas en avant par rapport à l'apprentissage automatique conventionnel car ils supposent que l'ingénierie et la sélection des fonctionnalités sont automatiques (comme le suggèrent Goodfellow, Bengio, Courville dans le livre Deep Learning). Cela est vrai dans de nombreuses tâches dans CV ou NLP où je pense que les informations sont encore rares. D'un autre côté, dans la science des données concurrentielles (kaggle), où de nombreuses données bruyantes sont disponibles, une croyance commune est que le facteur le plus important dans la construction d'une solution compétitive est de trouver la "fonctionnalité magique".
CephasW

Je peux parler pour CompVis, où je ne me souviens d'aucun projet faisant de l'ingénierie de fonctionnalités pour alimenter les réseaux par la suite ... cela vaut également pour les données d'images médicales, où la qualité d'image est généralement plus faible. c'est peut-être différent dans d'autres domaines ... avez-vous des articles ou des sources publiées auxquels vous pouvez vous référer à cet égard? Je l'apprécierais, merci.

Réponses:


18
  • Que se passe-t-il si le réseau "suffisamment profond" est insupportablement énorme, rendant la formation sur modèle trop coûteuse (les frais AWS s'additionnent!) Ou parce que vous devez déployer le réseau dans un environnement aux ressources limitées?

  • Comment savoir a priori que le réseau est bien paramétré? Cela peut prendre beaucoup d'expérimentation pour trouver un réseau qui fonctionne bien.

  • Que se passe-t-il si les données avec lesquelles vous travaillez ne sont pas "conviviales" avec les méthodes d'analyse standard, telles qu'une chaîne binaire comprenant des milliers ou des millions de bits, où chaque séquence a une longueur différente?

  • Que se passe-t-il si vous êtes intéressé par les données de niveau utilisateur, mais que vous êtes obligé de travailler avec une base de données qui collecte uniquement des données de niveau transaction?

  • Supposons que vos données prennent la forme d'entiers tels que et que votre tâche consiste à prédire la somme des chiffres, de sorte que la cible dans cet exemple est . Il est très simple d'analyser chaque chiffre dans un tableau, puis de sommer le tableau («ingénierie des fonctionnalités»), mais difficile autrement.3 , 5 , 18 , 712,32,486,73,5,18,7

Nous aimerions vivre dans un monde où l'analyse des données est «clé en main», mais ces types de solutions n'existent généralement que dans des cas particuliers. Beaucoup de travail a été consacré au développement de CNN profonds pour la classification des images - les travaux antérieurs avaient une étape qui transformait chaque image en un vecteur de longueur fixe.

L'ingénierie des fonctionnalités permet au praticien de transformer directement les connaissances sur le problème en un vecteur de longueur fixe adapté aux réseaux de rétroaction. La sélection des fonctionnalités peut résoudre le problème d'inclure autant de fonctionnalités non pertinentes que tout signal est perdu, ainsi que de réduire considérablement le nombre de paramètres du modèle.


6

Les mots clés ici sont prieurs et échelle . À titre d'exemple simple, imaginez que vous essayez de prédire l'âge d'une personne à partir d'une photographie. Avec un ensemble de données d'images et d'âges, vous pourriez former un modèle d'apprentissage en profondeur pour faire des prédictions. C'est objectivement vraiment inefficace car 90% de l'image est inutile, et seule la région avec la personne est réellement utile. En particulier, le visage de la personne, son corps et peut-être ses vêtements.

D'un autre côté, vous pouvez utiliser à la place un réseau de détection d'objet pré-formé pour extraire d'abord les boîtes englobantes pour la personne, rogner l'image, puis la passer à travers le réseau. Ce processus améliorera considérablement la précision de votre modèle pour plusieurs raisons:

1) Toutes les ressources du réseau (c.-à-d. Les poids) peuvent se concentrer sur la tâche réelle de la prévision de l'âge, au lieu d'avoir à trouver d'abord la personne en premier. Ceci est particulièrement important car le visage de la personne contient des caractéristiques utiles. Sinon, les fonctionnalités les plus fines dont vous avez besoin peuvent se perdre dans les premières couches. En théorie, un réseau suffisamment grand pourrait résoudre ce problème, mais ce serait terriblement inefficace. L'image recadrée est également considérablement plus régulière que l'image originale. Alors que l'image d'origine a une tonne de bruit, il est possible de soutenir que les écarts dans l'image recadrée sont beaucoup plus fortement corrélés avec l'objectif.

2) L'image recadrée peut être normalisée pour avoir la même échelle . Cela aide le deuxième réseau à résoudre les problèmes de mise à l'échelle, car dans l'image d'origine, des personnes peuvent se produire près ou loin. La normalisation de l'échelle au préalable permet de garantir que l'image recadrée contiendra une personne qui remplira l'image recadrée complète (bien qu'elle soit pixellisée si elle était éloignée). Pour voir comment cela peut aider à évoluer, un corps recadré qui est la moitié de la largeur et de la hauteur de l'image d'origine a 4 fois moins de pixels à traiter, et donc le même réseau appliqué à cette image aurait 4x le champ récepteur du réseau d'origine à chaque couche.

Par exemple, dans la compétition pulmonaire kaggle, un thème commun dans les meilleures solutions était une sorte de prétraitement des images pulmonaires qui les recadrait autant que possible et isolait les composants de chaque poumon. Ceci est particulièrement important dans les images 3D car l'effet est cubique: en supprimant 20% de chaque dimension, vous vous débarrassez de près de la moitié des pixels!


4

Mon intuition sur ce phénomène est liée à la complexité du modèle à apprendre. Un réseau neuronal profond peut en effet approximer n'importe quelle fonction en théorie , mais la dimension de l'espace des paramètres peut être vraiment grande, comme par millions. Donc, trouver un bon réseau de neurones est vraiment difficile. J'aime penser l'ingénierie des fonctionnalités comme donnant une longueur d'avance à l'algorithme, en lui fournissant des informations supplémentaires concernant la représentation des données, ce qui est assez bon dans un certain sens. Bien sûr, ce n'est pas une explication formelle, cette question pourrait être très difficile à répondre avec une rigueur scientifique.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.