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.