Генеративно-состязательные сети

Урок 11 из 25 курса «Основы ИИ для начинающих»: официальный курс Microsoft AI for Beginners (Майкрософт) на русском языке. Урок входит в платный доступ; первые уроки курса бесплатно.

О чём урок

Примечание AI University. Часть примеров в оригинале курса рассчитана на сервисы Azure. Те же модели можно обучать и запускать локально или в любом облаке с Python, PyTorch и TensorFlow. В предыдущем разделе вы узнали о генеративных моделях: моделях, способных создавать новые изображения, похожие на те, что использовались в обучающем наборе данных. VAE был хорошим примером такой модели. Однако, если вы попытаетесь сгенерировать что-то действительно значимое, например, картину в приемлемом разрешении, с помощью VAE, то увидите, что обучение сходится плохо. Для таких задач следует изучить другую архитектуру, специально предназначенную для генеративных моделей, генеративно-состязательные сети, или GAN. Основная идея GAN заключается в использовании двух нейронных сетей, которые обучаются в противоборстве друг с другом: Изображение: Дмитрий Сошников ✅ Небольшой словарь терминов: Генератор: сеть, которая принимает случайный вектор и выдаёт изображение. Дискриминатор: сеть, которая принимает изображение и должна определить, является ли оно реальным (из обучающего набора данных) или было сгенерировано генератором. По сути, это классификатор изображений. Архитектура дискриминатора не отличается от обычной сети классификации изображений. В простейшем случае это может быть полносвязный классификатор, но, скорее всего, это будет свёрточная сеть. ✅ GAN, основанный на свёрточных сетях, называется DCGAN. Свёрточный дискриминатор состоит из следующих слоёв: нескольких свёрточных слоёв с пулингом (с уменьшением пространственного размера), одного или нескольких полносвязных слоёв для получения «вектора признаков» и, наконец, бинарного классификатора. ✅ «Пулинг» в этом контексте: метод, который уменьшает размер изображения. «Слои пулинга уменьшают размерность данных, объединяя выходы кластеров нейронов на одном слое в один нейрон на следующем слое». Источник. Генератор устроен немного сложнее. Его можно рассматривать как обратный дискриминатор. Начиная с латентного вектора (вместо вектора признаков), он имеет полносвязный слой для преобразования его в требуемый размер/форму, за которым следуют деконволюции и увеличение масштаба. Это похоже на часть декодера в автокодировщике.

План урока

  1. Тест перед лекцией
  2. Дискриминатор
  3. Генератор
  4. Обучение GAN
  5. ✍️ Упражнения: GAN
  6. Проблемы при обучении GAN
  7. Перенос стиля
  8. ✍️ Пример: Перенос стиля

Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.

Полезные гиды