Unsupervised Discovery of Interpretable Directions in the GAN Latent Space

Andrey Voynov, Artem Babenko

Yandex, ВШЭ



#GAN, #representation, #latent_space, #ACAI



Статья: https://arxiv.org/abs/2002.03754

Код: https://github.com/anvoynov/GANLatentDiscovery



Свежая работа об изучении свойств латентного пространства, в каком-то смысле перекликающаяся с идеей в основе ACAI, про который мы тут писали аж два раза. Предположим, у нас уже есть обученный GAN с некоторым латентным пространством. Хочется уметь находить в этом пространстве осмысленные направления, соответствующие каким-то семантическим изменениям, не имея заранее списка этих направлений и разметки примеров для них.



Интуиция подсказывает, что смещение в случайном направлении латентного пространства обычно не имеет явно выраженной семантики и влияет сразу на много разных аспектов декодируемого объекта, тогда как смещение по "правильному вектору" приводит к более осмысленному и проще описываемому/оцениваемому изменению.



Отсюда предлагается следующий подход: зафиксировав веса нашей исследуемой сети, будем учить две дополнительные компоненты: "смещатель" и "реконструктор". Смещатель -- это выучиваемая матрица полезных "правильных направлений". Выбирая случайное k-ое направление и случайное расстояние ε, мы из некоторого латентного вектора формируем новый, смещённый на ε в выбранном направлении. Сеть-реконструктор должна, глядя на объекты, сгенерированные из этой пары латентных векторов, восстановить k и ε. Лосс у обоих подсеток общий -- взвешенная сумма кроссэнтропии для реконструкции k и MAE для реконструкции ε, т.е. они играют вместе, пытаясь пробросить информацию о значениях k и ε через генератор. Согласно интуиции, им будет выгодно выбирать наиболее "осмысленные" оси, изменения по которым легче опознавать и оценивать количественно.





Эксперименты показывают, что матрица векторов "смещателя" должна быть так или иначе нормирована (использовали поколоночную нормировку или ортонормированную матрицу).

В качестве реконструктора использовали разные стандартные подходы -- LeNet для MNIST, ResNet-18 для CelebA-HQ и т.п.

Остаётся как-то задать два гиперпараметра -- отношение весов слагаемых лосса (использовали 0.25) и число искомых осей К (выбирали или равное размерности латентного простраства, или на глаз).



Чтобы оценивать интерпретируемость полученных направлений не только на глаз, придумали хитрый костыль Direction Variation Naturalness, основанный на интуицивном ожидании того, что "хорошие" направления должны быть достаточно хорошо и натуралистично представлены в реальных данных. Чтобы оценить это, для фиксированного направления d строят синтетический датасет вида {(G(z±d),±1)} для случайных z, учат на нём бинарный классификатор, потом применяют его к реальным данным и получают второй датасет с реальными картинками и синтетической разметкой от этого классификатора. Снова учат бинарный классификатор уже на этом втором датасете и проверяют его точность на исходном синтетическом датасете. Если распределения объектов в обоих датасетах похожи относительно направления d, то эта accuracy будет высокой.



В результате:

* для Spectral Norm GAN на MNIST нашли направления для наклона цифры, ширины штриха, закруглённости и т.п.

* для Spectral Norm GAN на AnimeFaces нашли направления для цвета волос, направления чёлки, наличия очков и т.п.

* для BigGAN нашлись направления зума, освещённости, поворота, а также размытия и удаления фона.



В финале показывают, как, например, найденное направление "удаления фона" можно использовать для построения датасета для обучения модели saliency detection (локализации объектов на изображении).



Навскидку кажется, что предложенный метод неспецифичен для изображений или GAN-сетей и может быть использован для изучения примерно любого нерегулярного латентного пространства.