Изменения
Дополнение
{{Определение
|definition='''Синтетические данные''' — это наборы данных для применения программно сгенерированные данные, используемые в прикладных задачах бизнес-приложениях (в том числе в машинном обучении), которые не были получены исключительно путём прямого сбора и измерений.
}}
Нередко возникают ситуации, когда получение реальных данных бизнес-процессов сложно или дорого, но при этом известны требования к таким объектамбизнес-процессам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетахили медицинской информации. В таких случаях необходимые наборы данных можно программно сгенерировать. == Применение == Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обученияГенерация объектов|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты. Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритмупрограммно сгенерировать]]<ref name="wiki:oversampling">Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021</ref>. При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует. Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.
== Виды генерации ==
Существует два основных подхода к генерации синтетических наборов данных.
В случае, когда реальные данные отсутствуютили их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация — генерация наборов на основе имеющихся реальных данныхбизнес-процессов. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.
* Возможность генерации наборов данных практически любого размера.
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок модели на параметры распределений путём сравнения их с истинными параметрамипараметров.
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.
* Повышение доступности больших объёмов данных.
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных<ref>Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.</ref>.
=== Автономный транспорт Применение == Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам [[Обучение с частичным привлечением учителя|частичного обучения]] и [[Обучение с частичным привлечением учителя#Самообучение (Self Training)|самообучения]]. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. Иногда при обучении реальные данные не используются вовсе. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты. Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]<ref name= "wiki:oversampling">Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021</ref>. Синтетические данные активно используются при обучении алгоритмов управления [[wikipedia:Self-driving car|автономным транспортом]]. Эти алгоритмы решают две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявляют окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принимают решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации. Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные. В самом деле, получить реальные данные для такой задачи — фотографию и её же искажённую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования. Также с помощью синтетических наборов данных можно упростить обучение алгоритмов [[Компьютерное зрение|компьютерного зрения]], решающих задачи [[Сегментация изображений|семантической сегментации]], [[Компьютерное зрение#Идентификация|поиска]] и [[Компьютерное зрение#Распознавание объектов|локализации]] объектов. В данном случае подходят наборы, в которых искомые объекты определённым образом наносятся на фоновое изображение. В частности, таким объектом может быть текст — тогда с помощью полученного набора может быть решена задача [[Распознавание текста на изображении|распознавания текста на изображении]]. Синтетические данные используются и для создания алгоритмов [[Реидентификация|реидентификации]]<sup>[на 25.01.21 не создан]</sup> — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. В этом случае реальные данные собрать довольно сложно, потому что требуется найти много фотографий одних и тех же людей в разных позах, с разных ракурсов и в разной одежде.
=== TextSharpener ===
Алгоритм TextSharpener<ref name="TextSharpener"/>, разработанный по методологии SCRUM в Университете Исландии и основанный на [[ФайлСверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener-Identity/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их, с помощью библиотеки PIL<ref name="PIL">Pillow — Pillow (PIL Fork) 8.png|200px|thumb|right|Изображение 1. Пример работы TextSharpener0 Documentation — https://pillow.readthedocs. Слева — исходное изображение, посередине io/en/stable/ — размытоеRetrieved January 25, справа — результат работы алгоритма2021</ref>.]]
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4<ref name="ue">EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021</ref> и плагина UnrealCV<ref name="uecv">UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021</ref>. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[Файлwikipedia:Jefferson_Graham_on_Manhattan_Beach_Pier.jpegSpherical coordinate system|200px|thumb|left|Изображение сферические координаты]]: <tex>(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2- \frac{y}{y_{max}})\pi)</tex>, где <tex>(x, y)</tex> — координаты пикселя, а <tex>(x_{max}, y_{max})</tex> — разрешение изображения. Фотография, сделанная широкоугольной камеройЗа центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].
=== FlyingChairs ===
=== VC-Clothes ===
== См. также ==