TwiddleLab / Искусственный интеллект / Внутри глубокого обучения
Проект: отладь сломанную сеть
Что ты узнаешь
- Отлаживай по порядку: прочитай кривые, проверь столбики градиентов, поменяй одну ручку, обучи снова и сравни.
- Потеря взрывается: уменьши скорость обучения. Запоминает: регуляризация или ранняя остановка. Ровно с самого начала: ищи исчезающие градиенты.
- Частые ошибки в коде: слишком большая скорость обучения и данные, которые никогда не перемешивают.
Как идёт урок
Три сети, три отчёта об ошибке от твоей команды. Исправь их до демо.
Начни с догадки про сеть 3, ту, что никогда не учится.
Сопоставь каждый отчёт об ошибке с его панелью.
Сеть 3 ровная. Посмотри на её столбики градиентов.
Нажми на столбик, чтобы увидеть его значение, потом «Проверить».
Слой 8 получает 0,5, слой 7 0,125, слой 6 0,03, слой 5 0,008. Ранние слои почти не получают вины: исчезающий градиент.
Чек-лист отладки.
Инженеры, которые обучают сети, каждый день следуют какой-то версии этого.
Почини сеть 1: её потеря взрывается.
Меняй только скорость обучения.
Почини сеть 2: она запоминает.
Используй штраф весов, dropout или оба. Слишком много, и она перестанет учиться.
Почини сеть 3: перестрой её слои, чтобы учился каждый слой.
Переключай слои между сигмоидой и ReLU и выбери начальные веса.
Запиши свой чек-лист по порядку.
Код: в скрипте обучения коллеги две ошибки. Найди и исправь их.
Нажми на строку, чтобы рассмотреть её.
Новый запуск. Какая одна ручка его исправит?
Обучающая потеря продолжает падать, а валидационная поворачивает вверх: переобучение. С ним борется dropout (или штраф весов, или более ранняя остановка).
День демо: запусти все три исправленные сети.
Предыдущий урок: Читаем кривые обучения · Часть курса: Внутри глубокого обучения
Уроки интерактивные и работают на JavaScript. Включи его, чтобы играть.