[PYTHON] Essayez l'apprentissage de la représentation commune avec le chainer

Aperçu

"[Représentations multimodales conjointes pour la recherche de catalogue de commerce électronique basée sur des attributs visuels](https://kddfashion2016.mybluemix.net/kddfashion_finalSubmissions/Joint%20multi-modal%] d'IBM Research, Inde à l'atelier KDD2016 20representations% 20for% 20e-commerce% 20catalog% 20search% 20driven% 20by% 20visual% 20attributes.pdf) »doit être mis en œuvre par le chainer.

L'article original de la méthode papier est ici. La cette implémentation de cet article est écrite en Theano.

Le contenu de l'article ressemble à une lecture approximative, et lorsque le texte et les images sont donnés par paire, l'espace commun est recherché à l'aide de Neural Net (le nom de la méthode est "Correlational Neural Net, abrégé en Corr Net") et est utile pour les moteurs de recherche C'est quelque chose comme ça.

Je pense qu'il est courant d'utiliser CCA lors de la recherche d'un espace commun de deux modaux différents, mais en pratique, le CCA de Scikit-learn prend du temps à s'entraîner dès que la taille des données augmente et il peut ne pas être utilisable en raison d'une erreur de mémoire. Il y en a, et cette fois j'ai essayé de l'implémenter rapidement avec chainer.

Le code écrit dans jupyter notebook en python3 est ** here **.

Il semble que l'intérêt soit de former le coefficient de corrélation pour qu'il devienne grand dans l'espace commun.

Diagramme d'image スクリーンショット 2017-03-27 11.29.47.png

La fonction de perte consiste en la perte de restauration à la fois lorsque deux modaux sont donnés, la perte de restauration à la fois lorsqu'un modal est donné et la perte qui rend la corrélation dans la couche cachée élevée. Je suis. スクリーンショット 2017-03-27 11.35.52.png

Données utilisées

Je voulais l'essayer facilement, j'ai donc utilisé MNIST pour trouver un espace commun pour les images 28x28 et les informations d'étiquettes au format one-hot-vector.

J'essaierai différentes données à l'avenir.

résultat

Image originale

スクリーンショット 2017-03-24 17.07.01.png

Image après restauration ("Image" → "Image")

スクリーンショット 2017-03-24 17.06.36.png

Il semble qu'il puisse être restauré avec succès

Image après restauration avec label ("label" → "image")

スクリーンショット 2017-03-24 17.06.52.png

Image après restauration de (0 et 8) en combinant les informations d'étiquette ("étiquette" → "image")

スクリーンショット 2017-03-27 11.52.26.png

Une image qui ressemble au milieu entre 0 et 8 est générée correctement.

Transition de perte

Total loss.png

Detail

detail_loss.png

L'apprentissage progresse pour que la corrélation soit correctement élevée dans la couche cachée!

Considération

Il semble qu'il puisse être restauré uniquement à partir des informations de l'étiquette!

Dans tous les cas, le chainer est beaucoup plus facile à écrire que Theano et peut générer des logs, ce qui est pratique ^^

Recommended Posts

Essayez l'apprentissage de la représentation commune avec le chainer
Essayez l'apprentissage en profondeur avec TensorFlow
Essayez d'implémenter RBM avec chainer.
Essayez le Deep Learning avec FPGA
Essayez le machine learning à la légère avec Kaggle
Maintenant, essayons la reconnaissance faciale avec Chainer (phase d'apprentissage)
Essayez le Deep Learning avec les concombres FPGA-Select
Renforcer l'apprentissage 13 Essayez Mountain_car avec ChainerRL.
Essayez l'apprentissage en profondeur avec TensorFlow Partie 2
Essayez de prédire les courses de chevaux avec Chainer
[Chainer] Apprentissage de XOR avec perceptron multicouche
SVM essayant l'apprentissage automatique avec scikit-learn
Renforcer l'apprentissage 8 Essayez d'utiliser l'interface utilisateur de Chainer
Classez les visages d'anime avec l'apprentissage en profondeur avec Chainer
Essayez les prévisions de prix Bitcoin avec Deep Learning
Essayez l'apprentissage profond de la génomique avec Kipoi
Renforcer l'apprentissage 11 Essayez OpenAI acrobot avec ChainerRL.
Seq2Seq (1) avec chainer
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
"Orienté objet" appris avec python
Apprendre Python avec ChemTHEATER 05-1
Utiliser tensorboard avec Chainer
Essayez de prédire le taux de change (FX) avec un apprentissage automatique non approfondi
Maintenant, essayons la reconnaissance faciale avec Chainer (phase de prédiction)
Apprendre Python avec ChemTHEATER 02
Apprendre Python avec ChemTHEATER 01
Essayez SNN avec BindsNET
Utilisez l'ensemble de données d'entraînement scikit-learn avec chainer (pour l'entraînement / la prédiction)
Essayez la régression avec TensorFlow
Essayez de créer un réseau de neurones / d'apprentissage en profondeur avec scratch
[Evangelion] Essayez de générer automatiquement des lignes de type Asuka avec Deep Learning
J'ai essayé d'implémenter ListNet d'apprentissage de rang avec Chainer
Déplaçons word2vec avec Chainer et voyons la progression de l'apprentissage
L'apprentissage automatique appris avec Pokemon
Essayez de défier le sol par récursif
Essayez l'optimisation des fonctions avec Optuna
Essayez d'utiliser PythonTex avec Texpad.
Essayez la détection des bords avec OpenCV
Essayez Google Mock avec C
Essayez d'utiliser matplotlib avec PyCharm
Essayez de programmer avec un shell!
Essayez la programmation GUI avec Hy
Essayez la sortie Python avec Haxe 3.2
Essayez l'opération matricielle avec NumPy
Renforcer l'apprentissage 6 First Chainer RL
Apprentissage amélioré à partir de Python
Essayez d'implémenter XOR avec PyTorch
Apprenez les orbites elliptiques avec Chainer
Essayez d'exécuter CNN avec ChainerRL
À propos de l'apprentissage avec Google Colab
Essayez différentes choses avec PhantomJS
Apprentissage profond du noyau avec Pyro
Apprentissage par renforcement 5 Essayez de programmer CartPole?
Utilisation du chainer avec Jetson TK1
L'apprentissage le plus rapide sous Linux avec AWS
Démineur d'apprentissage automatique avec PyTorch
Essayez d'exécuter Python avec Try Jupyter