Обучение с подкреплением
1) Назначение и место RL в iGaming
RL оптимизирует политику действий во времени под неопределенность и обратную связь:- Персонализация каталога игр (Slate-RL): выбор набора предложений для экрана/пуша.
- Оптимизация бонусов/промо: размер/тип/тайминг с учетом риска абьюза.
- Реакции в RG/Retention: когда и как вмешиваться (мягкие нотификации/пауза/эскалация).
- Операции: динамическое управление лимитами, приоритизация очередей саппорта.
- Трафик и закупка: биддинг в аукционах, бюджет-пейсинг.
Почему не только supervised: целевая переменная — долгосрочная награда (LTV, wellbeing, снижение риска), которую надо оптимально накапливать, а не просто предсказывать.
2) Базовая формулировка
Состояние (s_t): профиль игрока, контекст сессии, ограничения рынка.
Действие (a_t): оффер, подборка игр (slate), триггер RG, ставка биддера.
Награда (r_t): смешанная метрика (доход – штрафы RG/AML – стоимость).
3) Семейства методов
3.1 Бандиты (без состояния)
Multi-Armed Bandit: (\epsilon)-greedy, UCB, Thompson Sampling.
Контекстные бандиты: учитывают признаки игрока/сессии.
Slate/Ranking Bandits: выбор набора предложений; корректируем позиционные эффекты.
3.2 Полноценный RL
Policy Gradient / Actor-Critic: REINFORCE, A2C/A3C, PPO — устойчивы к большим пространствам.
Q-Learning/Deep Q-Networks: дискретные действия, офлайн-обучение с буфером опыта.
Conservative/Offline RL: CQL, BCQ, IQL — учатся по логам без онлайн-эксплорации.
3.3 Безопасный/ограниченный RL
Constrained RL (CMDP): оптимизация при ограничениях по RG/AML/бюджету.
Risk-Sensitive: CVaR-RL, penalty shaping, Lagrangian методы.
4) Дизайн награды (reward shaping)
Награда должна отражать ценность и риски:- Доход: вклад в инкрементальный Net Revenue / LTV (а не «сырые ставки»).
- Ответственная игра: штрафы за риск-паттерны, превышение лимитов, утомляющие стимулы.
- Комплаенс/AML: штрафы за действия, повышающие вероятность небезопасной активности.
- Качество опыта: CTR/CVR/длина сессии, но с cap/weight, чтобы избегать «перегрева».
python reward = w_revdelta_net_revenue \
- w_rgrg_risk_score \
- w_abusebonus_abuse_prob \
- w_costoffer_cost
5) Оффлайн-обучение и оценка (ключ к безопасности)
Онлайн-эксплор запрещен/дорог → используем offline RL и counterfactual evaluation:- IPS/DR: Inverse Propensity Scoring / Doubly Robust на логах рекомендателя.
- Replay/Simulators: симуляторы с пользовательскими/провайдерскими моделями отклика.
- Conservative Regularization: штраф за выход за поддержку данных логов (CQL/IQL).
- Политика-логгер: логируем вероятности показов (propensity), чтобы была корректная оценка.
python value_dr = np.mean(w_ips(r - q_hat) + v_hat) # w_ips = π(a s)/μ(a s)
6) Контекстные бандиты: быстрый старт
Подход для “щадящего” онлайн-обучения, когда последовательность коротка:- Thompson Sampling (логит): постерior по коэффициентам → выбор действия.
- UCB: для ограниченных бюджетов и сильных cap’ов.
- Регуляризация fairness/RG: маскируем недопустимые действия, ограничиваем частоту показов.
python β ~ Posterior() # выбор из апостериорного распределения scores = X @ β # контекстные оценки actions = top_k(scores, k=slate_size, mask=policy_mask)
7) Slate-RL (рекомендации наборов)
Цель: максимизировать награду всего набора (учет позиций, конкуренции карточек).
Методы: Listwise-бандиты, slate-Q, policy gradient с факторизацией (Plackett-Luce).
Коррекция позиций: propensity по позициям; рандомизация внутри допустимых границ.
8) Безопасность, RG/AML и комплаенс
RL запускается только в “guarded mode”:- Жесткие правила (hard constraints): запрет токсичных офферов, частотные ограничения, «охлаждения».
- Policy Shielding: фильтруем действие политикой RG/AML до и после инференса.
- Дуальная оптимизация: Lagrange multiplier для ограничений (например, доля «агрессивных» офферов ≤ θ).
- Этика и fair-use: исключаем прокси-фичи, аудит влияния.
python a = policy.sample(s)
if not passes_guardrails(a, s):
a = safe_fallback(s) # правило/минимальный оффер
9) Архитектура данных и сервинга
Офлайн контур
Lakehouse: логи показов/кликов/конверсий, пропенсити, cost.
Feature Store (offline): point-in-time фичи, корректные лейблы.
Тренинг: offline RL (CQL/IQL) + симуляторы; валидация IPS/DR.
Онлайн/near-real-time
Фичи: быстрые окна (1–60 мин), признаки игрока/сессии, лимиты и маски RG/AML.
Сервинг: gRPC/REST, p95 50–150 мс (персонализация), канареечный роутинг.
Логи: сохраняем `policy_id`, `propensity`, `slate`, `guard_mask`, фактический исход.
10) Метрики и экспериментирование
Оффлайн: DR/IPS-оценка value, coverage поддержки, divergence от логера.
Онлайн: инкремент к Net Revenue/LTV, RG-сигналы (time-to-intervene), abuse-rate, CTR/CVR/retention.
Риск-метрики: CVaR, доля нарушений guardrails, частота интервенций RG.
Эксперименты: A/B/n с каппингом трафика и «kill-switch», sequential-testing.
11) Cost-инжиниринг и производительность
Сложность действий: ограничиваем размер слейта/пространство офферов.
Кэш фич/решений: короткие TTL для популярных состояний.
Декомпозиция: two-stage (candidate generation → re-rank).
Офлайн-обучение по расписанию: ежедневный/недельный retrain; онлайн — лишь легкая адаптация (bandits).
12) Примеры (фрагменты)
PPO с безопасным штрафом (эскиз):python for rollout in rollouts:
A = advantage(rollout, value_fn)
loss_policy = -E[ clip_ratio(pi, old_pi) A ]
loss_value = mse(V(s), R)
loss_safety = λ relu(safety_metric - safety_cap)
loss_total = loss_policy + c1loss_value + loss_safety + c2entropy(pi)
step_optimizer(loss_total)
Conservative Q-Learning (идея):
python loss_cql = mse(Q(s,a), target) + α (E_{a~π}[Q(s,a)] - E_{a~D}[Q(s,a)])
Контекстный бандит с масками RG:
python scores = model(x) # предсказанные полезности scores[~allowed_mask] = -inf # запретные действия a = argmax(scores) if rand()>eps else random_allowed()
13) Процессы, роли и RACI
R (Responsible): Data Science (модели RL/бандиты), MLOps (платформа/логирование/оценка), Data Eng (фичи/симуляторы).
A (Accountable): Head of Data / CDO.
C (Consulted): Compliance/DPO (RG/AML/PII), Legal (условия офферов), Security (секреты/KMS), SRE (SLO/стоимость), Product.
I (Informed): Маркетинг/CRM, Операции, Поддержка.
14) Дорожная карта внедрения
MVP (4–6 недель):1. Контекстный бандит для выбора 1 оффера с масками RG/AML и логированием пропенсити.
2. Оффлайн-оценка IPS/DR, ограниченный A/B (5–10% трафика), kill-switch.
3. Дашборды: value (DR), CTR/CVR, RG-метрики, нарушения guardrails.
Фаза 2 (6–12 недель):- Slate-бандит (N=3–5 карточек), позиционные коррекции; two-stage candidate→re-rank.
- Offline RL (IQL/CQL) с симулятором; регулярный retrain.
- Constrained-RL: лимиты на агрессивность/частоты, дуальная оптимизация.
- Политики RG-интервенций (safe RL) с строгими caps и аудитом.
- Бюджет-пейсинг и биддинг (аукционы) с CVaR-ограничениями.
- Межрегиональная адаптация, chargeback по стоимости инференса и офферов.
15) Чек-лист перед продом
- Логи содержат `policy_id`, `propensity`, маски/ограничения, исходы.
- DR/IPS-оценка стабильна; поддержка данных достаточная (overlap с логером).
- Guardrails: списки запретов, частотные лимиты, cooldown, kill-switch.
- RG/AML/Legal согласовали правила; аудит включен (WORM для кейсов).
- Канареечный релиз и лимиты трафика; мониторинг value/RG/abuse.
- Документация награды и рисков; карточка политики (owner, версия, SLA).
- Стоимость под контролем: latency p95, cost/request, размер слейта, кэш.
16) Анти-паттерны
Онлайн-эксплор без защиты и оффлайн-оценки.
Награда “клики/ставки” без учета абьюза и RG → токсичная политика.
Отсутствие пропенсити и корректной causal-оценки по логам.
Слишком большое пространство действий, нет масок/каппинга.
Смешение регионов/юрисдикций без резидентности и правил.
Отсутствие kill-switch и канареек.
17) Итог
RL дает iGaming-платформе адаптивные политики, которые максимизируют долгосрочную ценность при соблюдении RG/AML/Legal. Ключ к безопасному внедрению — offline/консервативные методы, корректная causal-оценка (IPS/DR), строгие guardrails, прозрачная награда, дисциплина MLOps и постепенный rollout. Так вы получите рост Net Revenue/LTV без компромиссов по ответственности и комплаенсу.