Концепции машинного обучения: градиентный спуск

машинное обучение искусственный интеллект алгоритм

0. Предисловие

Большая часть машинного обученияОптимизация, большинство проблем оптимизации можно решить с помощью градиентного спуска/подъема, поэтому очень важно понимать алгоритм градиента.

Изучение градиентов требует определенных математических знаний: производная, частная производная и производная по направлению.

1. Производная

Картинка для понимания, производные и дифференциалы:

Производные определяются следующим образом:

f'(x_0)=\underset{\Delta x\rightarrow0}{lim}\frac{\Delta y}{\Delta x}=\underset{\Delta x \rightarrow 0}{lim}\frac{f(x_0+\Delta x)-f(x_0)}{\Delta x}

ответ - это функцияy=f(x)вдоль в точкеxположительная осьскорость изменения

функцияf(x)существуетxвдоль осиxТенденция изменения в положительном направлении оси,Чем больше абсолютное значение производной, тем более очевидна тенденция изменения.

  • Если значение производной положительное, это означаетf(x)существуетxуказывать вдольxПоложительное направление оси имеет тенденцию к увеличению
  • Если значение производной отрицательное, это означаетf(x)существуетxуказывать вдольxПоложительное направление оси имеет тенденцию к уменьшению
Для приведенной выше формулы
символ значение
\Delta x xсумма сдачи
dx xсумма сдачи\Delta xПри стремлении к 0 записывается как микроэлементdx
\Delta y \Delta y=f(x_0+\Delta x)-f(x_0)Относится к величине изменения функции
dy dy=f'(x_0)dxизменение тангенса

когда\Delta x \rightarrow 0час,dyи\Delta yбесконечно малы,dyда\Delta yосновная часть, а именно:\Delta y=dy+o(\Delta x) o(): бесконечно малый низкий порядок

2. Частные производные

Частные производные определяются следующим образом:

\frac{\partial}{\partial x_j}f(x_0,x_1,\cdots,x_n)=\underset{\Delta x \rightarrow 0}{lim}\frac{\Delta y}{\Delta x}=\underset{\Delta x \rightarrow 0}{lim}\frac{f(x_0,x_1,\cdots,x_n)-f(x_0,x_1,\cdots,x_n)}{\Delta x}

Видно, что суть производной и частной производной одна и та же: при стремлении изменения независимой переменной к 0 предел отношения изменения значения функции к изменению независимой переменной. Интуитивно частная производная — это скорость изменения функции вдоль положительного направления координатной оси в определенной точке.

Разница между производной и частной производной

Производная: относится к унарной функции, функцияy=f(x)вдоль в точкеxСкорость изменения в положительном направлении оси

Частная производная: относится к многомерной функции, функцияy=f(x_1,x_2,\cdots,x_n)вдоль оси в точке(x_1, x_2, \cdots, x_n)скорость изменения в положительную сторону

3. Производные по направлению

Производная по направлению определяется следующим образом:

\frac{\partial}{\partial l}f(x_0,x_1,\cdots,x_n)=\underset{\rho \rightarrow 0}{lim}\frac{\Delta y}{\Delta x}=\underset{\rho \rightarrow 0}{lim}\frac{f(x_0+\Delta x_0,\cdots,x_j +\Delta x_j,\cdots,x_n+\Delta x_n)-f(x_0,\cdots,x_j,\cdots,x_n)}{\rho}

в:\rho = \sqrt{(\Delta x_0)^2+\cdots+(\Delta x_j)^2+\cdots+(\Delta x_n)^2}

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

Популярное объяснение:

Нам нужно не только знать скорость изменения функции в положительном направлении оси координат (то есть частную производную), но и попытаться найти скорость изменения функции в других конкретных направлениях, а также направление производная - это скорость изменения функции в других конкретных направлениях.

4. Градиент

Градиент определяется следующим образом:

gradf(x_0,x_1,\cdots,x_n)=(\frac{\partial f}{\partial x_0},\cdots,\frac{\partial f}{\partial x_j},\cdots,\frac{\partial f}{\partial x_n})

Существование градиентов, чтобы ответить на вопрос:

В каком направлении функция имеет наибольшую скорость изменения в точке переменного пространства

Буквальное определение градиента выглядит следующим образом:

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

Уведомление:

  • градиент - этовектор, имеет направление и размер
  • Направление градиентамаксимальная производная по направлениюнаправление
  • значение максимальной производной по направлению от значения градиента

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

5. Градиентный спуск

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

Как уменьшить значение функции в направлении отрицательного градиента? Поскольку градиент представляет собой набор частных производных, а именно:

gradf(x_0,x_1,\cdots,x_n)=(\frac{\partial f}{\partial x_0},\cdots,\frac{\partial f}{\partial x_j},\cdots,\frac{\partial f}{\partial x_n})

Поскольку и градиент, и частная производная являются векторами, из алгоритма вектора видно, что мы можем уменьшить соответствующее значение переменной на каждой переменной оси, Алгоритм градиентного спуска можно описать как:

Repeat {

x_0:=x_0-\alpha\frac{\partial f}{\partial x_0}

\cdots

x_j:=x_j-\alpha\frac{\partial f}{\partial x_j}

\cdots

x_n:=x_n-\alpha\frac{\partial f}{\partial xn}

\cdots

}

Отсюда можно ясно понять процесс градиентного спуска,Подобно людям на горе, как быстро спуститься с горы

  1. Найдите направление самого быстрого спуска
  2. опускаться
  3. Повторяйте шаги 1 и 2, пока не будет достигнуто минимальное значение (основание горы).

Здесь нам также необходимо понять несколько концепций:

5.1 Размер шага (скорость обучения) (скорость обучения)

Размер шага определяет длину каждого шага в отрицательном направлении градиента во время градиентного спуска.

5.2 Особенности

Собственное значение — это входная часть выборки, например дваодна функцияобразец(x^{(0)}, y^{(0)}),(x^{(1)}, y^{(1)})Тогда признаки первого образцаx^{(0)}, выход первой выборкиy^{(0)}

5.3 Функция гипотезы

В обучении с учителем, чтобы соответствовать входным образцам, используется функция гипотезы, обозначаемая какh_\theta(x).например, m образцов для одной функции(x^{(i)}, y^{(i)}) (i=1,2,\cdots,m)Функцию подгонки можно использовать следующим образом:h_\theta(x)=\theta_0+\theta_1 x

5.4 функция потерь

Чтобы оценить, насколько хорошо модель подходит, обычно используется функция потерь для измерения степени соответствия. Минимизация функции потерь означает, что степень подгонки является наилучшей, а соответствующие параметры модели являются оптимальными параметрами. В линейной регрессии функция потерь обычно представляет собой квадрат разницы между выходными данными выборки и функцией гипотезы, скажем, для m выборок.(x_i,y_i)(i=1,2,\cdots,m)Используя линейную регрессию, функция потерь:

J(\theta_0,\theta_1)=\frac{1}{2}\sum^{m}_{i=1}(h_\theta(x_i)-y_i)^2здесь\frac{1}{2}для удобства

вx_iозначает первыйiпримерные характеристики,y_iозначает первыйiобразцы для вывода,h_\theta(x_i)является гипотетической функцией.

Алгоритм градиентного спуска по сравнению с алгоритмом линейной регрессии

6. Алгоритм градиентного спуска в деталях

Алгоритмы градиентного спуска могут иметь алгебраические методы и матричные методы (также называемые векторными методами).

По сравнению с алгебраическим методом, матричный метод более лаконичен.Алгебраический метод здесь не вводится.Заинтересованные читатели могут прочитать:

[Сводка по градиентному спуску]

Матричный метод для алгоритмов градиентного спуска

Здесь требуются определенные знания о выводе матриц.

Сначала нам нужно определить функцию гипотезы и функцию потерь модели оптимизации для линейной регрессии:

Предположим, функция:

h_\theta(x_1,x_2,x\cdots,x_n)=\theta_o+\theta_1x_1+\cdots+\theta_nx_n

Матричное выражение:h_\theta(\boldsymbol X)=\boldsymbol X\theta

в:\boldsymbol Xразмерmxnматрица. m представляет количество образцов, n представляет количество признаков образца

h_\theta(\boldsymbol X)заmвектор x1,\thetaзаnвектор x1

Функция потерь:

J(\theta)=\frac{1}{2}(\boldsymbol X\theta-\boldsymbol Y)^T(\boldsymbol X\theta-Y)

в:\frac{1}{2}для удобства,\boldsymbol Yвыходной вектор выборок с размерностьюmx1

Алгоритмический процесс:

  1. Определить градиент функции потерь в текущей позиции, для\thetaвектор, выражение градиента которого выглядит следующим образом:

    \frac{\partial}{\partial\theta}J(\theta)

  2. Умножьте градиент функции потерь на размер шага, чтобы получить расстояние от текущей позиции.

\alpha \frac{\partial}{\partial\theta}J(\theta)установить здесь\alphaдлина шага

  1. Конечно\thetaДля каждого значения в векторе расстояние градиентного спуска меньше, чем\varepsilon, если расстояние градиентного спуска меньше\varepsilonАлгоритм завершается, текущий\thetaВектор является конечным результатом. В противном случае перейдите к следующему шагу

  2. Обновить\thetaВектор, выражение обновления выглядит следующим образом: После завершения обновления верните выражение на шаг 1.

    \theta=\theta-\alpha\frac{\partial}{\partial}J(\theta)

где функция потерь\thetaЧастная производная вектора вычисляется следующим образом:

\frac{\partial}{\partial\theta}J(\theta)=\boldsymbol X^T(\boldsymbol X\theta-\boldsymbol Y)

на шаге 4\thetaВыражение обновления для вектора выглядит следующим образом:

\theta=\theta-\alpha \boldsymbol X^T(\boldsymbol X\theta-\boldsymbol Y)

7. Большое семейство методов градиентного спуска (BGD, SGD, MBGD)

7.1. Пакетный градиентный спуск

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

\theta_i = \theta_i - \alpha\sum\limits_{j=0}^{m}(h_\theta(x_0^{(j)}, x_1^{(j)}, ...x_n^{(j)}) - y_j)x_i^{(j)}

Поскольку у нас есть m выборок, при расчете градиента здесь используются данные градиента всех m выборок.

7.2 Стохастический градиентный спуск

Метод стохастического градиентного спуска фактически похож на метод пакетного градиентного спуска, разница в том, что он не использует все данные m выборок, а выбирает только одну выборку j для нахождения градиента. Соответствующая формула обновления:

\theta_i = \theta_i - \alpha (h_\theta(x_0^{(j)}, x_1^{(j)}, ...x_n^{(j)}) - y_j)x_i^{(j)}

7.3. Мини-пакетный градиентный спуск

Метод мини-пакетного градиентного спуска представляет собой компромисс между методом пакетного градиентного спуска и методом стохастического градиентного спуска, то есть для m выборок мы используем x шаблонов для итерации,1<x<m. В общем случае можно взять x = 10. Конечно, по данным выборки значение этого x можно скорректировать. Соответствующая формула обновления:

\theta_i = \theta_i - \alpha \sum\limits_{j=t}^{t+x-1}(h_\theta(x_0^{(j)}, x_1^{(j)}, ...x_n^{(j)}) - y_j)x_i^{(j)}

8. Сравнение градиентного спуска и других алгоритмов неограниченной оптимизации.

 Алгоритмы неограниченной оптимизации в машинном обучении, кроме градиентного спуска, есть еще вышеупомянутый метод наименьших квадратов, в дополнение к методу Ньютона и методу квазиньютона.

По сравнению с методом наименьших квадратов, метод градиентного спуска должен выбирать размер шага, а метод наименьших квадратов - нет. Метод градиентного спуска представляет собой итеративное решение, а метод наименьших квадратов заключается в вычислении аналитического решения. Если размер выборки невелик и есть аналитическое решение, метод наименьших квадратов имеет преимущество перед методом градиентного спуска, и скорость вычислений очень высока. Однако, если размер выборки велик, трудно или медленно решать аналитическое решение с использованием метода наименьших квадратов из-за необходимости получения сверхбольшой обратной матрицы.Более выгодно использовать метод итеративного градиентного спуска.

По сравнению с методом Ньютона/квазиньютоновским методом метод градиентного спуска представляет собой итеративное решение, но метод градиентного спуска представляет собой градиентное решение, а метод Ньютона/квазиньютоновский метод решается обратной матрицей или псевдообратной матрицей матрицы Гессе второго порядка. Условно говоря, использование метода Ньютона/квазиньютоновского метода сходится быстрее. Но каждая итерация занимает больше времени, чем градиентный спуск.

Ссылка: https://www.cnblogs.com/pinard/p/5970503.html