В цикле итераций обучения модели после получения потери по предложенному значению свойств существует этап вычисления обновления параметров и в этом посте мы раскроем действия происходящие в нем.
Предположим у нас есть время и ресурсы, чтобы вычислить потерю для всех возможных значений свойства w1. В случае задач регрессии результирующий график потерь к значению w1 всегда будет дугообразный. Другими словами график будет чашеобразный, как следующий:
Задачи регрессии выводят дугообразные графики отношения потери к весу
Задачи с дугообразным графиком имеют только один минимум. Таким образом, в данном случае существует единственное место, где уклон (slope) равен нулю. Этот минимум там, где функция потери сходится (приближается к нулю).
Вычисление функции потери для каждого возможного значения w1 по всему набору данных будет неэффективным путем нахождения точки схождения. Рассмотрим более эффективный механизм - очень популярный в машинном обучении - называемый градиентный спуск.
Первый этап в градиентном спуске - это взять стартовое значение (стартовую точку) для w1. Стартовая точка не имеет большого значения, поэтому многие алгоритмы устанавливают w1 равным 0 или выбирают случайное значение. На следующем графике мы взяли стартовую точку немного большей чем 0:
Стартовая точка для градиентного спуска
Затем алгоритм градиентного спуска вычисляет градиент кривой потери в стартовой точке. На графике градиент потери равен производной (уклон) кривой и сообщает что путь "теплее" или "холоднее". Когда есть несколько весов градиент это вектор парциальных производных с учетом весов.
Следует отметить, что, ввиду того что градиент это вектор, он имеет обе следующие характеристики:
- направление
- величина
Градиент всегда указывает в направлении крутейшего возрастания в функции потери. Алгоритм градиентного спуска делает шаг в направлении отрицательного градиента чтобы уменьшить потерю наиболее быстро.
Градиентный спуск основывается на отрицательном градиенте
Чтобы определить следующую точку на кривой функции потери алгоритм градиентного спуска добавляет некоторую порцию величины градиента к стартовой точке:
Градиентный шаг перемещает нас к следующей точке на кривой потери
Градиентный спуск затем повторяет этот процесс, становясь все ближе к минимуму.
Резюме
Градиентный спуск - это техника минимизации потери, посредством вычисления градиентов потери с учетом всех параметров модели, основанный на тренировочных данных. Другими словами градиентный спуск итеративно корректирует параметры, постепенно находя наилучшую комбинацию весов и смещений с минимальной потерей.