Le autoencoder
package n'est qu'une implémentation de l'encodeur automatique décrit dans les notes de classe d' Andrew Ng , ce qui pourrait être un bon point de départ pour une lecture plus approfondie. Maintenant, pour répondre à vos questions
Les gens font parfois la distinction entre les
paramètres , que l'algorithme d'apprentissage calcule lui-même, et les
hyperparamètres , qui contrôlent ce processus d'apprentissage et doivent être fournis à l'algorithme d'apprentissage.
Il est important de réaliser qu'il n'y a PAS DE VALEURS MAGIQUES pour les hyperparamètres. La valeur optimale variera en fonction des données que vous modélisez: vous devrez les essayer sur vos données.
a) Lambda ( ) contrôle la façon dont les poids sont mis à jour pendant la rétropropagation. Au lieu de simplement mettre à jour les poids en fonction de la différence entre la sortie du modèle et la vérité du terrain), la fonction de coût comprend un terme qui pénalise les poids importants (en fait la valeur au carré de tous les poids). Lambda contrôle l'importance relative de ce terme de pénalité, qui tend à faire glisser les poids vers zéro et aide à éviter le sur-ajustement.λ
b) Rho ( et beta ) contrôlent la rareté. Rho est l'activation attendue d'une unité cachée (moyenne sur l'ensemble d'entraînement). La représentation deviendra de plus en plus clairsemée à mesure qu'elle deviendra plus petite. Cette rareté est imposée en ajustant le terme de biais, et la version bêta contrôle la taille de ses mises à jour. (Il semble que redimensionne simplement le taux d'apprentissage globalρ)(ββα .)
c) Epsilon (ϵ) contrôle les valeurs de poids initiales, qui sont tirées au hasard de N(0,ϵ2).
Vos valeurs rho ne semblent pas déraisonnables car les deux sont proches du bas de la plage de la fonction d'activation (0 à 1 pour la logistique, -1 à 1 pour le tanh). Cependant, cela dépend évidemment de la quantité de clarté que vous souhaitez et du nombre d'unités cachées que vous utilisez également.
Le souci majeur de LeCunn avec les petits poids que la surface d'erreur devienne très plate près de l'origine si vous utilisez un sigmoïde symétrique. Ailleurs dans cet article, il recommande d'initialiser avec des poids tirés au hasard à partir d'une distribution normale avec une moyenne nulle etm−1/2 écart type, où m est le nombre de connexions que chaque unité reçoit.
Il existe de nombreuses "règles de base" pour choisir le nombre d'unités cachées. Votre estimation initiale (entrée 2x) semble conforme à la plupart d'entre eux. Cela dit, ces estimations sont beaucoup plus des suppositions que des estimations. En supposant que vous avez la puissance de traitement, je me tromperais du côté des unités plus cachées, puis imposerais la rareté avec une faible valeur rho.
Une utilisation évidente des encodeurs automatiques est de générer des représentations d'entités plus compactes pour d'autres algorithmes d'apprentissage. Une image brute peut avoir des millions de pixels, mais un autoencodeur (clairsemé) peut représenter cela dans un espace beaucoup plus petit.
Geoff Hinton (et d'autres) ont montré qu'ils génèrent des caractéristiques utiles pour une classification ultérieure. Certains travaux d'apprentissage en profondeur utilisent des encodeurs automatiques ou similaires pour pré-former le réseau.
Vincent et al. utiliser des encodeurs automatiques directement pour effectuer la classification.
La possibilité de générer des représentations d'entités succinctes peut également être utilisée dans d'autres contextes. Voici un petit projet soigné où des états produits par un encodeur automatique sont utilisés pour guider un algorithme d'apprentissage par renforcement à travers les jeux Atari .
Enfin, on peut également utiliser des auto-encodeurs pour reconstruire des entrées bruyantes ou dégradées, comme cela , ce qui peut être une fin utile en soi.
beta = 6
dans l'autoencoder
exemple de code?Une partie de la réponse de Matt Krause ne me semble pas correcte (Lambda et Beta), aussi epsilon n'est pas mentionné. En fait, ce message devrait être un commentaire, mais je réponds à la question en raison de la restriction de 50 réputation. N'hésitez pas à commenter si vous voyez une erreur.
De http://web.stanford.edu/class/archive/cs/cs294a/cs294a.1104/sparseAutoencoder.pdf Lambda est le terme de décroissance du coefficient de poids qui décourage les poids d'atteindre de grandes valeurs car il peut s'adapter. Le terme de décroissance du poids (ou terme de régularisation du poids) fait partie de la fonction de coût comme le terme de rareté expliqué ci-dessous.
rho est une contrainte de rareté qui contrôle le nombre moyen d'activation sur la couche cachée. Il est inclus pour faire fonctionner l'encodeur automatique même avec un nombre relativement élevé d'unités cachées par rapport aux unités d'entrée. Par exemple, si la taille d'entrée est 100 et la taille cachée est 100 ou plus (encore plus petite mais proche de 100), la sortie peut être construite sans aucune perte, car les unités cachées peuvent apprendre la fonction d'identité. La bêta est un coefficient de clarté qui fait partie de la fonction de coût. Il contrôle l'importance relative du terme de rareté. Lambda et Beta spécifient l'importance relative de leurs termes dans la fonction de coût.
Epsilon (s'ils ont utilisé la même notation avec Andrew Ng) est un paramètre de régularisation pour le processus de blanchiment qui a un effet de filtre passe-bas sur l'entrée. Cela a des effets importants sur les méthodes de reconstruction. Vérifiez le lien pour cela dans les modèles basés sur la reconstruction. Je pense qu'ils ont utilisé une activation linéaire pour la couche de sortie et utilisé un certain type de blanchiment (caractéristiques univariantes).
Le taux de mise à jour des paramètres (poids et biais) est appelé taux d'apprentissage et désigné par eta en général. Cependant, il a été utilisé comme alpha par Andrew Ng. Vérifiez le premier lien.
la source