Je viens d'apprendre la régularisation en tant qu'approche pour contrôler le sur-ajustement, et je voudrais intégrer l'idée dans une simple mise en œuvre de la rétropropagation et du perceptron multicouche (MLP) que j'ai mis en place.
Actuellement, pour éviter le sur-ajustement, je fais une validation croisée et conserve le réseau avec le meilleur score jusqu'à présent sur l'ensemble de validation. Cela fonctionne bien, mais l'ajout de la régularisation me serait bénéfique car le choix correct de l'algorithme et du paramètre de régularisation ferait converger mon réseau sur un modèle non surajusté plus systématiquement.
La formule que j'ai pour le terme de mise à jour (du cours Coursera ML) est indiquée comme une mise à jour par lots, par exemple pour chaque poids, après avoir résumé tous les deltas applicables pour l'ensemble de la formation à partir de la propagation des erreurs, un ajustement de lambda * current_weight
est ajouté également avant le combiné delta est soustrait à la fin du lot, où lambda
est le paramètre de régularisation.
Mon implémentation de la rétropropagation utilise des mises à jour de poids par article. Je crains de ne pas pouvoir simplement copier l'approche par lots, même si cela me semble intuitif. Un terme de régularisation plus petit par article fonctionne-t-il aussi bien?
Par exemple, lambda * current_weight / N
lorsque N est la taille de l'ensemble d'entraînement - à première vue, cela semble raisonnable. Cependant, je n'ai rien trouvé sur le sujet, et je me demande si c'est parce que la régularisation ne fonctionne pas aussi bien avec une mise à jour par article, ou même sous un nom différent ou une formule modifiée.