e
В современном мире считается, что Big Data — ключ к созданию успешных проектов машинного обучения. Но проблема в том, что данных часто бывает недостаточно. И построить на них хорошую нейросеть — всё равно что пытаться проехать 1000 километров на внедорожнике с одним литром бензина. В этой статье мы поделимся советами по улучшению моделей машинного обучения при работе с небольшими наборами данных.
Это первый шаг к пониманию того, насколько мал ваш датасет. Знания модели ограничиваются крошечной частью Вселенной, и только в ней нейросеть будет правильно выполнять свою задачу.
Если вы создаёте прототип на основе фотографий в помещении, то не ожидайте, что он заработает на улице. Если языковая модель обучалась на сообщениях из чата, то вряд ли хорошо справится с фантастическим романом.
Убедитесь, что это понимает ваш заказчик. Так вы вместе сможете ориентироваться на реалистичные ожидания, которые должна предоставить модель, и предложить полезные KPI для количественной оценки её эффективности.
Во многих ситуациях у заказчика не окажется нужной вам выборки, и общедоступные датасеты тоже не подойдут. Если часть прототипа требует сбора и разметки новых образцов, убедитесь, что ваша инфраструктура не создаёт для этого помех.
Разметка новых данных — несложная операция. Для неё можно использовать Prodigy, который является доступным и расширяемым инструментом. В зависимости от размера проекта вы также можете настроить автоматическую загрузку и маркировку данных.
Датасет часто можно дополнить, немного изменив уже имеющиеся данные. Это делается с помощью различных операций по обрезке, повороту, отражению и так далее. При этом вывод модели существенно не изменится: например, если повернуть фотографию кота на 40°, на ней по-прежнему будет кот.
В большинстве случаев такое дополнение позволяет создавать полууниверсальные образцы. Для начала можно просто добавить к данным немного Гауссовского шума.
В компьютерном зрении есть множество способов увеличить датасет. Например, библиотека Albumentations выполняет различные преобразования над изображениями, сохраняя при этом метки классов:
Другой полезный метод дополнения данных — Mixup. Он берёт два исходных изображения, «смешивает» их и объединяет метки:
При увеличении датасетов с другими типами данных (например, с аудио или текстом) необходимо учитывать, какие преобразования могут повлиять на метку, а какие нет.
Если вы исчерпали все возможности по сбору и увеличению реальных данных — самое время задуматься о создании «фейковых» образцов. Генерация синтетических данных также может охватить ситуации, которые не встречаются в исходном датасете.
Многие робототехнические системы (например, Dactyl от OpenAI) обучаются в смоделированных 3D-средах, прежде чем их развернут в реальных роботов. Таким же образом можно создавать сцены для систем распознавания изображений:
Существует много подходов к моделированию синтетических данных. Если вам нужны образцы высокого качества, то для их генерации можно использовать GAN. Но имейте в виду — GAN достаточно сложно обучаются, поэтому убедитесь, что это действительно необходимо.
Иногда подходы можно комбинировать: например, Apple придумала способ обработки смоделированных с помощью GAN 3D-лиц, чтобы они выглядели более реалистичными. Это хорошая техника для расширения набора данных, но она требует много времени.
Обычно данные разделяются на обучающую и тестовую выборки в определённом соотношении (80/20, 70/30 и тому подобное). Чаще всего такой подход работает нормально, но с небольшими датасетами есть риск возникновения шума. Это означает, что вы можете случайно разделить данные удачным образом, и модель получит неоправданно высокую точность. В действительности хороший результат может быть связан с тем, что в тестовом наборе мало сложных примеров.
Лучшая подстраховка в этом случае — применение кросс-валидации по k-блокам. Она использует k различных вариантов разделения датасета и контролирует, что удачная разбивка данных не влияет на эффективность модели.
Если вы работаете со стандартными форматами данных (текст, изображения, видео или звук), вы можете воспользоваться уже существующими решениями и обучить их на своих примерах. Это как стоять на плечах гигантов.
Трансферное обучение — это процесс настройки готовых архитектур в соответствии со своими потребностями. Большинство задач, связанных с текстом, изображениями или звуком, имеют много общих характеристик. Поэтому трансферное обучение для них работает хорошо: например, в компьютерном зрении можно научить нейросеть распознавать новые формы, цвета или узоры.
Иногда приходится смириться с фактом, что для решения нестандартной задачи данных недостаточно. К счастью, есть много традиционных алгоритмов машинного обучения, которые менее чувствительны к размеру датасета. Например, хорошо справляется с небольшими наборами данных метод опорных векторов.
Но эти алгоритмы не всегда так же точны, как современные архитектуры. Поэтому их можно назвать «слабыми учениками», по крайней мере, по сравнению с нейронными сетями с высокой степенью параметризации. Один из способов повысить эффективность — объединить несколько таких «слабых учеников» (это может быть набор машин опорных векторов или деревьев решений), чтобы они работали вместе. Это называется ансамблевым методом.
⌘⌘⌘
От того, насколько качественными и объёмными будут исходные данные, зависит большая часть успеха в обучении нейросетей. Поэтому не стоит жалеть время на их подготовку и анализ, чтобы впоследствии не пришлось исправлять досадные ошибки. Если у вас есть свои лайфхаки по работе с небольшими наборами данных — делитесь ими в комментариях.
С оригинальной статьёй можно ознакомиться на сайте towardsdatascience.com.
Один способ позволяет отслеживать каждую деталь изделия, другой – сфокусироваться на брендинге и маркетинге. Разбираемся…
Рассказываем, как помогли российскому разработчику систем аналитики мигрировать в частное облако и сократить затраты на…
Рассказываем, как создать сайт-визитку и какой должна быть структура. Внутри — инструкция, которая поможет предпринимателям.
Онлайн-карты — хорошая площадка для привлечения аудитории в бизнес. Рассказываем об инструментах продвижения в геосервисах.
Можно стартовать с багажом знаний из найма или практически без опыта. Рассказываем, что нужно делать:…
Что такое наука о данных, чем занимается Data Scientist и можно ли обучиться этой специальности…