VKВлад КуликовОткрытые лекции
RL для LLM3 / 13

Модуль 3. Бандиты, исследование и одношаговые решения

Выберите ответы и нажмите «Проверить». Для чисел подходят точка, запятая и простые дроби. Ответы и черновики сохраняются в этом браузере и общие для RU/EN.

Открытые вопросы и задания с кодом проверяются самостоятельно по авторскому разбору. Код на сайте не запускается.

Проверено: 0 / 10 · Верно: 0

Вопрос P01 · Почему «псевдо»

один ответ

Псевдорегрет RˉT=E[∑t(μ∗−μAt)]\bar R_T = \mathbb{E}\left[\sum_t (\mu^* - \mu_{A_t})\right] назван так не потому, что он ненастоящий. Что означает приставка?

Один правильный вариант

Вопрос P02 · Регрет через разрывы и число выборов

числовой ответ · допуск ±0.5

Три действия с разрывами Δ=(0, 0.1, 0.3)\Delta = (0,\ 0.1,\ 0.3) выбирались в среднем E[Na(T)]=(700, 200, 100)\mathbb{E}[N_a(T)] = (700,\ 200,\ 100) раз.

Чему равен ожидаемый регрет RT=∑aΔaE[Na(T)]R_T = \sum_a \Delta_a \mathbb{E}[N_a(T)]?

Вопрос P03 · Границы гарантии UCB1

один ответ

Оценка UCB1 даёт RT≤8log⁡T∑a:Δa>01/Δa+constR_T \le 8\log T \sum_{a:\Delta_a>0} 1/\Delta_a + \text{const}. Что из этого следует, а что нет?

Один правильный вариант

Вопрос P04 · Что переносится из UCB и Томпсона

один ответ

Модуль предостерегает от прямого переноса бандитных рецептов на LLM. Какой перенос он называет полезным?

Один правильный вариант

Вопрос P05 · Условия несмещённости IPS

несколько ответов

Какие условия нужны, чтобы V^IPS\widehat V_{\mathrm{IPS}} был несмещённым? Отметьте все верные.

Отметьте все верные варианты

Вопрос P06 · IPS, SNIPS и эффективный размер выборки

код-задача

Спецификация: веса wi=π(ai∣xi)/μ(ai∣xi)w_i = \pi(a_i\mid x_i)/\mu(a_i\mid x_i). V^IPS=1n∑iwiri\widehat V_{\mathrm{IPS}} = \frac1n\sum_i w_i r_i; V^SNIPS=∑iwiri/∑iwi\widehat V_{\mathrm{SNIPS}} = \sum_i w_i r_i / \sum_i w_i; эффективный размер выборки по Кишу ESS=(∑iwi)2/∑iwi2\mathrm{ESS} = (\sum_i w_i)^2/\sum_i w_i^2.

Формат ввода: строка 1 — число записей nn; далее nn строк r mu pi. Формат вывода: строки 1–3 — IPS, SNIPS и ESS (4 знака).

Стартовый код:

import numpy as np

def offline_estimates(rewards, behavior, target):
    """Верните (ips, snips, ess)."""
    # ВАШ КОД ЗДЕСЬ
    raise NotImplementedError

if __name__ == "__main__":
    n = int(input())
    rows = [tuple(float(x) for x in input().split()) for _ in range(n)]
    r = [row[0] for row in rows]
    mu = [row[1] for row in rows]
    pi = [row[2] for row in rows]
    ips, snips, ess = offline_estimates(r, mu, pi)
    for value in (ips, snips, ess):
        print(f"{value:.4f}")

Открытые тесты:

stdinstdout
3 ⏎ 1 0.2 0.6 ⏎ 0 0.5 0.1 ⏎ 1 0.3 0.31.3333 ⏎ 0.9524 ⏎ 1.7570
2 ⏎ 1 0.5 0.5 ⏎ 0 0.5 0.50.5000 ⏎ 0.5000 ⏎ 2.0000

Вопрос P07 · Чего не даёт двойная устойчивость

один ответ

Оцениватель DR остаётся согласованным, если корректна хотя бы одна из двух моделей. Что он всё равно не может?

Один правильный вариант

Вопрос P08 · Температура генерации и обучающее исследование

один ответ

Почему повышение температуры декодирования нельзя называть исследованием в смысле RL?

Один правильный вариант

Вопрос P09 · Сколько кандидатов нужно Best-of-N

числовой ответ · допуск ±0.5

Каждый независимый кандидат успешен с вероятностью p=0.15p = 0.15, проверяющий безошибочно распознаёт успех.

Сколько минимум кандидатов нужно, чтобы вероятность хотя бы одного успеха была не ниже 0.950.95?

Вопрос P10 · Почему Best-of-N — не бандит

один ответ

Почему обычный Best-of-N с фиксированной LLM не является стандартным многоруким онлайн-бандитом?

Один правильный вариант

Вопрос P11 · Несмещённая оценка pass@k

код-задача

Спецификация: для задачи сгенерировано nn программ, cc из них прошли тесты, n≥kn \ge k. Оцениватель по конечной выборке: pass@⁡k^=1−(n−ck)/(nk)\widehat{\operatorname{pass@}k} = 1 - \binom{n-c}{k}\big/\binom{n}{k}, где (mk)=0\binom{m}{k} = 0 при m<km < k.

Формат ввода: одна строка — nn, cc, kk. Формат вывода: одна строка — оценка (6 знаков).

Стартовый код:

from math import comb

def pass_at_k(n: int, c: int, k: int) -> float:
    # ВАШ КОД ЗДЕСЬ
    raise NotImplementedError

if __name__ == "__main__":
    n, c, k = (int(x) for x in input().split())
    print(f"{pass_at_k(n, c, k):.6f}")

Открытые тесты:

stdinstdout
10 3 40.833333
8 2 20.464286
5 0 30.000000
6 6 21.000000

Вопрос P12 · Коллапс энтропии: наблюдение или теорема

один ответ

В препринте 2026 года сообщается о существенном снижении энтропии при нескольких конфигурациях RLVR на математических задачах. Как курс просит трактовать это?

Один правильный вариант