Version 1, last updated by XavierMuller at April 24, 2010 07:22 UTC

MLP sur les donnes transformees de NIST

Auteur

Xavier Muller

Tache

Cette experience fait reference au ticket #8.

On cherche ici a voir si le fait d'utliser une version transformee et elargie de l'ensemble de training de NIST va aider a reduire l'erreur de test sur l'ensemble de test de NIST. Pour ce faire, nous allons utiliser deux bases de donnes modifies: P07 et PNIST. Nous allons comparer les resultats aux resultats obtenus en entrainant un MLP a une couche cache sur NIST (http://www.assembla.com/wiki/show/ift6266/MLP_sur_les_donnees_non_transformees_de_NIST).

Dans un deuxieme temps, nous allons prendre les meilleurs modeles entraine sur p07 et pnist et allons les utilises comme poids initiaux  pour re-entrainer les MLP sur NIST (on peut voir ca comme un phase de fine-tuning).

Pour ce faire, nous allons essayer les modeles suivant:

MLP a une couche cachee.

Nombre de neurones dans la couche cachee: 500, 800, 1000

Learning rate initial: 0.2, 0.1, 0.05, 0.02, 0.01, 0.0075,0.005, 0.001

Tau (pour le learning rate decroissant): 1e8, 1e7, 1e6

lr_t2_factor (pour le learning rate decroissant de type 2): 0.98, 0.95, 0.9

 

Donnees utilisees

Nous avons utilse les bases de donnees PNIST et P07. Les deux se trouvent dans /data/lisa/data/ift6266h10/data. Ces donnees ont ete cree en modifiant les donnes de NIST (deformations, ajout de bruit, etc). Une description plus detaillee des transformations peut etre trouve ici: http://www.assembla.com/wiki/show/ift6266/Transformation_des_images. Il est important de noter que PNIST consiste en un sous-ensemble des transformations de P07. PNIST contient donc des images moins deformees que P07.

Version du code utilse

Le code du MLP utilise est mlp_nist.py situe dans ift6266/baseline/mlp. La version du code utilise est 349:22efb4968054.

 

Resultats

Les resultats de toutes les experiences peuvent etre trouves dans la base de donnees sql a ift6266h10@gershwin/ift6266h10_sandbox_db. Les tables suivantes dans cette base de donnees contiennent les resultats de cette experience: xvm_p07_lr1_refined_f0_view, xvm_p07_lr2_refined_f0_view, xvm_pnist_lr1_refined_f0_view, xvm_pnist_lr1_refined_f1_view, xvm_pnist_lr2_refined_f0.

On sait que l'entrainement a une couche cachee donnait comme meilleure erreur de test 24.18.

Les meilleurs resultats preliminaires (les tests roulent encore) donnent pour le moment:

meilleur erreur de test sur nist avec entrainement sur p07: 25.30%  (/data/lisa/exp/mullerx/ift6266h10_sandbox_db/xvm_p07_lr2_refined_f0/2)

meilleur erreur de test sur nist avec entrainement sur pnist: 23.03%  (/data/lisa/exp/mullerx/ift6266h10_sandbox_db/xvm_pnist_lr2_refined_f0/4).

Il semble donc que l'utilisation de pnist aide legerement a baisser l'erreur alors que l'utilisation de p07 augmente legerement l'erreur. De plus, la moyenne des 5 meilleurs resultats de pnist tourne autor de 23.2% alors que celle des 5 meilleurs resultats de p07 tourne autour de 25.7%, ce qui tend a renforcer cette conclusion. (Les tests roulent encore par contre et il faudrait mieux attendre leur fin avant de conclure definitivement).

Todo

Une fois ces tests finis, prendre les meilleurs modeles et faire la phase de "fine-tune"