Тюнинг систем: экспериментирование для инженеров от A/B-тестирования до байесовской оптимизации
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабын онлайн тегін оқу  Тюнинг систем: экспериментирование для инженеров от A/B-тестирования до байесовской оптимизации

 

Дэвид Свит
Тюнинг систем: экспериментирование для инженеров от A/B-тестирования до байесовской оптимизации
2024

Переводчик О. Аксенова


 

Дэвид Свит

Тюнинг систем: экспериментирование для инженеров от A/B-тестирования до байесовской оптимизации. — СПб.: Питер, 2024.

 

ISBN 978-5-4461-2157-1

© ООО Издательство "Питер", 2024

 

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

 

Посвящается Би и Из

Предисловие

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

Более опытные практики дали мне краткий совет: «Просто пробуй». Другими словами, экспериментируй. Этот совет подтолкнул меня к изучению экспериментальных методов, применимых для оптимизации инженерных систем. Спустя несколько лет методы, применяемые моими коллегами, а также в целом инженерами, работающими в информационных технологиях и трейдинге, стали более точными и эффективными. Они использовались для оптимизации исполнения торговых сделок, в маркет-мейкинге, веб-поиске, онлайн-рекламе, в социальных сетях, онлайн-новостях, в торговых инфраструктурах с низкой задержкой и т.д. В результате цена исполнения торговых сделок стала ниже и прозрачнее, а от пользователей стали поступать жалобы, что веб-поиск и рекомендации социальных сетей теперь настолько точны, как будто телефоны пользователей прослушиваются (хотя это не так).

Экспериментальные методы, основанные на статистике, имеют сравнительно недолгую историю. В 1935 году — меньше века назад — сэр Р.Э. Фишер (R. A. Fisher) опубликовал книгу «The Design of Experiments». В этой фундаментальной работе он рассмотрел класс экспериментальных методов, к которому относится А/В-тестирование (глава 2). В 1994 году Г. Хотеллинг (H. Hotelling) написал статью «Experimental determination of the maximum of a function», где рассмотрел моделирование поверхности отклика (глава 4). В дальнейшем методология поверхности отклика изучалась в работах Дж. Бокса (G. Box) и К.П. Уилсона (K. P. Wilson). В 1947 году А. Вальд (A. Wald) опубликовал книгу «Sequential Analysis»1, в которой изложена идея анализа экспериментальных данных по мере накопления результатов измерений (глава 3), не дожидаясь их окончания (подобно тому, как делается в А/В-тесте).

Пока велись эти исследования, их результаты уже успешно применялись на производстве: сначала в сельском хозяйстве (методы Фишера), затем в химии и перерабатывающей промышленности (методы анализа поверхности отклика). Позже (с 1950-х по 1980-е) эксперименты объединились со статистическим управлением процессами, что дало качественные изменения в производстве, продемонстрированные на примере всеобщего управления качеством в компании Toyota и позже популяризированные компанией Motorola в концепции «Шесть сигм».

В 1990-х годах возможностей для применения экспериментальных методов в интернет-компаниях стало значительно больше, возросла активность пользователей, которая позволила генерировать бесчисленные данные о просмотрах, кликах, покупках, лайках и др. Эти данные можно было легко измерять и обрабатывать с помощью программного обеспечения на централизованных веб-серверах. В 2005 году Ч.Ч. Вонг (C.-C. Wang) и С.Р. Кулкарни (S. R. Kulkarni) написали статью «Bandit problems with side observations», которая объединила последовательный анализ и машинное обучение с учителем в единый метод под названием контекстный бандит2 (глава 5).

В 1975 году Дж. Мокус (J. Mockus) написал работу «On the Bayes methods for seeking the extremal point», в которой были заложены основы байесовской оптимизации (глава 6), использующей иной подход к моделированию поверхности отклика и объединяющей метод анализа поверхности отклика с идеями последовательного анализа. С тех пор метод байесовской оптимизации разрабатывался десятилетиями трудами многих исследователей, в том числе Д. Джонса (D. Jones) и др., которые в 1988 году написали статью «Efficient global optimization of expensive black-box functions», где применили к байесовской оптимизации некоторые современные идеи, что сделало ее очень похожей на тот подход, который представлен в этой книге.

В 2017 году Васант Дхар (Vasant Dhar) попросил меня поговорить с его студентами, изучающими торговые стратегии и системы, о высокочастотном трейдинге (high-frequency trading, HFT). Он любезно позволил мне уделить значительное внимание экспериментальной оптимизации HFT-стратегий. Для меня это выступление было особенно ценным, поскольку я получил возможность углубиться в тему и привести в порядок свои мысли — собрать вместе разрозненные заметки, которые накопились у меня за все эти годы. Со временем из моих запи­сей родилась книга.

Я надеюсь, что она сэкономит вам немного времени, объединив всё найденное мной в единое, связное целое.


1 Вальд А. «Последовательный анализ». М.: Физматлит, 1960.

2 Алгоритм, имитирующий одноименный игральный автомат, в котором для поиска оптимального значения некоторого параметра учитывается ряд признаков, присутствующих в конкретной задаче (контекст). — Примеч. ред.

Экспериментальные методы, основанные на статистике, имеют сравнительно недолгую историю. В 1935 году — меньше века назад — сэр Р.Э. Фишер (R. A. Fisher) опубликовал книгу «The Design of Experiments». В этой фундаментальной работе он рассмотрел класс экспериментальных методов, к которому относится А/В-тестирование (глава 2). В 1994 году Г. Хотеллинг (H. Hotelling) написал статью «Experimental determination of the maximum of a function», где рассмотрел моделирование поверхности отклика (глава 4). В дальнейшем методология поверхности отклика изучалась в работах Дж. Бокса (G. Box) и К.П. Уилсона (K. P. Wilson). В 1947 году А. Вальд (A. Wald) опубликовал книгу «Sequential Analysis»1, в которой изложена идея анализа экспериментальных данных по мере накопления результатов измерений (глава 3), не дожидаясь их окончания (подобно тому, как делается в А/В-тесте).

Алгоритм, имитирующий одноименный игральный автомат, в котором для поиска оптимального значения некоторого параметра учитывается ряд признаков, присутствующих в конкретной задаче (контекст). — Примеч. ред.

Вальд А. «Последовательный анализ». М.: Физматлит, 1960.

В 1990-х годах возможностей для применения экспериментальных методов в интернет-компаниях стало значительно больше, возросла активность пользователей, которая позволила генерировать бесчисленные данные о просмотрах, кликах, покупках, лайках и др. Эти данные можно было легко измерять и обрабатывать с помощью программного обеспечения на централизованных веб-серверах. В 2005 году Ч.Ч. Вонг (C.-C. Wang) и С.Р. Кулкарни (S. R. Kulkarni) написали статью «Bandit problems with side observations», которая объединила последовательный анализ и машинное обучение с учителем в единый метод под названием контекстный бандит2 (глава 5).

Благодарности

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

Спасибо шеф-редактору Эндрю Уолдрону за то, что он дал шанс мне и моей заявке на публикацию. Также спасибо Марьян Бейс за то, что она дала проекту зеленый свет.

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

Спасибо второму ведущему редактору Карен Миллер и Алену Коунио за технические правки. Спасибо Берту Бейтсу за отличные общие советы по написанию технической книги и корректору Нинославу Черкезу. Также спасибо координатору программы MEAP (Manning Early Access Program) Матко Хрватин; координатору проектов Мелиссе Айс; менеджеру редакции Ребекке Райнхарт; рецензенту Михаэле Батинич; младшему редактору Рейхане Марканович.

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

Несколько человек дали мне интервью. Я высоко ценю поддержку П.Б., Б.С., М.М. и Яна Ву (из Bond), а также время, которое они на меня потратили.

Спасибо участникам программы раннего доступа издательства Manning (Manning Early Access Program, MEAP), которые купили эту книгу раньше, чем я успел ее закончить, задавали важные вопросы, находили ошибки и вносили полезные предложения.

Спасибо всем рецензентам: Ахиму Домме, Элу Кринкеру, Амарешу Раджасекхарану, Андрею Палейесу, Крису Хенегану, Дэну Шейху, Димитриосу Кузис-Лукасу, Эрику Платону, Гильермо Алькантара Гонсалесу, Икечукву Оконкво, Иоаннису Атсониосу, Джереми Чену, Джону Вуду, Киму Фальку, Луису Энрике Имагийре, Марку-Энтони Тейлору, Мэттью Макарти, Мэттью Сармиенто, Максиму Волгину, Майклу Карееву, Майку Дженсену, Нику Васкесу, Оливеру Кортену, Патрику Гетцу, Ричарду Тобиасу, Ричарду Вону, Роджеру Ле, Сатею Кумар Саху, Серджио Говони, Симоне Сгуацца, Стивену Смиту, Уильяму Джамиру Силве и Сянбо Мао (Achim Domma, Al Krinker, Amaresh Rajasekharan, Andrei Paleyes, Chris Heneghan, Dan Sheikh, Dimitrios Kouzis-Loukas, Eric Platon, Guillermo Alcantara Gonzalez, Ikechukwu Okonkwo, Ioannis Atsonios, Jeremy Chen, John Wood, Kim Falk, Luis Henrique Imagiire, Marc-Anthony Taylor, Matthew Macarty, Matthew Sarmiento, Maxim Volgin, Michael Kareev, Mike Jensen, Nick Vazquez, Oliver Korten, Patrick Goetz, Richard Tobias, Richard Vaughan, Roger Le, Satej Kumar Sahu, Sergio Govoni, Simone Sguazza, Steven Smith, William Jamir Silva, Xiangbo Mao); ваши замечания помогли сделать книгу лучше.

О книге

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

Для кого эта книга

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

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

Вам потребуется уверенное знание языка Python, включая библиотеку NumPy, и знания из университетского курса высшей математики (включая общие разделы линейной алгебры).

Структура книги

Книгу «Тюнинг систем: экспериментирование для инженеров от A/B-тести­рования до байесовской оптимизации» можно условно разделить на три части: введение (глава 1), экспериментальные методы (главы 2–6) и информация, которая применима ко всем методам (главы 7 и 8).

• Глава 1 рассказывает о происхождении экспериментальных методов, описывает, как они согласуются с другими инженерными практиками, вводит понятие бизнес-метрик.

• В главе 2 рассматриваются основы проведения экспериментов и А/В-тестирование.

• В главе 3 показано, как ускорить А/В-тестирование с помощью многоруких бандитов.

• Глава 4 посвящена системам с численными параметрами и методологии поверхности отклика.

• В главе 5 рассмотрено применение многоруких бандитов для случая оп­тимизации нескольких параметров при частом обновлении значений метрик.

• Глава 6 объединяет идеи поверхности отклика и многоруких бандитов в едином методе, который называется байесовской оптимизацией.

• Глава 7 более детально рассматривает бизнес-метрики.

• Глава 8 предупреждает читателя о распространенных подводных камнях и рассматривает меры их устранения.

О коде в книге

Книга содержит множество примеров исходного кода как в нумерованных листингах, так и в тексте. В обоих случаях исходный код форматируется моноширинным шрифтом в отличие от обычного текста. Во многих случаях оригинальная версия исходного кода переформатируется; добавляются разрывы строк и измененные отступы, чтобы код помещался на странице. Иногда даже этого оказывается недостаточно и в листинги включаются маркеры продолжения строк (). Также из исходного кода часто удаляются комментарии, если код описывается в тексте. Многие листинги снабжены примечаниями, призванными подчеркнуть важные моменты.

Исполняемые фрагменты кода можно загрузить из версии liveBook (электронной) по адресу https://livebook.manning.com/book/software-mistakes-and-tradeoffs. Полный код примеров книги и рисунки доступны на GitHub (https://github.com/dsweet99/e4e) в формате Jupyter-ноутбук. Вы можете перейти туда с веб-страницы книги по адресу www.manning.com/books/experimentation-for-engineers. Код написан на языке Python 3.6.3, с использованием библиотеки NumPy 1.21.2 и Jupyter 5.4.0.

Форум liveBook

Приобретая книгу «Тюнинг систем: экспериментирование для инженеров от A/B-тестирования до байесовской оптимизации», вы получаете бесплатный доступ к закрытому веб-форуму издательства Manning (на английском языке), на котором можно оставить комментарии о книге, задать технические вопросы и получить помощь от автора и других пользователей. Чтобы получить доступ к форуму, откройте страницу https://livebook.manning.com/book/experimentation-for-engineers/discussion. Информацию о форумах Manning и правилах поведения на них см. на https://livebook.manning.com/discussion.

В рамках своих обязательств перед читателями издательство Manning предоставляет ресурс для содержательного общения читателей и авторов. Эти обязательства не подразумевают конкретную степень участия автора, которое остается добровольным (и неоплачиваемым). Задавайте автору хорошие вопросы, чтобы он не терял интереса к происходящему! Форум и архивы обсуждений доступны на веб-сайте издательства, пока книга продолжает издаваться.

Об авторе

ДЭВИД СВИТ работал количественным трейдером в GETCO и инженером по машинному обучению в Instagram, он применял экспериментальные методы для оптимизации торговых и рекомендательных систем. Эта книга является продолжением его лекций по торговым системам в количественном трейдинге, прочитанных в школе бизнеса «NYU Stern». Книга также является основой курса по экспериментальной оптимизации, который автор преподает в рамках магистерских программ по искусственному интеллекту и исследованию данных в Иешива-университете. До работы в индустрии информационных технологий Дэвид Свит получил степень PhD по физике за исследования, которые он опубликовал в «Physical Review Letters» и «Nature». Эта публикация — эксперимент, демонстрирующий хаос в геометрической оптике, — стала источником вдохновения для художников компьютерной графики, пособием для обучения физике студентов старших курсов и экспонатом под названием «Тетрасфера» в Музее математики в Нью-Йорке.

Иллюстрация на обложке

На обложку книги «Тюнинг систем: экспериментирование для инженеров от A/B-тестирования до байесовской оптимизации» помещена иллюстрация под названием Homme Sicilien («Сицилийский мужчина») или Sicilian («Сицилиец»), взятая из коллекции Жака Грассе де Сен-Совера (Jacques Grasset de Saint-Sauveur), опубликованной в 1788 году. Каждая иллюстрация этой коллекции тщательно прорисована и раскрашена от руки.

В прежние времена по одежде человека можно было легко определить, где он живет и какова его профессия или положение в обществе. Издательство Manning приветствует изобретательность и инициативность — качества, присущие индустрии IT, — и в знак этого размещает на обложках изображения, которые демонстрируют богатое разнообразие региональных культур, запечатленное на старинных рисунках.

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу comp@piter.com (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.