[PYTHON] Versuchen Sie Common Representation Learning mit Chainer

Überblick

"[Gemeinsame multimodale Darstellungen für die Suche nach E-Commerce-Katalogen anhand visueller Attribute](https://kddfashion2016.mybluemix.net/kddfashion_finalSubmissions/Joint%20multi-modal%] von IBM Research, Indien, beim KDD2016-Workshop 20repräsentationen% 20für% 20e-Commerce% 20Katalog% 20search% 20driven% 20by% 20visual% 20attributes.pdf) ”wird von chainer implementiert.

Das Originalpapier der Papiermethode ist hier. Die diese Implementierung dieses Dokuments ist in Theano geschrieben.

Der Inhalt des Papiers fühlt sich wie eine grobe Lektüre an, und wenn Text und Bilder als Paar angegeben werden, wird der gemeinsame Raum mithilfe von Neural Net (Methodenname "Correlational Neural Net, abgekürzt als Corr Net") gefunden, was für Suchmaschinen nützlich ist. Es ist so etwas.

Ich denke, dass es üblich ist, CCA zu verwenden, wenn ein gemeinsamer Raum aus zwei verschiedenen Modalitäten gesucht wird. In der Praxis benötigt der CCA von Scikit-learn jedoch Zeit zum Trainieren, sobald die Datengröße zunimmt, und kann aufgrund eines Speicherfehlers möglicherweise nicht verwendet werden. Es gibt, und dieses Mal habe ich versucht, es mit Chainer schnell zu implementieren.

In Python3 lautet der in Jupyter Notebook geschriebene Code ** hier **.

Es scheint, dass es darum geht, den Korrelationskoeffizienten so zu trainieren, dass er im gemeinsamen Raum groß wird.

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

Die Verlustfunktion besteht aus dem Verlust der Wiederherstellung beider, wenn zwei Modale gegeben sind, dem Verlust der Wiederherstellung beider, wenn ein Modal gegeben ist, und dem Verlust, der die Korrelation in der verborgenen Schicht hoch macht. Ich bin. スクリーンショット 2017-03-27 11.35.52.png

Verwendete Daten

Ich wollte es einfach ausprobieren, also habe ich MNIST verwendet, um einen gemeinsamen Raum für 28x28-Bilder und Beschriftungsinformationen im One-Hot-Vector-Format zu finden.

Ich werde in Zukunft verschiedene Daten ausprobieren.

Ergebnis

Original Bild

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

Bild nach der Wiederherstellung ("Bild" → "Bild")

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

Es scheint, dass es erfolgreich wiederhergestellt werden kann

Bild nach der Wiederherstellung mit Etikett ("Etikett" → "Bild")

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

Bild nach Wiederherstellung von (0 und 8) durch Kombinieren von Etiketteninformationen ("Etikett" → "Bild")

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

Ein Bild, das wie die Mitte zwischen 0 und 8 aussieht, wird ordnungsgemäß generiert.

Übergang des Verlustes

Total loss.png

Detail

detail_loss.png

Das Lernen schreitet voran, so dass die Korrelation in der verborgenen Schicht richtig hoch ist!

Erwägung

Es scheint, dass es nur aus den Etiketteninformationen wiederhergestellt werden kann!

In jedem Fall ist Chainer viel einfacher zu schreiben als Theano und kann Protokolle ausgeben, was praktisch ist ^^

Recommended Posts

Versuchen Sie Common Representation Learning mit Chainer
Versuchen Sie es mit TensorFlow
Versuchen Sie, RBM mit Chainer zu implementieren.
Versuchen Sie Deep Learning mit FPGA
Versuchen Sie es mit Kaggle leicht maschinell
Versuchen wir nun die Gesichtserkennung mit Chainer (Lernphase)
Probieren Sie Deep Learning mit FPGA-Select-Gurken aus
Lernen stärken 13 Probieren Sie Mountain_car mit ChainerRL aus.
Versuchen Sie es mit TensorFlow Part 2
Versuchen Sie, Pferderennen mit Chainer vorherzusagen
[Chainer] Lernen von XOR mit mehrschichtigem Perzeptron
SVM versucht maschinelles Lernen mit Scikit-Learn
Stärkung des Lernens 8 Versuchen Sie, die Chainer-Benutzeroberfläche zu verwenden
Klassifizieren Sie Anime-Gesichter mit tiefem Lernen mit Chainer
Probieren Sie die Bitcoin-Preisprognose mit Deep Learning aus
Versuchen Sie mit Kipoi tiefes Erlernen der Genomik
Stärkung des Lernens 11 Probieren Sie OpenAI Acrobot mit ChainerRL aus.
Seq2Seq (1) mit Chainer
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
"Objektorientiert" mit Python gelernt
Python lernen mit ChemTHEATER 05-1
Verwenden Sie Tensorboard mit Chainer
Versuchen Sie, den Wechselkurs (FX) mit nicht tiefem maschinellem Lernen vorherzusagen
Versuchen wir nun die Gesichtserkennung mit Chainer (Vorhersagephase).
Python lernen mit ChemTHEATER 02
Python lernen mit ChemTHEATER 01
Versuchen Sie SNN mit BindsNET
Verwenden Sie den Scikit-Learn-Trainingsdatensatz mit Chainer (für Training / Vorhersage).
Versuchen Sie eine Regression mit TensorFlow
Versuchen Sie, ein Deep Learning / Neuronales Netzwerk mit Scratch aufzubauen
[Evangelion] Versuchen Sie, mit Deep Learning automatisch Asuka-ähnliche Linien zu erzeugen
Ich habe versucht, ListNet of Rank Learning mit Chainer zu implementieren
Lassen Sie uns word2vec mit Chainer verschieben und den Lernfortschritt sehen
Maschinelles Lernen mit Pokemon gelernt
Versuchen Sie, den Boden durch Rekursion herauszufordern
Versuchen Sie die Funktionsoptimierung mit Optuna
Versuchen Sie, PythonTex mit Texpad zu verwenden.
Versuchen Sie die Kantenerkennung mit OpenCV
Versuchen Sie Google Mock mit C.
Versuchen Sie es mit matplotlib mit PyCharm
Versuchen Sie, mit einer Shell zu programmieren!
Versuchen Sie die GUI-Programmierung mit Hy
Probieren Sie die Python-Ausgabe mit Haxe 3.2 aus
Versuchen Sie die Matrixoperation mit NumPy
Stärkung des Lernens 6 First Chainer RL
Verbessertes Lernen ab Python
Versuchen Sie, XOR mit PyTorch zu implementieren
Lernen Sie mit Chainer elliptische Bahnen
Versuchen Sie, CNN mit ChainerRL auszuführen
Über das Lernen mit Google Colab
Probieren Sie verschiedene Dinge mit PhantomJS aus
Deep Kernel Learning mit Pyro
Verstärkungslernen 5 Versuchen Sie, CartPole zu programmieren?
Verwendung von Chainer mit Jetson TK1
Linux am schnellsten mit AWS lernen
Maschinelles Lernen Minesweeper mit PyTorch
Versuchen Sie, Python mit Try Jupyter auszuführen