Лекция3 Методы первого порядка.ppt
- Количество слайдов: 24
Тема 3 Методы оптимизации первого порядка Ø Метод тяжелого шарика Ø Метод спуска по градиенту Ø Метод сопряженных градиентов 2/14/2018 1
Общая характеристика методов первого порядка Ø Чем больше информации о функции известно, тем более эффективно можно достичь минимума, если этой информацией правильно распорядиться Ø Методы нулевого порядка фактически не располагают никакой информацией о функции (это черный ящик). Правда в процессе спуска они ее накапливают и используют для очередного спуска (например метод Розенброка осуществляет поворот координат в зависимости от результатов предыдущего спуска) Ø В методах первого порядка при выборе следующего направления спуска используется градиент функции в текущей точке и в предыдущей 2/14/2018 2
Ø Как известно, направление градиента является направлением наискорейшего возрастания функции в данной точке. Следовательно, противоположное направление является направлением наискорейшего убывания функции. Ø Это свойство в основном и используется для построения методов минимизации первого порядка. Ø При этом направление наискорейшего убывания в данной точке не всегда оказывается наилучшим для спуска к минимуму. Ø Поэтому для повышения эффективности вводят различные поправки. Ø При выборе очередного направления используют накопленную информацию о функции из предыдущих спусков. Ø Множество возможностей введения таких поправок определяет многообразие различных методов первого порядка. 2/14/2018 3
Метод тяжелого шарика • Представим себе котлован. Мы находимся на каком то склоне и отпускаем круглый камень. • По какой траектории он будет катиться? Видимо по такой которая здесь показана • Траектория задается функцией координат от времени • От чего зависит эта траектория? 2/14/2018 f(x 1, x 2) x 2 x 1 4
Уравнение траектории тяжелого шарика - скорость движения шарика - ускорение шарика - сила тяжести шарика - сила трения шарика 2/14/2018 уравнение движения шарика 5
Решение уравнения Можно использовать разные методы решения этой задачи Коши Мы используем то, что вам уже знакомо Задаем две точки Вычисляем градиент Подставляем в уравнение и получаем новую точку Подставляем 2/14/2018 получаем и т. д. 6
Вычисление градиента • Если функция задана аналитически, например • • • То просто пишем подпрограмму Procedure grad. F(var x, d. F: mas; n: byte); Begin df[1]: =6*x[1]; df[2]: =-2*x[2]; End; 2/14/2018 7
Вычисление градиента • Если функция задана в виде сложной программы, и производные невозможно просто вычислить • Function F(var x: mas, n: byte): real; • Begin • f: =sqr(x[1]-x[2])+2*sqr(x[1]) • End; • • • То пишем подпрограмму Procedure grad. F(var x, d. F: mas, n: byte, h: real); Begin df[1]: =(F(x[1]+h, x[2])-F(x[1]-h, x[2]))/(2*h); df[2]: =(F(x[1], x[2]+h)-F(x[1], x[2]-h))/(2*h); 2/14/2018 8 End;
Резюме Ø Если правильно подобрать управляющие параметры a, b, и метод решения задачи Коши то метод шарика может конкурировать с методами нулевого порядка. Однако на настройку параметров уходит довольно много времени. Ø Метод тяжелого шарика имеет лишь методическое значение, в силу больших затрат на настройку и реализацию алгоритма Ø Однако он показывает, как можно систематически спускаться к минимуму если знать градиент функции Ø Более эффективны методы спуска, в которых очередное направление выбирается с использованием градиента Ø Ниже мы рассмотрим общий алгоритм таких методов 2/14/2018 9
Общий алгоритм метода спуска по градиенту Ø 1. Задается начальная точка и начальный шаг h одномерного спуска. Ø 2. Вычисляется Ø x 2 g 0 d Ø 3. Выбирается направление x 1 2/14/2018 10
Общий алгоритм метода спуска по градиенту Ø 4. С помощью метода Мpp найти zm доставляющее x 2 Ø 5. Перейти в новую точку g 0 d zm x 1 2/14/2018 11
Общий алгоритм метода спуска по градиенту Ø 6 Проверим условие сходимости x 2 Ø 6 Если оно выполнено, то минимум достигнут в текущей точке, иначе повторяем с п. 2 g 0 d g 1 x 1 2/14/2018 12
В случае длинного оврага, если начальная точка выбрана неудачно, метод спуска по градиенту может сильно замедляться x 2 x 1 Т. е. он имеет точно те же недостатки что и метод спуска по координатам. Ломанная траектория идет по перпендикулярам к предыдушей 2/14/2018 13
Программная реализация • • • Type fun=function (x: mas): real Procedure MPSP(F: fun; var x 0: mas; eps, h: real; var fm: real); Procedure grad. F(var x, d. F: mas, n: byte, h: real); Begin df[1]: =(F(x[1]+h, x[2])-F(x[1]-h, x[2]))/(2*h); df[2]: =(F(x[1], x[2]+h)-F(x[1], x[2]-h))/(2*h); End; Var d: mas; 2/14/2018 14
Подпрограмма для функции (z) вдоль направления • function F 1(z: real): real; • begin • for k: =1 to n do • x[k]=x 0[k]+z*D[k]; • F 1: =F(x); • end; 2/14/2018 15
Реализация алгоритма спуска к минимуму • Begin • repeat • grad. F(x 0, d. F, n); • for i: =1 to n do D[i]: =-d. F[i]; • zm: =MPP(0, h, h/5); • x 0: =x; • dl: =zm; • for i: =1 to n do • dl: =dl+abs(d. F[i]); • end; • Until dl
Метод сопряженных направлений • Два направления и называются сопряженными относительно симметричной, положительно определенной матрицы G если • Известно, что для квадратичной функции можно построить n взаимно сопряженных направлений, спуск по которым приведет к точке минимума ровно за n шагов. • На этом свойстве основана большая группа методов - сопряженных градиентов, сопряженных направлений, параллельных касательных и др. 2/14/2018 17
Квадратичная функция Ее матрица симметрична Если матрица положительно определенная Тогда квадратичная функция имеет минимум 2/14/2018 18
2/14/2018 19
Сопряженные направления Для квадратичной функции n – переменных с положительно определенной матрицей G в каждой точке x 0 можно построить набор n сопряженных (относительно ее матрицы) векторов, последовательный спуск по которым приведет точно в минимум d 2 d 1 Вопрос в том, как их построить, если не знать G 2/14/2018 20
Метод параллельных прямых В заданной точке х0 выбираем произвольный вектор d 1 и делаем спуск в точку х1 Вблизи точки х0 выбираем точку х01 Из нее также делаем спуск в направлении d 1 до точки х11 d 2 Вектор d 2 проведенный через точки х1 х11 является сопряженным к d 1 2/14/2018 21
Метод Флетчера-Ривса 2/14/2018 22
Алгоритм метода Флетчера-Ривса Ø 1. Задается начальная точка и начальный шаг h одномерного спуска , вычисляется. Повторяем n раз: Ø 2. Делаем спуск zm Ø 3. Переходим в новую точку Ø 4. Вычисляем Ø 5. Выбирается направление Ø 6. Пересылаем Конец повтора 2/14/2018 Если zm< повторим с п. 1 23
Конец 2/14/2018 24


