Нейросеть научили генерировать котиков
Нейросети можно научить не только распознавать, но и обрабатывать и генерировать изображения. Для последней цели используют системы из двух конкурирующих нейросетей — GAN (Generative adversarial network). Первая сеть (генерирующая) получает на входе значения переменных, а на выходе выдаёт значения функции от этих переменных. Вторая (различающая, или дискриминирующая) сравнивает результаты работы первой сети с образцами-эталонами — в случае Джоликёр-Мартино, с реальными фотографиями котов и кошек анфас.
Задача генерирующей сети — выдавать такие результаты, чтобы вторая сеть не могла отличить их от эталона; дискриминирующая сеть, в свою очередь, со временем учится всё точнее определять разницу между эталоном и изображением, сгенерированным нейросетью-генератором.
В качестве образцов Джоликёр-Мартино использовала базу данных, состоящую из десяти тысяч кошачьих портретов. Лучшие результаты получились с изображениями размеров 64×64 пикселя и больше (их в базе набралось больше девяти тысяч), сгенерированными с помощью сети-генератора DCGAN.
Чуть менее убедительные котики получились, когда нейросети «скормили» шесть тысяч картинок разрешением 128×128, а генерированием занималась DCGAN с алгоритмами автокоррекции ошибок (Self-Normalizing Neural Networks) SELU.
Кроме того, Джоликёр-Мартино попробовала генерировать котиков с помощью алгоритма WGAN и LSGAN. В последнем случае вышло не очень: в один из раундов работы вместо котиков нейросеть выдала контрастные пятна.
Но один из разработчиков алгоритма LSGAN прислал Джоликёр-Мартино свою версию котиков, сгенерированных с его помощью, и они оказались очень даже ничего — очевидно, всё дело было в базовых параметрах работы обеих нейросетей: