Метод градиента.
Введем обозначение
для
, т. е. для градиента функции. Напомним, что
- это вектор, компоненты которого равны значениям частных производных по соответствующим координатам, т. е.
| (15.1) |
Вектор
может вычисляться в любой точке и дает направление наискорейшего возрастания функции
в этой точке. Пусть
- это шаг (step в английском языке) из рассматриваемой точки
в новую точку
и
| (15.2) |
где
,
,
- это векторы, т. е. массивы длины
. Сложение в (15.2) выполняется для векторов (см. рис. 15.1).
|
Рис. 15.1. Шаг |
Метод градиента заключается в том, что точка
определяется в результате одномерного поиска минимума в направлении антиградиента для точки
. Шаги прекращаются при попадании в EPS-окрестность точки минимума и при малых значениях
, т. к. в точке минимума
.
Рис.14.2. |
АЛГОРИТМ
Дана функция
, формулы или алгоритм для вычисления градиента
по (15.1), выбрана начальная точка
и значение допустимой погрешности EPS. Начальная точка может выбираться либо произвольной, либо на основании дополнительной информации о расположении минимума.
1. Вычислить компоненты
. Обычно для этого применяют численное дифференцирование.
2. Выполнить одномерный поиск вдоль направления (
). В результате получается следующая точка
.
3. Проверить условия
,
.
Если условия выполняются, то
- это точка минимума. Иначе
и на пункт 1.
В этом алгоритме не учтена защита от зацикливания, которая должна быть обязательно. Например, можно указать некоторое максимальное количество шагов в операторе цикла, или предусмотреть вывод каких-то сообщений после некоторого большого количества шагов. Отметим, что малые значения
могут соответствовать не точке минимума, а седловой точке.
Метод работает быстрее, чем прямые методы, т. к. использует информацию о производных. Но у него есть два существенных недостатка: трудности вычисления производных для сложных функций и большое количество шагов для так называемых овражных функций, к рассмотрению которых и переходим.
Так как в любой точке при поиске минимума многомерных функций множество приемлемых направлений бесконечно, то именно способ выбора направления определяет суть алогоритма, а к вычислению величины шага принято относиться как к некой отдельной процедуре, результаты которой менее важны.
15.2. Овражные целевые функции.
Рассмотрим случай двух переменных и целевую функцию, у которой линии уровня представляют собой сильно вытянутые эллипсы, см. рис. 15.3. Минимум обозначен точкой
и находится примерно в центре линий. В общем случае эти эллипсы нужно представить в многомерном пространстве, они узки, сильно деформированы и линии уровня имеют извилистый характер.
Функции, у которых линии уровня образуют сильно вытянутые замкнутые кривые, называют овражными, т. к. такие линии уровня соответствуют реальным оврагам.
|
Рис.15.3. Поиск минимума для овражных функций. |
Отметим, что хорошими специалистами по построению линий уровня являются ослы, т. к. они чувствительны к степени отклонения их пути от горизонтали. В гористой местности с помощью ослов выбирают трассы каналов.
Вернемся к рис.14.3. Стрелки на линиях дают направление антиградиентов для некоторых точек. Видим, что только для точек A, B, C, D эти стрелки дают правильное направление для поиска минимума, а для других точек одномерный поиск будет выводить на дно оврага, причем приближение к минимуму будет очень медленным. Траектория поиска будет зигзагообразной и это показано на рисунке. Ее можно представить себе как перекатывание шарика с одного склона на другой при общей тенденции спуска в точку минимума
. Это же движение можно представить как поиск в полной темноте источника воды на дне очень узкого, длинного оврага путем пробных шагов.
Такие зигзагообразные траектории резко увеличивают количество шагов при поиске минимума.
Появление оврагов в целевых функциях можно объяснить взаимным влиянием входных параметров, плохим выбором их масштабов изменения, различием в чувствительности функции к изменению параметров. Обычно на дне оврага все параметры примерно одинаково влияют на целевую функцию, а на склонах существенно влияние лишь нескольких из рассмариваемых.
Строгая проверка наличия оврагов очень сложна и требует вычисления собственных значений матрицы Гессе (14.5), которые изменяются при движении точки поиска вместе с изменением матрицы Гессе. Овражному характеру соответствует существенное различие модулей собственных значений.
Как правило, в практических задачах овраги есть, но т. к. исследовать их наличие очень сложно, то предпочитают не заниматься этим, а использовать методы поиска, которые сохраняют свою эффективность для овражных функций.
В заключение этого раздела рассмотрим кратко вопрос о масштабировании для целевых функций. Масштабирование обычно выполняется заменой переменных и при этом от переменных, отражающих физическую сущность задачи, переходят к новым, более подходящим для метода ее решения. Например, мы использовали целые переменные вместо времени в лекциях по цифровой обработке.
В некоторых задачах простое изменение диапазона входных параметров может устранить овражный характер целевых функций. Для этого рекомендуется нормировать входные параметры так, чтобы область поиска для каждой переменной находилась в диапазоне от -1 до 1. Например, если
- это оценка для области изменения переменной
, то замена
| (15.3) |
дает
. Отметим, что эта рекомендация по нормированию переменных полезна и для регрессионных моделей раздела 2.2.
Значения целевой функции полезно масштабировать для уменьшения влияния погрешностей. Плохо, если значения F всюду близки к нулю или содержат большую постоянную составляющую. Желательно, чтобы в окрестности искомой точки модули значений целевой функции были величинами порядка единиц или меньше. Это связано с тем, что в реальных алгоритмах используются как относительные погрешности, так и абсолютные.




