Файл: Сахарова Людмила Викторовна, Лукьянова Галина Викторовна Методы оптиизации для машинного обучения учебное пособие.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 06.12.2023

Просмотров: 957

Скачиваний: 18

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
точками золотого сечения отрезка [аb]. Это и объясняет название рассматриваемого метода.2. На каждой итерации исключения отрезков с пробными точками (2.15) одна из них переходит на следующий отрезок и значение(x) в этой точке вычислять не следует. Если новым отрезком становится [ах2], то на него переходит пробная точка исходного отрезка, становясь его второй пробной точкой (х2= х1) (рис. 2.7). В случае перехода к отрезку [х1b] пробная точка исходного отрезка стано­вится первой пробной точкой отрезка [х1b].3. Легко проверить, что х1=а+b–х2 , и x2=а+b–х1. Поэтому на каждой итерации метода золотого сечения недостающую пробную точку нового отрезка можно найти по перешедшей на него пробной точке с помощью сложения и вычитания, не используя формул (2.15).4. В конце вычислений по методу золотого сечения в качестве приближенного значения х* можно взять середину последнего из полученных отрезков .На каждой итерации отрезок поиска точки минимума уменьшается в одном и том же отношении , поэтому в результате п итераций его длина становится . Таким образом, точность n определения точки х* после п итераций находят из равенства , (2.16)а условием окончания поиска точки х* с точностью  служит неравен­ство n  .Опишем алгоритм метода золотого сечения.Шаг 1. Найти х1 и х2 по формулам (2.15). Вычислить(x1) и (x2). Положить , .Шаг 2. Проверка на окончание поиска: если n > , то перейти к шагу 3, иначе – к шагу 4.
Шаг 3. Переход к новому отрезку и новым пробным точкам. Если(x1)  (x2) то положить b=x2 , x2=x1 , (x2)  (x1), x1=b(ba) и вычислить(x1), иначе – положить a=x1, x1= x2 , (x1) = (x2), x2=b+(ba) и вычислить (x2). Положить n = n и перейти к шагу 2. Шаг 4. Окончание поиска: положить , .Пример 2.6. Метод золотого сечения.Решить задачу, приведенную в примере 2.3: (x) =x4 +еxmin, x [0; 1],  = 0, 1.И т е р а ц и я 1. Шаг 1. Находим: x1 = 0,382, x2= 0,618, (x1) = 0,704,(x2) = 0,685, n = 0,5. Шаг 2.n = 0,5 >  =0,1, поэтому переходим к шагу 3.Шаг 3.(x1) > (x2), поэтому полагаем a= 0,382, x1 = 0,618, (x1) = 0,685, x2= 0,764, n = 0,309 и вычисляем (x2) = 0,807. Переходим к следующей итера­ции, начиная с шага 2.Результаты вычислений на остальных итерациях представлены в табл. 2.3 (стрелки указывают значения, переходящие на данную итерацию с предыду­щей).Таблица 2.3

Номер

Итерации


a


b


n


x1


x2


f (x1)


(x2)


Сравнение (x1) и (x2)


2

0,382

1,000

0,309

0,618

0,764

0,685

0,807

(x1) < (x2)

3

0,382

0,764

0,191

0,528

0,618

0,668

0,685

(x1) < (x2)

4

0,382

0,618

0,118

0,472

0,528

0,673

0,668

(x1) > (x2)

5

0,472

0,618

0,073

0,073 < 0,1 – точность достигнута

Таким образом, , *(0,55) = 0,67 (сравните с решением примеров 2.3–2.5). Замечание. Число итераций, необходимое для достижения за­данной точности , можно найти из условия n   с учетом соотноше­ния (2.16): .Так как N вычислений (x) позволяют выполнить N 1 итераций метода золотого сечения, то достигнутая в результате этих вычислений точность определения х* составляет . (2.17)Второй метод деления отрезка пополам. Этот метод, использующий на каждой итерации три пробные точки, обеспечивает последо­вательное уменьшение длины отрезка, содержащего х*, ровно вдвое. Рассмотрим способ исключения отрезков, применяемый в рассматриваемом методе.Разделим отрезок [ab] на четыре равные части пробными точками , i=1,2,3. Сравним значения (x1) и (x2). Если (x1)  (x2), то уменьшенный вдвое отрезок поиска точки х* найден – это [ах2]. Если (x1) > (x2), то произведем еще одно сравнение значений (x): при (x2)(x3), перейдем к отрезку [x1х3],а в противном случае – к отрезку [x2b].Отметим, что каким бы ни оказался новый отрезок, одна из уже использованных пробных точек переходит на его середину, становясь новой точкой x2 . Таким образом, для проведения следующей итерации на вновь полученном отрезке потребуется вычисление не более двух новых значений(x) (либо только в точке x1, либо еще и в точке x3).Перечислим основные шаги алгоритма второго метода деления отрезка пополам.Шаг 1. Положить . Вычислить значение (x2) и перейти к шагу 2. Шаг 2. Положить . Вычислить значение (x1) и перейти к шагу 3.Шаг 3. Сравнить (x1) и (x2). Если (x1)  (x2), то продолжить поиск на отрезке [
а;x2], положив b= x2, x2= x1, (x1) = (x2), и перейти к шагу 5, иначе – положить , вычислить значение (x3) и перейти к шагу 4. Шаг 4. Сравнить (x2) и (x3). Если (x2)  (x3), то перейти к от­резку [x1x3], положив a= x1, b =x3, иначе – продолжить поиск на от­резке [x2b], положив а =x2, x2 = x3, (x2)= (x3). Перейти к шагу 5.Шаг 5. Проверка на окончание поиска. Вычислить и сравнить с . Если n> , то перейти к следующей итерации, вернув­шись к шагу 2, иначе – завершить поиск, положив х*x2 , *(x2). Пример 2.7. Второй метод деления отрезка пополам. Решить задачу, приведенную в примере 2.3: (x) = x4 +ex min, x[0;1], =0,1. И т е р а ц и я 1. Шаг 1. Находим x2=0,5, (x2) = 0,669. Переходим к шагу 2.Шаг 2. Определяем x1 = 0,25, (x1) = 0,783. Переходим к шагу 3.Шаг 3.(x1) > (x2), поэтому полагаем x3 = 0,75, вычисляем (x3) = 0,789 и переходим к шагу 4.Шаг 4.(x1) < (x2), поэтому полагаем а = 0,25, b = 0,75 и переходим к шагу 5.Шаг 5. Находим n= 0,25 > 0,1, т.е. переходим к следующей итерации, начиная с шага 2.Результаты вычислений на остальных итерациях записаны в табл. 2.4.Таблица 2.4

Номер итера­ции


а

b

n

x1

x2

x3

(x1)

(x2)

(x3)

Сравнение (x1) и (x2)


2


0,250


0,750


0,25


0,375


0,500


0,625


0,707


0,669


0,688


(x1) > (x2)

(x2) < (x3)

3


0,375


0,625


0,13


0,438


0,500


0,563


0.669


0,669


0,670


(x1) > (x2)

(x2) < (x3)

4


0,438


0,563


0,06


0,06 < 0,1 – точность достигнута


Таким образом, x*x2 = 0,5, *(x2) = 0,67. Сравните этот ответ с ре­зультатами решения предыдущих примеров.Замечание. На первой итерации второго метода деления отрезка пополам вычисляется не более трех значений (x) а на ос­тальных – не более двух. Поэтому N вычислений (x) гарантируют осуществление (N–1)/2 итераций, и достигнутая точность определе­ния x* составляет . (2.18)Сравнение методов исключения отрезков и перебора. При срав­нении прямых методов минимизации обычно учитывают количество N значений (x), гарантирующее заданную точность определения точки х* тем или иным методом. Чем меньше N, тем эффективнее считается метод. При этом вспомогательные операции такие, как выбор пробных точек, сравнение значений (x) и т.п., не учитываются. Во многих прак­тических случаях определение значений целевой функции требует больших затрат (например, времени ЭВМ или средств для проведения экспериментов) и вспомогательными вычислениями можно пренеб­речь. А эффективность метода минимизации особенно важна именно в таких случаях, поскольку позволяет сократить указанные затраты.Эффективность методов минимизации можно также сравнивать, на основании гарантированной точности (N) нахождения точки х*, которую они обеспечивают в результате определения N значений (x). Из анализа формул (2.10), (2.14), (2.17) и (2.18) следует, что наиболее эффектив­ным из сравниваемых методов является метод золотого сечения, за ним идут методы деления отрезка пополам и наименее эффективен метод перебора. Этот вывод иллюстрирует табл. 2.5 значений достиг­нутой точности (N) в зависимости от количества N найденных значе­ний(x) на отрезке длины 1 для указанных методов.Таблица 2.5

Методы минимизации



Количество найденных значений (x)




N = 5

N = 11


N = 21


N = 51

Метод золотого сечения

0,073


4,1 10–3


3,3 10–5


1,8 10–11


Методы деления отрезка пополам *)

0,125


1,6 10–2


4,9 10–4


1,5 10–8


Метод перебора

0,250

0,100

0,050

0,020