Изменения

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

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

498 байт добавлено, 18:51, 19 апреля 2020
fix styling
{{В разработке}}
== Понятие генерации объектов ==[[Файл:GAN_DIAGRAM.png|420px|thumb|right|Диаграмма ''generative adversarial network''.]]
Cреди '''Задача генерации объектов''' (англ. ''object generation problem'') {{---}} Среди задач, связанных с машинным обучением, выделяют задачу генерации объектов. Эта задача заключается в создании новых правдоподобных объектов на основании заданной выборки. Полученные объекты могут как быть использованы независимо для прикладных целей (в таком случае, это чаще всего изображения), так и для устранения несбалансированности классов (оверсэмплинг) и дальнейшей обработки данных (обычно классификации). В зависимости от того, для какой из этих целей используется генерация объектов, постановка задачи и методы её решения несколько отличаются..
== Генерация объектов для прикладных целей ==
=== Применение ===
== Применение ==Основная цель при генерации объектов для прикладных целей обычно состоит в том, чтобы научиться создавать изображения, которые человек не может отличить от изображений, полученных иных путём. Такие изображения могут использоваться, среди прочего, для более дешёвого создания модельных снимков, обложек или пейзажей. Одним из ярких примеров такого использования является создание фотографий вымышленных людей для рекламы в расчёте на то, что люди будут больше ассоциировать себя с образом, не представляющим кого-либо конкретного, но сочетающим в себе те черты, которые есть у них самих. Также генерация объектов может использоваться при воссоздании текстур старых игр в лучшем расширении (пример игры, для которой был использован такой метод – [https://ru.wikipedia.org/wiki/Resident_Evil Resident Evil] ), улучшении астрономических изображений и моделировании дорогостоящих для изучения физических процессов.
Основная цель при генерации объектов для прикладных целей обычно состоит в том, чтобы научиться создавать изображения, которые человек не может отличить от изображений, полученных иных путём. Такие изображения могут использоваться, среди прочего, для более дешёвого создания модельных снимков, обложек или пейзажей. Одним из ярких примеров такого использования является создание фотографий вымышленных людей для рекламы в расчёте на то, что люди будут больше ассоциировать себя с образом, не представляющим кого-либо конкретного, но сочетающим в себе те черты, которые есть у них самих. Также генерация объектов может использоваться при воссоздании текстур старых игр в лучшем расширении (пример игры, для которой был использован такой метод – Resident Evil), улучшении астрономических изображений и моделировании дорогостоящих для изучения физических процессов.=== Используемые модели ===
Для достижения данной цели обычно используются [http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B8%D0%B5_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8 порождающие модели]. В таком варианте в качестве задачи ставится восстановление распределения p(x,y), то есть максимизация функции '''правдоподобия''': для набора данных <tex>X = \{x_i\}</tex> максимизировать <tex>\displaystyle \prod_i p_{model}(x_i;\theta)</tex> по параметрам модели <tex>\theta</tex>, т.е. найти <math>\theta^* = Используемые \underset{\theta}{\operatorname{argmax}} \displaystyle \prod_i p_{model}(x_i;\theta)</math>. Эта задача относится к классу задач обучения без учителя или с частичным привлечением учителя. При её решении либо работают с явными распределениями, сводя распределение <tex>p(x;y)</tex> к произведению распределений определённой структуры, либо используют неявные модели , которые не восстанавливают всю функцию плотности, а только моделируют ту часть этой функцию, которая нужна непосредственно.Стоит отметить, что простые порождающие модели, такие как наивный байесовский классификатор, не показывают достаточное качество результата, чтобы на их основе можно было сгенерировать полноценные мультимедиа объекты. Из класса порождающих моделей при генерации именно изображений особенно хорошо показали себя модели [http://neerc.ifmo.ru/wiki/index.php?title=Generative_Adversarial_Nets_(GAN) состязательных сетей], [http://neerc.ifmo.ru/wiki/index.php?title=PixelRNN_%D0%B8_PixelCNN PixelRNN и PixelCNN], а также DRAW (рисуют изображение с помощью сочетания [http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%80%D0%B5%D0%BD%D1%82%D0%BD%D1%8B%D0%B5_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B5%D1%82%D0%B8 реккурентных НС] и [http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC_%D0%B2%D0%BD%D0%B8%D0%BC%D0%B0%D0%BD%D0%B8%D1%8F механизма внимания]). Также стоит отметить модель [https://en.wikipedia.org/wiki/WaveNet WaveNet], используемую для создания звуковых записей. Эта модель создана в 2016 году, а к 2018 году, после нескольких оптимизаций вычислительной сложности, она нашла применение в Google при создании образцов речи на различных языках.
Для достижения данной цели обычно используются [http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B8%D0%B5_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8 порождающие модели]. В таком варианте в качестве задачи ставится восстановление распределения p(x,y), то есть максимизация функции '''правдоподобия''': для набора данных <tex>X = \{x_i\}</tex> максимизировать <tex>\displaystyle \prod_i p_{model}(x_i;\theta)</tex> по параметрам модели <tex>\theta</tex>, т.е. найти <math>\theta^* = \underset{\theta}{\operatorname{argmax}} \displaystyle \prod_i p_{model}(x_i;\theta)</math>. Эта задача относится к классу задач обучения без учителя или с частичным привлечением учителя. При её решении либо работают с явными распределениями, сводя распределение p(x;y) к произведению распределений определённой структуры, либо используют неявные модели, которые не восстанавливают всю функцию плотности, а только моделируют ту часть этой функцию, которая нужна непосредственно.Стоит отметить, что простые порождающие модели, такие как наивный байесовский классификатор, не показывают достаточное качество результата, чтобы на их основе можно было сгенерировать полноценные мультимедиа объекты. Из класса порождающих моделей при генерации именно изображений особенно хорошо показали себя модели [http://neerc.ifmo.ru/wiki/index.php?title=Generative_Adversarial_Nets_(GAN) состязательных сетей], [http://neerc.ifmo.ru/wiki/index.php?title=PixelRNN_%D0%B8_PixelCNN PixelRNN и PixelCNN], а также DRAW (рисуют изображение с помощью сочетания [http://neerc.ifmo.ru/wiki/index.php?titleОверсэмплинг =%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%80%D0%B5%D0%BD%D1%82%D0%BD%D1%8B%D0%B5_%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D0%B5%D1%82%D0%B8 реккурентных НС] и [http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC_%D0%B2%D0%BD%D0%B8%D0%BC%D0%B0%D0%BD%D0%B8%D1%8F механизма внимания]). Также стоит отметить модель WaveNet, используемую для создания звуковых записей. Эта модель создана в 2016 году, а к 2018 году, после нескольких оптимизаций вычислительной сложности, она нашла применение в Google при создании образцов речи на различных языках.  == Оверсэмплинг ==
Основной причиной применения расширения выборки за счёт создания объектов – дисбаланс классов в уже имеющейся выборке. Этот дисбаланс может быть двух типов:
<li> Недостаточное представление класса в одной или нескольких входных переменных. Это явление широко распространено в реальных данных и возникает естественным образом, например, при социологических исследованиях. Так, при случайном нестратифицированном опросе программистов-женщин будет опрошено в несколько раз меньше, чем мужчин, так как мужчины больше представлены в данной профессии, что может оказаться важным при установлении связи с такой переменной, как стаж работы.
</li>
<li> Недостаточное представление класса в выходной переменной .Это явление так же широко также распространено в реальных данных. Особенно часто этот эффект проявляется в медицине, где процент заболевших обычно много меньше процента здоровых обследуемых. Адекватность оценки предсказания в таких случаях помогает сохранять использование точности, полноты и F-меры.
</li>
</ul>
=== Случайный оверсэмплинг == Случайный оверсэмплинг – создание копий нескольких объектов миноритарного класса. Этот метод включает несколько вариаций, так как могут различаться количество копий (2, 5, 10 и более) для каждого объекта и доля объектов миноритарного класса, для которой создаются копии. Этот метод – один из самых ранних, для него доказана выбросоустойчивость (robustness). Однако его эффективность часто недостаточна.=
== SMOTE ==Случайный оверсэмплинг – создание копий нескольких объектов миноритарного класса. Этот метод включает несколько вариаций, так как могут различаться количество копий <tex>(2, 5, 10)</tex> и более для каждого объекта и доля объектов миноритарного класса, для которой создаются копии. Этот метод – один из самых ранних, для него доказана выбросоустойчивость (''robustness''). Однако его эффективность часто недостаточна.
=== SMOTE (Synthetic Minority Oversampling Technique) – генерация искусственных примеров, не совпадающих с имеющимися в выборке. Этот алгоритм во многом основан на [http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D0%B1%D0%BB%D0%B8%D0%B6%D0%B0%D0%B9%D1%88%D0%B8%D1%85_%D1%81%D0%BE%D1%81%D0%B5%D0%B4%D0%B5%D0%B9 методе ближайшего соседа]. Для создания новой записи находят разность d=Xb–Xa, где Xa,Xb – векторы признаков «соседних» примеров a и b из миноритарного класса (их находят так же, как в методе kNN). В данном случае необходимо и достаточно для примера b получить набор из k соседей, из которого в дальнейшем будет выбрана запись b. Далее из d путем умножения каждого его элемента на случайное число в интервале (0, 1) получают ^d. Вектор признаков нового примера вычисляется путем сложения Xa и ^d. Алгоритм SMOTE позволяет задавать количество записей, которое необходимо искусственно сгенерировать. Степень сходства примеров a и b можно регулировать путем изменения значения k (числа ближайших соседей).[[File:SMOTE.jpg|thumb|SMOTE]]=
Данный подход имеет недостаток в том, что «вслепую» увеличивает плотность примерами в области слабо представленного класса:
[[File:SMOTE_disadvantage.jpg|thumb|Недостаток подхода]]
SMOTE (''Synthetic Minority Oversampling Technique'') – генерация искусственных примеров, не совпадающих с имеющимися в выборке. Этот алгоритм во многом основан на [http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D0%B1%D0%BB%D0%B8%D0%B6%D0%B0%D0%B9%D1%88%D0%B8%D1%85_%D1%81%D0%BE%D1%81%D0%B5%D0%B4%D0%B5%D0%B9 методе ближайшего соседа]. Для создания новой записи находят разность <tex>d=Xb–Xa</tex>, где <tex>Xa,Xb</tex> – векторы признаков «соседних» примеров a и b из миноритарного класса (их находят так же, как в методе ''kNN''). В данном случае необходимо и достаточно для примера b получить набор из k соседей, из которого в дальнейшем будет выбрана запись b. Далее из d путем умножения каждого его элемента на случайное число в интервале <tex>(0, 1)</tex> получают <tex>d</tex>. Вектор признаков нового примера вычисляется путем сложения <tex>Xa</tex> и <tex>d</tex>. Алгоритм SMOTE позволяет задавать количество записей, которое необходимо искусственно сгенерировать. Степень сходства примеров a и b можно регулировать путем изменения значения ''k'' (числа ближайших соседей). <br />
[[File:SMOTE_GEN.gif|frameless|SMOTE]]
== ASMO ==Данный подход имеет недостаток в том, что «вслепую» увеличивает плотность примерами в области слабо представленного класса:<br />
[[File:SMOTE_GEN_DISS.gif|frameless|Недостаток подхода SMOTE]]
=== ASMO (Adaptive Synthetic Minority Oversampling) – алгоритм адаптивного искусственного увеличения числа примеров миноритарного класса, модифицирующий SMOTE. В случае, если миноритарные примеры равномерно распределены среди мажоритарных и имеют низкую плотность, алгоритм SMOTE только сильнее перемешает классы. В качестве решения данной проблемы был предложен алгоритм ASMO. Он применяется, если для каждого i-ого примера миноритарного класса из k ближайших соседей g (g≤k) принадлежит к мажоритарному. В этом случае на основании примеров миноритарного класса выделяется несколько кластеров и для примеров каждого кластера применяют SMOTE.===
== ADASYN ==
ADASYN ASMO (''Adaptive synthetic samplingSynthetic Minority Oversampling'') – семейство методовалгоритм адаптивного искусственного увеличения числа примеров миноритарного класса, являющихся попыткой «адаптации» модифицирующий SMOTE. В случае, то есть создания объектовесли миноритарные примеры равномерно распределены среди мажоритарных и имеют низкую плотность, с которыми на выборке будет показан лучший результат классификацииалгоритм SMOTE только сильнее перемешает классы. В качестве решения данной проблемы был предложен алгоритм ASMO. Такие методы могут: создавать больше данных на миноритарных классахОн применяется, если для каждого i-ого примера миноритарного класса из k ближайших соседей <tex>g (g≤k)</tex> принадлежит к мажоритарному. В этом случае на которых обучение сложнее; искажать пространство объектов в сторону точек, у которых соседи неоднородны; просто добавлять случайное искажение к генерируемым точкам основании примеров миноритарного класса выделяется несколько кластеров и для создания естественного шумапримеров каждого кластера применяют SMOTE.
=== ADASYN ===
ADASYN (''Adaptive synthetic sampling'') – семейство методов, являющихся попыткой «адаптации» SMOTE, то есть создания объектов, с которыми на выборке будет показан лучший результат классификации. Такие методы могут: создавать больше данных на миноритарных классах, на которых обучение сложнее; искажать пространство объектов в сторону точек, у которых соседи неоднородны; просто добавлять случайное искажение к генерируемым точкам для создания естественного шума.
== Источники ==
<ol> <li>[https://en.wikipedia.org/wiki/Generative_adversarial_network Генеративно-состязательная сеть] </li> <li>[https://en.wikipedia.org/wiki/WaveNet WaveNet]</li> <li>[https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis Оверсемплинг]</li> <li>[https://towardsdatascience.com/dealing-with-imbalanced-classes-in-machine-learning-d43d6fa19d2 Методы работы с небалансными классами]</li> <li>[https://www.kaggle.com/residentmario/oversampling-with-smote-and-adasyn Оверсемплинг с SMOTE]</li> <li>[https://medium.com/coinmonks/smote-and-adasyn-handling-imbalanced-data-set-34f5223e167 Методы работы с небалансными данными в SMOTE и ADASYN]</li> <li>[https://basegroup.ru/community/articles/imbalance-datasets Несбалансированные датасеты]</li></ol>
10
правок

Навигация