Google DeepDream ausgearbeitet

12

Ich habe auf dieser Site einige Fragen zu Deep Dream gesehen, aber keine von ihnen scheint tatsächlich darüber zu sprechen, was DeepDream speziell tut. Soweit ich festgestellt habe, scheinen sie die Zielfunktion und auch die Backpropagation geändert zu haben, sodass sie das Eingabebild aktualisieren, anstatt die Gewichte zu aktualisieren.

Ich frage mich, ob jemand genau weiß, was Google getan hat. Sie erwähnen in einem ihrer Artikel, dass sie Bayes'sche Prioritäten auferlegen, wenn sie ihre Optimierung durchführen, und damit kann ich mir vorstellen, dass es nicht so schwierig ist, das neuronale Netz dazu zu bringen, ein Bild für jedes Etikett auszuspucken - wir können einfach das Etikett festlegen und dann Optimieren Sie den Eingabevektor entsprechend.

Der interessante Teil des tiefen Traums ist jedoch, dass dies pro Schicht geschieht, und in dieser Hinsicht bin ich mir nicht ganz sicher, wie es die Details pro Schicht hervorhebt.

Wenn Sie ein Bild eingeben, erhalten Sie zwar Werte für jedes Neuron. Wie können wir diese Informationen dann verwenden, um Details im Originalbild zu übertreiben? Ich habe mich bemüht, detaillierte Aufzeichnungen darüber zu finden.

Referenzen: Hier beantwortete vzn eine ähnliche Frage: /cs//a/44857/49671

Über diesen Link erhalten Sie eine Implementierung von Deepdream: http://auduno.com/post/125362849838/visualizing-googlenet-classes

Es bietet jedoch keine Übertreibung der hier beschriebenen Funktionen: http://googleresearch.blogspot.com/2015/06/inceptionism-going-deeper-into-neural.html

Wo beide die Visualisierung bestimmter Klassen und bestimmter Ebenen zeigen und sagen:

Anstatt genau festzulegen, welche Funktion das Netzwerk erweitern soll, können wir das Netzwerk auch diese Entscheidung treffen lassen. In diesem Fall geben wir dem Netzwerk einfach ein beliebiges Bild oder Foto und lassen das Netzwerk das Bild analysieren. Wir wählen dann eine Ebene aus und bitten das Netzwerk, das zu verbessern, was es erkannt hat.

Bob
quelle
2
Mögliches Duplikat von Googles Deep Dreamer
Manlio

Antworten:

7

Die Idee von DeepDream ist folgende: Wählen Sie eine Ebene aus dem Netzwerk aus (normalerweise eine Faltungsschicht), leiten Sie das Startbild durch das Netzwerk, um Features auf der ausgewählten Ebene zu extrahieren, stellen Sie den Gradienten auf dieser Ebene gleich den Aktivierungen selbst ein und verbreiten Sie sich dann zurück zum Bild.

Warum macht es Sinn? Intuitiv werden die Funktionen verstärkt, die im Netzwerk maximal aktiviert sind. Durch Zurückpropagieren dieses Verlaufs führen wir ein Bildupdate durch, das alle vorhandenen Aktivierungen verstärkt. Wenn sich in der Ebene ein katzenartiger Detektor befindet und das Bild einen Patch enthält, der ein bisschen wie eine Katze aussieht, verstärkt DeepDream diese Aktivierung, indem dieser Patch noch katzenartiger aktualisiert wird. Infolgedessen versucht DeepDream, überall im Bild Katzen und Hunde zu finden (der ImageNet-Datensatz enthält viele Hunde, sodass das Netzwerk viele hundebezogene Neuronen enthält).

objective_L2dx=x

Maxime
quelle