Pourquoi ne pas simplement apprendre les hyper paramètres?


11

J'implémentais un article assez populaire " EXPLIQUER ET EXPLIQUER DES EXEMPLES ADVERSAIRES " et dans le document, il forme une fonction objective contradictoire

J '' (θ) = αJ (θ) + (1 - α) J '(θ).

Il traite α comme un hyperparamètre. α peut être 0,1, 0,2, 0,3, etc.

Indépendamment de cet article spécifique, je me demande, pourquoi ne pas simplement inclure α dans nos paramètres et apprendre le meilleur α?

Quel est l'inconvénient de le faire? Est-ce à cause du sur-ajustement? Si oui, pourquoi l'apprentissage d'un seul paramètre supplémentaire cause-t-il autant de surapprentissage?


Eh bien, si l'hyperparamètre est un paramètre de la fonction de coût (et non du processus de génération de données DGP), il n'est pas clair que les données elles-mêmes contiennent des informations à ce sujet.
kjetil b halvorsen

1
Dans de nombreux cas, nous utilisons les données pour sélectionner en examinant les performances du modèle sur un ensemble de validation. (c'est-à-dire, un proxy pour l'erreur de généralisation.)α
Vimal

Réponses:


8

"Pourquoi n'apprenons-nous pas simplement les paramètres hyper?"

C'est une bonne question! Je vais essayer de fournir une réponse plus générale. La réponse TL; DR est que vous pouvez certainement apprendre les hyperparamètres, mais pas à partir des mêmes données. Lisez la suite pour une réponse légèrement plus détaillée.


Un hyperparamètre correspond généralement à un réglage de l'algorithme d'apprentissage, plutôt qu'à l'un de ses paramètres. Dans le contexte de l'apprentissage en profondeur, par exemple, cela est illustré par la différence entre quelque chose comme le nombre de neurones dans une couche particulière (un hyperparamètre) et le poids d'un bord particulier (un paramètre régulier et apprenant).

Pourquoi y a-t-il une différence en premier lieu? Le cas typique pour faire d'un paramètre un hyperparamètre est qu'il n'est tout simplement pas approprié d'apprendre ce paramètre à partir de l'ensemble d'apprentissage. Par exemple, comme il est toujours plus facile de réduire l'erreur d'apprentissage en ajoutant plus de neurones, faire du nombre de neurones dans une couche un paramètre régulier encouragerait toujours les très grands réseaux, ce que nous savons de fait n'est pas toujours souhaitable (en raison de sur-ajustement).

À votre question, ce n'est pas que nous n'apprendions pas du tout les hyper-paramètres. Mis à part les défis de calcul pendant une minute, il est tout à fait possible d'apprendre de bonnes valeurs pour les hyperparamètres, et il y a même des cas où cela est impératif pour de bonnes performances; toute la discussion dans le premier paragraphe suggère que, par définition, vous ne pouvez pas utiliser les mêmes données pour cette tâche .

En utilisant un autre fractionnement des données (créant ainsi trois parties disjointes: l'ensemble d'apprentissage, l'ensemble de validation et l'ensemble de test, ce que vous pourriez faire en théorie est la procédure d' optimisation imbriquée suivante : dans la boucle externe, vous essayez de trouver les valeurs des hyperparamètres qui minimisent la perte de validation et dans la boucle interne, vous essayez de trouver les valeurs des paramètres réguliers qui minimisent la perte d'apprentissage .

Ceci est possible en théorie, mais très coûteux en termes de calcul: chaque étape de la boucle externe nécessite de résoudre (jusqu'à la fin, ou quelque part près de cela) la boucle interne, qui est généralement lourde en termes de calcul. Ce qui complique encore les choses, c'est que le problème extérieur n'est pas facile: d'une part, l'espace de recherche est très grand.

Il existe de nombreuses approches pour surmonter ce problème en simplifiant la configuration ci-dessus (recherche dans la grille, recherche aléatoire ou optimisation hyperparamétrique basée sur un modèle), mais leur explication dépasse largement le cadre de votre question. Comme le démontre également l'article auquel vous avez fait référence, le fait qu'il s'agisse d'une procédure coûteuse signifie souvent que les chercheurs l'ignorent complètement ou essaient très peu de paramètres manuellement, pour finalement choisir le meilleur (encore une fois, selon l'ensemble de validation). Pour répondre à votre question initiale, je soutiens que - bien que très simpliste et artificiel - il s'agit toujours d'une forme "d'apprentissage".


Salut, merci pour votre réponse. Que se passe-t-il si j'utilise les mêmes données ??
Aerin

7

Des hyperparamètres comme celui de ce papier sont souvent utilisés pour équilibrer plusieurs termes dans la fonction de perte. Si vous les rendiez apprenables, le processus d'optimisation apprendrait simplement à allouer tout le poids aux termes qui sont plus faciles à optimiser au prix de termes qui sont plus difficiles à optimiser, ce qui va à l'encontre de l'équilibre des termes.

Une autre façon de voir les choses est que la fonction de perte est un substitut à un objectif réel qui est difficile à définir ou à optimiser, tel que "générer des images de sortie devrait être réaliste" ou "devrait être résistant aux exemples contradictoires". Dans ce cas, le véritable objectif n'est pas de "trouver les hyperparamètres pour minimiser la perte de substitution", c'est de "trouver les hyperparamètres de telle sorte que lorsque nous exécutons SGD sur le reste des paramètres pour optimiser la substitution, nous obtenons de bonnes performances sur le vrai objectif".


4

Puisque vous avez demandé "quel que soit le papier", je voudrais prendre un exemple plus simple: la régression linéaire pénalisée (Ridge / Lasso).

Pour ces cas, je peux penser à deux raisons: mais d'abord, notez qu'il y a deux fonctions ici: (F1) La fonction de perte, qui est une fonction analytique de l'hyper-paramètre et des données (dans l'article que vous avez lié, c'est ; et (F2) une estimation de l'erreur de généralisation, qui dépend de la solution optimale à (F1) et de l'hyper-paramètre que vous avez choisi dans (F1).J~

Mise en garde: Un coup d'œil rapide sur l'article révèle que les auteurs forment un classificateur de réseau neuronal pour l'ensemble de données MNIST. Il ne dit pas explicitement comment choisir l'hyper-paramètre , mais j'aurais choisi un qui minimise l'erreur de validation du meilleur modèle.αα

  1. La fonction objective d'optimisation de l'hyper-paramètre est une expression qui est un proxy pour l'erreur de généralisation. Cette expression est difficile à écrire comme une simple fonction analytique qui peut être différenciée, mais elle peut être facilement évaluée à un moment donné en résolvant simplement le problème d'optimisation sous-jacent.

  2. L'évaluation de la fonction (F2) nécessite de résoudre un problème d'optimisation, qui pourrait être coûteux. Donc, même si vous pouvez approximer le gradient pour que F2 fasse une descente en gradient, ce serait cher et lent. Dans de tels cas, faire une recherche dans la grille est souvent «assez bien».

Cela dit, il existe des techniques pour optimiser les fonctions objectives de la boîte noire (telles que F2) en supposant une certaine structure de lissage en raison de leur dépendance à l'hyper-paramètre. À titre d'exemple, vous pouvez voir ce billet qui montre comment les performances d'un modèle Lasso varient avec son hyper-paramètre :λ

Performance du modèle Lasso

(Image prise à partir de ce post: https://stats.stackexchange.com/a/26607/54725 )

Quelques références:


Faites-vous spécifiquement référence au 2e terme dans l'article J (θ, x + esign (∇xJ (θ, x, y)) comme F2?
Aerin

@Aaron no. est la fonction de coût; est la fonction de coût régularisé. Puisqu'ils construisent un classificateur, je dirais que F2 pourrait être la fonction de perte de validation. Le document indique en fait qu'ils ont choisi pour être 0,5 car cela fonctionnait assez bien (ils n'ont pas exploré d'autres valeurs de , ni une stratégie pour choisir ). ˜ J α α αJJ~ααα
Vimal

Alors, que faites-vous référence dans le document à F1 et F2?
Aerin

F1 est et j'aurais utilisé l'erreur de validation comme F2. Je mettrai à jour ma réponse pour clarifier cela. J~
Vimal

1

Voyons à quoi ressemblerait la condition de premier ordre si nous connectons l'hyperparamètre et essayons de l'apprendre de la même manière que partir des données: Par conséquent, αθ

αJ(θ)=ααJ(θ)+α(1α)J(θ)=J(θ)J(θ)=0
J(θ)=J(θ)

Lorsque cet hyperparamètre est optimisé, alors il fera que J et J 'deviennent la même fonction, c'est-à-dire des poids égaux. Vous vous retrouverez avec une solution triviale.

Si vous voulez une philosophie plus générique, considérez ceci: les hyperparamètres ne sont généralement pas enchevêtrés avec des données. Qu'est ce que je veux dire? Dans un réseau neuronal ou même une simple régression, les paramètres de votre modèle interagiront d'une certaine manière directement avec les données: et ainsi de suite dans les couches. Vous voyez comment s'emmêle dans vos données. Ainsi, lorsque vous prenez une dérivée sur n'importe quelle de la fonction objectif, vous obtenez des points de données entrant le résultat de manière non évidente dans la matrice, les Hessians, les produits croisés, etc.

yL=XLβL
aL=σ(yL)
XL+1=aL
βLβ

Cependant, si vous essayez d'estimer les conditions du premier ordre sur les hyperparamètres, vous n'obtenez pas cet effet. Les dérivés d'hyperparamètres opèrent souvent la totalité des morceaux de votre modèle, sans mélanger ses parties comme des dérivés sur les paramètres. C'est pourquoi l'optimisation des hyperparamètres conduit souvent à des solutions triviales comme celle que je vous ai donnée pour le papier spécifique. L'optimisation des hyperparamètres ne perturbe pas votre ensemble de données et ne le rend pas suffisamment inconfortable pour produire quelque chose d'intéressant.

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.