De nombreuses preuves empiriques montrent que des réseaux de neurones suffisamment profonds peuvent mémoriser des étiquettes aléatoires sur de vastes ensembles de données (Chiyuan Zhang, Samy Bengio, Moritz Hardt, Benjamin Recht, Oriol Vinyals, «Pour comprendre l'apprentissage en profondeur, il faut repenser la généralisation». Ainsi, en principe, en obtenant un NN assez grand, nous pouvons toujours réduire l’ erreur d’entraînement à des valeurs extrêmement petites, limitées en pratique par la précision numérique, même si la tâche n’a pas de sens.
Les choses sont assez différentes pour l' erreur de généralisation . Nous ne pouvons pas être sûrs que pour chaque problème d'apprentissage, il existe un modèle NN qui peut être appris et qui peut produire une erreur de généralisation aussi faible que souhaitée. Pour cette raison, la première étape consiste à
1. Définissez correctement vos attentes
Trouvez une référence fiable qui vous indique qu'il existe une architecture pouvant atteindre l'erreur de généralisation que vous recherchez, sur votre jeu de données ou sur le système le plus similaire pour lequel vous pouvez trouver des références. Par exemple, regardez ici
Quels sont les réseaux de neurones convolutifs à la pointe de la technologie?
pour trouver les performances actuelles (au moment des réponses) SOTA (Etat de la technique) des CNN sur diverses tâches. C'est une bonne idée d'essayer de reproduire ces résultats sur ces ensembles de données de référence, avant de vous entraîner sur votre propre ensemble de données, afin de vérifier que toute votre infrastructure est correctement en place.
2. Assurez-vous que votre procédure d'entraînement est sans faille
Toutes les vérifications décrites dans les réponses à la question
Que dois-je faire lorsque mon réseau de neurones n'apprend pas?
pour vous assurer que votre procédure d’entraînement est en ordre, est une condition préalable à la réduction réussie de l’erreur de généralisation (si votre NN n’apprend pas, il ne peut pas apprendre à généraliser). Ces contrôles incluent, entre autres choses:
- tests unitaires
- Vérification des ensembles de données (examinez quelques échantillons d'entrée / étiquettes aléatoires pour l'ensemble d'apprentissage et l'ensemble d'essai et vérifiez que les étiquettes sont correctes; vérifiez la largeur et la taille des images d'entrée; mélangez les échantillons dans l'ensemble d'apprentissage et de tests et voyez si cela a une incidence résultats, etc.)
- tests de randomisation
- standardisez vos versions de pré-traitement et de package
- tenir un journal de bord des expériences numériques
3. Essayez d’obtenir la superconvergence
«Super-convergence: formation très rapide de réseaux neuronaux utilisant des vitesses d'apprentissage élevées » de Leslie N. Smith et Nicholay Topin montre que dans certains cas, la combinaison de vitesses d'apprentissage étendues et de la méthode de taux d'apprentissage cyclique de Leslie N. Smith agit comme un régularisateur. , accélérant la convergence d'un ordre de grandeur et réduisant le besoin de régularisation poussée. C’est donc une bonne chose à essayer avant
4. Régler votre régularisation sur le MAXXX
La régularisation augmente souvent le temps d’entraînement (mauvais), augmente l’erreur d’entraînement et réduit l’erreur de généralisation (bon), mais trop de régularisation peut en réalité augmenter les deux erreurs (sous-ajustement). Pour cette raison, et en raison de l’augmentation du temps d’entraînement, il est souvent préférable d’introduire les différentes techniques de régularisation une à la fois, une fois que vous avez réussi à sur-adapter l’ensemble d’entraînement. Notez que la régularisation en soi n'implique pas nécessairement que votre erreur de généralisation deviendra plus petite: le modèle doit avoir une capacité suffisamment grande pour obtenir de bonnes propriétés de généralisation. Cela signifie souvent que vous avez besoin d'un réseau suffisamment profond avant de pouvoir voir les avantages de la régularisation.
Les méthodes de régularisation les plus anciennes sont probablement l’arrêt précoce et la perte de poids. Quelques autres:
- réduire la taille des lots: les plus petites tailles de lot sont généralement associées à une erreur de généralisation plus petite, c'est donc quelque chose à essayer. Cependant, notez que certains contestent l'utilité des minibatches: d'après mon expérience, ils aident (tant que vous n'avez pas à utiliser de petites tailles folles telles quem = 16), mais Elad Hoffer, Itay Hubara, Daniel Soudry S'entraîner plus longtemps, généraliser mieux: réduire l'écart de généralisation dans la formation de grands lots de réseaux de neurones n'est pas d'accord. Notez que si vous utilisez la norme batch (voir ci-dessous), des minibatchs trop petits seront très dangereux.
- utilisez SGD plutôt que des optimiseurs adaptatifs: ceci a déjà été couvert par @shimao, je ne le mentionne donc que par souci d'exhaustivité
- utiliser la suppression: si vous utilisez des LSTM, utilisez la suppression standard uniquement pour les unités d'entrée et de sortie d'une couche LSTM. Pour les unités récurrentes (les portes), utilisez les décrochages récurrents, comme l’a montré pour la première fois Yarin Gal dans son doctorat. thèse . Cependant, si vous utilisez des CNN, le décrochage est utilisé moins fréquemment maintenant. Au lieu de cela, vous avez tendance à…
- ... utilisez la normalisation par lots: les architectures CNN les plus récentes évitent les abandons au profit de la normalisation par lots. Cela pourrait être juste une lubie, ou cela pourrait être dû au fait qu'apparemment, l'abandon scolaire et la normalisation des lots ne jouent pas bien ensemble (Xiang Li, Shuo Chen, Xiaolin Hu, Jian Yang, Comprendre le déséquilibre entre abandon et normalisation par lot par variance Shift ). Étant donné que la norme batch est plus efficace que l'abandon lorsque vous avez d'énormes ensembles de données, c'est peut-être pour cette raison que l'abandon a perdu la faveur des architectures CNN. Si vous utilisez la normalisation par lots, vérifiez que la distribution des poids et des biais de chaque couche est approximativement normale. L’application de la norme de lot est compliquée pour les RNN: normalisation du poids (Tim Salimans, Diederik P. Kingma,La normalisation du poids: un reparamétrage simple pour accélérer la formation des réseaux de neurones profonds ) est une alternative viable.
- utiliser l’augmentation des données: elle a également un effet régularisateur.
5. Recherche d'hyperparamètre / architecture
Si rien d’autre ne vous aide, vous devrez tester plusieurs paramètres d’hyperparamètre différents (l’optimisation Bayesian peut être utile ici) ou plusieurs modifications d’architecture différentes (par exemple, dans votre architecture GAN et pour l’ensemble de données sur lequel vous travaillez, la norme batch ne fonctionne que dans le cas contraire). générateur, mais quand il est ajouté au discriminateur aussi, cela aggrave les choses). Assurez-vous de garder une trace des résultats de ces expériences longues et ennuyeuses dans un journal de bord bien ordonné.
PS pour un GAN, il n’a pas de sens de parler d’une erreur de généralisation: l’exemple ci-dessus ne sert qu’à indiquer qu’il ya encore beaucoup d’alchimie dans Deep Learning et que des choses que vous vous attendez à bien travailler Pas, ou vice-versa, quelque chose qui a fonctionné plusieurs fois, puis vous avez soudainement besoin d’un nouveau jeu de données.