Как нейросети учатся на своих ошибках во время обучения?
Forward Pass
0:00 / 0:00
Как нейросети учатся на своих ошибках во время обучения?
154 просмотра · 8 дней назад
Forward Pass
331 подписчик
154 просмотра · 8 дней назад
Обратное распространение ошибки, объясненное простыми словами: как нейронная сеть определяет, в каком направлении перемещать каждый из своих весов, используя одну идею: вдоль цепочки эффекты умножаются.
Мы вручную проходим по крошечной сети в обратном направлении, проверяем ответ, а затем смотрим, во сколько это обходится модели, подобной Qwen 3.8.
Для обучения нейронной сети требуется одно число для каждого веса — его градиент: если немного сдвинуть вес вверх, насколько изменится ошибка? Измерение этого параметра для каждого веса по отдельности потребовало бы одного полного запуска модели, что составляет 2,4 триллиона запусков для Qwen 3.8. Обратное распространение ошибки позволяет получить все эти запуски за один проход. Ключевая идея — правило цепочки, показанное на примере шестеренок: если шестерня A поворачивает B три раза, а B поворачивает C два раза, то A поворачивает C шесть раз. Эффекты вдоль цепочки умножаются. Мы запускаем небольшую нейронную сеть вперед (вход 2, веса 0,5 и 3, ошибка 4), затем движемся назад, умножая на каждом шаге: × 4, × 3, × 1, × 2, так что градиент первого веса равен 24, что подтверждается медленной проверкой методом сдвига. Именно движение назад делает его дешевым: результат каждого шага вычисляется один раз и используется каждым предыдущим весом. Стоимость примерно вдвое выше, чем при прямом проходе (измерено в PyTorch на Qwen3.5-0.8B: 1,59 против 3,18 триллионов операций), поэтому обучение Qwen 3.8, который использует 95 миллиардов из своих 2,4 триллионов весов на токен, стоит около 570 миллиардов операций на токен. Обратное распространение ошибки также имеет две цены: память (12,7 ГБ, выделяемые на обратный проход по одной последовательности из 1024 токенов, что примерно в 4 раза больше весов, и это достигается за счет использования контрольных точек градиента в обмен на вычислительные ресурсы) и исчезающие градиенты в глубоких стеках, что исправляется с помощью остаточных сокращений. Наконец, что делает функция loss.backward() в PyTorch.
Разделы:
0:00 Обратное распространение ошибки: 2,4 триллиона весов, один обратный проход
0:15 Что нужно для обучения: градиент для каждого веса
0:43 Ключевая идея: эффекты вдоль цепочки умножаются (шестерёнки)
1:04 Маленькая сеть, прямой проход
1:25 Обратный проход: умножение множителей (правило цепочки)
2:23 Почему обратный проход дешев: вычислить один раз, использовать повторно
2:48 Сколько это стоит: примерно в 2 раза больше, чем прямой проход
3:36 Стоимость памяти и контрольные точки градиента
4:02 Исчезающие градиенты и остаточные ярлыки
4:46 Обратное распространение ошибки в PyTorch: loss.backward()
5:01 Главный вывод
#Обратноераспространениеошибки #Глубокоеобучение #Машинноеобучение #PyTorch #Нейронныесети