пятница, 8 июня 2018 г.

Что такое генеративно-состязательная сеть?

В англоязычном интернете какое-то время назад была популярная программа, позволяющая генерировать одну картинку используя другую. Люди очень много с этим баловались, рисуя например силуэт человека, а потом используя ИИ:


Справа - рисунок человека, слева - цветная обработка машины

Сейчас есть демо-сервис, который позволяет поиграться с изображениями кошек, сумок или фасадов зданий. Блог Econ Dude сегодня про это расскажет.

Выглядит это очень интересно:



Слева простой скетч человека, а справа цветная картинка, сгенерированная компьютером. Очень реалистично получается.

Как всё это работает?

Это называется генеративно-состязательная сеть и принципы её работы довольно просты, если не углубляться в технические детали.

Один искусственный интеллект занимается случайной генерацией образов или чего угодно, а другой AI занимается отбором и фильтрацией сгенерированных результатов по некоторым критериям. Таким образом два терминатора сражаются друг с другом, пытаясь победить, эти системы даже называют войной машин (роботов, нейросетей).

Отчасти тут применяется и теория игр.

Например?

Например вот вы нарисовали очертание кошки, или дракона допустим. И вы говорите системе обработать этот скетч, раскрасить, или просто сделать лучше качеством, чтобы картинка была похожа на как-бы среднюю сумму других хороших картинок драконов, нарисованных людьми.

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


С кошками уже очень большая база

База Pix2Pix и подобные сайты почему-то иногда ложатся, на одном было заявление что на пике трафика было больше двух миллионов в день и администраторы закрыли сервис. Тут история очень сильно напоминает фильм "Социальная Сеть", когда Марк Цуберберг еще до создания Facebook делал сайт оценки красоты девушек и выбор из двух фотографий. Это по сути дела тоже была примерно вот такая штука как дискриминатор, но уже ручной, это делали люди. Однако генератор из базы работал случайным образом.

Всё что сделали сейчас, это автоматизировали дискриминатор.


Цукерберг это сделал еще в 2003-м году

Ну а в случае с GAN (Generative adversarial network), всё работает примерно так. Объяснение и картинка с сайта https://affinelayer.com/pix2pix/


Конечно-же всё начали именно с кошек, это символ интернета

Вы видите что в систему заливают картинку без цветов, а далее генератор подбирает цвета случайно. Однако, дискриминатор отсеивает случайные результаты, которые не подходят под цель, а цель задаётся изначально человеком.

Таким образом что можно было бы сделать?

Ну например.

Вы рисуете силуэт девушки, потом генератор начинает его обрисовывать, но дискриминатор пусть базирует результаты на базе типа facemash, где люди уже выбрали самые красивые лица по их мнению. Самое интересное тут то, что по сути идеальные варианты может делать сам человек даже того не замечая, они уже собраны и есть в big data. Например? Ну например просто база данных pornhub, чего греха таить. Её можно использовать для выяснения приоритетов в плане красоты лиц и не только.

Каким-то примерно таким образом работают почти все системы рекомендаций на сайтах, рекомендации в YouTube и т.д. Алгоритм подбирает человеку то, что было интересно тем, кто похож на него по некоторым параметрам.

На самом деле всё это не так уж и сложно в техническом плане и понять эту систему не очень трудно, я думаю я сегодня даже возьму да и напишу программу чтобы всё это продемонстрировать, и позже её в статью добавлю. Даже автор блога Econ Dude может написать простой пример ГСС программы.

Если всё представить совсем просто, допустим, что у нас есть генерация случайного числа от 1 до 100, программа выдаёт случайное число пусть 500 раз в секунду. Потом пишем другой код, который её останавливает на 100, так-как 100 - это цель генерации. Либо мы даём людям на каждом этапе генерации выбрать хороший это вариант, или нет, взять или нет ну например деньги, если это $100. Понятно, что люди, путём тысяч генераций, будут с наибольшей вероятностью выбирать 100, так мы и придём к тому, что делает дискриминатор, к идеальному варианту 100. Вот и всё.

Как и для чего всё это можно использовать-то?

Помимо персональных рекомендаций это просто сервис для развлечения людей, сервис сбора статистики и машинного обучения.

Страшно всё это или нет, ну в плане того, что уже роботы рисуют лучше людей? Да ну не знаю, немного это убивает конечно профессию художника и творчество, но не забывайте что изначальная-то база людьми собрана и на них основана. Может как-бы функция человека и была такой, тупо собрать базу, а потом роботы смогут этим уже сами рулить. Мы же уже собираем базу знаний в Вики...

В принципе уже всё сделали (https://www.autodraw.com/):



А вот это уже немного страшно :)

Типа ты учишься рисовать годами, может быть всю жизнь, как девушка-художник, с которой я делал интервью. А потом кто угодно может за 5 минут без опыта нарисовать что угодно с помощью компьютера и ИИ.


Вот такие дела на сегодня в блоге Econ Dude, просто хотел рассказать про эти вещи, мне кажется это интересно и как-то про это мало говорят.