TwiddleLab / Искусственный интеллект / Внутри глубокого обучения
Инициализация и взрывающиеся градиенты
Что ты узнаешь
- Проход назад через слой умножает вину на его местную скорость. На многих слоях скорости перемножаются.
- Скорости меньше 1 заставляют вину исчезать, больше 1 взрываться. 0,5 на 20 слоях это примерно одна миллионная.
- Хорошая инициализация (для ReLU это He: разброс √(2 ÷ входы)) держит скорость каждого слоя около 1.
Как идёт урок
Добавь слоёв, и сеть должна стать умнее. А вместо этого она вообще перестаёт учиться. Что пошло не так?
Вот сеть с 20 слоями.
Настрой местную скорость так, чтобы слой 1 получал полезное количество вины.
Каждый слой на обратном пути умножает вину на одну и ту же скорость r.
Начальные веса задают скорость. Выбери их разброс.
Держи сигнал между 0,5 и 2 после 20 слоёв.
Исчезающие и взрывающиеся градиенты.
И то и другое от перемножения многих скоростей. Инициализация это первое лекарство.
Каждый слой передаёт назад 0,6. С какого слоя вина меньше 1%?
Нажми на столбик, чтобы увидеть его значение, потом «Проверить».
0.6⁹ = 0.0101 ещё чуть выше 1%. 0.6¹⁰ = 0.006 первый ниже.
10 слоёв, каждый уменьшает вину вдвое. Во сколько раз она меньше в конце?
Каждый слой уменьшает её вдвое, поэтому после 10 слоёв это 0.5¹⁰ = 1 ÷ 2¹⁰ = 1 ÷ 1024.
Исчезают или взрываются? Разложи симптомы.
Математика: поставь 1.1⁵⁰ и 0.9⁵⁰ на числовую прямую.
Пятьдесят слоёв, каждый раз на 10% больше или на 10% меньше.
1.1⁵⁰ ≈ 117 и 0.9⁵⁰ ≈ 0.0052: экспоненциальный рост и затухание, как в сложных процентах.
Построй 20-слойную сеть, где учится каждый слой.
Выбери активацию и начальный разброс, потом «Обучить». Меньше попыток, больше звёзд.
Предыдущий урок: Боремся с переобучением · Следующий урок: Читаем кривые обучения · Часть курса: Внутри глубокого обучения
Уроки интерактивные и работают на JavaScript. Включи его, чтобы играть.