Изменения

Перейти к: навигация, поиск

Генерация объектов

1894 байта добавлено, 17:55, 13 января 2021
Нет описания правки
{{В разработке}}
 
 
'''Задача генерации объектов''' (англ. ''object generation problem'') {{---}} задача, связанная с машинным обучением, заключающаяся в создании новых правдоподобных объектов на основании заданной выборки.
Полученные объекты могут быть использованы как для прикладных целей (в таком случае, это чаще всего изображения), так и для генерации объектов для тренировочной выборки, когда размечать настоящие данные — долго и дорого, или их нужно анонимизировать. В зависимости от того, для какой из этих целей используется генерация объектов, постановка задачи и методы её решения несколько отличаются.
==== Анимация и игры ====
[[Файл:Flintstones.png|500px|thumb|Рисунок 2. Пример сгенерированных изображений по подписям.]]
Еще генерация объектов может использоваться при воссоздании текстур старых игр в лучшем расширении (пример игры, для которой был использован такой метод – [https://ru.wikipedia.org/wiki/Resident_Evil Resident Evil]). Такой подход также помогает создавать персонажей в стилистике мультфильма, нарисовав руками только пару из них, анимировать уже нарисованных героев, а также полезен для подготовки кадров фильмов или мультипликации<ref>[https://arxiv.org/abs/1609.02612 Generating Videos with Scene Dynamics]</ref>. В 2018 году исследователи из Университета Иллинойса и Института искусственного интеллекта Аллена разработалимодель под названием CRAFT (Composition, Retrieval and Fusion Network)<ref>[https://arxiv.org/abs/1804.03608 модель CRAFT]</ref> модель под названием CRAFT (Composition, Retrieval and Fusion Network), которая принимает текстовые описания (или подписи) от пользователя и генерирует сцены из мультсериала «Флинтстоуны» (рис. 2). ==== Другое ====При решении какой-либо задачи часто бывает удобно генерировать специфические объекты для ее решения. Например, одна из задач машинного обучения в медицине {{---}} [[Машинное обучение в медицине#Генерация молекулярных структур|генерация новых молекул]], которые потенциально могут быть лекарствами. Для решения этой проблемы используют генеративные состязательные сети. Еще одним примером может являться генерация наборов данных с заданными свойствами для задачи классификации<ref>[http://fppo.ifmo.ru/dissertation/?number=233319 Забашта Алексей Сергеевич, Генерация наборов данных для задачи классификации с заданными свойствами для повышения качества систем мета-обучения]</ref>. Это, в частности, может использоваться для генерации данных для систем автоматической проверки программ или в алгоритмах предсказания стоимости изготовления детали по её чертежу и текстовым характеристикам. Можно генерировать [https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 юнит-тесты], чтобы быстрее находить ошибки при разработке программного обеспечения<ref>[https://research.infosupport.com/wp-content/uploads/Unit-test-generation-using-machine-Master-Thesis-Laurence-Saes.pdf Unit test generation using machine learning]</ref>. Генерация объектов активно развивается в наши дни и имеет множество применений, в том числе под специфические задачи в различных сферах деятельности.
=== Используемые модели ===
Для достижения данной цели обычно используются [[Порождающие модели | порождающие модели]]. В таком варианте в качестве задачи ставится восстановление совместного распределения <tex>p(x,y)</tex>, где <tex>y</tex> — это один бит, отвечающий за отдельный признак (то есть тот класс, к которому должна принадлежать созданный объект; например, фотография человека), а <tex>x</tex> — это весь объект (фотография).
Чаще всего порождаемый объект <tex>X</tex> представляет собой набор элементов <tex>X = \{x_i\}</tex>, что позволяет порождать объект по частям. Для изображения, например, такими частями будут являться пиксели. Таким образом, при порождении следующих частей объекта мы можем опираться на уже созданные, и тогда перед нами встаёт задача максимизация функции правдоподобия: для набора данных <tex>X = \{x_i\}</tex> максимизировать <tex>\displaystyle \prod_i p_{\operatorname{model}}(x_i,\theta)</tex> по параметрам модели θ<tex>\theta</tex>, т.е. найти <math>\theta^* = \underset{\theta}{\operatorname{argmax}} \displaystyle \prod_i p_{\operatorname{model}}(x_i,\theta)</math>. Эта задача относится к классу задач обучения без учителя или с частичным привлечением учителя. При её решении либо работают с явными распределениями, сводя распределение <tex>p(x,y)</tex> к произведению распределений определённой структуры, либо используют неявные модели, которые не восстанавливают всю функцию плотности, а только моделируют ту часть этой функции, которая нужна непосредственно. Стоит отметить, что простые порождающие модели, такие как наивный байесовский классификатор, не показывают достаточное качество результата, чтобы на их основе можно было сгенерировать полноценные мультимедиа объекты. Из класса порождающих моделей при генерации именно изображений особенно хорошо показали себя модели [[Generative Adversarial Nets (GAN) | состязательных сетей]], [[PixelRNN и PixelCNN | PixelRNN и PixelCNN]], а также DRAW (рисуют изображение с помощью сочетания [[Рекуррентные нейронные сети | рекуррентных НС]] и [[Механизм внимания | механизма внимания]]). Также стоит отметить модель [https://en.wikipedia.org/wiki/WaveNet WaveNet], используемую для создания звуковых записей. Эта модель создана в 2016 году, а к 2018 году, после нескольких оптимизаций вычислительной сложности, она нашла применение в Google при создании образцов речи на различных языках. 
<!---
== Оверсэмплинг ==
Анонимный участник

Навигация