Yannic Kilcher об ускорении нейросетей через «трудные» примеры

Yannic Kilcher 2,8 тыс. 25 мин 3 мин 07.10.2019
Главное

Ускорение обучения нейросетей через фокусировку на самых сложных примерах 📉 0:00

Обучение глубоких нейронных сетей — процесс вычислительно затратный, где значительная часть времени уходит на обратное распространение ошибки (backpropagation). В обзоре статьи «Accelerating Deep Learning by Focusing on the Biggest Losers» («Ускорение глубокого обучения путем фокусировки на главных аутсайдерах») от Анжелы Янг и коллег, ведущий канала Yannic Kilcher анализирует инженерный подход, призванный сократить это время. Главная идея работы заключается в том, чтобы не тратить ресурсы на прохождение всей цепочки градиентов для каждого обучающего примера, а сфокусироваться лишь на тех, которые вызывают наибольшие затруднения у модели.

💡 Основная концепция: «избирательное обучение» 0:24

В традиционном цикле обучения данные разбиваются на мини-батчи, которые проходят через сеть в рамках прямого и обратного проходов. Обратный проход обычно требует вдвое больше ресурсов, чем прямой, так как необходимо обновить веса каждого слоя. Авторы исследования предлагают оптимизацию:

Как отмечает Yannic Kilcher, это базируется на упрощающем допущении: если сеть хорошо справляется со сложными примерами, она неизбежно освоит и легкие. Однако для корректной работы алгоритма требуется дополнительный, второй прямой проход по отобранным «трудным» примерам, так как для вычисления градиентов часто нужно знать промежуточные состояния слоев (например, в операциях max pool).

🐢 «Старое» избирательное обучение (Stale Selective Backprop) 7:08

Чтобы еще сильнее сократить накладные расходы на постоянные вычисления потерь, авторы предложили улучшенную версию алгоритма — «старое» избирательное обучение (stale selective backprop). Вместо того чтобы вычислять потери для всех примеров на каждом шаге, предлагается:

  1. Пропустить весь датасет через сеть один раз.
  2. Сохранить полученные значения потерь в базу данных.
  3. Использовать эти (постепенно устаревающие) данные для селекции примеров в течение нескольких эпох.

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

⚖️ Критика метода: шум в данных и риск переобучения 11:49

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

В ходе экспериментов выяснилось, что при 1% или 10% «перемешанных» (неверных) меток метод сохраняет преимущество в скорости. Однако при 20% неверных меток модель начинает «массивно переобучаться» на ошибках, что нивелирует все преимущества подхода.

🚀 Результаты и применимость на практике 16:18

Исследование демонстрирует впечатляющие показатели ускорения на популярных бенчмарках (SVHN, CIFAR-10). Например, на датасете SVHN метод оказался в 3,4–5 раз быстрее традиционного обучения.

Тем не менее, Yannic Kilcher выражает скепсис относительно масштабируемости этого подхода:

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

💬 Цитаты

«Если ваша сеть хорошо работает на сложных примерах, она будет хороша и на легких.»

«На более сложных и крупных задачах с мощными сетями вносимое смещение вредит гораздо сильнее.»

👥 Спикеры
🔗 Упомянутые сайты и проекты
📖 Термины
Backpropagation
Алгоритм обратного распространения ошибки, используемый для обучения нейронных сетей через корректировку их весов.
Mini-batch
Подмножество обучающих данных, используемое для одной итерации обновления весов модели.
Loss (функция потерь)
Математическая функция, измеряющая ошибку модели; чем выше значение, тем хуже предсказание.
Max pool
Операция в нейросетях, уменьшающая размерность признаков путем выбора максимального значения в области.
Абляция (аблативное исследование)
Эксперимент по удалению или изменению части системы для оценки влияния отдельных факторов на результат.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект deep learning backpropagation Yannic Kilcher stale selective backprop