Алгоритм многорукий бандит Яндекса: как он работает в поиске и рекламе

Алгоритм многорукий бандит Яндекса - это способ автоматически распределять показы и трафик между вариантами (объявлениями, ставками, позициями), усиливая те, что дают больше целевых действий. Он непрерывно учится на кликах и конверсиях, снижая долю неэффективных вариантов без жёстких и долгих A/B‑тестов.

Краткая суть метода многорукого бандита в ранжировании

  • Каждый вариант (объявление, ставка, позиция, блок) рассматривается как «рука» однорукого бандита.
  • Система одновременно показывает несколько вариантов, но чаще те, что уже показали лучшую конверсию или CTR.
  • Часть трафика всегда оставляется на исследование новых или слабозакрытых вариантов.
  • Вес вариантов пересчитывается по фактическим кликам и конверсиям в режиме почти реального времени.
  • В Яндекс Рекламе это работает как автоматическая оптимизация ставок и показов, без ручного перебора.
  • Основной эффект - многорукий бандит Яндекс улучшение конверсий и ускорение выхода на рабочую стратегию.

Математическая постановка задачи и целевая метрика

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

Ключевое отличие от классического A/B‑теста: алгоритм не делит трафик жёстко 50/50 или 33/33/33, а каждый раз пересчитывает вероятности показа. Это позволяет быстрее направлять показы на более успешные варианты, одновременно оставляя небольшой процент трафика на исследование.

Целевая метрика задаётся системой: для Яндекс Директ это может быть конверсия в заявку, целевая цена конверсии или доход; для поискового ранжирования - вероятность клика, полезность ответа, поведенческие сигналы. Всё, что видит алгоритм, сводится к «награде за показ», которую он пытается максимизировать.

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

Архитектура интеграции в ранжировщик Яндекса

  1. Формирование набора действий. Для поиска это различные места показа и документы, для Яндекс Рекламы - объявления, креативы, ставки, стратегии; каждый вариант - отдельная рука.
  2. Онлайн‑оценка ожидаемой награды. Перед показом система вычисляет для каждой руки прогноз награды: вероятность клика, доход, вероятность целевого действия с учётом истории показов.
  3. Стохастический выбор руки. Ранжировщик не всегда выбирает самый ожидаемо выгодный вариант; часть вероятности даётся на исследование других рук, чтобы не застрять в локальном максимуме.
  4. Запись фактического исхода. После показа система фиксирует клик, конверсию, отказ, время на сайте и другие события, превращая их в численную награду.
  5. Онлайн‑обновление модели. Параметры распределений (для UCB или Томпсона) обновляются по каждому действию. Этим достигается непрерывная оптимизация ставок в Яндекс Директ многорукий бандит без жёстких «итераций» кампаний.
  6. Интеграция с ограничениями. В ранжировщик вшиты бюджетные лимиты, условия показов, фильтры качества. Бандитский слой работает поверх этих ограничений, а не вместо них.

Стратегии выбора действия: жадность, UCB и метод Томпсона

Практически все схемы выбора действия в Яндексе - вариации на тему балансировки исследования и эксплуатации. Конкретная формула может отличаться между поиском, РСЯ и Яндекс Директ, но инженерный смысл одинаков.

  1. Жадная стратегия с эпсилон‑рандомизацией. Большинство показов уходит на лучший по текущей оценке вариант, небольшая доля тратится на случайный выбор других рук. Это базовый уровень, часто используемый для дешёвой засечки новых креативов и таргетингов.
  2. UCB (Upper Confidence Bound). Каждому варианту считается не только средняя награда, но и доверительный интервал. Чем меньше показов, тем шире интервал, и тем выше шанс, что эта рука будет выбрана для исследования. Хорошо подходит для ранжирования документов в блоках и распределения трафика между слотами.
  3. Метод Томпсона. Для каждой руки поддерживается распределение вероятности награды (например, бета‑распределение для кликов). На каждом шаге из распределений сэмплируются значения и выбирается рука с максимальным сэмплом. Это даёт естественный стохастический баланс исследования и эксплуатации.
  4. Гибриды с учётом стоимости. В рекламе важна не только вероятность клика, но и цена клика/конверсии. Поэтому UCB и Томпсон модифицируют так, чтобы максимизировать не CTR, а ожидаемую прибыль или CPA, а также учитывать ограничения бюджета кампании.
  5. Стратегии для групп объявлений. При настройке стратегии многорукий бандит Яндекс Директ система часто оптимизирует не одну руку, а группу: фраза + ставка + креатив. Это даёт более реалистичную картину, но увеличивает размер пространства действий.
Подход Как распределяется трафик Практический эффект
Классический A/B‑тест Фиксированно (например, 50/50), до конца теста Просто интерпретировать, но долго «сжигает» трафик на слабый вариант
Многорукий бандит Динамически, больше трафика уходит на сильные варианты Быстрее рост метрики, меньше потерь на заведомо плохих руках

Мини‑сценарии использования в Яндекс Рекламе и ранжировании

  1. Ротация креативов в группе объявлений. Вы грузите 3-5 объявлений, задаёте цель «конверсии». Алгоритм многорукий бандит Яндекс Директ в первые дни крутит их более равномерно, затем отдает всё больше трафика тем, что лучше приводят заявки по нужной цене.
  2. Оптимизация ставок по площадкам РСЯ. Без бандита вы вручную режете площадки. С бандитом часть трафика постоянно уходит на «сомнительные» площадки для проверки, и если они показывают потенциал, система сама поднимает их долю и эффективную ставку.
  3. Перестановка документов внутри блока выдачи. В поиске несколько релевантных документов могут быть обменяемы по смыслу. Бандит подбирает конкретный порядок в блоке так, чтобы максимизировать клики и полезные взаимодействия, а не только «сырую» релевантность.
  4. Эксперименты с посадочными страницами. Вместо жёсткого A/B вы подключаете несколько лендингов к одной кампании. Бандит постепенно закрепляет трафик за наиболее конверсионными, продолжая иногда тестировать альтернативы, чтобы не пропустить смену поведения аудитории.

Учет контекста и моделирование неопределённости

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

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

Преимущества контекстного подхода

  • Лучшее соответствие объявления или документа конкретному пользователю и ситуации запроса.
  • Возможность «вытаскивать» нишевые, но очень эффективные связки (гео + устройство + время + креатив).
  • Более безопасное исследование: риск «слива» бюджета снижается, потому что рискованные действия выдаются только в тех контекстах, где у них выше ожидаемый выигрыш.
  • Быстрая адаптация к изменениям поведения аудитории (сезонность, акции, новые тренды запросов).

Ограничения и подводные камни

  • Сложность модели растёт с размером контекста; без регуляризации возможна переоптимизация под шум.
  • Нужен устойчивый поток данных; в малых кампаниях алгоритм может банально не успеть обучиться.
  • Контекст не всегда доступен полностью (ограничения по приватности, технические задержки), что снижает эффективность.
  • Неправильно выбранная целевая метрика (например, клик вместо конверсии) приводит к росту «мусорного» трафика при внешне хороших показателях.

Сбор сигналов, рандомизация экспериментов и коррекция смещений

Чтобы многорукий бандит работал корректно, важна не только формула выбора руки, но и то, какие именно данные он видит. Ошибки на уровне сигналов и логирования легко ломают даже самую умную стратегию.

  1. Смещение из‑за логов после фильтрации. Если в модель попадают только «чистые» логи после антифрода, она не видит часть реальных показов и может завышать ожидания по ряду рук.
  2. Неполная или нерегулярная рандомизация. Попытка «подкрутить» алгоритм вручную, отключая якобы слабые варианты слишком рано, ломает баланс исследования и эксплуатации и ведёт к локальным максимумам.
  3. Отсутствие корректировки по задержанным конверсиям. В контекстной рекламе конверсии часто приходят с задержкой; если не учитывать лаги, алгоритм накажет долгие, но ценные в итоге цепочки.
  4. Перекос в сторону дешёвых кликов. Если целевая функция настроена только на цену клика, а не на ценность действия, алгоритм уводит трафик в сегменты с низкой ценой, но слабой окупаемостью.
  5. Неправильная атрибуция. При сложных воронках bandit может «приписывать» себе результат других каналов, если не настроена корректная модель атрибуции конверсий.

Ограничения на практике: стабильность, масштабирование и эвристики

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

Типичный инженерный контур в Яндекс Рекламе при включенной автостратегии можно упростить до следующего псевдокода:

// псевдокод, иллюстрирующий логику выбора ставки/объявления
for each auction:
    context = build_context(user, query, time, placement)
    arms = get_available_arms(campaign, context)  // объявления, ставки, креативы
    for arm in arms:
        prior = load_bandit_state(arm, context_segment)
        score = sample_or_ucb(prior, exploration_rate)
        score = apply_business_rules(score, budgets, limits)
    chosen_arm = argmax(score)
    show(chosen_arm)
    reward = observe_click_and_conversion(chosen_arm)
    update_bandit_state(chosen_arm, context_segment, reward)

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

Когда вы включаете автоматическую настройку стратегии многорукий бандит Яндекс Директ, практические рекомендации сводятся к трём действиям: дать системе достаточно вариантов (объявлений, фраз, посадочных), обеспечить корректную передачу конверсий и не «дёргать» кампанию слишком часто, чтобы модель успевала доучиваться.

Ответы на типовые технические вопросы по внедрению

Можно ли использовать многорукий бандит в очень маленьких кампаниях?

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

Нужно ли выключать слабые объявления вручную при автооптимизации?

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

Как быстро многорукий бандит адаптируется к изменениям креативов?

Как работает алгоритм Многорукий бандит Яндекса - иллюстрация

При появлении нового объявления или лендинга алгоритм выделяет им исследовательский трафик. Скорость адаптации зависит от объёма трафика и частоты конверсий: чем интенсивнее поток, тем быстрее система сможет перераспределить показы в пользу успешного варианта.

Что важнее для алгоритма: клики или конверсии?

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

Как понять, что алгоритм стабилизировался и его можно «не трогать»?

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

Имеет ли смысл параллельно запускать классический A/B‑тест?

Да, но аккуратно. Если вам важно именно статистически чистое сравнение двух подходов, A/B‑тест лучше запускать на верхнем уровне (стратегия vs стратегия), а внутри каждой ветки уже позволять многорукому бандиту оптимизировать детали.

Что делать, если автоматическая оптимизация даёт хуже результат, чем ручные ставки?

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

Прокрутить вверх