Я бачив кілька питань на цьому сайті про Deep Dream, однак, схоже, жодне з них не говорить про те, чим саме займається DeepDream. Наскільки я зібрався, вони, схоже, змінили цільову функцію, а також змінили зворотне розповсюдження, щоб замість оновлення ваг вони оновлювали вхідне зображення.
Мені цікаво, чи хтось точно знає, що зробив Google. Вони згадують в одній зі своїх статей, що нав'язують байєсівських пріорів, коли вони проводять оптимізацію, і завдяки цьому я можу уявити, що отримати нейронну мережу, щоб виплюнути зображення для кожної мітки, не так вже й складно - ми можемо просто встановити мітку, а потім оптимізувати вхідний вектор відповідно.
Однак найцікавішою частиною глибокої мрії є те, що вона робить це на кожен шар, і в цьому плані я не зовсім впевнений, як він підкреслює деталі в шарі.
Звичайно, подання зображення дасть вам значення для кожного нейрона, але тоді як ми можемо використовувати цю інформацію для перебільшення деталей у вихідному зображенні? Я намагався знайти будь-яку детальну інформацію про це.
Список літератури: Тут vzn відповів на подібне запитання: https://cs.stackexchange.com/a/44857/49671
З цього посилання є реалізація Deepdream тут: http://auduno.com/post/125362849838/visualizing-googlenet-classes
За винятком того, що він не пропонує перебільшення функцій, про які йдеться тут: http://googleresearch.blogspot.com/2015/06/inceptionism-going-deeper-into-neural.html
Де вони обидва показують візуалізацію певних класів та окремих шарів, і кажуть:
Замість того, щоб точно прописати, яку функцію ми хочемо розширити, ми можемо дозволити мережі прийняти це рішення. У цьому випадку ми просто подаємо в мережу довільне зображення або фотографію і даємо мережі аналізувати зображення. Потім вибираємо шар і просимо мережу покращити все, що він виявив.