Réseau de neurones avec softmax activation

edit:

Un plus pointue question:
Quelle est la dérivée de la fonction softmax à être utilisé dans ma descente de gradient?


C'est plus ou moins un projet de recherche pour un cours, et ma compréhension de la lettre est très/assez limité, de sorte s'il vous plaît être patient 🙂


Je suis actuellement dans le processus de construction d'un réseau de neurones qui tente d'examiner un jeu de données d'entrée et de sortie de la probabilité de chaque classement (il y a 5 catégories différentes). Naturellement, la somme de tous les nœuds de sortie doit être égale à 1.

Actuellement, j'ai deux couches, et j'ai mis la couche cachée pour contenir 10 nœuds.

Je suis venu avec deux différents types de mises en œuvre

  1. Sigmoide pour la couche cachée d'activation, softmax pour l'activation de la sortie
  2. Softmax pour les deux couche cachée et l'activation de la sortie

Je suis à l'aide de descente de gradient pour trouver des maxima locaux afin d'adapter les nœuds cachés les poids et les nœuds de sortie poids. Je suis certain que j'ai ce correct pour sigmoïde. Je suis moins certain avec softmax (ou si je peux utiliser la descente de gradient à tous), après un peu de recherche, je ne pouvais pas trouver la réponse et a décidé de calculer la dérivée de moi-même et obtenu softmax'(x) = softmax(x) - softmax(x)^2 (ce qui renvoie un vecteur colonne de taille n). J'ai aussi regardé dans le MATLAB NN toolkit, la dérivée de la fonction softmax fournis par la boîte à outils retourné une matrice carrée de taille nxn, où la diagonale coïncide avec la softmax'(x) que j'ai calculé à la main; et je ne suis pas sûr de savoir comment interpréter la matrice de sortie.

J'ai couru à la mise en œuvre de l'apprentissage taux de 0,001 et 1000 itérations de retour de propagation. Cependant, mon NN renvoie à 0,2 (une même distribution) pour l'ensemble des cinq nœuds de sortie, pour tout sous-ensemble du jeu de données en entrée.

Mes conclusions:

  • Je suis assez certain que ma pente de descente est mal fait, mais je n'ai aucune idée de comment résoudre ce problème.
  • Peut-être que je ne suis pas en utilisant suffisamment de nœuds cachés
  • Peut-être que je devrais augmenter le nombre de couches

Toute aide serait grandement appréciée!

Le dataset, je travaille avec peut être trouvé ici (traité de Cleveland):
http://archive.ics.uci.edu/ml/datasets/Heart+Maladie

  • J'ai ajouté un plus pointue question en haut de mon post. J'ai essayé de demander à mon professeur de l'aide, mais je n'ai pas eu de nouvelles de lui. C'est certainement au-delà de la portée du cours.
  • S'avère, il y avait une erreur stupide dans mon code, mais j'étais trop concentré sur la pensée de mon softmax dérivés a été mauvais. Arg!
InformationsquelleAutor Cambium | 2010-04-21