- •Множество и функция Множество
- •Функция
- •Поле и пространство Поле
- •Пространство
- •Обозначение векторов и скаляров
- •Вопросы для самопроверки
- •Экстремумы. Критические и стационарные точки. Задача оптимизации Экстремумы
- •Локальные и глобальные минимумы
- •Задача оптимизации
- •Вопросы для самопроверки
- •Ряд тейлора и его свойства Градиент и матрица Гессе
- •Ряд Тейлора
- •Квадратичная форма Квадратичная форма и ее виды
- •Собственные числа и собственные вектора
- •Гессиан и квадратичная функция
- •Вопросы для самопроверки
- •Окончание поиска и численное дифференцирование Критерий останова для методов оптимизации
- •Численное дифференцирование
- •Вопросы для самопроверки
- •Методы дихотомии и трехточечного деления Метод дихотомии
- •Теорема
- •Метод трехточечного деления
- •Вопросы для самопроверки
- •Метод золотого сечения
- •Метод Фибоначчи
- •Метод ньютона, метод секущих Метод Ньютона
- •Метод секущих
- •Вопросы для самопроверки
- •Метод Мюллера
- •Методы градиентного спуска Условные обозначения
- •Градиентный методы спуска с постоянным шагом
- •Градиентный метод спуска с убывающим шагом
- •Вопросы для самопроверки
- •Метод наискорейшего спуска. Овражные задачи Метод наискорейшего спуска
- •Вопросы для самопроверки
- •Метод Ньютона
- •Модифицированные ньютоновские методы Демпфированный метод Ньютона с переменным αk
- •Метод Левенберга-Марквардта
- •Вопросы для самопроверки
- •Методы барзилая-борвейна
- •Стабилизированный метод Барзилая-Борвейна
- •Вопросы для самопроверки
- •Условия вульфа
- •Алгоритм 2: Линейный поиск на основе условий Вульфа
- •Вопросы для самопроверки
- •Методы сопряженных градиентов
- •Методы сопряженных градиентов
- •Дополнение
- •Вопросы для самопроверки
- •Метод бфгш с ограниченной памятью Классический метод бфгш и его проблемы
- •Алгоритм экономии памяти для метода l-bfgs
- •Алгоритм l-bfgs
- •Вопросы для самопроверки
- •Идея метода доверительных областей
- •Основные положения
- •Метод доверительных областей
- •Вопросы для самопроверки
- •Метод хука-дживса Описание метода
- •Вопросы для самопроверки
Условия вульфа
Пусть мы решаем задачу оптимизации
x∗ = arg min f (x).
Решение ищем методом спуска вида
xk+1 = xk + αkpk,
где pk – текущее направление поиска. Длину шага αk можно найти методами точной оптимизации функции ϕ(α) = f (xk + αpk), но это долго.
Сделаем здесь небольшую ремарку о производной целевой функции. Напомним, что производная функции
ϕ(α) = f (xk + αpk)
по α равна:
ϕ’(α) = pT∇f (xk + αpk).
Возвращаясь к поиску длины шага напомним, что длина шага αk в методе спуска
xk+1 = xk + αk pk
должна давать:
1. «Достаточное уменьшение значения целевой функции ϕ(α),
2. «Достаточное уменьшение значения производной ϕ’(α).
Условия Вульфа служат для того, чтобы перевести неточное понятие «достаточности на язык математики.
Первое условие Вульфа, оно же правило Армихо (Armijo), гласит:
ϕ(αk) ≤ ϕ(0) + c1αkϕ’(0).
Запишем по-другому:
Иллюстрация этого правила приведена на рисунке 1. Необходимо чтобы новая точка лежала ниже прямой проходящую через (0,ф(0)) и имеющая наклон c1ф’(0) пропорционально производной в нулевой точке.
Точка α1 не удовлетворяет первому условию Вульфа, точка α2 ему удовлетворяет. На основе правила Армихо сформулируем метод Армихо.
Алгоритм 1: Метод Армихо
Второе условие Вульфа, оно же правило кривизны, гласит:
Запишем
по-другому:
Третье условие Вульфа, оно же сильное правило кривизны:
или
Первое и третье правила Вульфа дают сильные условия Вульфа, которые могут использоваться вместо условия Армихо, чтобы гарантировать сходимость к нулю производной ∇f (xk).
Рисунок 2 иллюстрирует сильное правило кривизны. Необходимо чтобы производная ф’ была меньше по абсолютной величине в точке альфа 1 чем в исходной точке 0.
В точке α1 производная ϕ’(α1) меньше по абсолютной величине, чем ϕ’(0).
Значение констант полагаются следующими: 0 < c1 < c2 < 1. Возможные значения:
c1 = 10—4, c2 = 0.9 для метода Ньютона или квазиньютоновских методов. Сформулируем алгоритм линейного поиска на основе условий Вульфа.
Алгоритм 2: Линейный поиск на основе условий Вульфа
Алгоритм 3: Функция zoom(αlo, αhi)
На основе информации о ϕ(0), ϕ(α0), ϕ’(0), можем получить новое значение α1 с помощью квадратичной интерполяции:
На основе информации о ϕ(αi—1), ϕ’(αi—1), ϕ(αi), ϕ’(αi) можем получить новое значение
αi+1 с помощью кубической интерполяции
Надо добавить проверки, что если по каким-либо причинам знаменатели обратятся в нуль или подкоренное выражение станет отрицательным, то в качестве нового значения α нужно будет выбрать α0 или αi—1. Кубическая лучше квадратичной так что используем ее.
Вопросы для самопроверки
1. Какой наиболее компактный код обеспечит проверку корректности нового значения
α в результате выполнения квадратичной или кубической интерполяции?
2. Как скажется в работе метода оптимизации замена сильного условия кривизны на слабое?
Методы сопряженных градиентов
Рассмотрим метод наискорейшего спуска:
где
pk
=
—∇f
(xk).
направление антиградиента.
Рисунок 1 иллюстрирует поведение метода наискорейшего спуска.
Рис. 1 – Траектория метода наискорейшего спуска в (a) хорошем случае и (b) плохом случае
Метод наискорейшего спуска в удачном случае может найти минимум за одну итерацию, но если этого не произошло, он порождает зигзагообразную последовательность взаимно- перпендикулярных отрезков, которая медленно сходится.
Идея методов сопряженных градиентов заключается в том, чтобы использовать не толь- ко значение —∇f (xk), но и прежнее направление спуска для порождения нового шага таким образом, чтобы число шагов в целом было не очень большим и метод сходился быстро.
Напомним некоторые соотношения. Допустим, мы минимизируем квадратичную функцию:
где AT = A. Градиент функции f (x) равен
g(x) = Ax + b. (1)
Ее минимум достигается в точке x∗, где
b + Ax∗ = 0.
Введем понятие A-ортогональности. Векторы u и v называются A-ортогональными (сопряженными), если для положительно определенной матрицы A выполняется условие:
uTAv = 0, u /= 0, v /= 0.
Р
исунок
2 иллюстрирует
понятие
A-ортогональных
векторов.
Рис. 2 – Векторы (a) ортогональные и (b) A-ортогональные
Рассмотрим некоторый алгоритм оптимизации, новая точка которого порождается формулой:
xk+1 = xk + αkpk. (2)
Пусть он использует направления шага, при которых векторы направлений будут A- ортогональны друг другу:
pTApk+1 = 0.
Пусть вектор ошибки равен ek = xk — x∗, тогда из (1) и (2):
gk = b + Axk = b + Ax∗ + Aek = Aek, ek+1 = ek + αkpk.
Найдем αk для нашего метода следующим образом:
Этот метод, который будем называть методом сопряженных градиентов, на квадратич- ной задаче сойдется за число итераций, равное размерности пространства, как показано на рисунке 3.
Р
ис.
3 –
(a)
Ошибка
и
первый
шаг
метода
(b) метод
сходится
за
n =
2 итерации
Остается вопрос, каким образом получать A-ортогональные направления на каждом новом шаге. Напомним алгоритм, который носит название ортогонализации Грама-Шмидта. Пусть есть n линейно-независимых векторов ui, i = [1..n]. Найдем набор A-ортогональных векторов pi:
Чтобы найти βik, умножим обе части на Apj:
Нетрудно показать, что если ui = —gi+1, то gi+1 становится A-ортогональным всем предыдущим направлениям pj, j < i, благодаря чему
βij = 0, j /= i — 1,
и, переобозначив βi,i—1 = βi, получим
Найдем соотношение для нового градиента:
gi+1 = Aei+1 = A(ei + αipi) = Aei + αiApi,
откуда
gi+1 = gi + αiApi.
Домножим обе части на gi+1:
Можно показать, что pTgi = —gTgi. Используя это соотношение, получим
откуда:
