Опубликовано 20 июня 2026 г.
Куррикулум по неуверенности критика: как учить веб-агента на одной видеокарте
Ограничение как постановка задачи
Обучать веб-агента через RL дорого: среда медленная, эпизоды длинные, награда разреженная. Обычный ответ - кластер. Условие этой работы было обратным: одна потребительская видеокарта на 16 ГБ. Всё остальное в архитектуре следует из этого ограничения.
Иерархия: замороженный планировщик, обучаемый исполнитель
Qwen3-8B (frozen, 4-bit NF4) ← планировщик, ставит подцель
↓ подцель (JSON)
DeBERTa-v3-small (frozen)
→ Transformer (2 слоя, 4 головы) → GRU(256)
→ тип действия + pointer attention (какой элемент страницы)
↓ CLICK / TYPE / SCROLL / SELECT
BrowserGym / MiniWoB++
Обучается только исполнитель - несколько миллионов параметров вместо восьми миллиардов. Планировщик и энкодер заморожены и живут в 4-битной квантизации. Выбор элемента сделан через pointer attention, а не классификацию: число элементов на странице заранее неизвестно.
Идея 1: куррикулум по дисперсии value-функции
Классический куррикулум идёт от простого к сложному по заранее заданному порядку. Проблема в том, что «сложное» определяет автор, а не агент.
Здесь порядок задаёт критик. Для каждой задачи хранится дисперсия его оценок, и задачи семплируются тем чаще, чем она выше. Высокая дисперсия означает, что агент не понимает, чего стоят его действия в этой задаче, - значит, именно там обучение даст больше всего.
Разброс между задачами получился в 2740 раз: от нуля на click-link, где всё давно понятно, до 0.00274 на social-media. То есть механизм действительно перераспределял бюджет обучения, а не работал равномерно.
Идея 2: Reward Fusion вместо бинарного успеха
Бинарная награда на длинных эпизодах почти всегда ноль, и градиенту не за что зацепиться. Награда собирается из четырёх слагаемых:
R = 0.5·ORM + 0.3·R_DOM + 0.2·R_waypoint − штрафы
- ORM - оценка модели-судьи по итоговому состоянию;
- R_DOM - программная проверка DOM: действительно ли поле заполнено, диалог закрыт, чекбокс отмечен;
- R_waypoint - промежуточные вехи внутри эпизода;
- штрафы - за лишние действия и недопустимые переходы.
В логах прогона - 100 различных значений награды в диапазоне от −8.4 до +0.92. Это и есть проверка, что схема работает: награда действительно градуированная, а не замаскированный бинарный сигнал.
Результаты
| Метрика | Значение |
|---|---|
| Средний SR (фаза 3) | 42% |
| Финальный SR (последние 10 итераций) | 61.7% |
| Задач с ненулевым SR | 20 из 25 |
| Шагов среды | 50 000 |
Лучшие задачи - click-dialog и focus-text (100%), click-button (60%).
Что не получилось
Честный список важнее таблицы.
- choose-date / book-flight: jQuery-датапикер при перерисовке DOM накапливает идентификаторы элементов, и длинная навигация становится ненадёжной.
- enter-date / enter-time: три поля ввода делят один идентификатор, штатный
fill()в текущей версии среды не срабатывает. - email-inbox / search-engine: задачи требуют рассуждения, а не выбора элемента, - потолок самой pointer-политики.
- PopArt: статистики нормализации value не сохраняются в чекпойнт и пересчитываются при возобновлении обучения.
Первые два пункта - это дрейф версий среды, а не свойство метода. Последние два - реальные ограничения архитектуры, и именно они задают направление следующей работы.