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?