2014-07-10 4 views
1

Je normalise mes données à zéro et la variance unitaire comme recommandé dans la plupart des documents pour pré-former un GB-RBM. Mais quel que soit le taux d'apprentissage que je choisis et quel que soit le nombre d'époques, mon erreur de reconstruction moyenne ne descend jamais en dessous de 0,6. Les erreurs de reconstruction pour les BB-RBM empilés tombent facilement à 0,01 dans quelques époques. J'ai utilisé plusieurs toolkits qui implémentent GBRBMs comme mentionné dans http://www.cs.toronto.edu/~hinton/absps/guideTR.pdf mais tous ont le même problème. Ai-je manqué quelque chose ou l'erreur de reconstruction est-elle censée rester au-dessus de 50%?Gaussian-Bernoulli RBM erreur de reconstruction élevée

Je normaliser mes données en soustrayant la moyenne et en divisant par l'écart-type le long de chaque dimension du vecteur d'entrée:

taille

(de MFCC) -> [lignes mlength x 39 cols]

mmean=mean(mfcc); 
mstd=std(mfcc); 
mfcc=mfcc-ones(mlength,1)*mmean; 
mfcc=mfcc./(ones(mlength,1)*mstd); 

Cela me donne zéro moyenne et unité var le long de chaque dimension. J'ai essayé différents ensembles de données, différentes caractéristiques et différentes boîtes à outils, mais mon erreur de reconstruction ne descend jamais en dessous de 0,6 pour les GBRBM. Merci

+0

Salut et bienvenue à empiler débordement. Ce n'est pas du tout mon expertise ... mais généralement, pour obtenir de l'aide sur S/O, il est utile d'inclure tout code pertinent. Ensuite, nous pouvons le vérifier pour des erreurs ou suggérer de meilleures façons de faire les choses :) –

Répondre

0

Je suppose que vous utilisez exp() comme sigmoïde, puis en utilisant une bibliothèque tierce pour faire les fonctions de la matrice? Si ce qui précède est vrai, je suppose que la bibliothèque 3ème partie avale les erreurs de débordement exp() tout en arrêtant le calcul et donc les vecteurs cachés/recréés ne sont pas valides.

modifier en fonction des commentaires ci-dessous:

theano.tensor.nnet.sigmoid() utilise exp(), donc je voudrais tout d'abord essayez de passer à hard_sigmoid(). Ce ne sera pas aussi agréable d'une courbe, mais il ne débordera pas/ne débordera pas afin que vous puissiez voir si c'est la source d'erreur.

Je suppose que vous avez essayé d'autres prétraitements de données et que vous aviez toujours les erreurs de reconstruction élevées?

+0

La première phrase est probablement mieux comme un commentaire, bien que @Muneeb semble peu susceptible de répondre. – kdgregory

+0

J'utilise la bibliothèque Theano pour calculer les opérations sigmoïdes et matricielles. Code GBRBM: (http://sourceforge.net/p/kaldipdnn/code-0/HEAD/tree/pdnn/layers/rbm.py) J'obtiens de bons résultats pour les RBM de Bernoulli-Bernoulli. Même pour le GBRBM, l'énergie libre est réduite à environ zéro, mais les erreurs de reconstruction restent supérieures à 0,5. – Muneeb

+0

Je ne peux pas commenter sur les messages en raison de ma faible rep, donc je dois poser des questions dans une réponse. Bien sûr, cela n'aide pas vraiment avec le représentant. Donc voilà. –