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

Две кнопки новостной страницы

Редактор выбирает один из заголовков статьи. У варианта aa есть неизвестная вероятность клика μa\mu_a. После показа наблюдается Rt{0,1}R_t\in\{0,1\}. Если сначала провести равный эксперимент, а потом навсегда выбрать победителя, часть аудитории увидит слабый вариант. Если сразу показывать текущего лидера, случайный ранний успех может закрепить ошибку.

В стационарном KK-руком бандите на каждом раунде tt алгоритм выбирает At{1,,K}A_t\in\{1,\ldots,K\} и получает награду с математическим ожиданием μAt\mu_{A_t}. Лучшее среднее

μ=maxaμa.\mu^*=\max_a\mu_a.

Потерю относительно всезнающего выбора измеряет накопленный regret:

RT=TμEt=1TRt=a=1KΔaENa(T),\mathcal R_T =T\mu^*-\mathbb E\sum_{t=1}^T R_t =\sum_{a=1}^K\Delta_a\,\mathbb E N_a(T),

где Δa=μμa\Delta_a=\mu^*-\mu_a, а Na(T)N_a(T) — число выборов руки aa. Последнее равенство показывает цену исследования: каждое обращение к неоптимальной руке в среднем стоит Δa\Delta_a.

Бандит проще MDP: нет состояния и последствий действия для динамики среды. Но он труднее обычного A/B-теста, потому что сбор данных адаптивен.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
История выборов трёх рук, накопленная награда и regret
Рис. 70.1. Цена раннего любопытства

Верхняя полоса показывает выбранную руку на каждом раунде, точки — награды. Ниже идут накопленная награда алгоритма и линия идеального ожидаемого результата tμt\mu^*. Вертикальный зазор равен реализации regret; раннее исследование создаёт зазор, но помогает выбрать лучшую руку позже.

Жадность с небольшой случайностью

ε\varepsilon-жадный алгоритм с вероятностью 1ε1-\varepsilon выбирает руку с максимальным эмпирическим средним, а с вероятностью ε\varepsilon — случайную:

μ^a(t)=s<tAs=aRsNa(t).\widehat\mu_a(t)=\frac{\sum_{s<t\:A_s=a}R_s}{N_a(t)}.

Он прост и полезен как baseline. При постоянном ε\varepsilon исследование никогда не прекращается, поэтому regret растёт линейно. Убывающее εt\varepsilon_t уменьшает лишние проверки, но расписание надо подбирать.

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

UCB: оптимизм с формулой

Upper Confidence Bound выбирает

At=argmaxa[μ^a(t)+clogtNa(t)].A_t=\arg\max_a\left[ \widehat\mu_a(t) +c\sqrt{\frac{\log t}{N_a(t)}} \right].

Первое слагаемое — найденное качество, второе — бонус неопределённости. Редко выбранная рука получает большой бонус; по мере наблюдений он уменьшается. Логарифм времени заставляет иногда возвращаться к старым альтернативам.

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

ENa(T)=O(logTΔa2),\mathbb E N_a(T)=O\left(\frac{\log T}{\Delta_a^2}\right),

а её вклад в regret — O(logT/Δa)O(\log T/\Delta_a). Близкие руки различить трудно: малый Δa\Delta_a требует много показов.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Доверительные интервалы трёх рук и выбор UCB
Рис. 70.2. Среднее плюс неопределённость

Для каждой руки точка показывает μ^a\widehat\mu_a, вертикальный отрезок — бонус clogt/Nac\sqrt{\log t/N_a}. У третьей руки среднее ниже, но верхняя граница выше остальных, поэтому следующий показ достаётся ей. Числа NaN_a подписаны под осью.

Томпсоновское сэмплирование

Для кликов удобна модель Бернулли с beta-prior:

μaBeta(αa,βa).\mu_a\sim\operatorname{Beta}(\alpha_a,\beta_a).

После sas_a кликов и faf_a пропусков posterior:

μaDBeta(αa+sa,βa+fa).\mu_a\mid D\sim \operatorname{Beta}(\alpha_a+s_a,\beta_a+f_a).

На каждом раунде алгоритм сэмплирует μ~a\widetilde\mu_a из каждого posterior и выбирает максимальное. Неопределённая рука иногда рисует оптимистичное значение и получает показ; хорошо изученная слабая рука почти никогда.

Это probability matching: вероятность выбрать действие близка к апостериорной вероятности, что оно лучшее. Prior влияет особенно сильно в начале. Псевдосчёт Beta(1,1)\operatorname{Beta}(1,1) равномерен, а Beta(100,100)\operatorname{Beta}(100,100) уже выражает сильную уверенность около 0,50{,}5.

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

Лаборатория бандита

Три автомата, один бюджет и накопленный regret

Загружается живая иллюстрация…

Зафиксируйте три близкие вероятности и сравните ε\varepsilon-greedy, UCB и Thompson sampling на одинаковых последовательностях потенциальных наград. Один запуск может ввести в заблуждение, поэтому смотрите медиану и диапазон regret по многим seed.

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

Контекст: кому показать вариант

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

E[Rtxt,At=a].\mathbb E[R_t\mid x_t,A_t=a].

В LinUCB предполагают μa(x)=xθa\mu_a(x)=x^\top\theta_a и добавляют неопределённость линейной модели. Контекст повышает персонализацию, но требует больше данных и создаёт риск дискриминации.

Журнал адаптивной политики смещён: популярные действия наблюдаются чаще, а награды альтернатив неизвестны. Для offline-оценки новой стратегии используют propensity pt=Pr(At=axt)p_t=\Pr(A_t=a\mid x_t) и inverse propensity weighting:

V^(π)=1Tt=1T1{π(xt)=At}Rtpt.\widehat V(\pi)=\frac1T\sum_{t=1}^T \frac{\mathbf1\{\pi(x_t)=A_t\}R_t}{p_t}.

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

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Вероятности клика двух вариантов для новых и постоянных читателей
Рис. 70.3. Одна средняя скрывает два контекста

Столбцы показывают CTR вариантов AA и BB отдельно для новых и постоянных читателей. В общей смеси побеждает AA, но внутри обеих групп — BB: доли аудиторий при показах различались. Схема связывает контекстный выбор с парадоксом Симпсона.

Реальные логи и смещение

Open Bandit Dataset содержит логи рекомендательной политики интернет-магазина: контекст, выбранное действие, награду и вероятность выбора. Он создан именно для offline policy evaluation. Но даже хороший открытый набор не превращает оценку в реальный запуск: пользователи, интерфейс и каталог относятся к конкретному периоду.

При анализе сравнивайте:

  • среднюю награду и накопленный regret в симуляции;
  • дисперсию IPS-оценки;
  • долю контекстов, где новая политика не поддержана старой;
  • результат clipping больших весов и возникающее смещение;
  • качество по группам, а не только в среднем.

Мини-исследование: сколько стоит узнать победителя

Создайте две Bernoulli-руки со средними 0,20{,}2 и 0,2+Δ0{,}2+\Delta, где Δ{0,005;0,02;0,08}\Delta\in\{0{,}005;0{,}02;0{,}08\}. Для каждого разрыва проведите 1000 запусков UCB на горизонтах от 10210^2 до 10510^5. Измерьте не только regret, но и вероятность, что к концу алгоритм чаще выбирает истинного лидера.

При малом Δ\Delta различие слабее случайного разброса на коротком горизонте. Алгоритм может потратить значительную долю бюджета на исследование и всё равно не получить уверенности. При большом разрыве несколько десятков наблюдений достаточно, и дальнейшие пробы слабой руки почти полностью становятся regret.

Добавьте режим fixed A/B: половина показов каждой руке, затем выбор лидера. Он хорошо идентифицирует разность, но не оптимизирует награду во время сбора. Bandit делает обратный обмен. Нанесите методы на плоскость «ошибка выбора финального лидера — накопленный regret». Универсального победителя нет: точка зависит от цели эксперимента.

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

Добавьте стоимость показа: один вариант может приносить больше кликов, но чаще вызывать быстрый уход. Тогда reward задаётся вектором. Скаляризация R=clickλbounceR=\text{click}-\lambda\cdot\text{bounce} меняет лидера при разных λ\lambda. Постройте Pareto frontier рук вместо скрытого выбора одного коэффициента.

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

Индекс и горизонт

В классическом дисконтированном бандите индекс Гиттинса присваивает каждой независимой руке число, зависящее от её состояния posterior и горизонта. Выбирается рука с наибольшим индексом. Теорема замечательна: многомерная задача распадается на отдельные индексы. Но предпосылки строгие, и в контекстных или меняющихся средах готовый индекс не переносится автоматически.

Главный урок проще конкретного алгоритма. Исследование нужно ровно потому, что данные появляются после действия. Чем меньше разрыв между руками и короче горизонт, тем дороже выяснять победителя. Чем быстрее среда меняется, тем опаснее копить старую уверенность.

Задачи