Понимание порождающих состязательных сетей - PullRequest
4 голосов
/ 03 февраля 2020

Я реализовал предложенную модель GAN из Paper Edge-Connect (https://github.com/knazeri/edge-connect) в Керасе и провел несколько тренингов по набору данных KITTI. Сейчас я пытаюсь выяснить, что происходит внутри моей модели, и поэтому у меня есть несколько вопросов.

1. Начальное обучение (100 эпох, 500 партий / эпоха, 10 образцов / партия)

Сначала я обучил модель, как предложено в статье (включая потерю стиля, восприятия, L1 и состязательности)

На первый взгляд модель сходится к хорошим результатам:

text text

Это выход генератора (слева) для маскированного входа ( справа)

Большинство графиков с тензорной доски также выглядят довольно неплохо: (Это все значения из GAN-модели, содержащие общие потери генератора (GENERATOR_Loss), различные потери на основе сгенерированного изображения (L1, на c, стиль), а также состязательная потеря (DISCRIMINATOR_loss)

При внимательном рассмотрении дискриминатора все выглядит иначе. Дискриминатор для сгенерированных изображений постоянно увеличивается. Потери при обучении дискриминатору (50/50 фальшивых / реальных примеров) не меняются вообще:

И при взгляде на Гистограмма активаций выхода дискриминатора всегда выдает значения около 0,5.

Подходя к моим вопросам / выводам, где я буду признателен за ваши отзывы:

  • Итак, я предполагаю сейчас То, что моя модель многому научилась, но ничего не узнала от дискриминатора, верно? Все результаты основаны на потерях, отличных от состязательных потерь?
  • Похоже, что дискриминатор не смог угнаться за генератором, генерирующим лучшие изображения. Я думаю, что активация дискриминаторов должна как-то рано переходить к двум пикам около 0 (фальшивые ярлыки) и 1 (реальные ярлыки) и оставаться там?
  • Я знаю, что моя конечная цель заключается в том, чтобы дискриминатор выдает 0,5 вероятности как для реального, так и для поддельного ... но что это значит, когда это происходит с самого начала и не меняется во время тренировки?
  • Я тоже прекратил обучение рано? Может ли дискриминатор догнать (так как выходной сигнал генератора больше не меняется) и устранить последние крошечные неисправности генератора?

2. Таким образом Я начал вторую тренировку , на этот раз только используя состязательные потери в генераторе! (~ 16 эпох, 500 партий / эпоха, 10 образцов / партия)

На этот раз дискриминатор, по-видимому, способен различать реальное и поддельное через некоторое время. (prob_real - это средняя вероятность, присвоенная реальным изображениям и наоборот) Гистограмма активаций также выглядит хорошо:

enter image description here

Но как-то после примерно 4 тыс. образцов все начинает меняться, и примерно в 7К он расходится ... Также все сэмплы из генератора выглядят так:

enter image description here

По моей второй части вопросы / выводы:

  • Должен ли я провести предварительную подготовку дискриминатора, чтобы он получил преимущество? Я предполагаю, что нужно как-то уметь различать реальное и фальшивое (выводя большие вероятности для реального и наоборот), чтобы генератор мог извлечь из него полезные вещи? Должен ли я тренировать дискриминатор несколько раз, обучая генератор на один шаг по той же причине?
  • Что произошло во второй тренировке? Была ли скорость обучения для дискриминатора слишком высокой? (Опция: ADAM, lr = 1.0E-3)
  • Многие подсказки в inte rnet для тренировок GAN направлены на увеличение сложности задания дискриминаторов (шум метки / переворот метки, шум экземпляра, сглаживание метки и т. д. c). Здесь я думаю, что дискриминатор скорее нужно усилить? (-> Я также обучил Dis c, не меняя генератор, и он хорошо сходится)

Спасибо, ребята, за ваш вклад!

...