Скачиваний:
0
Добавлен:
30.03.2026
Размер:
16.95 Кб
Скачать

Градиентный спуск (Gradient descent)

1. Зачем нужен градиентный спуск?

При обучении нейронной сети мы ищем такие значения весов, при которых функция потерь (ошибка) минимальна. Градиентный спуск — это основной итерационный алгоритм оптимизации, позволяющий находить минимум функции многих переменных. В глубоком обучении он используется для обновления весов сети на каждом шаге обучения.

2. Постановка задачи

Дана функция потерь f(x_1, x_2, ..., x_n) : R^n -> R, например, среднеквадратичная ошибка или кросс-энтропия.

Требуется найти её локальный минимум (в идеале — глобальный).

Для простоты рассмотрим двумерный случай f(x_1, x_2), где x_1, x_2 — параметры модели (веса). Все выводы легко обобщаются на произвольное число измерений.

3. Градиент функции

Градиент ∇f — это вектор частных производных. Он указывает направление наискорейшего возрастания функции в данной точке.

∇f(x_1, x_2) = ( ∂f/∂x_1 (x_1, x_2) ; ∂f/∂x_2 (x_1, x_2) )

Примечание: в ваших фото ошибочно указана матрица 2×2. Правильно — вектор-столбец из двух компонент.

4. Идея метода градиентного спуска

Чтобы спуститься в минимум, нужно двигаться против градиента, то есть в сторону наискорейшего убывания функции.

Обновление параметров выполняется по правилу:

x_new = x_old - η · ∇f(x_old)

где:

· x = (x_1, x_2) — вектор параметров,

· η > 0 — скорость обучения (learning rate) — малый положительный параметр, задающий размер шага,

· ∇f(x_old) — градиент в текущей точке.

В ваших конспектах параметр обозначен как n или f, но стандартное обозначение — η (эта) или α.

5. Двумерный пример (иллюстрация)

Пусть f(x_1, x_2) = x_1^2 + x_2^2. Тогда:

∇f = ( 2·x_1 ; 2·x_2

Правило обновления:

x_1 ← x_1 - η · 2·x_1 = (1 - 2η)·x_1

x_2 ← x_2 - η · 2·x_2 = (1 - 2η)·x_2

При 0 < η < 1 каждая итерация приближает нас к минимуму в точке (0, 0).

6. Что означает «малый параметр»?

Скорость обучения η должна быть достаточно маленькой, чтобы мы не «перепрыгнули» минимум, но и не слишком маленькой, иначе сходимость будет крайне медленной. На практике η часто выбирают в диапазоне 10^{-4} ... 10^{-1} и могут адаптивно уменьшать в процессе обучения.

7. Алгоритм (кратко)

Вход: функция f, начальная точка x^(0), скорость η, точность ε или число итераций.

Выход: приближённое положение минимума x^*.

1. k = 0

2. Повторять:

· Вычислить градиент ∇f(x^(k))

· Обновить параметры: x^(k+1) = x^(k) - η · ∇f(x^(k))

· k = k + 1

3. Пока ||∇f(x^(k))|| > ε (или не достигнуто максимальное число итераций)

8. Замечания и особенности для нейросетей

· Стохастический градиентный спуск (SGD) — использует оценку градиента по одному случайному примеру или мини-батчу, что намного быстрее для больших данных.

· Проблемы: локальные минимумы, седловые точки, овраги. Для их решения применяют модификации: момент (Momentum), AdaGrad, Adam и др.

· Градиентный спуск лежит в основе алгоритма обратного распространения ошибки (backpropagation) в глубоких сетях.

9. Итог

Метод градиентного спуска — это простой и мощный итерационный алгоритм:

x_{t+1} = x_t - η · ∇f(x_t)

Он позволяет минимизировать функцию потерь, последовательно двигаясь против градиента. Понимание этой формулы — ключ к обучению любых нейронных сетей.