Главная страница
Навигация по странице:

  • Замечание 2.

  • Многомерная оптимизация (продолжение).

  • Метод циклического покоординатного спуска

  • Методы безусловной оптимизации, использующие производные функции

  • Метод градиентного спуска

  • Лекция №6. Метод наискорейшего спуска

  • Лекция_1_merged. Лекция 1. Предмет и задачи методов оптимизации


    Скачать 3.42 Mb.
    НазваниеЛекция 1. Предмет и задачи методов оптимизации
    Дата05.02.2022
    Размер3.42 Mb.
    Формат файлаpdf
    Имя файлаЛекция_1_merged.pdf
    ТипЛекция
    #352185
    страница5 из 9
    1   2   3   4   5   6   7   8   9
    Замечание 1. Следует иметь в виду, что если функция
    )
    ( X
    f
    многомодальна, то описанным методом может быть найдена точка локального, а не глобального минимума
    )
    ( X
    f
    Замечание 2. Если ограниченность целевой функции не очевидна, то в алгоритм метода следует включить дополнительную процедуру останова.

    Лекция №5.
    Многомерная оптимизация (продолжение).
    Далее рассмотрим прямые методы решения задачи безусловной минимизации, использующие простейшие вычислительные алгоритмы, основанные на рекуррентной формуле
    k
    k
    k
    k
    S
    X
    X




    1
    ,
    ( 1) где
    k
    S - направление поиска точки
    1

    k
    X
    из точки
    k
    X
    , а положительное число
    k

    - величина шага в этом направлении.
    Способ выбора
    k
    S и
    k

    будет определять одну из рассматриваемых далее модификаций метода покоординатного спуска.
    Метод циклического покоординатного спуска
    Метод циклического покоординатного спуска заключается в последовательной минимизации целевой функции
    )
    ( X
    f
    сначала по направлению первого базисного вектора
    1
    e
    , затем второго -
    2
    e и т.д. После окончания минимизации по направлению последнего базисного вектора
    n
    e цикл повторяется. Таким образом, метод циклического покоординатного спуска заключается в изменении каждый раз одной переменной, тогда как другие остаются постоянными. Опишем этот метод :
    Пусть
    0
    X
    - некоторое начальное приближение, а
    0

    – некоторое положительное число, являющееся параметром алгоритма. Допустим, что уже известны точка
    n
    k
    E
    X

    и число
    0

    k

    при некотором
    0

    k
    . Обозначим
    )
    0
    ,...,
    0
    ,
    1
    ,
    0
    ,...,
    0
    (

    j
    e
    - единичный координатный вектор, у которого j-я координата равна 1, остальные равны нулю, j=1,…,n. Положим
    1
    ,

    

    




    n
    k
    n
    k
    j
    e
    S
    k
    j
    k
    k
    ( 2)
    где
    

    

    n
    k
    - целая часть числа k/n. Условие (2.13) обеспечивает циклический перебор координатных векторов
    n
    e
    e ,...,
    1
    , т.е.
    1 0
    e
    S

    ,…,
    n
    n
    e
    S


    1
    ,
    1
    e
    S
    n

    ,…,
    n
    n
    e
    S


    1 2
    ,
    1 2
    e
    S
    n


    Вычислим значение функции
    )
    ( X
    f
    в точке
    k
    k
    k
    S
    X
    X



    и проверим неравенство
    )
    (
    )
    (
    k
    k
    k
    k
    X
    f
    S
    X
    f



    ( 3)
    Если оно выполняется, то полагаем
    k
    k
    k
    k
    S
    X
    X




    1
    ,
    k
    k




    1
    ( 4)
    В случае если условие (3) не выполняется, вычисляем значение функции
    )
    ( X
    f
    в точке
    k
    k
    k
    S
    X
    X



    и проверяем неравенство
    )
    (
    )
    (
    k
    k
    k
    k
    X
    f
    S
    X
    f



    ( 5)
    При выполнении условия (5) полагаем
    k
    k
    k
    k
    S
    X
    X




    1
    ,
    1

    k

    =
    k

    ( 6)
    Будем считать (k+1) - ый этап удачным, если выполнилось хотя бы одно из условий (3) или (5). Если же ни одно из этих условий не выполнено, считаем (k+1) - ый этап неудачным и полагаем
    k
    k
    X
    X


    1
    ,
    
















    ,
    1 0
    ;
    ,
    1 1
    1
    n
    k
    или
    x
    x
    или
    n
    j
    при
    x
    x
    n
    j
    при
    n
    k
    k
    k
    k
    n
    k
    k
    k
    k
    k

    

    ( 7) где
    )
    1
    ;
    0
    (


    – фиксированное число, являющееся параметром алгоритма.
    Условие (7) означает, что если за один цикл из n этапов при переборе направлений всех координатных векторов
    n
    e
    e ,...,
    1
    с шагом
    k

    реализовался хотя бы один удачный этап, то длина шага
    k

    не дробится и сохраняется на
    протяжении по крайней мере следующего цикла из n этапов. Если же среди последних n этапов ни одного удачного не оказалось, то шаг
    k

    дробится.
    Опишем алгоритм метода покоординатного спуска.
    Шаг 0. Задать параметр точности
    0


    , начальный шаг
    0 0


    , коэффициент уменьшения шага
     
    1
    ;
    0


    , точку начального приближения
    n
    E
    X

    0
    , вычислить значение функции
    )
    (
    0
    X
    f
    , положив k=0.
    Шаг 1. Вычислить
    1

    

    



    n
    k
    n
    k
    j
    , где
    

    

    n
    k
    - целая часть числа
    n
    k
    и положить
    j
    k
    e
    S

    , где
    j
    e - единичный вектор, у которого j - я компонента равна 1, а остальные нулю.
    Шаг 2. Вычислить значение функции
    )
    ( X
    f
    в точке
    k
    k
    k
    S
    X
    X



    Шаг 3. Если
    )
    (
    )
    (
    k
    X
    f
    X
    f

    , то перейти к шагу 6, иначе вычислить
    )
    ( X
    f
    в точке
    k
    k
    k
    S
    X
    X



    .
    Шаг 4. Если
    )
    (
    )
    (
    k
    X
    f
    X
    f

    , то перейти к шагу 6, иначе – к шагу 5.
    Шаг 5. Если
    n
    j

    , то положить k=k+1 и перейти к шагу 1, иначе положить k=k-n+1,





    k
    k
    и перейти к шагу 1.
    Шаг 6. Положить
    1
    ),
    (
    )
    (
    ,
    ,
    1 1
    1








    k
    k
    X
    f
    X
    f
    X
    X
    k
    k
    k
    k


    Шаг 7. Если
    n
    j

    , то перейти к шагу 8, иначе к шагу 1.
    Шаг 8.
    Проверить условие достижения заданной точности




    n
    k
    k
    X
    X
    или




    ))
    (
    (
    n
    k
    k
    X
    f
    X
    f
    и если оно выполняется, то перейти к шагу 9, иначе – к шагу 1.
    Шаг 9. Завершить вычисления, полагая
    )
    (
    ,
    *
    *
    k
    k
    X
    f
    f
    X
    X


    Скорость сходимости данного метода невысока. Несмотря на это, метод циклического покоординатного спуска широко применяется на практике благодаря простоте реализации.

    Заметим, что такой метод работает плохо, если в выражение минимизируемой функции входят произведения
    j
    i
    x
    x

    , т.е. если имеет место взаимодействие между
    ,...,
    1
    ,
    n
    i
    x
    i

    Методы безусловной оптимизации, использующие
    производные функции
    Будем рассматривать задачу безусловной оптимизации предполагая, что функция
    )
    ( X
    f
    непрерывно дифференцируема на
    n
    E
    . Для ее решения воспользуемся простейшими итерационными процедурами вида
    k
    k
    k
    k
    S
    X
    X




    1
    ,
    ( 8) где направление убывания
    k
    S будем определять тем или иным способом с использованием информации о частных производных функции
    )
    ( X
    f
    в точке
    k
    X
    . Если
    k
    X
    не является стационарной точкой, т.е.
    0
    )
    (


    k
    X
    f
    , то в этой точке существует бесконечное множество направлений убывания. Какому из них отдать предпочтение? В курсе линейной алгебры доказывается, что при
    0
    )
    (


    k
    X
    f
    направление наибыстрейшего возрастания функции
    )
    ( X
    f
    в точке
    k
    X
    совпадает с направлением градиента
    )
    (
    k
    X
    f

    , а направление наибыстрейшего убывания, следовательно, с направлением антиградиента
    ))
    (
    (
    k
    X
    f


    Это свойство градиента и кладется в основу так называемых градиентных методов минимизации функции. Таким образом, при решении задачи с помощью итерационной процедуры (8) в качестве направления убывания целесообразно выбирать направление антиградиента.
    Как и все итерационные методы, они предполагают выбор начального приближения – некоторой точки
    n
    E
    X

    0
    . Общих правил этого выбора нет. В тех случаях, когда известна какая-либо априорная информация об области расположения точки минимума, начальное приближение
    0
    X
    выбирают поближе к этой области.

    Пусть начальная точка
    0
    X
    уже выбрана. Тогда градиентный метод заключается в построении последовательности точек
     
    k
    X
    по правилу
    ,.
    2
    ,
    1
    ,
    0
    ,
    0
    ),
    (
    1






    k
    X
    f
    X
    X
    k
    k
    k
    k
    k


    ( 9)
    Число
    k

    из (3.43) называют длиной шага или просто шагом градиентного метода. Если
    0
    )
    (


    k
    X
    f
    , то шаг
    0

    k

    можно выбрать так, чтобы
    )
    (
    )
    (
    1
    k
    k
    X
    f
    X
    f


    Существуют различные способы выбора величины
    k

    в методе (9). В зависимости от способа выбора
    k

    можно получить различные варианты градиентного метода. Далее рассмотрим из них наиболее употребительные на практике.
    Метод градиентного спуска
    В соответствии с основной идеей градиентного метода минимизирующая последовательность
     
    k
    X
    строится по правилу (9), т.е. в качестве направления убывания функции
    )
    ( X
    f
    выбирается направление антиградиента (
    )
    (
    k
    k
    X
    f
    S



    ), которое, как показано выше, обеспечивает в малой окрестности точки
    k
    X
    наискорейшее убывание функции
    )
    ( X
    f
    . В качестве длины шага
    k

    в этом варианте градиентного метода находится какое-либо число
    0

    k

    , обеспечивающее условие монотонного убывания функции
       
    k
    k
    X
    f
    X
    f


    1
    .
    ( 10)
    С этой целью задается какое-либо число



    k
    . При этом для каждого
    0

    k
    проверяют условие монотонного убывания (10), и в случае его нарушения величину



    k
    дробят до тех пор, пока не восстановится монотонность метода.
    Приведем алгоритм одного из вариантов метода градиентного спуска.

    Шаг 0. Задать параметр точности
    0


    , начальный шаг
    0


    , параметр алгоритма
    )
    1
    ;
    0
    (


    , выбрать
    n
    E
    X

    0
    , вычислить значение
    )
    (
    0
    X
    f
    , положить
    0

    k
    Шаг 1. Найти градиент
    )
    (
    k
    X
    f

    и проверить условие достижения заданной точности



    )
    (
    k
    X
    f
    . Если оно выполняется, то перейти к шагу 6, иначе - к шагу 2.
    Шаг 2. Найти новую точку
    X в направлении антиградиента
    )
    (
    k
    k
    X
    f
    X
    X




    и вычислить
    )
    ( X
    f
    Шаг 3. Проверить неравенство
     
     
    k
    X
    f
    X
    f

    ,
    Шаг 4. Если неравенство (3.45) выполняется, то положить
    X
    X
    k

    ,
    )
    (
    )
    (
    X
    f
    X
    f
    k

    ,
    1


    k
    k
    и перейти к шагу 1, иначе - перейти к шагу
    5.
    Шаг 5. Положить
    


    , где
    1 0



    и перейти к шагу 2.
    Шаг 6. Завершить вычисления, положив
    )
    (
    ,
    *
    *
    k
    k
    X
    f
    f
    X
    X


    Замечание. Вблизи стационарной точки функции
    )
    ( X
    f
    величина
    )
    ( X
    f

    становится малой. Это может привести к замедлению сходимости последовательности
     
    k
    X
    . Поэтому в (10) вместо вектора антиградиента
    ))
    (
    (
    k
    X
    f


    используют вектор единичной длины


    )
    (
    )
    (
    k
    k
    X
    f
    X
    f



    Пример 1. Проведем одну итерацию градиентного спуска для функции
    13 8
    6 4
    )
    (
    2 1
    2 2
    2 1





    x
    x
    x
    x
    x
    f
    из начальной точки
    


    



    0 1
    0
    X
    . Пусть
    1


    и параметр
    5
    ,
    0


    . Вычислим
    8
    )
    (
    0

    X
    f
    Найдем градиент функции
    )
    ( X
    f
    в точке
    0
    X :

    


    





    


    






    8 4
    8 8
    6 2
    )
    (
    0 2
    0 1
    0
    x
    x
    X
    f
    Определим новую точку
    )
    (
    0 0
    X
    f
    X
    X





    , вычислив ее координаты:
    5 4
    1
    )
    4
    (
    1
    )
    (
    1 0
    0 1
    1













    x
    X
    f
    x
    x
    8 8
    )
    8
    (
    0
    )
    (
    2 0
    0 2
    2











    x
    X
    f
    x
    x
    Вычислим
    200
    ))
    (
    (
    )
    (
    0 0





    X
    f
    X
    f
    X
    f

    Так как
    )
    (
    )
    (
    0
    X
    f
    X
    f

    , то выполняем дробление шага, полагая:
    5
    ,
    0 5
    ,
    0 1








    Снова вычисляем координаты следующей точки:
    3 4
    1 1




    x
    ,
    4 8
    2



    x
    и находим значение
    39
    )
    (

    X
    f
    Так как опять
    )
    (
    )
    (
    0
    X
    f
    X
    f

    , то еще уменьшаем величину шага, полагая
    25
    ,
    0 5
    ,
    0 5
    ,
    0








    . Вычисляем новую точку с координатами
    2 25
    ,
    0 4
    1 1




    x
    ;
    2 25
    ,
    0 8
    2



    x
    и значение функции в этой точке
    5
    )
    (

    X
    f
    . Поскольку условие убывания
    )
    (
    )
    (
    0
    X
    f
    X
    f

    выполнено, то считаем, что найдена очередная точка минимизирующей последовательности
    )
    2
    ;
    2
    (
    1

    X
    . Первая итерация завершена.

    1
    Лекция №6.
    Метод наискорейшего спуска
    В методе наискорейшего спуска минимизирующая последовательность
     
    k
    X
    также строится по правилу
    0
    ),
    (
    1





    k
    X
    f
    X
    X
    k
    k
    k
    k

    . Однако величина шага
    k

    находится в результате решения следующей вспомогательной задачи. На луче


    0
    ),
    (
    :







    k
    k
    n
    X
    f
    X
    X
    E
    X
    , выходящем из точки
    k
    X
    и направленным по антиградиенту, введем функцию одной переменной
    ))
    (
    (
    )
    (
    k
    k
    k
    X
    f
    X
    f







    и определим
    k

    из условия
    )
    (
    min
    )
    (
    0





    k
    k
    k


    ( 1)
    Рис. 1. Поиск оптимальной величины шага в направлении антиградиента..
    Таким образом, на каждой итерации метода наискорейшего спуска в направлении антиградиента
    )
    (
    k
    k
    X
    f
    S



    выполняется исчерпывающий спуск. Для решения вспомогательной задачи можно воспользоваться одним из методов одномерного поиска, например, методом поразрядного поиска.

    2
    Опишем алгоритм метода наискорейшего спуска.
    Шаг 0. Задать параметр точности
    0


    , выбрать
    n
    E
    X

    0
    , положить
    0

    k
    Шаг 1. Найти
    )
    (
    k
    X
    f

    и проверить условие достижения заданной точности



    )
    (
    k
    X
    f
    . Если оно выполняется, то перейти к шагу 3, иначе - к шагу
    2.
    Шаг 2. Определить шаг
    k

    , решив вспомогательную задачу
     


    0
    min




    k
    с использованием алгоритма поразрядного поиска. Найти очередную точку
    ),
    (
    1
    k
    k
    k
    k
    X
    f
    X
    X





    положить
    1


    k
    k
    и перейти к шагу 1.
    Шаг 3. Завершить вычисления, положив
    )
    (
    ,
    *
    *
    k
    k
    X
    f
    f
    X
    X


    1   2   3   4   5   6   7   8   9


    написать администратору сайта