Основы обучения
Тема дорожной карты · Глубокое обучение
Обучение нейросети — это цикл из четырёх шагов: (1) forward pass для предсказания, (2) расчёт loss-функции относительно ground truth, (3) backward pass для вычисления градиентов, (4) шаг оптимизатора, который обновляет веса модели. Этот цикл оборачивается в эпохи, где данные подаются по батчам из DataLoader. После каждой эпохи модель проверяется на отложенной выборке, и сохраняется лучший чекпоинт. Для начала работы с обучением нейронных сетей важно правильно разделить данные, нормализовать их и выбрать разумный learning rate. Необходимо также мониторить переобучение и недообучение, чтобы избежать проблем с данными или с learning rate.
Как это работает
Основы обучения включают минимизацию loss-функции по весам модели через gradient descent. Mini-batch SGD (sample батча, loss, backprop, шаг) — это базовая техника, которая работает почти во всех случаях. Оптимизаторы, такие как Adam, AdamW, SGD с momentum, меняют способ выполнения шага. Learning rate — это самый часто настраиваемый гиперпараметр: слишком высокий learning rate может привести к тому, что модель будет расходиться, а слишком низкий learning rate может препятствовать сходимости модели. Важно следить за тренировочным и валидационным loss-графиками: увеличение разницы между ними указывает на переобучение, а если оба графика застревают на одном уровне, это может указывать на недообучение или наличие багов в коде.
Когда применять
Начните с оптимизатора AdamW и learning rate 1e-3 или 3e-4 — это сочетание работает почти везде. Для компьютерного зрения (CV) задач рекомендуется использовать SGD с momentum, если есть время на настройку параметров. Используйте метод lr_find из библиотеки fast.ai для нахождения разумной начальной точки для learning rate. Постройте loss-кривые для каждой эпохи обучения — они показывают все важные аспекты процесса обучения: расходящийся зазор между тренировочным и валидационным loss указывает на переобучение, а застрявшие кривые указывают на недообучение или наличие багов.
Типичные ошибки
Типичные ошибки при обучении нейронных сетей включают выбор слишком высокого learning rate, что может привести к NaN loss-значениям или взрыву весов модели. Протекание валидационного набора данных в тренировочный набор также является распространённой ошибкой. Неправильная оценка точности на несбалансированных данных может привести к тому, что модель будет предсказывать класс большинства данных, что может дать впечатление высокой точности (например, "98% точности"), но на самом деле это может быть результатом переобучения. Наконец, нефиксация seed для генератора случайных чисел может привести к нерепродуктивным запускам и затруднить отладку регрессии.