Le goulot d'étranglement de l'application du deep learning dans la pratique


9

Après avoir lu de nombreux articles d'apprentissage en profondeur, une sorte de sentiment brutal est qu'il existe de nombreuses astuces pour entraîner le réseau à obtenir des performances supérieures à la normale. Du point de vue des applications de l'industrie, il est très difficile de développer ce genre de trucs, à l'exception des groupes de recherche d'élite dans les grandes entreprises technologiques, par exemple, Google ou Facebook. Ensuite, quelle est la meilleure façon d'appliquer des algorithmes d'apprentissage en profondeur dans la pratique. Toute pensée et suggestion sera très appréciée.

Réponses:


9

Certes, certains détails utilisés pour améliorer les performances sont considérés comme des astuces et vous ne saurez pas toujours si ces astuces produisent la même amélioration pour vos données et votre réseau.

Certaines choses dont vous aurez certainement besoin:

  • Des données , beaucoup
  • Les GPU vous permettront d'exécuter des expériences plus rapidement et d'essayer plus de choses dans un laps de temps plus court.
  • Analyse de la courbe d'apprentissage. En fin de compte, il s'agit de performances sur l'ensemble de test, mais en examinant les mesures de train et de test, vous pouvez identifier les raisons des mauvaises performances. Fort biais? Surapprentissage de trop de nœuds cachés?
  • La fonction d'activation . Je ne pense pas que cela compte comme une astuce pour savoir de quel type de fonction d'activation vous avez besoin. ReLU a un caractère critique car il ne sature pas comme les sigmoïdes et les tanh. Un neurone avec ReLU aura plus longtemps une sortie de type probabilité, mais vous n'en avez pas besoin de toute façon pour les neurones dans les couches de niveau intermédiaire. L'avantage que vous obtenez est d'atténuer la disparition ou l'explosion des gradients et d'accélérer la convergence.
  • Régularisation . Peut s'appliquer comme astuces, mais si vous utilisez l'une des bibliothèques traditionnelles d'apprentissage en profondeur, vous pouvez obtenir des implémentations standard pour la régularisation via l'abandon.
  • Augmentation des données. Vous développez essentiellement votre ensemble de données de manière synthétique sans le coût supplémentaire d'une annotation manuelle. La clé est d'augmenter les données avec des transformations qui ont toutes un sens. Pour que le réseau puisse voir les variantes des données qu'il peut rencontrer lors de la phase de test ou lorsqu'il est déployé dans le produit. Pour les données visuelles, le retournement horizontal est trivial et ajoute beaucoup de gain. La gigue dépend probablement du type de données et de leur niveau de bruit.
  • Plonger dans l'exploration hyperparamétrique peut être frustrant. Commencez avec de petits réseaux et des procédures de formation simples. Les petits réseaux sont plus rapides à former. Ajoutez plus de couches lorsque vous voyez des signes de sur-ajustement.
  • Bonne initialisation . Une initialisation aléatoire est appropriée pour évaluer la capacité du réseau à converger mais ne conduira pas nécessairement à des performances optimales. Dans le même temps, le simple fait de continuer à itérer peut entraîner un surajustement du réseau aux données de formation. Si possible, utilisez un réseau pré-formé qui a déjà appris une représentation et affinez-la avec votre jeu de données. La pré-formation non supervisée est une autre voie à suivre et peut permettre à la procédure de formation supervisée de commencer à partir d'une position beaucoup plus prometteuse dans l'espace de musculation.
  • Scruterdes trucs. Comprenez ce que fait vraiment l'astuce. Un document décrivant un petit détail qui a été utilisé pour améliorer les performances d'un réseau se concentrera sur ce nouvel aspect. Le document pourrait faire partie d'une séquence de projets sur lesquels les auteurs ont travaillé. Le contexte de l'astuce n'est peut-être pas toujours clair tout de suite, mais pour les auteurs, ce n'est pas une astuce mais une technique qui résout un problème qu'ils avaient. Parfois, une technique sort et est traitée comme une astuce et plus tard quelqu'un analysera son impact et décrira sa fonction. Par exemple, cette astuce équivaut à la régularisation L2 que plus de gens connaissent. Nous pouvons décider si nous devons essayer cette nouvelle technique ou nous en tenir à la régularisation L2 que nous connaissons déjà. Beaucoup de ces astuces tentent de résoudre des problèmes d'apprentissage en profondeur, comme le risque de surapprentissage, calculs coûteux, paramétrage excessif et poids hautement redondants. Cela vaut la peine de prendre le temps de comprendre ce que ces astuces font vraiment. En comprenant le problème qu'ils essaient de résoudre, nous pouvons juger de l'applicabilité de différentes astuces et choisir celle qui fonctionne bien avec les contraintes que nous pouvons avoir (par exemple, peu de puissance de calcul, petit ensemble de données)

2

Voici un livre intéressant Neural Networks: Tricks of the Trade , une version mise à jour 2012 du livre. Beaucoup d'articles par certains des pionniers des réseaux de neurones.

ypx a magnifiquement abordé de nombreux problèmes pratiques liés à la formation, alors abordez les autres questions que vous avez soulevées: de nombreux laboratoires industriels d'élite publient toujours leurs résultats. Par exemple, l'équipe de Microsoft Research vient de remporter ImageNet 2015 et ils ont publié un rapport technique décrivant leur nouveau module Deep Net: Deep Residual Learning for Image Recognition , l'équipe de Google a également publié son architecture Inception, Going Deeper with Convolutions . À un degré non négligeable, il existe encore une culture dans le machine learning (pour l'instant) de partage des grandes innovations. Peut-être parce que la clé est l'accès aux données. Google et Facebook ont ​​simplement accès à des données que nous n'avons pas. Difficile de dire combien de crédit va à l'innovation algorithmique brute et combien va à des quantités massives de données.

En ce qui concerne ce qui se passera à l'avenir? Dur à dire. C'est un problème que beaucoup de gens ont soulevé compte tenu de la valeur de ces entreprises axées sur les données et de la compétitivité du marché. Mais pour l'instant, je pense qu'il y a un assez bon équilibre entre ce que les laboratoires de recherche industrielle partagent et ne partagent pas. Je comprends qu'ils ne partagent pas leur implémentation de code exacte. Mais ils partagent des innovations très originales.

Trouvez des chercheurs qui publient des résultats importants et lisent, lisent, lisent. Je crois en l'AMA de Yann LeCun sur Reddit, il a mentionné qu'il était un lecteur vorace. Je pense que c'est la chose la plus importante. Et dans la mesure où cela est pratique, essayez de recréer leurs repères ou appliquez leur méthode à un ensemble de données qui respecte votre budget.

Je pense que peu importe où vous êtes ou quelle est votre position dans la vie, c'est la meilleure façon de rester forte et de continuer à développer vos compétences. Soyez un lecteur vorace et implémentez les choses et construisez l'intuition. Personnellement, je n'ai pas les ressources pour participer aux compétitions ImageNet, mais la lecture de tous les articles du groupe ImageNet les plus performants m'a énormément aidé.

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.