|
Метод градиентного спуска
Метод градиента в чистом виде формирует шаг по переменным как функцию от градиента f(х) в текущей точке поиска. Простейший алгоритм поиска min f(x) записывается в векторной форме следующим образом:
или в скалярном виде:
Величина рабочего шага в направлении градиента h grad f(х) зависит от величины градиента, который заранее учесть трудно, и от коэффициента пропорциональности шага h, с помощью которого можно управлять эффективностью метода.
Поиск каждой новой точки состоит из двух этапов:
1) оценка градиента f(x) путем вычисления частных производных от f(х) по каждой переменной хj;
2) рабочий шаг по всем переменным одновременно.
Величина h сильно влияет на эффективность метода. Большей эффективностью обладает вариант метода, когда шаг по каждой переменной определяется направляющими косинусами градиента
где
В этом случае величина рабочего шага не зависит от величины модуля градиента, и ею легче управлять изменением h. В районе оптимума может возникать значительное "рыскание", поэтому используют различные алгоритмы коррекции h.
Наибольшее распространение получили следующие алгоритмы:
1) (без коррекции);
2)
3)
где a - угол между градиентами на предыдущем и текущем шаге; a1 и a2 – заданные пороговые значения выбираются субъективно (например, a1=p/6, a2=p/3).
Вдали от оптимума направление градиента меняется мало, поэтому шаг можно увеличить (второе выражение), вблизи от оптимума направление резко меняется (угол между градиентами f(x) большой), поэтому h сокращается (третье выражение).
Для оценки частных производных используются разностные методы:
· алгоритм с центральной пробой
· алгоритм с парными пробами
где gi – пробный шаг по i-й переменной, выбираемый достаточно малым для разностной оценки производной.
Первый алгоритм требует меньших затрат по сравнению со вторым (обычно затраты выражаются количеством вычислений критерия оптимальности), но позволяет получить решение менее точно, чем второй, и эта погрешность зависит от величины пробного шага.
Условием окончания поиска может являться малость модуля градиента f(x), т. е. |gradf(x)| < e.
Пример 60. Требуется найти минимум функции f(x, y) = x3+2y2-3x-4y, завершив вычисления при погрешности e = 0,01, выбрав начальное приближение х(0) = - 0,5 и у(0) = -1, коэффициент шага h = 0.1.
Решение. Необходимые начальные данные приведены в условии задачи. Для вычислений выберем работу с шагом без коррекции (h = const).
Найдем частные производные функции:
Следовательно,
Значит,
Переменные определяются по формулам:
Результаты вычислений занесем в табл. 17
Таблица 17
п
| x
| y
| f(x, y)
| df/dx
| df/dy
| |grad f|
|
|
|
|
|
|
|
| 1
| -0,500
| -1,000
| 7,3750
| -2,2500
| -8,0000
| 8,3104
| 2
| -0,275
| -0,200
| 1,6842
| -2,7731
| -4,8000
| 5,5435
| 3
| 0,002
| 0,280
| -0,9701
| -3,0000
| -2,8800
| 4,1586
| 4
| 0,302
| 0,568
| -2,5061
| -2,7258
| -1,7280
| 3,2274
| 5
| 0,575
| 0,741
| -3,4003
| -2,0085
| -1,0368
| 2,2603
| Продолжение табл. 17
|
|
|
|
|
|
| 6
| 0,776
| 0,844
| -3,8120
| -1,1947
| -0,6221
| 1,3469
| 7
| 0,895
| 0,907
| -3,9508
| -0,5958
| -0,3732
| 0,7031
| 8
| 0,955
| 0,944
| -3,9877
| -0,2651
| -0,2239
| 0,3471
| 9
| 0,981
| 0,966
| -3,9967
| -0,1111
| -0,1344
| 0,1744
| 10
| 0,992
| 0,980
| -3,9990
| -0,0453
| -0,0806
| 0,0925
| 11
| 0,997
| 0,988
| -3,9997
| -0,0183
| -0,0484
| 0,0517
| 12
| 0,999
| 0,993
| -3,9999
| -0,0073
| -0,0290
| 0,0299
| 13
| 1,000
| 0,996
| -4,0000
| -0,0029
| -0,0174
| 0,0177
| 14
| 1,000
| 0,997
| -4,0000
| -0,0012
| -0,0104
| 0,0105
| 15
| 1,000
| 0,998
| -4,0000
| -0,0005
| -0,0063
| 0,0063
|
В последней точке модуль градиента меньше заданной погрешности
(0,0063 < 0.01), поэтому поиск прекращается.
Итак, и
Пример 61. Требуется найти минимум функции завершив вычисления при погрешности e = 0,5, выбрав начальное приближение х(0) = 0 и у(0) = 0, коэффициент шага h = 0.1.
Решение. Необходимые начальные данные приведены в условии задачи. Для вычислений выберем работу с шагом без коррекции (h = const).
Результаты вычислений занесем в табл. 18.
Таблица 18
п
| x1
| x2
| f(x1, x2)
| df/d x1
| df/d x2
| |grad f|
| 1
| 0,0000
| 0,0000
| 1,0000
| 1,0000
| 1,0000
| 1,4142
| 2
| -0,1000
| -0,1000
| 0,8487
| 0,6187
| 0,4187
| 0,7471
| 3
| -0,1619
| -0,1419
| 0,8045
| 0,4143
| 0,1706
| 0,4480
| 4
| -0,2033
| -0,1589
| 0,7880
| 0,2895
| 0,0604
| 0,2957
| 5
| -0,2323
| -0,1650
| 0,7806
| 0,2077
| 0,0123
| 0,2080
| 6
| -0,2530
| -0,1662
| 0,7768
| 0,1515
| -0,0072
| 0,1517
| 7
| -0,2682
| -0,1655
| 0,7748
| 0,1118
| -0,0138
| 0,1126
| 8
| -0,2794
| -0,1641
| 0,7737
| 0,0831
| -0,0146
| 0,0844
| 9
| -0,2877
| -0,1626
| 0,7731
| 0,0621
| -0,0131
| 0,0635
| 10
| -0,2939
| -0,1613
| 0,7727
| 0,0466
| -0,0110
| 0,0479
|
В последней точке модуль градиента меньше заданной погрешности, поэтому поиск прекращается.
Итак, и
Рассмотрим градиентный метод минимизации функции с дроблением шага.
Пусть f(x) выпуклая дифференцируемая во всем n-мерном пространстве функция и требуется найти её точку минимума х*. Выбрав произвольное начальное приближение , построим последовательность
(9)
где величины hk (параметрические шаги) выбираются достаточно малыми для того, чтобы выполнялось условие
(10)
В качестве условия окончания вычислений обычно используется близость к нулю градиента , т. е. выполнение неравенств
или (11)
(e - заданное достаточно малое число), после чего полагают
Если при некотором k условие (10) нарушается, то шаг hk уменьшают (дробят) в заданное число раз до выполнения неравенства (10) и продолжают вычисления.
Пример 62. Минимизировать функцию методом градиентного спуска с дроблением шага, завершив вычисления при
Решение. Выбрав начальное приближение х(0) = (0, 0) и h0 = 1, построим последовательность (9), записывая результаты вычислений в табл. 19
Таблица 19
k
|
|
| f(x(k))
|
|
| hk
| e
| Примечание
| 0
| 0
| 0
| 1
| 1
| 1
| 1
|
| Условие (10) нарушено. Уменьшаем h0 в 2 раза.
|
| -1
| -1
| 3,1353
| -
| -
|
|
|
|
| 0
| 0
| 1
| 1
| 1
| 0,5
|
| Условие (10) нарушено. Уменьшаем h0 в 2 раза.
|
| -0,5
| -0,5
| 1,118
| -
| -
|
|
|
| 1
| 0
| 0
| 1
| 1
| 1
| 0,25
|
| Условие (10) выполнено
| -0,25
| -0,25
| 0,794
| 0,1065
| -0,3935
| 0,25
| 0,4077
| 2
| -0,2766
| -0,1516
| 0,7741
| 0,0984
| 0,0451
| 0,25
| 0,1082
| Условие (10) выполнено
| 3
| -0,3012
| -0,1629
| 0,7725
| 0,0262
| -0,023
| 0,25
| 0,0349
| Точность достигнута(11)
|
Итак,
Пример 63. Минимизировать функцию f(x, y) = x3+2y2-3x-4y, методом градиентного спуска с дроблением шага, завершив вычисления при
Решение. Выбрав начальное приближение х(0) = (-0.5, -1) и h0 = 0.1, построим последовательность (9), записывая результаты вычислений в табл. 20.
Таблица 20
k
| x
| y
| f(x, y)
|
|
| hk
| e
| Примечание
|
|
|
|
|
|
|
|
|
| 1
| -0,5000
| -1,0000
| 7,3750
| -2,2500
| -8,0000
| 0,1
|
|
| -0,2750
| -0,2000
| 1,6842
| -2,7731
| -4,8000
| 0,1
| 5,5435
| Условие (10) выполнено
| 2
| 0,0023
| 0,2800
| -0,9701
| -3,0000
| -2,8800
| 0,1
| 4,1586
| Условие (10) выполнено
| Продолжение табл. 20
|
|
|
|
|
|
|
|
| 3
| 0,3023
| 0,5680
| -2,5061
| -2,7258
| -1,7280
| 0,1
| 3,2274
| Условие (10) выполнено
| 4
| 0,5749
| 0,7408
| -3,4003
| -2,0085
| -1,0368
| 0,1
| 2,2603
| Условие (10) выполнено
| 5
| 0,7757
| 0,8445
| -3,8120
| -1,1947
| -0,6221
| 0,1
| 1,3469
| Условие (10) выполнено
| 6
| 0,8952
| 0,9067
| -3,9508
| -0,5958
| -0,3732
| 0,1
| 0,7031
| Условие (10) выполнено
| 7
| 0,9548
| 0,9440
| -3,9877
| -0,2651
| -0,2239
| 0,1
| 0,3471
| Условие (10) выполнено
| 8
| 0,9813
| 0,9664
| -3,9967
| -0,1111
| -0,1344
| 0,1
| 0,1744
| Условие (10) выполнено
| 9
| 0,9924
| 0,9798
| -3,9990
| -0,0453
| -0,0806
| 0,1
| 0,0925
| Условие (10) выполнено
| 10
| 0,9969
| 0,9879
| -3,9997
| -0,0183
| -0,0484
| 0,1
| 0,0517
| Условие (10) выполнено
| 11
| 0,9988
| 0,9927
| -3,9999
| -0,0073
| -0,0290
| 0,1
| 0,0299
| Точность достигнута(11)
|
Итак,
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|