Opracowano Google DeepDream

12

Widziałem kilka pytań na tej stronie na temat Deep Dream, jednak żadne z nich nie mówi konkretnie o tym, co robi DeepDream. O ile się zebrałem, wydaje się, że zmienili funkcję celu, a także zmienili propagację wsteczną, tak że zamiast aktualizacji wag aktualizują obraz wejściowy.

Zastanawiam się, czy ktoś dokładnie wie, co zrobił Google. Wspominają w jednym z artykułów narzucających bayesowskie priory, gdy przeprowadzają optymalizację, a dzięki temu mogę sobie wyobrazić, że uzyskanie sieci neuronowej do wyplucia obrazu dla każdej etykiety nie jest takie trudne - możemy po prostu ustawić etykietę, a następnie odpowiednio zoptymalizuj wektor wejściowy.

Jednak interesującą częścią głębokiego snu jest to, że robi to na warstwę i pod tym względem nie jestem pewien, jak podkreśla szczegóły w sposób na warstwę.

Oczywiście karmienie obrazem da ci wartości w każdym neuronie, ale w jaki sposób możemy wykorzystać te informacje do wyolbrzymienia szczegółów w oryginalnym obrazie? Z trudem znajdowałem szczegółowe opisy na ten temat.

Odniesienia: Tutaj vzn odpowiedział na podobne pytanie: https://cs.stackexchange.com/a/44857/49671

Od tego linku znajduje się implementacja Deepdream, tutaj: http://auduno.com/post/125362849838/visualizing-googlenet-classes

Tyle że nie oferuje przesady funkcji omówionych tutaj: http://googleresearch.blogspot.com/2015/06/inceptionism-going-deeper-into-neural.html

Gdzie oba pokazują wizualizację poszczególnych klas i poszczególnych warstw, i mówią:

Zamiast dokładnie określać, która funkcja ma zostać wzmocniona przez sieć, możemy pozwolić sieci podjąć tę decyzję. W takim przypadku po prostu karmimy sieć dowolnym obrazem lub zdjęciem i pozwalamy sieci przeanalizować obraz. Następnie wybieramy warstwę i prosimy sieć o ulepszenie wszystkiego, co wykryje.

Kok
źródło
2
Możliwy duplikat Deep Dreamer
Google'a

Odpowiedzi:

7

Idea DeepDream jest następująca: wybierz jakąś warstwę z sieci (zwykle warstwę splotową), przepuść obraz początkowy przez sieć, aby wyodrębnić cechy na wybranej warstwie, ustaw gradient na tej warstwie równy samym aktywacjom, a następnie wstecznie propaguj do obrazu.

Dlaczego to ma sens? Intuicyjnie wzmacnia funkcje maksymalnie aktywowane w sieci. Propagując wstecz ten gradient, dokonamy aktualizacji obrazu, która zwiększy dowolną z istniejących aktywacji. Jeśli w warstwie znajduje się wykrywacz podobny do kota, a obraz zawiera łatkę, która wygląda trochę jak kot, DeepDream przyspiesza tę aktywację, aktualizując tę ​​łatkę, aby była jeszcze bardziej podobna do kota. W rezultacie DeepDream próbuje znaleźć koty i psy wszędzie na obrazie (zestaw danych ImageNet zawiera wiele psów, więc sieć ma wiele neuronów związanych z psami).

objective_L2dx=x

Maksyma
źródło