Обзор приложений задач оптимизации, реальных постановок задач оптимизации и результатов.
Практика: задача наименьших квадратов. ( code)
Знакомство с современными практическими инструментами для оптимизации и анализа данных.
Практика: работа с библиотекой CVXPY ( code)
Сравнение библиотек и фреймворков для машинного обучения.
Практика: сравнение SciPy и CVXPY в задаче условной оптимизации. ( code)
Матричное дифференцирование 1
Практика: матрично - векторное дифференцирование 1 ( code)
Матричное дифференцирование 2
Практика: матрично - векторное дифференцирование 2 ( code)
Автоматическое дифференцирование
Практика: работа с библиотеками для автоматического дифференцирования - jax, pytorch, autograd. ( code)
Выпуклость. Выпуклые множества.
Практика: выпуклость. Выпуклые множества в практических задачах. ( code)
Выпуклые функции. Сильно выпуклые функции.
Практика: выпуклые функции. Сильно выпуклые функции. ( code)
Методы нулевого порядка и примеры задач глобальной оптимизации.
Практика: подбор гиперпараметров модели машинного обучения в Keras с помощью Optuna. ( code)
Условия оптимальности. Метод модифицированной функции Лагранжа. Концепция методов барьерных и штрафных функций.
Практика: аналитическое решение задачи наименьших квадратов с ограничениями - равенствами. Поиск аналитического центра множества. Минимизация квадратичной функции с ограничениями - равенствами методо модифицированной функции Лагранжа. ( code)
Практика: Support Vector Machine как задача оптимизации. Lasso regression. ( code)
Метод Ньютона. ( code)
Практика: реализация демпфированного метода Ньютона. Исследование сходимости. Сравнение с другими методами. ( code)
Квазиньютоновские методы. ( code)
Практика: бенчмаркинг квазиньютоновских методов. ( code)
Задача линейного программирования.
Практика: построение простейшей рекомендательной системы для просмотра TED видеороликов как задача линейного программирования. Практика с библиотекой pulp. ( code)
Симплекс метод.
Практика: планирование производства как задача линейного программирования в PyOMO. Blending problem. ( code)
Введение в Mixed Integer Programming.
Практика: реализация решения задачи о рюкзаке и о расстановке королев на шахматной доске. ( code)
Nesterov Momentum и Polyak Momentum. Ускоренный градиентный метод.
Практика: исследование сходимости ускоренных методов в обучении нейронных сетей. ( code)
Адаптивные стохастические методы. Adam, RMSProp, AdaDelta.
Практика: исследование сходимости адаптивных методов в обучении нейронных сетей. ( code)
Нейронные сети.
Практика: Дообучение нейронных сетей aka transfer learning. Neural style transfer.
Генеративные неронные сети. Специфика обучения.
Практика: использование GANов для обучения плотности распределения точек на плоскости. Генерация новых покемонов с помощью глубоких нейронных сетей.
Занятие 10 ( video)
Ландшафт функции потерь нейронной сети.
Практика: визуализация проекции функции потерь нейронной сети на прямую и плоскость. ( code)
Портфельная теория Марковица.
Практика: оптимизация финансового портфеля на примере реальных данных фондового рынка. ( code)
Альтернированная минимизация.
Практика: задача matrix completion ( code)
Подведение итогов. Ответы на вопросы