Поиск по сайту Поиск

7 советов для работы с небольшими данными

В современном мире считается, что Big Data — ключ к созданию успешных проектов машинного обучения. Но проблема в том, что данных часто бывает недостаточно. И построить на них хорошую нейросеть — всё равно что пытаться проехать 1000 километров на внедорожнике с одним литром бензина. В этой статье мы поделимся советами по улучшению моделей машинного обучения при работе с небольшими наборами данных.

1. Осознайте, что ваша модель обобщается не очень хорошо

Это первый шаг к пониманию того, насколько мал ваш датасет. Знания модели ограничиваются крошечной частью Вселенной, и только в ней нейросеть будет правильно выполнять свою задачу. 

Если вы создаёте прототип на основе фотографий в помещении, то не ожидайте, что он заработает на улице. Если языковая модель обучалась на сообщениях из чата, то вряд ли хорошо справится с фантастическим романом.

Убедитесь, что это понимает ваш заказчик. Так вы вместе сможете ориентироваться на реалистичные ожидания, которые должна предоставить модель, и предложить полезные KPI для количественной оценки её эффективности.

2. Создайте хорошую инфраструктуру данных.

Во многих ситуациях у заказчика не окажется нужной вам выборки, и общедоступные датасеты тоже не подойдут. Если часть прототипа требует сбора и разметки новых образцов, убедитесь, что ваша инфраструктура не создаёт для этого помех.

Инфраструктура сервера REG.RU с GPU NVIDIA Tesla V100

Разметка новых данных — несложная операция. Для неё можно использовать Prodigy, который является доступным и расширяемым инструментом. В зависимости от размера проекта вы также можете настроить автоматическую загрузку и маркировку данных.

3. Дополните данные.

Датасет часто можно дополнить, немного изменив уже имеющиеся данные. Это делается с помощью различных операций по обрезке, повороту, отражению и так далее. При этом вывод модели существенно не изменится: например, если повернуть фотографию кота на 40°, на ней по-прежнему будет кот.

В большинстве случаев такое дополнение позволяет создавать полууниверсальные образцы. Для начала можно просто добавить к данным немного Гауссовского шума. 

В компьютерном зрении есть множество способов увеличить датасет. Например, библиотека Albumentations выполняет различные преобразования над изображениями, сохраняя при этом метки классов:

Другой полезный метод дополнения данных — Mixup. Он берёт два исходных изображения, «смешивает» их и объединяет метки:

При увеличении датасетов с другими типами данных (например, с аудио или текстом) необходимо учитывать, какие преобразования могут повлиять на метку, а какие нет.

4. Сгенерируйте синтетические данные

Если вы исчерпали все возможности по сбору и увеличению реальных данных — самое время задуматься о создании «фейковых» образцов. Генерация синтетических данных также может охватить ситуации, которые не встречаются в исходном датасете.

Многие робототехнические системы (например, Dactyl от OpenAI) обучаются в смоделированных 3D-средах, прежде чем их развернут в реальных роботов. Таким же образом можно создавать сцены для систем распознавания изображений:

15 смоделированных примеров для обучения Dactyl

Существует много подходов к моделированию синтетических данных. Если вам нужны образцы высокого качества, то для их генерации можно использовать GAN. Но имейте в виду — GAN достаточно сложно обучаются, поэтому убедитесь, что это действительно необходимо.

NVIDIA GauGAN в действии! 

Иногда подходы можно комбинировать: например, Apple придумала способ обработки смоделированных с помощью GAN 3D-лиц, чтобы они выглядели более реалистичными. Это хорошая техника для расширения набора данных, но она требует много времени.

5. Остерегайтесь удачного разделения данных

Обычно данные разделяются на обучающую и тестовую выборки в определённом соотношении (80/20, 70/30 и тому подобное). Чаще всего такой подход работает нормально, но с небольшими датасетами есть риск возникновения шума. Это означает, что вы можете случайно разделить данные удачным образом, и модель получит неоправданно высокую точность. В действительности хороший результат может быть связан с тем, что в тестовом наборе мало сложных примеров.

Лучшая подстраховка в этом случае — применение кросс-валидации по k-блокам. Она использует k различных вариантов разделения датасета и контролирует, что удачная разбивка данных не влияет на эффективность модели.

6. Используйте трансферное обучение

Если вы работаете со стандартными форматами данных (текст, изображения, видео или звук), вы можете воспользоваться уже существующими решениями и обучить их на своих примерах. Это как стоять на плечах гигантов.

Трансферное обучение — это процесс настройки готовых архитектур в соответствии со своими потребностями. Большинство задач, связанных с текстом, изображениями или звуком, имеют много общих характеристик. Поэтому трансферное обучение для них работает хорошо: например, в компьютерном зрении можно научить нейросеть распознавать новые формы, цвета или узоры.

7. Попробуйте ансамбль слабых учеников

Иногда приходится смириться с фактом, что для решения нестандартной задачи данных недостаточно. К счастью, есть много традиционных алгоритмов машинного обучения, которые менее чувствительны к размеру датасета. Например, хорошо справляется с небольшими наборами данных метод опорных векторов

Но эти алгоритмы не всегда так же точны, как современные архитектуры. Поэтому их можно назвать «слабыми учениками», по крайней мере, по сравнению с нейронными сетями с высокой степенью параметризации. Один из способов повысить эффективность — объединить несколько таких «слабых учеников» (это может быть набор машин опорных векторов или деревьев решений), чтобы они работали вместе. Это называется ансамблевым методом.

⌘⌘⌘

От того, насколько качественными и объёмными будут исходные данные, зависит большая часть успеха в обучении нейросетей. Поэтому не стоит жалеть время на их подготовку и анализ, чтобы впоследствии не пришлось исправлять досадные ошибки. Если у вас есть свои лайфхаки по работе с небольшими наборами данных — делитесь ими в комментариях.

С оригинальной статьёй можно ознакомиться на сайте towardsdatascience.com.

Победить конкурентов и увеличить выручку: кейс горизонтального масштабирования клиники

Рассказываем путь развития стоматологической клиники к повышению выручки на 40% с сохранением рентабельности.
Read More

Руководство по CI/CD в GitLab для новичка

В статье разбираем, как устроена практика CI/CD, какие у нее нюансы и преимущества использования. А также расписываем пошаговый процесс использования...
Read More

Что такое GitLab, кому нужен, как пользоваться

GitLab — платформа для совместной разработки. Она позволяет командам организовывать свои процессы от планирования до мониторинга и может работать в...
Read More

Как продавать представителям разных поколений

Рассказываем, как работает теория поколений и чем она оказывается полезной для маркетинга в малом и среднем бизнесе.
Read More

Как привлечь новую аудиторию и победить конкурентов. 3 кейса-стратегии

На примере трёх кейсов разбираем трансформацию продуктов на основе методологии jobs-to-be-done.
Read More

Что стоит автоматизировать в бизнесе с самого начала

Экономить силы, время и деньги – это база, а не привилегия. Автоматизируйте процессы и уделяйте внимание стратегическим задачам.
Read More

Как составить бизнес-план: пошаговая инструкция

Бизнес-план — стратегия развития проекта, без которой не стоит начинать ни один бизнес. Рассказываем, как правильно его составить.
Read More

Сильная презентация для инвесторов: от содержания до выступления

Всё про качественную презентацию для инвесторов. Что разместить на слайдах, как держаться на встрече и увеличить свои шансы на сделку.
Read More

Дёшево и эффективно: как малому бизнесу продвигать свой сайт

Как выделиться среди конкурентов и получить внимание потенциальных клиентов. Бюджетные методы продвижения сайта – в этом обзоре.  
Read More

Как перевести бизнес в онлайн: 7 шагов

Пошаговая инструкция по переводу существующего бизнеса в онлайн: от создания сайта до начала продаж и запуска рекламы.
Read More