Dans la plupart des tâches d’apprentissage automatique où vous pouvez formuler une probabilité qui doit être maximisée, nous optimisons en fait la probabilité de au lieu de la probabilité de certains paramètres . Par exemple, dans l'entraînement à probabilité maximum, il s'agit généralement du log-vraisemblance. Lorsque vous faites cela avec une méthode de gradient, cela implique un facteur:
Voir ici ou ici pour quelques exemples.
Bien sûr, l'optimisation est équivalente, mais le gradient sera différent, de sorte que toute méthode basée sur le gradient se comportera différemment (en particulier les méthodes à gradient stochastique). Existe-t-il une quelconque raison pour laquelle le dégradé fonctionne mieux que le dégradé ?
Réponses:
Les méthodes de dégradé fonctionnent généralement mieux en optimisant que car le gradient de est généralement plus bien mis à l’échelle . C'est-à-dire que sa taille reflète de manière cohérente et utile la géométrie de la fonction objectif, ce qui facilite la sélection d'une taille de pas appropriée et l'optimisation optimale en moins de pas.logp(x) p(x) logp(x)
Pour voir ce que je veux dire, comparons le processus d'optimisation de gradient pour et . En tout point , le gradient de estSi nous multiplions cela par , nous obtenons la taille de pas exacte nécessaire pour atteindre l'optimum global à l'origine, peu importe ce quep(x)=exp(−x2) f(x)=logp(x)=−x2 x f(x)
En revanche, le gradient de a de très mauvaises propriétés globales d’optimisation. Nous avonsCeci multiplie le très bon et bien dégradé avec un facteur qui décroît (plus vite que) de façon exponentielle à mesure que augmente. À , nous avons déjà , de sorte qu'un pas le long du vecteur de gradient est environ fois trop petit. Pour obtenir une taille de pas raisonnable vers l'optimum, il faudrait redimensionner le gradient en fonction de la réciproque, une énorme constantep(x)
En général, rien ne garantit que aura de telles propriétés d’échelle de gradient que cet exemple de jouet, en particulier lorsque nous avons plus d’une variable. Cependant, pour à peu près tous les problèmes non triviaux, sera bien meilleur que . En effet, la probabilité est un gros produit avec un tas de termes, et le journal le transforme en une somme, comme indiqué dans plusieurs autres réponses. À condition que les termes de la probabilité soient bien conçus du point de vue de l'optimisation, leur journal est généralement bien tenu, et la somme des fonctions bien comportées est bien conduite. Par sage je veux direlogp(x) logp(x) p(x) f′′(x) ne change pas trop ni trop rapidement, ce qui conduit à une fonction presque quadratique facile à optimiser par les méthodes de gradient. La somme d'un dérivé est le dérivé de la somme, quel que soit son ordre, ce qui permet de s'assurer que cette grosse pile de termes de somme a une dérivée seconde très raisonnable!
la source
Sous débordement
L'ordinateur utilise une représentation à virgule flottante à chiffres flottants à chiffres limités, ce qui multiplie le nombre de probabilités très proches de zéro.
Avec , nous n'avons pas ce problème.log
la source
Le logarithme de la probabilité des probabilités jointes multiples se simplifie pour résumer la somme des logarithmes des probabilités individuelles (et la règle de somme est plus facile que la règle du produit pour la différenciation)
Le logarithme d'un membre de la famille des distributions de probabilité exponentielles (qui inclut la normale omniprésente) est polynomial dans les paramètres (c'est-à-dire que le maximum de vraisemblance est réduit aux moindres carrés pour les distributions normales).
Cette dernière forme est à la fois plus stable numériquement et plus facile à différencier sur le plan symbolique que la première.
Enfin et surtout, le logarithme est une transformation monotone qui préserve les emplacements des extrema (en particulier, les paramètres estimés dans max-vraisemblance sont identiques pour la formulation originale et la formulation transformée par log).
la source
Il est beaucoup plus facile de prendre un dérivé de somme de logarithmes que de prendre un dérivé de produit, qui contient, par exemple, 100 multiplicateurs.
la source
En règle générale, le problème d'optimisation le plus simple et le plus simple consiste à optimiser une fonction quadratique. Vous pouvez facilement trouver l’optimum d’une telle fonction, peu importe votre point de départ. La façon dont cela se manifeste dépend de la méthode utilisée, mais plus votre fonction est proche d'un quadratique, mieux c'est.
Comme indiqué par TemplateRex, dans une grande variété de problèmes, les probabilités utilisées pour calculer la fonction de vraisemblance proviennent de la distribution normale ou sont approximées par celle-ci. Donc, si vous travaillez sur le journal, vous obtenez une belle fonction quadratique. Alors que si vous travaillez sur les probabilités, vous avez une fonction qui
Quelle fonction préférez-vous optimiser, ceci ou cela ?
(C’était en fait une tâche facile; dans les applications pratiques, votre recherche peut commencer tellement loin de l’optimum que les valeurs et les gradients de la fonction, même si vous avez été en mesure de les calculer numériquement, seront indissociables de 0 et seront inutiles pour l’optimisation. algorithme. Mais la transformation en une fonction quadratique en fait un morceau de gâteau.)
Notez que cela est tout à fait compatible avec les problèmes de stabilité numérique déjà mentionnés. La raison pour laquelle log log est nécessaire pour utiliser cette fonction est exactement la même que celle pour laquelle la probabilité de journalisation est beaucoup mieux gérée (pour l'optimisation et à d'autres fins) que l'originale.
Vous pouvez également aborder cette autre manière. Même s'il n'y avait aucun avantage au journal (ce qui existe) - nous allons quand même utiliser l'échelle du journal pour les dérivations et les calculs, alors quelle raison y a-t-il d'appliquer la transformation exp uniquement pour calculer le gradient? Nous pouvons aussi bien rester en accord avec le journal.
la source
En utilisant nous augmentons la dynamique de l'algorithme d'optimisation. Le dans les applications est généralement un produit de fonctions. Par exemple, dans l'estimation du maximum de vraisemblance, il est le produit de la forme , où Est la fonction de densité, qui peut être supérieur ou inférieur à 1, entrelnp p L(x|θ)=Πni=1f(xi|θ) f(.)
Ainsi, lorsque est très grand, à savoir un grand échantillon, votre fonction de vraisemblance est généralement loin de 1: il est soit très petit ou très grand, car il est une fonction de puissance .n L(.) L∼f(.)n
En prenant un journal, nous améliorons simplement la plage dynamique de tout algorithme d'optimisation, lui permettant de travailler avec des valeurs extrêmement grandes ou petites de la même manière.
la source
Quelques bonnes réponses ont déjà été données. Mais j'ai récemment rencontré un nouveau:
Souvent, on vous donne un énorme ensemble de données d'entraînement , vous définissez un modèle probabiliste et vous voulez maximiser la probabilité pour . Ils sont supposés indépendants, c'est-à-dire que vous avez Maintenant, vous faites souvent une sorte d’entraînement basé sur un gradient stochastique (mini-batch), c’est-à-dire que dans chaque étape, pour votre perte , vous optimisez pour , c'est-à-direX p(x|θ) x∈X p(X|θ)=∏x∈Xp(x|θ). L L(X′|θ) X′⊂X θ′:=θ−∂∑x∈X′L(x|θ)∂θ.
Maintenant, ces étapes stochastiques sont cumulées de manière additive. Pour cette raison, vous souhaitez que la propriété
C'est le cas pour
L(X|θ)=∑x∈XL(x|θ). L(x|θ)=−logp(x|θ).
la source