Combien de données pour le deep learning?

9

J'apprends l'apprentissage en profondeur (en particulier les CNN) et comment cela nécessite généralement énormément de données pour éviter le surapprentissage. Cependant, on m'a également dit que plus la capacité / le nombre de paramètres d'un modèle est élevé, plus il faut de données pour éviter le sur-ajustement. Par conséquent, ma question est: pourquoi ne pouvez-vous pas simplement réduire le nombre de couches / nœuds par couche dans un réseau neuronal profond et le faire fonctionner avec une plus petite quantité de données? Existe-t-il un "nombre minimum de paramètres" fondamental qu'un réseau de neurones requiert jusqu'à ce qu'il "entre en action"? En dessous d'un certain nombre de couches, les réseaux de neurones ne semblent pas aussi performants que les fonctionnalités codées à la main.

Karnivaurus
la source

Réponses:

10

C'est une excellente question et il y a en fait des recherches sur les problèmes de capacité / profondeur que vous avez mentionnés.

Il existe de nombreuses preuves que la profondeur des réseaux de neurones convolutifs a conduit à l'apprentissage de hiérarchies de fonctionnalités plus riches et plus diversifiées. Empiriquement, nous voyons que les réseaux les plus performants ont tendance à être "profonds": l'Oxford VGG-Net avait 19 couches, l'architecture Google Inception est profonde, le Microsoft Deep Residual Network compte 152 couches, et toutes obtiennent une référence ImageNet très impressionnante résultats.

En surface, c'est un fait que les modèles de plus grande capacité ont tendance à s'adapter à moins que vous n'utilisiez une sorte de régularisateur. Une manière dont les sur-ajustements de réseaux très profonds peuvent nuire aux performances est qu'ils approcheront rapidement de très faibles erreurs de formation dans un petit nombre d'époques de formation, c'est-à-dire que nous ne pouvons pas entraîner le réseau pour un grand nombre de passages dans l'ensemble de données. Une technique comme Dropout, une technique de régularisation stochastique, nous permet d'entraîner des filets très profonds pendant de plus longues périodes. En effet, cela nous permet d'apprendre de meilleures fonctionnalités et d'améliorer la précision de notre classification car nous obtenons plus de passages dans les données d'entraînement.

En ce qui concerne votre première question:

Pourquoi ne pouvez-vous pas simplement réduire le nombre de couches / nœuds par couche dans un réseau neuronal profond et le faire fonctionner avec une plus petite quantité de données?

Si nous réduisons la taille de l'ensemble de formation, comment cela affecte-t-il les performances de généralisation? Si nous utilisons une taille de jeu d'apprentissage plus petite, cela peut entraîner l'apprentissage d'une représentation d'entités distribuées plus petite, et cela peut nuire à notre capacité de généralisation. En fin de compte, nous voulons pouvoir bien généraliser. Avoir un ensemble de formation plus large nous permet d'apprendre une hiérarchie de fonctionnalités distribuées plus diversifiée.

En ce qui concerne votre deuxième question:

Existe-t-il un "nombre minimum de paramètres" fondamental qu'un réseau de neurones requiert jusqu'à ce qu'il "entre en action"? En dessous d'un certain nombre de couches, les réseaux de neurones ne semblent pas aussi performants que les fonctionnalités codées à la main.

Ajoutons maintenant quelques nuances à la discussion ci-dessus sur le problème de profondeur. Il semble, étant donné où nous en sommes actuellement avec l'état actuel de la technique, pour former un réseau de convection haute performance à partir de zéro, une sorte d'architecture profonde est utilisée.

Mais il y a eu une série de résultats axés sur la compression du modèle . Ce n'est donc pas une réponse directe à votre question, mais elle est liée. La compression du modèle s'intéresse à la question suivante: étant donné un modèle haute performance (dans notre cas, disons un filet de convection profond), pouvons-nous compresser le modèle, en réduisant sa profondeur ou même le nombre de paramètres, et conserver les mêmes performances?

Nous pouvons voir le réseau de convection haute performance et haute capacité en tant qu'enseignant . Pouvons-nous utiliser l'enseignant pour former un modèle étudiant plus compact ?

Étonnamment, la réponse est: oui . Il y a eu une série de résultats, un bon article pour la perspective du net est un article de Rich Caruana et Jimmy Ba Les filets profonds ont-ils vraiment besoin d'être profonds? . Ils sont capables de former un modèle peu profond pour imiter le modèle plus profond, avec très peu de perte de performances. Il y a eu encore du travail sur ce sujet, par exemple:

entre autres. Je suis sûr que je manque d'autres bons articles.

Pour moi, ce genre de résultats remet en question la capacité réelle de ces modèles peu profonds. Dans l'article de Caruana, Ba, ils indiquent la possibilité suivante:

«Les résultats suggèrent que la force de l'apprentissage en profondeur peut résulter en partie d'une bonne adéquation entre les architectures profondes et les procédures de formation actuelles, et qu'il peut être possible de concevoir de meilleurs algorithmes d'apprentissage pour former des filets de rétroaction peu profonds plus précis. nombre de paramètres, la profondeur peut faciliter l'apprentissage, mais n'est pas toujours indispensable "

Il est important d'être clair: dans l'article de Caruana, Ba, ils n'entraînent pas un modèle peu profond à partir de zéro, c'est-à-dire une formation à partir des étiquettes de classe, pour obtenir des performances de pointe. Au contraire, ils entraînent un modèle profond de haute performance et à partir de ce modèle, ils extraient les probabilités de journal pour chaque point de données. Nous formons ensuite un modèle peu profond pour prédire ces probabilités logarithmiques. Nous ne formons donc pas le modèle superficiel sur les étiquettes de classe, mais plutôt en utilisant ces probabilités logarithmiques.

Néanmoins, c'est toujours un résultat assez intéressant. Bien que cela ne fournisse pas de réponse directe à votre question, il existe ici quelques idées intéressantes qui sont très pertinentes.

Fondamentalement: il est toujours important de se rappeler qu'il y a une différence entre la "capacité" théorique d'un modèle et trouver une bonne configuration de votre modèle. Ce dernier dépend de vos méthodes d'optimisation.

Indie AI
la source