Тема: Оптимизация
Для сдачи: 3 вопроса + 3 учебные задачи
Ограничения: 6 человек на 1 вопрос/задачу
Вопросы:
- Почему прямой перебор для поиска оптимума возможен только для одномерных задач?
- В чем суть метода Нелдера-Мида?
- Чем лучше и хуже методы, использующую вторую производную (метод Ньютона) методов, не использующих производных (симплекс методы)?
- Всегда ли градиентные методы достигают глобального минимума? Какие есть способы обхода локальных минимумов и как проверить, что минимум глобальный?
- Вы поставили в задаче границу, например, из физики, оказалось, что оптимум находится вблизи границы. Какие могут возникнуть особенности?
Задачи:
- Сгенерируйте данные с помощью функции {\cos(30x) + \sin(10x) + 0.3x^2} и гаусса с отклонением 0.2 и найдите глобальный минимум, реализовав какой-нибудь алгоритм самостоятельно. Так как это одномерная задача, то можно получить точный минимум, сравните вашу оценку с "реальным" минимумом.
- Возьмите любую функцию из списка, кроме функций Розенброка и сферы, и попытайтесь глобальный минимум, использовав любых 3 алгоритма, можно использовать scipy.optimize. Сравните результаты.
- Сгенерируйте данные с помощью некоторого полинома (выберете его сами) и гаусса с отклонением, каким хотите. Реализуйте метод наименьших квадратов, для функции фита возьмите полином другой степени. Для оптимизации используйте симплекс метод и любой стохастический. Постройте графики ошибок.
- Не всегда можно подобрать функцию для фитирования, в таких случаях можно ввести некоторый базис и оптимизировать его веса. Возьмите данные и используйте базис кубических B-сплайнов. Какую метрику стоит использовать при сравнении распределений? Как результат зависит от числа базисных функций? Для сравнения можете попробовать зафитировать данные с помощью суммы трех гауссов с разными средними, сигмами и нормировками.