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