В эпоху глубокого обучения алгоритмы демонстрируют огромный «голод» до обучающих данных. Чтобы добиться максимальной производительности, разработчики зачастую объединяют все доступные массивы информации в одну обучающую выборку, даже если эти данные получены из разных источников и не совсем соответствуют тому, с чем нейросеть столкнется в реальности.
В этом материале на основе лекции DeepLearning.AI основатель платформы Эндрю Ын объясняет, почему классический подход к разделению данных на обучающую и проверочную выборки требует пересмотра и как правильно работать с несовпадающими распределениями.
🐱 Дилемма «кошачьего» приложения: профессиональное фото против любительского 0:00
Разработка мобильного приложения для распознавания кошек на фотографиях пользователей — классический пример проблемы разных распределений . У разработчика есть два основных источника данных:
- Данные из веба: Около 200 000 изображений высокого разрешения, сделанных профессионалами, с отличным освещением и композицией .
- Данные из мобильного приложения: Всего 10 000 изображений, загруженных пользователями. Они часто бывают размытыми, плохо кадрированными и сняты на камеры смартфонов с низким разрешением .
Конечная цель проекта — чтобы система хорошо работала именно с фотографиями из приложения . Однако 10 000 примеров — это слишком мало для качественного обучения современной нейросети. С другой стороны, использование 200 000 изображений из интернета кажется полезным, но они имеют совершенно иное распределение (внешний вид и качество), чем те, с которыми столкнется конечный пользователь .
❌ Ошибка случайного перемешивания (Option 1) 2:46
Первый интуитивный вариант, который часто выбирают команды, — это объединить все 210 000 изображений в один общий массив, перемешать их и разделить на обучающую (Train), проверочную (Dev) и тестовую (Test) выборки . Например, если выделить по 2 500 примеров на проверочный и тестовый наборы, в обучающей выборке останется 205 000 картинок .
По мнению Эндрю Ына, у этого метода есть один критический недостаток:
- Преимущество: Все три выборки (Train, Dev, Test) будут принадлежать к одному ительному распределению, что упрощает управление процессом обучения .
- Главный минус: Математическое ожидание показывает, что в проверочной выборке из 2 500 примеров подавляющее большинство (около 2 381) составят профессиональные фотографии из интернета . На снимки из мобильного приложения придется в среднем лишь 119 штук .
Эндрю Ын настоятельно не рекомендует использовать этот подход . Проверочная выборка (Dev set) должна указывать команде «на цель», а в данном случае она заставляет оптимизировать алгоритм под интернет-фотографии, которые не являются приоритетом для бизнеса.
✅ Рекомендуемый подход: точное попадание в цель (Option 2) 5:00
Вместо перемешивания Эндрю Ын предлагает стратегию, при которой проверочная и тестовая выборки формируются только из данных целевого распределения .
Рекомендуемая структура данных:
- Обучающая выборка (Train): Все 200 000 изображений из интернета плюс 5 000 изображений из мобильного приложения .
- Проверочная выборка (Dev): 2 500 изображений исключительно из мобильного приложения .
- Тестовая выборка (Test): 2 500 изображений исключительно из мобильного приложения .
Такое разделение ставит перед командой правильную задачу: построить систему, которая работает на данных из мобильного приложения . Несмотря на то, что распределение обучающей выборки теперь отличается от проверочной и тестовой, в долгосрочной перспективе это обеспечит гораздо более высокую производительность системы в реальных условиях .
🚗 Пример со смарт-зеркалом: навигация в условиях шума 6:48
Другой пример касается разработки системы распознавания речи для автомобильного зеркала заднего вида с голосовым управлением . Это реальный продукт, популярный в Китае и выходящий на мировые рынки .
Для обучения такой системы можно использовать:
- Общие данные: Около 500 000 аудиозаписей из различных источников — купленные базы данных, записи со смарт-колонок, голосовых клавиатур и т.д. .
- Целевые данные: Небольшое количество записей (например, 20 000), сделанных непосредственно в автомобиле, где пользователи произносят адреса и навигационные запросы на фоне дорожного шума .
Распределение этих данных сильно различается: в автомобильных записях гораздо больше названий улиц и номеров домов . Эндрю Ын утверждает, что проверочную и тестовую выборки нужно формировать именно из этих 20 000 «автомобильных» записей .
Вариант распределения может быть следующим:
- 500 000 общих записей и 10 000 записей из автомобиля уходят в Train .
- По 5 000 записей из автомобиля выделяются для Dev и Test выборок .
💡 Итог: всегда ли нужно использовать все данные? 10:24
Использование данных из разных распределений позволяет значительно увеличить объем обучающей выборки, что критически важно для глубокого обучения . В большинстве случаев это приводит к улучшению работы алгоритма.
Однако Эндрю Ын отмечает, что ответ на вопрос «всегда ли стоит использовать все доступные данные» не является однозначно положительным. Существуют нюансы и контрпримеры, которые требуют отдельного рассмотрения для понимания границ применимости этого метода .