Градиентный спуск: как нейросети учатся на самом деле
Интуитивное объяснение градиентного спуска — ключевого алгоритма обучения нейронных сетей. Функция стоимости, вектор градиента и анализ скрытых слоёв.
Для AI-агентов и LLM
Экстракт доступен в структурированном Markdown. Скачать .md · JSON API · Site index
💡 Ключевые тезисы (11)
1 Обучение нейросети — это минимизация функции стоимости #
2 Функция стоимости измеряет ошибку через сумму квадратов разностей #
3 Градиентный спуск — это движение «вниз по склону» функции стоимости #
4 Градиент показывает направление наибыстрейшего роста функции #
5 Размер шага пропорционален крутизне склона #
6 Локальный минимум не обязательно является глобальным #
7 Компоненты градиента показывают относительную важность каждого веса #
8 Обратное распространение — алгоритм эффективного вычисления градиента #
9 Непрерывные активации нужны для гладкости функции стоимости #
10 Скрытые слои простой сети не обязательно учат интуитивные паттерны #
11 Сеть уверена в ответе даже для случайного шума #
🏋️ Практикум
Визуализация функции стоимости в 1D
Постройте на бумаге или в графическом калькуляторе (Desmos) произвольную функцию с несколькими минимумами, например f(x) = x⁴ - 3x² + x. Выберите 3 разные начальные точки и вручную пройдите 5 шагов градиентного спуска: вычислите производную, определите направление шага, сделайте шаг пропорционально наклону. Убедитесь, что разные начальные точки приводят к разным локальным минимумам.
Градиентный спуск в 2D на бумаге
Возьмите функцию f(x, y) = x² + 2y². Вычислите градиент ∇f = (2x, 4y). Начиная из точки (3, 2) с шагом α = 0.1, выполните 10 итераций градиентного спуска. Записывайте координаты на каждом шаге и нанесите траекторию на график. Обратите внимание, как траектория не идёт напрямую к минимуму из-за разных масштабов по осям.
Вычисление функции стоимости вручную
Представьте сеть с 3 выходами. Правильный ответ — класс 2, значит целевой вектор [0, 1, 0]. Сеть выдала [0.3, 0.5, 0.2]. Вычислите стоимость: (0.3-0)² + (0.5-1)² + (0.2-0)² = 0.09 + 0.25 + 0.04 = 0.38. Повторите для выхода [0.1, 0.9, 0.0] и сравните — какой результат лучше? Так вы прочувствуете, что измеряет функция стоимости.
Интерпретация компонент градиента
Предположим, градиент функции стоимости по трём весам равен (-0.5, 2.0, 0.1). Определите: какой вес нужно изменить сильнее всего? В каком направлении? Какой вес почти не влияет на стоимость? Запишите, какие именно изменения весов вы бы сделали, и объясните почему. Это упражнение тренирует интуицию о том, что градиент — это «приоритеты» обучения.
Эксперимент с learning rate
Используя функцию f(x) = x² и начальную точку x = 10, выполните градиентный спуск с тремя разными размерами шага: α = 0.01, α = 0.1, α = 1.1. Для каждого запишите 15 итераций. Обратите внимание: маленький шаг — медленная сходимость, средний — быстрая, большой — расхождение. Это демонстрирует критическую важность выбора learning rate.
Реализация простейшего градиентного спуска на Python
Напишите 15 строк кода на Python: определите функцию f(x) = x⁴ - 3x² + x, её производную f'(x) = 4x³ - 6x + 1, и цикл градиентного спуска на 100 итераций с learning rate 0.01. Запустите из точки x = 2.0 и из x = -2.0. Выведите итоговые значения x и f(x). Сравните результаты — вы наглядно увидите проблему локальных минимумов.
💬 Цитаты (9)
«Как бы провокационно ни звучало описание машина учится, когда видишь, как это работает, это выглядит не столько безумной научно-фантастической идеей, сколько упражнением из математического анализа» #
«По сути всё сводится к нахождению минимума определённой функции» #
«Вы определяете функцию стоимости — способ сказать компьютеру: нет, плохой компьютер, этот выход — полная ерунда» #
«Просто сообщать компьютеру, что он делает паршивую работу, не очень полезно. Нужно сказать ему, как изменить веса и смещения, чтобы стало лучше» #
«Отрицательный градиент функции стоимости — это вектор, направление внутри безумно огромного пространства входов, которое говорит, какие подстройки всех этих чисел вызовут наибыстрейшее уменьшение стоимости» #
«Когда мы говорим, что сеть обучается, мы имеем в виду, что она просто минимизирует функцию стоимости» #
«Вместо того чтобы находить изолированные рёбра, веса выглядят практически случайными, лишь с некоторыми размытыми паттернами в центре» #
«Даже если эта сеть довольно хорошо распознаёт цифры, она понятия не имеет, как их рисовать» #
«Компоненты градиента показывают относительную важность каждого изменения — какое из них принесёт максимальную отдачу» #
Популярное в категории
Читать далее
3Blue1Brown
Мастерство визуальной математики: как создавать бесконечные циклы в стиле Эшера
Грант Сандерсон (3Blue1Brown)
Поделитесь с коллегами