Рецензия на книгу “Байесовская оптимизация с примерами из библиотек Python”

3ff89e9197549abd143161b75fcd615b.jpeg

Байесовская оптимизация (Bayesian Optimization) призвана решить проблему исследования данных от «черного ящика» путем объединения вероятностного машинного обучения (ML) и теории принятия решений. Несмотря на то, что BayesOpt доказала свою эффективность во многих реальных задачах оптимизации «черного ящика», многие практикующие ML-специалисты все еще сторонятся этой методики, полагая, что для этого им нужны более высокие компетенции. Теперь у вас есть возможность получить нужные знания с новой книгой от издательства Manning в русском переводе от Alist в партнерстве с БХВ.

***

Начнем, как всегда, со ссылки на страницу книги «Байесовская оптимизация с примерами из библиотек Python» на сайте издательства.
Напомним, на все книги по компьютерным технологиям от издательств «БХВ Петербург», «Alist» и «Фолиант» доступен промокод SSPSOFT на скидку 25% как подарок читателям Хабра от нашего блога. 

Авторское превью темы BayesOpt на YouTube

Перед приобретением книги рекомендую ознакомиться с вебинаром автора, Куана Нгуена, под названием «Bayesian Optimization: Fundamentals, Implementation, and Practice», представленным на конференции PyData Global 2022. В этом видео автор подробно раскрывает свое видение методики байесовской оптимизации с использованием Python и его библиотек, что позволит вам получить представление о содержании книги и подходе автора к данной теме.

Вебинар доступен по ссылке: https://www.youtube.com/watch? v=ImXOdgEgaTM.
Для лучшего понимания этого видео можно включить субтитры на английском языке, а также установить автоперевод субтитров на русский язык в меню настройки видео. 

Введение

Оптимизация анализа данных от источника, относящегося к так называемому «черному ящику» относится к ситуациям, когда нам нужно минимизировать некоторый процесс «вход-выход», но мы не можем заглянуть внутрь объекта и понять, каким образом вывод данных функционально связан с их поступлением на вход «черного ящика».

Проблема усложняется тем, что стоимость оценки вложенной в «черный ящик» функции измеряется в допустимом финансовом бюджете, времени или других критически важных параметрах, что ограничивает размер набора данных, который мы можем собрать за разумное время.

ТЕРМИНОЛОГИЯ: Байесовская оптимизация (BayesOpt) — это метод ML, который одновременно поддерживает прогностическую модель для получения информации о функции цели и позволяет принимать решения о том, как получить новые данные для уточнения наших знаний о цели, используя байесовскую теорию вероятности и теорию принятия решений.

Саму задачу оптимизации данных от «черного ящика» можно встретить во многих проектах, и вот основные примеры:

  • Тонкая настройка гиперпараметров в моделях машинного обучения.

    • Задача — обеспечение высокого качества ML модели (например, точность на валидационном наборе).

    • Входные данные — значения гиперпараметров (количество слоев сети, число деревьев и т.д.).

    • Важно учесть: это будет дорогостоящая работа, так как для каждой очередной оценки потребуется переобучать модель.

  • Рекомендательные системы.

    • Задача — добиться удовлетворенности пользователя от предложенного товара.

    • Важно учесть: тестировать рекомендации слишком часто нельзя, чтобы не раздражать пользователя.

  • Научные исследования — поиск новых лекарств или молекул с заданными свойствами.

Книга призвана направить вас в мир BayesOpt, включая основы, как запустить эту методику на Python и пройтись по примерам наиболее общих практик. Издание будет полезна аналитикам в сфере ML, которые интересуются настройкой гиперпараметров, A/B-тестированием или в целом экспериментами по принятию оптимальных решений. Хотя большинство «фоновых знаний», необходимых для усвоения информации из книги, будут в ней же и рассмотрены, читателям желательно иметь представление по общим понятиям в ML, такими как обучающие данные, прогностические модели, многомерные нормальные распределения и т.д.

В целом, содержание книги можно разделить на следующие темы:

  • Объясняется теория байесовских методов и процесса оптимизации.

  • Приведены практические примеры применения на Python, используя библиотеки.

  • Рассматриваются прикладные задачи, такие как настройка гиперпараметров моделей машинного обучения и работа с дорогостоящими симуляциями или лабораторными экспериментами.

BayesOpt: когда классические методы оптимизации не работают

Автор объясняет, почему стандартные подходы, такие как Grid Search и Random Search, бывают неэффективны:

  • Grid Search выполняет оценки по заранее определенным точкам, что ведет к риску потери ресурсов.

  • Random Search действует «наугад» и может пропустить значимые участки пространства поиска в данных.

В качестве альтернативы автор демонстрирует, как Bayesian Optimization стратегически выбирает новые точки для оценки, используя обновляемую статистическую модель (Gaussian Process). Такой подход позволяет сэкономить ресурсы и быстрее находить глобальные оптимумы.

Книга детально разбирает ключевые моменты байесовской оптимизации:

  1. Машинное обучение на основе Gaussian Process (GP):

    • GP позволяет моделировать целевую функцию с учетом неопределенности предсказаний, чего не умеют классические модели (например, нейросети или решающие деревья).

    • Прогноз GP представлен средним значением и доверительным интервалом (стандартным отклонением), который помогает принимать решения.

  2. Баланс между «эксплуатацией» и «исследованием» (Exploitation vs. Exploration):

    • Эксплуатация это выбор области, где уже наблюдается высокий результат.

    • Исследование предполагает изучение ранее незатронутых областей с целью поиска глобального оптимума.

    • В книге обсуждается, как стратегии принимают решения о следующей точке на основе метрик, таких как Expected Improvement, Upper Confidence Bound и Thompson Sampling.

  3. Цикл оптимизации:

    • Предполагает обновление Gaussian Process после каждой новой оценки функции.

    • Также предполагается выбор следующей точки для исследования на основе политики оптимизации.

Когда не стоит использовать BayesOpt

Автор дает пояснение, когда не стоит использовать BayesOpt для вашей задачи. Как отмечено выше, BayesOpt полезна, когда ограниченные ресурсы не позволяют ML-специалитам многократно оценивать исследуемую функцию. Если это не так и оценка функции обходится дешево, то нет причин быть экономными в том, как наблюдаем за функцией внутри «черного ящика».

Если можно тщательно проанализировать функцию на плотной выборке, это обеспечит нахождение глобального оптимума. В противном случае можно использовать другие стратегии, такие как алгоритм DIRECT или эволюционные алгоритмы, которые часто превосходят оптимизацию BayesOpt при «дешевых» оценках. Кроме того, если имеется информация о градиенте цели, лучше подойдут алгоритмы, основанные на градиенте.

Что интересного в главах

На сайте издательства БХВ можно посмотреть оглавление русского издания «Байесовская оптимизация с примерами из библиотек Python» в виде пробного PDF-фрагмента, как это у них принято. Английское оглавление есть на сайте  Manning, причем само оглавление кликабельное и даже дает возможность бесплатно почитать главы в первоисточнике.

А теперь пройдемся по главам — у вас будет понимание материала всей книги без погружения в англоязычный первоисточник:

Введение в байесовскую оптимизацию (Глава 1)

Эта глава объясняет, что такое задачи оптимизации «черного ящика» и как байесовская оптимизация решает эти проблемы. Рассматриваются примеры из реальной жизни, такие как настройка гиперпараметров в машинном обучении и рекомендации продуктов. Объясняется, как комбинация гауссовских процессов и политики принятия решений помогает оптимизировать функции. Глава знакомит с циклом байесовской оптимизации и представляет общий обзор книги.

Гауссовский процесс как распределение по функциям (Глава 2)

Здесь о том, как гауссовские процессы используются для моделирования функций. Глава рассматривает основы многомерных гауссовских распределений и показывает, как их применять для обработки сложных данных. Показано, как реализовывать гауссовские процессы на Python и создавать предсказания для моделей. Большое внимание автор уделил визуализации и интерпретации результатов (не забудьте скачать архив иллюстраций к книге в цвете или смотрите цветные иллюстрации и примеры кода в первоисточнике https://www.manning.com/books/bayesian-optimization-in-action).

Настройка гауссовских процессов с помощью функций среднего и ковариации (Глава 3)

Автор углубляется в параметры гауссовских процессов, такие как функции среднего и ковариации. Обсуждается, как априорные знания могут улучшить модели, и приводятся примеры применения различных функций среднего. Дается информация, как параметры ковариации влияют на гладкость и изменчивость модели, и про методы их настройки для различных задач.

Достижение наилучшего результата с помощью политик, основанных на улучшениях (Глава 4)

Эта глава посвящена стратегии балансирования между исследованием новых областей пространства и использованием известных данных. Объясняется, как метрики вроде вероятности улучшения (Probability of Improvement) и ожидаемого улучшения (Expected Improvement) помогают найти глобальный оптимум. Глава сопровождается практическими упражнениями и примерами реализации.

Исследование пространства поиска с помощью «многорукого бандита» (Глава 5)

Автор поясняет, как механизмы многорукого бандита интегрируются в байесовскую оптимизацию. Глава объясняет использование политик, таких как Upper Confidence Bound (UCB) и выборка Томпсона. Приводятся примеры их реализации с помощью библиотек BoTorch.

Использование теории информации с политиками на основе энтропии (Глава 6)

Эта глава вводит понятие энтропии для измерения неопределенности. Автор объясняет, как энтропийные подходы помогают находить более точные решения, минимизируя неопределенность о глобальном оптимуме. Рассматриваются практические реализации на Python с BoTorch.

Оптимизация пакетной обработки (Глава 7)

Здесь читатели знакомятся с задачами, где необходимо выполнять сразу несколько оценок функции. Обсуждается, как адаптировать политики байесовской оптимизации для работы с пакетами данных, обеспечивая более эффективное использование вычислительных ресурсов. Приведены практические примеры настройки и оптимизации.

Ограниченная оптимизация (Глава 8)

В этой главе рассматриваются сценарии, где оптимизация должна учитывать дополнительные ограничения. Например, необходимо максимизировать результат, не превышая допустимую стоимость. Вы узнаете, как включить ограничения в процесс принятия решений, и получите примеры их реализации.

Многовариантная оптимизация (Глава 9)

Автор рассказывает, как совмещать несколько целей оптимизации, даже если они конфликтуют. Примером может быть максимизация точности модели при минимизации времени обучения. Обсуждаются стратегии балансирования и методы достижения оптимальных компромиссов.

Оптимизация предпочтений (Глава 10)

Глава предлагает альтернативный подход к оптимизации «черного ящика» — использование сравнений пар альтернатив. Автор показывает, как формировать задачи на основе предпочтений, обучать модели и находить лучшие варианты, ориентируясь на мнения пользователей.

Оптимизация нескольких целевых функций одновременно (Глава 11)

Эта глава объясняет, как строить оптимальные границы в задачах с несколькими целями. Приводятся примеры, как грамотно распределить ресурсы между различными целями и оценить результаты на практике.

Масштабирование гауссовского процесса для больших данных (Глава 12)

Здесь объясняется, как эффективно обучать гауссовские процессы на больших наборах данных. Рассматриваются методы снижения вычислительных затрат, такие как автоматический выбор ключевых точек и работа с малым объемом данных.

Комбинирование гауссовских процессов с нейросетями (Глава 13)

В этой главе объясняется, как сочетание гауссовских процессов и нейросетей помогает обрабатывать сложные структурированные данные. Приведены примеры работы с изображениями и другими высокоразмерными данными. Вы узнаете, как настроить такую систему с помощью GPyTorch.

Раздел «Приложений» с решениями упражнений как практическое дополнение книги

В книге предусмотрены приложения, где автор подробно разбирает решения упражнений из каждой главы. Эти приложения позволяют углубить понимание ключевых концепций и проверить свои знания на практике.
Посмотреть код и иллюстрации в Приложениях можно на странице книги https://www.manning.com/books/bayesian-optimization-in-action.

Что важного в приложениях:

  1. Разработка и тестирование собственных реализаций байесовских моделей на Python.

  2. Применение различных политик оптимизации (PoI, EI, UCB, выборка Томпсона) на реальных задачах.

  3. Работа с многомерными гауссовскими процессами и настройка их параметров.

  4. Оптимизация в специализированных сценариях — пакетная обработка, многокритериальная оптимизация, задачи с ограничениями.

  5. Подготовка и анализ данных для сложных моделей, включая разноточные данные и парные сравнения.

Особенности упражнений:

  • Каждое задание напрямую связано с материалом главы, помогая закрепить основные идеи.

  • Включены задачи, которые развивают креативное мышление — такие как моделирование самолетов или настройка гиперпараметров.

  • Решения выполнены в компактном и понятном коде на Python, ориентированном на библиотеки PyTorch, GPyTorch и BoTorch.

Эти материалы из Приложений дают читателям возможность попрактиковаться в создании собственных решений и уверенно применять байесовскую оптимизацию в своих проектах.

Вы также можете найти исходный код и упражнения к книге «Bayesian Optimization in Action» на GitHub в репозитории автора: https://github.com/KrisNguyen135/bayesian-optimization-in-action.

Заключение

В качестве заключения можно дать отзыв читателя Rahul Bahadur на Amazon (Рецензия оставлена 18 декабря 2023 года):
»5 из 5 звёзд. Отличная книга с современными практическими приложениями».
«Эта книга — простое и практичное руководство по байесовской оптимизации для машинного обучения. Нгуен объясняет сложные концепции в легкой для понимания манере, что делает книгу доступной для практиков с математическим и статистическим образованием. Книга хорошо структурирована, начинается с фундаментальных идей и переходит к более сложным темам. В книгу включены примеры из реального мира и примеры кода в библиотеках Python, таких как PyTorch, GPyTorch и BoTorch, которые полезны для немедленного применения. В целом, эта книга — полезный ресурс для тех, кто хочет применить байесовскую оптимизацию в проектах по машинному обучению».

Добавим каплю рекламы от нашего блога: мы будем рады видеть в рядах компании специалистов, готовых работать оффлайн в Москве и Томске, а также удаленно. Ознакомиться с текущими вакансиями можно на нашей странице на hh.ru. Если вашей специальности нет в списке вакансий, не стесняйтесь прислать нам резюме — в SSP SOFT новые позиции открываются регулярно, и мы всегда рады новым талантам. Резюме можно направить в Telegram или на почту job@ssp-soft.com.

Успехов в изучении и практическом применении Bayesian Optimization в ваших задачах!

© Habrahabr.ru