Эндрю Ын: «Не перемешивайте данные из разных источников в одну кучу»

DeepLearning.AI 23,9 тыс. 10 мин 4 мин 25.08.2017
Главное

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

В этом материале на основе лекции DeepLearning.AI основатель платформы Эндрю Ын объясняет, почему классический подход к разделению данных на обучающую и проверочную выборки требует пересмотра и как правильно работать с несовпадающими распределениями.

🐱 Дилемма «кошачьего» приложения: профессиональное фото против любительского 0:00

Разработка мобильного приложения для распознавания кошек на фотографиях пользователей — классический пример проблемы разных распределений . У разработчика есть два основных источника данных:

  1. Данные из веба: Около 200 000 изображений высокого разрешения, сделанных профессионалами, с отличным освещением и композицией .
  2. Данные из мобильного приложения: Всего 10 000 изображений, загруженных пользователями. Они часто бывают размытыми, плохо кадрированными и сняты на камеры смартфонов с низким разрешением .

Конечная цель проекта — чтобы система хорошо работала именно с фотографиями из приложения . Однако 10 000 примеров — это слишком мало для качественного обучения современной нейросети. С другой стороны, использование 200 000 изображений из интернета кажется полезным, но они имеют совершенно иное распределение (внешний вид и качество), чем те, с которыми столкнется конечный пользователь .

❌ Ошибка случайного перемешивания (Option 1) 2:46

Первый интуитивный вариант, который часто выбирают команды, — это объединить все 210 000 изображений в один общий массив, перемешать их и разделить на обучающую (Train), проверочную (Dev) и тестовую (Test) выборки . Например, если выделить по 2 500 примеров на проверочный и тестовый наборы, в обучающей выборке останется 205 000 картинок .

По мнению Эндрю Ына, у этого метода есть один критический недостаток:

Эндрю Ын настоятельно не рекомендует использовать этот подход . Проверочная выборка (Dev set) должна указывать команде «на цель», а в данном случае она заставляет оптимизировать алгоритм под интернет-фотографии, которые не являются приоритетом для бизнеса.

✅ Рекомендуемый подход: точное попадание в цель (Option 2) 5:00

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

Рекомендуемая структура данных:

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

🚗 Пример со смарт-зеркалом: навигация в условиях шума 6:48

Другой пример касается разработки системы распознавания речи для автомобильного зеркала заднего вида с голосовым управлением . Это реальный продукт, популярный в Китае и выходящий на мировые рынки .

Для обучения такой системы можно использовать:

Распределение этих данных сильно различается: в автомобильных записях гораздо больше названий улиц и номеров домов . Эндрю Ын утверждает, что проверочную и тестовую выборки нужно формировать именно из этих 20 000 «автомобильных» записей .

Вариант распределения может быть следующим:

  1. 500 000 общих записей и 10 000 записей из автомобиля уходят в Train .
  2. По 5 000 записей из автомобиля выделяются для Dev и Test выборок .

💡 Итог: всегда ли нужно использовать все данные? 10:24

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

Однако Эндрю Ын отмечает, что ответ на вопрос «всегда ли стоит использовать все доступные данные» не является однозначно положительным. Существуют нюансы и контрпримеры, которые требуют отдельного рассмотрения для понимания границ применимости этого метода .

💬 Цитаты

«Проверочная выборка указывает вашей команде, куда целиться. Если в ней данные не из того распределения, вы оптимизируете систему не под ту задачу.»

«В эпоху глубокого обучения все больше команд тренируют модели на данных, чье распределение отличается от проверочных и тестовых сетов.»

👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Training set (Обучающая выборка)
Набор данных, на которых модель непосредственно обучается и подстраивает свои веса.
Dev set (Проверочная выборка)
Набор данных для настройки гиперпараметров и оценки прогресса в процессе разработки.
Test set (Тестовая выборка)
Финальный набор данных для непредвзятой оценки точности готовой модели.
Distribution (Распределение)
Характеристики данных (яркость, шум, тип контента), определяющие их статистическую однородность.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект DeepLearning.AI Andrew Ng обучающая выборка проверочная выборка распределение данных