Синтетические наборы данных
Синтетические данные — это «производные» данные, применимые в конкретной ситуации, которые не были получены путём прямого сбора и измерений[1]. В то же время, «производные данные» (согласно второму словарю) -- это постоянно-хранимая информация, которую используют специалисты в своей повседневной работе.
Виды генерации
Существует два основных подхода к генерации синтетических наборов данных.
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр случаев (переформулировать).
Также применяется аугментация — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные; для числовых данных -- добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов, и прочие.
- Взять что-то из wikipedia:Oversampling_and_undersampling_in_data_analysis.
- Можно картинку из https://habr.com/ru/company/smartengines/blog/264677/
Применение
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила их генерации и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно программно сгенерировать.
Сгенерированные объекты можно использовать в задаче обучения с учителем для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего универсального способа генерации данных не существует.
(Этот параграф как-то надо связать со вторым примером, который TextSharpener) Одно из самых наглядных применений аугментации данных -- создание искажённых изображений для последующего обучения алгоритмов восстановления изображений. Исходный набор изображений расширяется их копиями, к которым были применены преобразования из какого-то фиксированного набора фильтров и преобразований (таких как поворот, размытие, зашумление и т.д.) и на основе этих изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми -- исходные изображения. В самом деле, генерация такого датасета вручную сопряжена с определёнными трудностями (получить фотографию и её же нечёткую копию достаточно затруднительно), а применение преобразований к чётким фотографиям можно автоматизировать. Тогда, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно будет применять в дальнейшем для обучения алгоритма восстановления изображений, целью которого будет устранение применённых преобразований.
Достоинства
- Возможность генерации датасетов практически любого размера;
- Известность параметров генерации, а значит, и генеральной совокупности -- можно судить о качестве выборочных оценок модели на параметры распределений, путём сравнения их с истинными параметрами;
- Ускорение и удешевление процесса разработки -- не нужно ждать, пока будет собран и/или размечен достаточный объём реальных данных;
- Повышение доступности больших объёмов данных.
Недостатки
- Отсутствие универсального способа генерации, применимого для любых задач -- в каждом конкретном случае необходимо дополнительное исследование того, какие требования накладываются на генерируемые данные;
- Отсутствие универсальных метрик качества и применимости генерируемых данных;
- Возможна излишняя "стерильность" получаемых данных, так как в общем случае неизвестно, какими могут быть выбросы в реальных данных. Если же это известно, то проблема может быть решена путём настройки параметров генератора.
Примеры
Тут какие наборы бывают.
- NVidia использует синтетические данные для генерации "миниатюрных миров", которые затем применяются для обучения и иногда для тестирования алгоритмов управления беспилотными транспортными средствами (вот источник, книга от NVidia: https://www.nvidia.com/content/dam/en-zz/Solutions/deep-learning/resources/accelerating-ai-with-synthetic-data-ebook/accelerating-ai-with-synthetic-data-nvidia_web.pdf)
- (Этот пример надо как-то связать с параграфом про применение) Пример генератора изображений с искажениями для использования при обучении алгоритма восстановления: https://gardarandri.github.io/TextSharpener/
TODO:
- Стулья (например рассказать про https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html)
- Одежда (??)
- Комнаты (частично https://structured3d-dataset.org/)
- Текст (ну не, не книжки из бреда, сгенерированного Марковскими цепями, а например картинки, в которых текст как-то хитро расположен: https://www.robots.ox.ac.uk/~vgg/data/scenetext/)
Примечания
- ↑ McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984