- Github: github.com/yingzk/MyML
- Блог:www.yingjoy.cn
0. Предисловие
Большая часть машинного обученияОптимизация, большинство проблем оптимизации можно решить с помощью градиентного спуска/подъема, поэтому очень важно понимать алгоритм градиента.
Изучение градиентов требует определенных математических знаний: производная, частная производная и производная по направлению.
1. Производная
Картинка для понимания, производные и дифференциалы:
Производные определяются следующим образом:
ответ - это функциявдоль в точкеположительная осьскорость изменения
функциясуществуетвдоль осиТенденция изменения в положительном направлении оси,Чем больше абсолютное значение производной, тем более очевидна тенденция изменения.
- Если значение производной положительное, это означаетсуществуетуказывать вдольПоложительное направление оси имеет тенденцию к увеличению
- Если значение производной отрицательное, это означаетсуществуетуказывать вдольПоложительное направление оси имеет тенденцию к уменьшению
Для приведенной выше формулы
символ | значение |
---|---|
сумма сдачи | |
сумма сдачиПри стремлении к 0 записывается как микроэлемент | |
Относится к величине изменения функции | |
изменение тангенса |
когдачас,ибесконечно малы,даосновная часть, а именно: : бесконечно малый низкий порядок
2. Частные производные
Частные производные определяются следующим образом:
Видно, что суть производной и частной производной одна и та же: при стремлении изменения независимой переменной к 0 предел отношения изменения значения функции к изменению независимой переменной. Интуитивно частная производная — это скорость изменения функции вдоль положительного направления координатной оси в определенной точке.
Разница между производной и частной производной
Производная: относится к унарной функции, функциявдоль в точкеСкорость изменения в положительном направлении оси
Частная производная: относится к многомерной функции, функциявдоль оси в точкескорость изменения в положительную сторону
3. Производные по направлению
Производная по направлению определяется следующим образом:
в:
И производная, и частная производная определяют скорость изменения функции в положительном направлении координатной оси, тогда как производная по направлению, как следует из названия, описывает скорость изменения функции в любом направлении. который:Производное значение точки в направлении приближения
Популярное объяснение:
Нам нужно не только знать скорость изменения функции в положительном направлении оси координат (то есть частную производную), но и попытаться найти скорость изменения функции в других конкретных направлениях, а также направление производная - это скорость изменения функции в других конкретных направлениях.
4. Градиент
Градиент определяется следующим образом:
Существование градиентов, чтобы ответить на вопрос:
В каком направлении функция имеет наибольшую скорость изменения в точке переменного пространства
Буквальное определение градиента выглядит следующим образом:
Градиент функции в некоторой точке — это вектор, направление которого совпадает с направлением, в котором получается максимальная производная по направлению, а его модуль — максимальное значение производной по направлению.
Уведомление:
- градиент - этовектор, имеет направление и размер
- Направление градиентамаксимальная производная по направлениюнаправление
- значение максимальной производной по направлению от значения градиента
Градиент - это наибольшая производная функции по направлению в определенной точке, и функция находится в направлении градиента, а скорость изменения функции является наибольшей.
5. Градиентный спуск
Поскольку в некоторой точке переменного пространства функция имеет наибольшую скорость изменения по направлению градиента, то при оптимизации целевой функции, естественно, по направлению градиента.Отрицательное направление градиентачтобы уменьшить значение функции для достижения нашей цели оптимизации
Как уменьшить значение функции в направлении отрицательного градиента? Поскольку градиент представляет собой набор частных производных, а именно:
Поскольку и градиент, и частная производная являются векторами, из алгоритма вектора видно, что мы можем уменьшить соответствующее значение переменной на каждой переменной оси, Алгоритм градиентного спуска можно описать как:
Repeat {
}
Отсюда можно ясно понять процесс градиентного спуска,Подобно людям на горе, как быстро спуститься с горы
- Найдите направление самого быстрого спуска
- опускаться
- Повторяйте шаги 1 и 2, пока не будет достигнуто минимальное значение (основание горы).
Здесь нам также необходимо понять несколько концепций:
5.1 Размер шага (скорость обучения) (скорость обучения)
Размер шага определяет длину каждого шага в отрицательном направлении градиента во время градиентного спуска.
5.2 Особенности
Собственное значение — это входная часть выборки, например дваодна функцияобразецТогда признаки первого образца, выход первой выборки
5.3 Функция гипотезы
В обучении с учителем, чтобы соответствовать входным образцам, используется функция гипотезы, обозначаемая как.например, m образцов для одной функцииФункцию подгонки можно использовать следующим образом:
5.4 функция потерь
Чтобы оценить, насколько хорошо модель подходит, обычно используется функция потерь для измерения степени соответствия. Минимизация функции потерь означает, что степень подгонки является наилучшей, а соответствующие параметры модели являются оптимальными параметрами. В линейной регрессии функция потерь обычно представляет собой квадрат разницы между выходными данными выборки и функцией гипотезы, скажем, для m выборок.Используя линейную регрессию, функция потерь:
здесьдля удобства
возначает первыйпримерные характеристики,означает первыйобразцы для вывода,является гипотетической функцией.
Алгоритм градиентного спуска по сравнению с алгоритмом линейной регрессии
6. Алгоритм градиентного спуска в деталях
Алгоритмы градиентного спуска могут иметь алгебраические методы и матричные методы (также называемые векторными методами).
По сравнению с алгебраическим методом, матричный метод более лаконичен.Алгебраический метод здесь не вводится.Заинтересованные читатели могут прочитать:
[Сводка по градиентному спуску]
Матричный метод для алгоритмов градиентного спуска
Здесь требуются определенные знания о выводе матриц.
Сначала нам нужно определить функцию гипотезы и функцию потерь модели оптимизации для линейной регрессии:
Предположим, функция:
Матричное выражение:
в:размерxматрица. m представляет количество образцов, n представляет количество признаков образца
завектор x1,завектор x1
Функция потерь:
в:для удобства,выходной вектор выборок с размерностьюx1
Алгоритмический процесс:
Определить градиент функции потерь в текущей позиции, длявектор, выражение градиента которого выглядит следующим образом:
Умножьте градиент функции потерь на размер шага, чтобы получить расстояние от текущей позиции.
установить здесьдлина шага
КонечноДля каждого значения в векторе расстояние градиентного спуска меньше, чем, если расстояние градиентного спуска меньшеАлгоритм завершается, текущийВектор является конечным результатом. В противном случае перейдите к следующему шагу
ОбновитьВектор, выражение обновления выглядит следующим образом: После завершения обновления верните выражение на шаг 1.
где функция потерьЧастная производная вектора вычисляется следующим образом:
на шаге 4Выражение обновления для вектора выглядит следующим образом:
7. Большое семейство методов градиентного спуска (BGD, SGD, MBGD)
7.1. Пакетный градиентный спуск
Пакетный градиентный спуск является наиболее часто используемой формой градиентного спуска, Конкретный метод заключается в использовании всех выборок для обновления параметров.
Поскольку у нас есть m выборок, при расчете градиента здесь используются данные градиента всех m выборок.
7.2 Стохастический градиентный спуск
Метод стохастического градиентного спуска фактически похож на метод пакетного градиентного спуска, разница в том, что он не использует все данные m выборок, а выбирает только одну выборку j для нахождения градиента. Соответствующая формула обновления:
7.3. Мини-пакетный градиентный спуск
Метод мини-пакетного градиентного спуска представляет собой компромисс между методом пакетного градиентного спуска и методом стохастического градиентного спуска, то есть для m выборок мы используем x шаблонов для итерации,. В общем случае можно взять x = 10. Конечно, по данным выборки значение этого x можно скорректировать. Соответствующая формула обновления:
8. Сравнение градиентного спуска и других алгоритмов неограниченной оптимизации.
Алгоритмы неограниченной оптимизации в машинном обучении, кроме градиентного спуска, есть еще вышеупомянутый метод наименьших квадратов, в дополнение к методу Ньютона и методу квазиньютона.
По сравнению с методом наименьших квадратов, метод градиентного спуска должен выбирать размер шага, а метод наименьших квадратов - нет. Метод градиентного спуска представляет собой итеративное решение, а метод наименьших квадратов заключается в вычислении аналитического решения. Если размер выборки невелик и есть аналитическое решение, метод наименьших квадратов имеет преимущество перед методом градиентного спуска, и скорость вычислений очень высока. Однако, если размер выборки велик, трудно или медленно решать аналитическое решение с использованием метода наименьших квадратов из-за необходимости получения сверхбольшой обратной матрицы.Более выгодно использовать метод итеративного градиентного спуска.
По сравнению с методом Ньютона/квазиньютоновским методом метод градиентного спуска представляет собой итеративное решение, но метод градиентного спуска представляет собой градиентное решение, а метод Ньютона/квазиньютоновский метод решается обратной матрицей или псевдообратной матрицей матрицы Гессе второго порядка. Условно говоря, использование метода Ньютона/квазиньютоновского метода сходится быстрее. Но каждая итерация занимает больше времени, чем градиентный спуск.
Ссылка: https://www.cnblogs.com/pinard/p/5970503.html