Лекция 13. Глобальная оптимизация Краткое содержание 1. Локальный и глобальный минимум 2. Генетические алгоритмы 3. Метод отжига Проблемы глобальной оптимизации Локальный минимум: c – локальный минимум функции 𝑦 = 𝑓(𝑥), если ∃𝛿 > 0 такое, что 𝑓 𝑥 − 𝑓 𝑐 ≥ 0 для ∀𝑥 ∈ 𝑐 − 𝛿, 𝑐 + 𝛿 Глобальный минимум: c – глобальный минимум функции 𝑦 = 𝑓(𝑥), если 𝑓 𝑥 − 𝑓 𝑐 ≥ 0 для ∀𝑥 ∈ 𝐷(𝑓) При оптимизации параметров модели важно избегать локальных минимумов и искать глобальный Методы глобальной оптимизации • Генетические алгоритмы • Метод отжига • Комбинированные методы • Символьная регрессия Локальный минимум Глобальный минимум Часть 1. Генетические алгоритмы Генетические алгоритмы Генетические алгоритмы – алгоритмы нелинейной оптимизации. Ключевые характеристики: • Работа с большим количеством потенциальных решений («популяцией») • Использование целевой функции для отбора членов популяции • Получение новых членов популяции операциями «скрещивания» (комбинированием) и «мутациями» (случайные изменения) Ср. с процессом эволюции в живой природе (идея генетического алгоритма была взята именно из биологии) Генерация исходной (случайной) популяции Отбор части популяции с использованием целевой функции ДА Желаемый результат достигнут? НЕТ Вернуть результат Получение недостающей части популяции скрещиванием и мутациями Пример: функция Растригина 𝑓 𝑥1 , 𝑥2 = 20 + 𝑥12 + 𝑥22 − 10 cos 2𝜋𝑥1 − 10 cos 2𝜋𝑥2 Имеет множество локальных минимумов и один глобальный Метод Левенберга-Марквардта и ему подобные зачастую находит локальный минимум Пример: функция Растригина Шаг 1. Создание начальной популяции (0) (0) 𝑥1 = 𝑥2 = 10 (𝑖) (0) 𝑥1 = 𝑥1 + 𝑁𝑖 0; 𝜎 2 (𝑖) (0) 𝑥2 = 𝑥2 + 𝑁𝑖 (0; 𝜎 2 ) Шаг 2. Отбор (𝑖) (𝑖) Целевая функция – значение функции Растригина для 𝑥1 и 𝑥2 Шаг 3. Скрещивание и мутации Ведётся на основе лучших 5-10% членов популяции Скрещивание: Мутация: (𝑖) (𝑚) (𝑖) (𝑚) 𝑥1 = (1 − 𝑤1 )𝑥1 (𝑛) +𝑤1 𝑥1 ; 𝑤1 ∈ [0; 1] (𝑛) 𝑥2 = (1 − 𝑤1 )𝑥2 +𝑤2 𝑥2 ; 𝑤2 ∈ [0; 1] (𝑖) 𝑖 ,∗ = 𝑥1 + 𝑁(0; 𝜎 2 ) 𝑖 ,∗ = 𝑥2 + 𝑁(0; 𝜎 2 ) 𝑥1 𝑥2 (𝑖) Пример: функция Растригина Сортировка в GNU Octave Пример 1. Сортировка чисел >> x = randi([1 100], 1, 7) x = 2 54 65 28 49 >> sort(x) 2 28 49 54 54 54 61 61 65 Пример 2. Сортировка строк матрицы по сумме значений >> x(ind,:) >> x = randi([-10 10], 4,3) -5 -5 x = 5 9 -9 -5 -10 -5 -5 -1 5 9 -1 9 10 -1 9 -5 -10 5 >> s = sum(x,2)' s = 5 -11 18 -10 >> [s, ind] = sort(s) % s = s(ind) s =-11 -10 5 18 ind =2 4 1 3 -1 5 -9 10 Часть 2. Алгоритм имитации отжига Алгоритм имитации отжига Алгоритм имитации отжига Основные шаги 1. Задать начальное приближение 𝑥 2. 𝑇 = 𝑇(𝑘), где 𝑘 ≥ 1 – номер итерации 3. 𝑥𝑘+1 = 𝐴(𝑥𝑘 , 𝑇), где 𝐴(𝑥𝑘 , 𝑇) – оператор, случайным образом меняющий точку 4. Принимать или нет новое приближение? 𝑃 𝑥𝑘 → 𝑥𝑘+1 𝑥𝑘 = 1 при Δ𝐹 ≤ 0 , где Δ𝐹 = 𝐹 𝑥𝑘+1 − 𝐹(𝑥𝑘 ) Δ𝐹 exp − при Δ𝐹 > 0 𝑇 5. Если результат достигнут, то завершить работу, если нет – вернуться к шагу 2 (перейти к слеующей итерации) Шаг 4 обеспечивает выход из локальных минимумов Различия между разными вариантами алгоритма имитации отжига 1. Оператор 𝐴(𝑥, 𝑇), генерирующий новое приближение 2. Функция 𝑇(𝑘) (режим/расписание охлаждения) Виды отжига Больцмановский отжиг • 𝑇 𝑘 = 𝑇0 ln(1+𝑘) • 𝐴 𝑥 = 𝑥 + 𝑇 ⋅ 𝑁(0; 1) 𝑁(0; 1) – стандартное нормальное распределение Быстрый отжиг 𝑇 • 𝑇 𝑘 = 0 𝑘 • 𝐴 𝑥 = 𝑥 + 𝑇 ⋅ 𝐶(0; 1) 𝐶(0; 1) – распределение Коши Распределение Коши 1 𝜋 • 𝐹 𝑥 = atan 𝑥−𝑥0 𝛾 1 𝑈− 2 • 𝑥0 + 𝛾 tan 𝜋 𝐶(𝑥0 ; 𝛾) • 𝐶 0; 1 ≡ 𝑡(1) + 1 2 ∼ У C(0;1) «хвосты» длиннее, чем у N(0;1) => возможно более быстрое охлаждение Виды отжига Одномерная функция Растригина 𝐹 𝑥 = 𝑥 2 + 10 − 10 cos(2𝜋𝑥) Больцмановский отжиг T0=1000; x0=20000 Отжиг Коши T0=10; x0=20000