Авторы Мандела Патрик и Даниэль Хаас

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

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

Как мы можем продолжать давать персонализированные и ценные рекомендации? В оставшейся части этого поста мы познакомим вас с фреймворком Multi-Armed Bandit, который мы используем для составления рекомендаций, объясним некоторые математические аспекты, лежащие в его основе, и закончим некоторыми уроками по его применению на практике.

Персональные рекомендации для каждого сайта

Системы искусственного интеллекта для самовнушения повсюду вокруг вас. Netflix рекомендует вам смотреть сериалы, Spotify составляет плейлист Discover Weekly, хорошо адаптированный к вашим музыкальным вкусам, а Tinder предлагает романтических партнеров. Широкий термин для программного обеспечения, обеспечивающего такие предложения, - рекомендательные системы, и мы используем те же методы для автоматического предложения рекомендаций на B12. Вместо того, чтобы рекомендовать напрямую нашим клиентам, мы сначала проверяем рекомендации с нашими экспертами, позволяя им персонализировать предложения до того, как они будут реализованы. Они делают это с помощью настраиваемого интерфейса, показанного на рисунке 1.

Рис. 1. Интерфейс B12 для экспертов, предлагающий автоматически предлагаемые рекомендации.

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

Вместо этого нам нужен адаптивный подход, который использует имеющиеся знания, а также учится и совершенствуется с каждой новой наблюдаемой точкой данных. По этой причине мы решили построить нашу рекомендательную систему, используя структуру Multi-Armed Bandit (MAB), которая хорошо учится на небольших наборах данных и адаптирует свою модель по мере выработки рекомендаций.

Проблема МАБ обычно описывается в контексте азартных игр. Предположим, вы находитесь на полу казино Вегаса и можете сесть за любой из множества игровых автоматов в комнате. Каждый из игровых автоматов (оружие) имеет неизвестную вероятность заработать вам деньги. Например, одна машина может выплачивать один доллар в 10% случаев, а другая может выплачивать один миллион долларов в 0,000001% случаев. Лучше всего играть в игровой автомат с наиболее ожидаемой выплатой: если вы играете на всех автоматах вечно, вы получите больше всего денег на этом игровом автомате. К сожалению, у вас нет времени (или четвертей!), Чтобы играть на каждом автомате вечно, чтобы найти лучший, и сложность не просто найти лучший игровой автомат, а найти его эффективно, не теряя при этом денег. . Чтобы максимизировать наши доходы и обучение в этой среде, мы должны найти баланс между исследованием (поиском лучшего игрового автомата) и эксплуатацией (игрой на лучшем игровом автомате, который мы видели до сих пор).

Какое отношение это имеет к Рекомендациям B12? Если вы думаете о каждой рекомендации как об игровом автомате, а каждое вытягивание руки - как о возможности для покупателя приобрести рекомендацию (давая B12 выплату), аналогия проста: мы пытаемся выяснить, какую рекомендацию лучше всего отправить. данному клиенту. На самом деле мы можем добиться большего, потому что можем использовать контекстную информацию о наших клиентах для улучшения рекомендаций - похожие клиенты с аналогичными веб-сайтами, вероятно, захотят получить аналогичные рекомендации. Это может быть включено в структуру MAB через расширение, известное как контекстные бандиты, которое принимает во внимание дополнительную информацию, помимо того, что вы тянете за руки.

Подробности алгоритма

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

Допустим, есть фиксированное количество фактов о наших клиентах, их веб-сайтах и ​​конкретные рекомендации, которые важны для прогнозирования того, купит ли клиент рекомендацию или нет. Например, мы можем использовать количество страниц на веб-сайте клиента или количество раз, когда конкретная рекомендация была приобретена в прошлом. Мы называем эти факты характеристиками, и основная цель алгоритма - обучить модель, которая предсказывает, учитывая вектор характеристик данного клиента и данную рекомендацию, насколько вероятно, что клиент купит рекомендация. В математике, если d - количество функций, bᵢ ∈ ℝᵈ - вектор признаков, представляющий пару i ᵗʰ рекомендация клиента, а rᵢ ∈ [0, 1] - это вознаграждение (выплата), представляющее, сколько клиент потратил на рекомендацию, мы пытаемся изучить модель μ∈ℝᵈ, такую, что bᵢᵀμ ≈ rᵢ для всех i. Если у нас есть такая модель, наша задача рекомендации проста: для данного пользователя мы делаем рекомендацию с наибольшим ожидаемым вознаграждением (arg maxᵢ bᵢᵀμ).

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

Как оно это делает? Используемый нами алгоритм (из-за его продемонстрированной эмпирической эффективности), выборка Томпсона, использует байесовский подход, поэтому вместо одного вектора весов μ наша модель представляет собой многомерное распределение Гаусса со средним значением μ и ковариация B ⁻¹, где B - это матрица, которая показывает, насколько мы уверены в весах каждой характеристики. Алгоритм 1 излагает шаги алгоритма. При каждой возможности алгоритм рекомендует клиенту рекомендацию с вектором признаков bᵢ, которая, по его мнению, является наиболее вероятным вариантом в настоящее время, а затем использует наблюдаемое вознаграждение rᵢ для обновите B и μ. Обновление до B отражает то, что у нас появилась новая информация, хорошая или плохая: мы более уверены, что дали хорошую рекомендацию, если клиент ее купил, и мы более уверены в том, что мы сделали плохую рекомендацию. рекомендация, если покупатель не покупал. Обновление до μ приближает веса функций к решению линейной регрессии. Со временем B ⁻¹ становится меньше, в результате чего рекомендации доверяют μ больше, а μ доказуемо сходится с оптимальная модель.

И это все! Следование этому алгоритму с течением времени позволяет эффективно находить компромисс между исследованием и использованием, изучая новые рекомендации, одновременно используя преимущества известных высокодоходных.

Теория, встреча с практикой

«Теоретически разницы между практикой и теорией нет. На практике так и есть ».

- Не Йоги Берра

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

Извлечение признаков и уменьшение размерности. Контекстный алгоритм многоруких бандитов не будет очень полезным, если информации в контекстных векторах недостаточно, чтобы предсказать, купит ли клиент данную рекомендацию. Однако, если мы добавим слишком много функций, будет медленно обновляться алгоритм и давать рекомендации (что мы делаем в режиме реального времени, когда эксперт загружает интерфейс, поэтому он должен быть быстрым). Поэтому мы выбрали компромисс: обширное извлечение признаков, чтобы гарантировать, что наши контекстные векторы были богаты функциями, которые алгоритм может использовать для различения вариантов рекомендаций, и снижение размерности с помощью анализа главных компонентов (PCA), чтобы гарантировать, что размерность нашего вектор контекста имел контролируемый размер. Наши контекстные векторы включают в себя сочетание функций, специфичных для клиентов, и функций, специфичных для рекомендаций. Особенности клиента включают возраст с B12, бизнес-категорию, цели клиента, количество подписок и интеграций, количество страниц и разделов веб-сайта, а также историю покупок рекомендаций. Характеристики, относящиеся к конкретным рекомендациям, включают стоимость рекомендации и количество раз, когда рекомендация была сделана и приобретена ранее.

Нестационарность. По мере того, как B12 растет и меняется, атрибуты нашего типичного клиента развиваются. Со временем типичные клиенты могут различаться в зависимости от отрасли, сложности и дизайна своих веб-сайтов, а также от их готовности тратить деньги на рекомендации. Это делает Рекомендации B12 так называемой нестационарной системой. Наш алгоритм, однако, разработан для того, чтобы все больше и больше получать уверенность в единой статической модели качества рекомендаций, и поэтому он будет все больше и больше терять связь с нашей изменяющейся клиентской базой. Один из распространенных методов решения этой проблемы (см. Раздел 6.3 Руссо и др.) - это просто забыть старые наблюдения, чтобы наша модель всегда основывалась на последних данных, - подход, который имеет преимущество в сокращении объема хранения данных: нет необходимости отслеживать старые векторы контекста или вознаграждения. Чтобы реализовать это на практике, мы модифицировали алгоритм 1, добавив схему оконного обновления, которая одновременно использует новые наблюдения и забывает старые.

Асинхронные награды. Еще одна проблема, с которой мы столкнулись, заключалась в том, как бороться с тем фактом, что вознаграждения не получаются мгновенно (как в сценарии казино). Вместо этого мы получаем новую информацию, когда клиент покупает рекомендацию, что может произойти в считанные минуты или недели. С точки зрения реализации это было несложно: мы запланировали задание cron, чтобы периодически отслеживать, происходят ли новые покупки, и обновлять параметры нашей модели, когда они появляются. Однако последствия этого подхода важны: алгоритм обучается партиями и не получает никакой выгоды от новой информации между партиями, поскольку не знает, будет ли его предыдущая рекомендация приобретена, когда он сделает следующую.

Проблема холодного запуска. В алгоритме 1 модель инициализируется для равномерного распределения, что означает, что изначально каждая рекомендация имеет равные шансы быть выбранной. Это свидетельствует о том, что мы предполагаем нулевое знание о наших клиентах и ​​рекомендациях, что хорошо с точки зрения теории, но означает, что на практике наши первые несколько сотен рекомендаций не будут хорошими. Это называется проблемой холодного старта рекомендательных систем. К счастью, мы можем обойти это, вспомнив, что у нас уже есть информация о том, каким клиентам какие рекомендации нравятся: существующая история покупок Рекомендаций B12. Чтобы воспользоваться этим знанием, мы запустили алгоритм по нашим историческим данным в симуляции и инициализировали нашу модель на основе полученных параметров. Это гарантировало, что наша модель закодировала некоторую предварительную информацию, полученную из наших данных, еще до того, как мы начали давать какие-либо рекомендации, так что ее самые первые рекомендации были ценными.

Результаты с мест

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

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

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

Подведение итогов

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

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

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

Хотите присоединиться к нам в формировании будущего работы? Напишите нам и оставьте резюме на [email protected]