Несколько слов про генеративные состязательные сети
На самом пике волне хайпа искусственного интеллекта уверенно держатся генеративные состязательные сети. Не все знают, но генеративные модели появились ещё в 18-ом веке, когда преподобный Томас Байес сформулировал своё знаменитое правило связавшее «приорное» и «постериорное» распределения.
Давайте разберёмся с ней
Основная идея заключается в том, чтобы обучать одновременно две нейронные сети. Первую будем называть «Генератор» и её/его задача — породить примеры похожие на те, что есть в обучающей выборке с точки зрения второй сети — «Дискриминатора». Задача Дискриминатора же — учиться отличать порождённые генератором примеры от тех, что есть в той же обучающей выборке.
При этом Генератор, конечно, не занимается творчеством, а является, как это обычно бывает с нейронными сетями, сложной многомерной функцией, получающей на вход вектора из какого-нибудь многомерного пространства и выдающей на выходе примеры из пространства данных.
В идеальном мире в процессе совместного обучения примеры порождаемые Генератором будут всё более похожи на исходные, и, в конце концов, Дискриминатор не сможет отличить первые от вторых. На простых датасетах типа MNISTа всё так и происходит.
Однако для более сложных наборов данных требуется некоторое количество дополнительного волшебства. О конкретных трюках и модификациях я расскажу в следующих постах.
Остались вопросы? Напишите в комментариях!