- •Множество и функция Множество
- •Функция
- •Поле и пространство Поле
- •Пространство
- •Обозначение векторов и скаляров
- •Вопросы для самопроверки
- •Экстремумы. Критические и стационарные точки. Задача оптимизации Экстремумы
- •Локальные и глобальные минимумы
- •Задача оптимизации
- •Вопросы для самопроверки
- •Ряд тейлора и его свойства Градиент и матрица Гессе
- •Ряд Тейлора
- •Квадратичная форма Квадратичная форма и ее виды
- •Собственные числа и собственные вектора
- •Гессиан и квадратичная функция
- •Вопросы для самопроверки
- •Окончание поиска и численное дифференцирование Критерий останова для методов оптимизации
- •Численное дифференцирование
- •Вопросы для самопроверки
- •Методы дихотомии и трехточечного деления Метод дихотомии
- •Теорема
- •Метод трехточечного деления
- •Вопросы для самопроверки
- •Метод золотого сечения
- •Метод Фибоначчи
- •Метод ньютона, метод секущих Метод Ньютона
- •Метод секущих
- •Вопросы для самопроверки
- •Метод Мюллера
- •Методы градиентного спуска Условные обозначения
- •Градиентный методы спуска с постоянным шагом
- •Градиентный метод спуска с убывающим шагом
- •Вопросы для самопроверки
- •Метод наискорейшего спуска. Овражные задачи Метод наискорейшего спуска
- •Вопросы для самопроверки
- •Метод Ньютона
- •Модифицированные ньютоновские методы Демпфированный метод Ньютона с переменным αk
- •Метод Левенберга-Марквардта
- •Вопросы для самопроверки
- •Методы барзилая-борвейна
- •Стабилизированный метод Барзилая-Борвейна
- •Вопросы для самопроверки
- •Условия вульфа
- •Алгоритм 2: Линейный поиск на основе условий Вульфа
- •Вопросы для самопроверки
- •Методы сопряженных градиентов
- •Методы сопряженных градиентов
- •Дополнение
- •Вопросы для самопроверки
- •Метод бфгш с ограниченной памятью Классический метод бфгш и его проблемы
- •Алгоритм экономии памяти для метода l-bfgs
- •Алгоритм l-bfgs
- •Вопросы для самопроверки
- •Идея метода доверительных областей
- •Основные положения
- •Метод доверительных областей
- •Вопросы для самопроверки
- •Метод хука-дживса Описание метода
- •Вопросы для самопроверки
Метод бфгш с ограниченной памятью Классический метод бфгш и его проблемы
Рассмотрим классический метод БФГШ.
Алгоритм 1: Алгоритм БФГШ
П
роблема
метода БФГШ
хорошо
иллюстрируется следующей
задачей.
Допустим,
мы
обучаем
нейросеть
с
216
= 65536 параметрами
и
хотим
использовать
именно
метод
БФГШ
без
каких-либо
модификаций.
Это
небольшая
сеть,
для
сравнения,
нейросеть
для
клас-
сификации
образов
VGG-19 содержит
144 миллиона
параметров.
Вычислим
необходимый
объем
памяти
для матрицы Hk
c
представлением
данных
типа
double (8 байт):
N = (216)2 · 8 = 32Гб.
Оптимизация на персональном компьютере уже затруднительна, хотя сеть небольшая. Аналогичные проблемы начнут возникать и на мощных серверах при увеличении размера задачи. Можно ли как-то уменьшить необходимый для метода объем памяти?
Н
а
рисунке
1 показана
схема
нахождения
матрицы
БФГШ.
Из схемы видно, что огромные объемы памяти, необходимые для метода, возникают в основном из-за операций с векторами, в которых содержится гораздо меньше информации, чем могло бы содержаться в полноценных матрицах. Также в расчетах содержится матрица Hk, которая хранит в себе всю историю предыдущих операций, но на текущем шаге имеют значение только наиболее недавние значения квазиньютоновской матрицы. Таким образом, если убрать матрицу Hk из расчетов, заменив матричное умножение на последовательность векторных операций, а также использовать ограниченную историю за последние m шагов, можно значительно сэкономить память без ущерба для качества оптимизации.
Алгоритм экономии памяти для метода l-bfgs
Для заданного k выведем рекуррентные формулы, используя сохраненные в памяти m
предыдущих значений yn, dn, γn, n = [k − m..k − 1].
С их помощью вычислим приблежение очередного шага zk ≈ Hk∇f (xk).
Тогда новая точка будет находиться по формуле xk+1 = xk + αkzk.
Приведем рекуррентный алгоритм вычисления вектора zk = −Hkqk.
Алгоритм 2: Алгоритм расчета zk в методе L-BFGS Пусть хранится m предыдущих значений векторов dk, yk и скаляров γk. Вычислим
Используя в методе БФГШ расчет очередного вектора направления zk с помощью алго- ритма 2, получим алгоритм, называющийся L-BFGS (Л-БФГШ), где L обозначает (англ.) limited memory – ограниченную память. Последовательность операций при вычислении вектора zk в виде схемы представлена на рисунке 2.
В расчете нового направления теперь не используется ни одной матрицы.
Алгоритм l-bfgs
Алгоритм 3: Алгоритм L-BFGS
Сравним затраты на поиск zk в классическом БФГШ и методе с ограниченной памятью.
Для метода L-BFGS:
1. Требуется O(nm) умножений и сложений.
2. Требуется памяти: O(nm), где m << n, в отличие от матрицы Hk, для которой тре- буется памяти O(n2).
Рассмотрим пример работы метода L-BFGS на функции Розенброка. Начальная точка x0 = (−1, −1)T, точность ε = 10—5, длина массива памяти m = 1. Траектория оптимизации показана на рисунке 3.
Видно, что при слишком маленьком объеме памяти метод не очень эффективен. Уве- личим длину массива памяти до размера m = 3. Траектория оптимизации показана на рисунке 4.
Метод L-BFGS справился с задачей на уровне исходного метода BFGS.
|
|
