|
|
| Строка 1: |
Строка 1: |
| - | '''Градиент''' (от лат. ''gradiens'', род. падеж ''gradientis'' — шагающий, растущий) — [[вектор|векторная величина]], определяющая направление наискорейшего возрастания некоторой [[скалярная функция|скалярной функции]] общего вида, а также ее [[модуль вектора|модуль]] (скорость этого возрастания).
| |
| | | | |
| - | В [[анализ данных|анализе данных]] и [[машинное обучение|машинном обучении]] градиент играет ключевую роль, являясь основой для численных [[методы оптимизации|методов оптимизации]] (таких как [[градиентный спуск]] и его модификации).
| |
| - |
| |
| - | == Определение ==
| |
| - |
| |
| - | Пусть в некоторой области [[евклидово пространство|евклидова пространства]] <tex>\mathbb{R}^n</tex> задана скалярная функция <tex>f(x) = f(x_1, x_2, \dots, x_n)</tex>, [[дифференцируемая функция|дифференцируемая]] в точке <tex>x</tex>.
| |
| - |
| |
| - | '''Градиентом''' функции <tex>f(x)</tex> в точке <tex>x</tex> называется <tex>n</tex>-мерный вектор, компонентами которого являются [[частная производная|частные производные]] функции <tex>f</tex> по всем пространственным переменным.
| |
| - |
| |
| - | Для обозначения градиента используются [[оператор набла]] (<tex>\nabla</tex>) или явная запись <tex>\text{grad}</tex>.
| |
| - |
| |
| - | ::<tex>\nabla f(x) = \text{grad}\, f(x) = \begin{pmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\ \vdots \\ \frac{\partial f}{\partial x_n} \end{pmatrix}</tex>
| |
| - |
| |
| - | В строгом геометрическом смысле градиент представляет собой [[ковектор]], однако в прикладных задачах оптимизации его традиционно отождествляют с [[вектор-столбец|вектором-столбцом]] или [[вектор-строка|вектором-строкой]] посредством стандартного [[скалярное произведение|скалярного произведения]].
| |
| - |
| |
| - | == Геометрический и физический смысл ==
| |
| - |
| |
| - | Градиент обладает двумя фундаментальными геометрическими свойствами в любой точке, где он не равен нулю:
| |
| - |
| |
| - | # '''Направление наискорейшего роста:''' Градиент функции в точке <tex>x</tex> ортогонален [[гиперповерхность уровня|гиперповерхности уровня]] ([[линия уровня|линии уровня]] для <tex>n=2</tex>), проходящей через эту точку, и направлен в сторону максимального увеличения значений функции. Соответственно, '''антиградиент''' (<tex>-\nabla f(x)</tex>) указывает направление наискорейшего убывания функции.
| |
| - | # '''Скорость роста:''' Длина вектора <tex>\| \nabla f(x) \|_2</tex> в [[евклидова метрика|евклидовой метрике]] численно равна максимальной скорости изменения функции в данной точке по направлению.
| |
| - |
| |
| - | === Связь с производной по направлению ===
| |
| - |
| |
| - | Пусть <tex>v</tex> — единичный вектор направления в <tex>\mathbb{R}^n</tex>, удовлетворяющий условию <tex>\|v\| = 1</tex>. [[Производная по направлению|Производная функции по направлению]] <tex>v</tex> вычисляется как скалярное произведение градиента на этот вектор:
| |
| - |
| |
| - | ::<tex>\frac{\partial f}{\partial v} = \langle \nabla f(x), v \rangle = \| \nabla f(x) \| \cdot \| v \| \cdot \cos \theta = \| \nabla f(x) \| \cos \theta</tex>
| |
| - |
| |
| - | где <tex>\theta</tex> — угол между вектором градиента и вектором направления. Очевидно, что производная по направлению принимает максимальное значение, когда <tex>\cos \theta = 1</tex>, то есть при <tex>v = \frac{\nabla f(x)}{\| \nabla f(x) \|}</tex>.
| |
| - |
| |
| - | == Основные свойства ==
| |
| - |
| |
| - | Для любых дифференцируемых функций многих переменных <tex>f(x),\, g(x)</tex> и константы <tex>c \in \mathbb{R}</tex> справедливы следующие свойства:
| |
| - |
| |
| - | # '''Линейность:'''
| |
| - | #::<tex>\nabla (c \cdot f) = c \cdot \nabla f</tex>
| |
| - | #::<tex>\nabla (f + g) = \nabla f + \nabla g</tex>
| |
| - | # '''Дифференцирование произведения ([[правило Лейбница]]):'''
| |
| - | #::<tex>\nabla (fg) = f \nabla g + g \nabla f</tex>
| |
| - | # '''Дифференцирование частного:'''
| |
| - | #::<tex>\nabla \left(\frac{f}{g}\right) = \frac{g \nabla f - f \nabla g}{g^2}, \quad g(x) \neq 0</tex>
| |
| - | # '''Градиент сложной функции ([[производная сложной функции|Chain rule]]):'''
| |
| - | #:Если <tex>h(u)</tex> — дифференцируемая функция одной переменной, а <tex>u = f(x)</tex>, то:
| |
| - | #::<tex>\nabla (h \circ f)(x) = h'(f(x)) \cdot \nabla f(x)</tex>
| |
| - |
| |
| - | == Важные матричные градиенты ==
| |
| - |
| |
| - | Пусть заданы векторы <tex>x, a \in \mathbb{R}^n</tex>, а также матрица оператора <tex>A \in \mathbb{R}^{n \times n}</tex>. В [[матричное исчисление|матричном исчислении]] часто используются следующие аналитические выражения:
| |
| - |
| |
| - | * '''Градиент линейной формы:'''
| |
| - | ::<tex>\nabla_x (a^T x) = a</tex>
| |
| - | * '''Градиент квадратичной формы:'''
| |
| - | ::<tex>\nabla_x (x^T A x) = (A + A^T)x</tex>
| |
| - | Если матрица <tex>A</tex> [[симметричная матрица|симметрична]] (<tex>A = A^T</tex>), то:
| |
| - | ::<tex>\nabla_x (x^T A x) = 2Ax</tex>
| |
| - |
| |
| - | == Применение в машинном обучении ==
| |
| - |
| |
| - | В задачах [[обучение с учителем|обучения с учителем (Supervised Learning)]] качество алгоритма оценивается гладкой (или кусочно-гладкой) [[функция потерь|функцией потерь]] <tex>Q(w)</tex>, зависящей от вектора настраиваемых параметров ([[веса алгоритма|весов]]) <tex>w</tex>.
| |
| - |
| |
| - | Для минимизации функционала потерь применяется семейство методов первого порядка, использующих градиент:
| |
| - |
| |
| - | # '''[[Градиентный спуск]] (Gradient Descent):''' Итерационный процесс обновления весов по правилу:
| |
| - | #::<tex>w^{(k+1)} = w^{(k)} - \eta \nabla Q(w^{(k)})</tex>
| |
| - | #:где <tex>\eta > 0</tex> — [[темп обучения|темп обучения (learning rate)]].
| |
| - | # '''[[Стохастический градиентный спуск]] (SGD):''' Оценка истинного градиента <tex>\nabla Q(w)</tex> по одному объекту или подвыборке ([[батч|mini-batch]]), что критически важно при работе со сверхбольшими массивами данных.
| |
| - | # '''Оптимизаторы высших порядков:''' Использование градиента совместно с матрицей вторых частных производных ([[матрица Гессе|Гессианом]] <tex>H</tex>) в методе [[Ньютона-Рафсона]], либо его квазиньютоновских аппроксимациях ([[BFGS]], [[L-BFGS]]).
| |
| - |
| |
| - | == См. также ==
| |
| - | * [[Производная по направлению]]
| |
| - | * [[Градиентный спуск]]
| |
| - | * [[Матричное исчисление]]
| |
| - | * [[Матрица Гессе]]
| |
| - |
| |
| - | == Литература ==
| |
| - | # ''Кудрявцев Л. Д.'' Курс математического анализа. — М.: Высшая школа, 2003. — Т. 2.
| |
| - | # ''Борис Т. Поляк.'' Введение в оптимизацию. — М.: Наука, 1983.
| |
| - | # ''Goodfellow I., Bengio Y., Courville A.'' Deep Learning. — MIT Press, 2016.
| |
| - |
| |
| - | [[Категория:Теоретические исследования]]
| |
| - | [[Категория:Энциклопедия анализа данных]]
| |