магистры / ЛР-1
.pdf
Рисунок 4
К счастью, функция издержек MSE для линейной регрессионной модели является выпуклой функцией, т.е. если выбрать любые две точки на кривой, то соединяющий их отрезок прямой никогда не пересекает кривую. Отсюда следует, что локальные минимумы отсутствуют, а есть только один глобальный минимум. Она также представляет собой непрерывную функцию с наклоном, который никогда не изменяется неожиданным образом. Упомянутые два факта имеют большое значение: градиентный спуск гарантированно подберется произвольно близко к глобальному минимуму (если вы подождете достаточно долго и скорость обучения не слишком высока).
На самом деле функция издержек имеет форму чаши, но может быть продолговатой чашей, если масштабы признаков сильно отличаются. На рисунке 5 показан градиентный спуск на обучающем наборе, где признаки 1 и 2 имеют тот же самый масштаб (слева), и на обучающем наборе, где признак 1 содержит гораздо меньшие значения, чем признак 2 (справа)
Рисунок 5 Слева на рисунке 5 алгоритм градиентного спуска устремляется прямо
к минимуму, из-за чего достигает его быстро, а справа он сначала двигается в направлении, которое практически перпендикулярно направлению к глобальному минимуму, и заканчивает длинным маршем по почти плоской долине. Минимум в итоге достигается, но за долгое время. Когда
11
используется градиентный спуск, вы должны обеспечить наличие у всех признаков похожего масштаба.
2.4 Пакетный градиентный спуск Чтобы реализовать градиентный спуск, вам понадобится вычислить
градиент функции издержек в отношении каждого параметра модели j· Другими словами, вам необходимо подсчитать, насколько сильно функция издержек будет изменяться при небольшом изменении j. С точки зрения математики результат называется частной производной.
Данное уравнение вычисляет частную производную функции издержек в отношении параметра j
Вместо вычисления таких частных производных по отдельности вы можете можно воспользоваться другим уравнением, чтобы вычислить их все сразу
Вектор-градиент содержит все частные производные функции издержек (по одной для каждого параметра модели).
Данная формула включает в себя вычисления с полным обучающим набором Х на каждом шаге градиентного спуска. Вот почему алгоритм называется пакетным градиентным спуском: на каждом шаге он потребляет целый пакет обучающих данных. В результате он оказывается крайне медленным на очень крупных обучающих наборах.
Однако градиентный спуск хорошо масштабируется в отношении количества признаков; обучение линейной регрессионной модели при наличии сотен тысяч признаков проходит намного быстрее с применением градиентного спуска, чем с использованием нормального уравнения.
Имея вектор-градиент, который указывает вверх, вы просто двигаетесь в противоположном направлении вниз. Это означает вычитание MSE( ) из. Именно здесь в игру вступает скорость обучения : умножение вектораградиента на дает размер шага вниз
2.5 Стохастический градиентный спуск
12
Главная проблема с пакетным градиентным спуском - тот факт, что он использует полный обучающий набор для вычисления градиентов на каждом шаге, который делает его очень медленным в случае крупного обучающего набора. Как противоположная крайность, стохастический градиентный спуск (Stochastic Gradient Descent - SGD) на каждом шаге просто выбирает из обучающего набора случайный образец и вычисляет градиенты на основе только этого единственного образца. Очевидно, алгоритм становится гораздо быстрее, т.к. на каждой операции ему приходится манипулировать совсем малым объемом данных.
С другой стороны, из-за своей стохастической (т.е. случайной) природы этот алгоритм гораздо менее нормален, чем пакетный градиентный спуск: вместо умеренного понижения вплоть до достижения минимума функция издержек будет скачками изменяться вверх и вниз, понижаясь только в среднем. Со временем алгоритм будет очень близок к минимуму, но как только он туда доберется, скачкообразные изменения продолжатся, никогда не угомоняясь (см. рисунок 6). Таким образом, после окончания алгоритма финальные значения параметров оказываются хорошими, но не оптимальными.
Рисунок 6 Когда функция издержек крайне нерегулярна, то это в
действительности может помочь алгоритму выбраться из локальных минимумов, так что у стохастического градиентного спуска есть больше шансов отыскать глобальный минимум, чем у пакетного градиентного спуска.
Следовательно, случайность хороша для избегания локальных оптимумов, но плоха потому, что означает, что алгоритм может никогда не осесть на минимуме.
Одним из решений такой дилеммы является постепенное сокращение скорости обучения.
13
Шаги начинаются с больших значений (которые содействуют в достижении быстрого прогресса и избегании локальных минимумов), а затем становятся все меньше и меньше, позволяя алгоритму обосноваться на глобальном минимуме. Такой процесс называется имитацией отжига, поскольку он имеет сходство с процессом закалки в металлургии, когда расплавленный металл медленно охлаждается. Функция, которая определяет скорость обучения на каждой итерации, называется графиком обучения.
Если скорость обучения снижается слишком быстро, то вы можете застрять в локальном минимуме. Если скорость обучения снижается чересчур медленно, тогда вы можете долго прыгать возле минимума и в конечном итоге получить квазиоптимальное решение.
2.6 Мини-пакетный градиентный спуск Данный метод является гибридом пакетного и стохастического
градиентных спусков. На каждом шаге вместо вычисления градиентов на основе полного обучающего набора (как в пакетном градиентном спуске) или только одного образца (как в стохастическом градиентном спуске) минипакетный градиентный спуск вычисляет градиенты на небольших случайных наборах образцов, которые называются мини-пакетами.
Главное превосходство мини-пакетного градиентного спуска над стохастическим градиентным спуском в том, что вы можете получить подъем производительности от аппаратной оптимизации матричных операций, особенно когда используются графические процессоры.
Продвижение этого алгоритма в пространстве параметров не настолько нерегулярно, как в случае стохастического ГС, в особенности при довольно крупных минипакетах.
В результате мини-пакетный градиентный спуск закончит блуждания чуть ближе к минимуму, чем стохастический. Но с другой стороны ему может быть труднее уйти от локальных минимумов.
2.7 Полиноминальная регрессия Что, если ваши данные в действительности сложнее обычной прямой
линии? Удивительно, но вы на самом деле можете применять линейную модель для подгонки к нелинейным данным. Простой способ предполагает добавление степеней каждого признака в виде новых признаков и последующее обучение линейной модели на таком расширенном наборе признаков. Этот прием называется полиномиальной регрессией.
Пусть имеются нелинейные данные (см. рисунок 7), основанные на простом квадратном уравнении (плюс некоторый шум).
14
Безусловно, прямая линия никогда не будет подогнана под такие данные должным образом. Потому преобразуем наши обучающие данные, добавив в качестве новых признаков квадрат (полином 2-й степени) каждого признака (в нашем случае есть только один признак)
X+X2
Теперь набор обучающих данных содержит первоначальный признак Х плюс его квадрат. Применяем линейную регрессию для данного обучающего набора и получаем:
Рисунок 7 В случае выполнения полиномиальной регрессии высокой степени,
вероятно, вы гораздо лучше подгоните обучающие данные, чем с помощью линейной регрессии.
15
3. Индивидуальные варианты практикума
№ варианта |
А |
В |
С |
D |
E |
1 |
3 |
4 |
0,5 |
2 |
1 |
2 |
2 |
3 |
1 |
2 |
1 |
3 |
4 |
3 |
0,5 |
1 |
2 |
4 |
3 |
2 |
2 |
2 |
2 |
5 |
3 |
3 |
1 |
1 |
1 |
6 |
4 |
4 |
2 |
1 |
2 |
7 |
2 |
5 |
1 |
3 |
2 |
8 |
1 |
3 |
3 |
2 |
1 |
9 |
5 |
2 |
3 |
1 |
2 |
10 |
3 |
1 |
2 |
3 |
1 |
Рекомендованная литература
Жерон Орельен, «Прикладное машинное обучение с помощью ScikitLearn и TensorFlow: концепции, инструменты и техники для создания интеллектуальных систем». Пер. с англ. - СпБ.: ООО «Альфа-книга»: 2018. - 688 с.
Контрольные вопросы:
1.Какой алгоритм обучения линейной регрессии вы можете применить, если у вас есть обучающий набор с миллионами признаков?
2.Предположим, что признаки в вашем обучающем наборе имеют очень разные масштабы. Какие алгоритмы могут пострадать от этого и как? Что вы можете с этим поделать?
3.Все ли алгоритмы градиентного спуска приводят к той же самой модели при условии, что вы позволяете им выполняться достаточно долго?
4.Какой алгоритм градиентного спуска (среди тех, которые обсуждались) быстрее всех достигнет окрестностей оптимального решения? Какой алгоритм действительно сойдется? Как вы можете заставить сойтись также остальные алгоритмы?
16
