Few-shot Subgoal Planning with Language Models
Это обзор на статью: Logeswaran L. et al. Few-shot subgoal planning with language models //arXiv preprint arXiv:2205.14288. – 2022.
Задача авторов - научиться генерировать план для агента действующего в среде по инструкции. При этом они показывают, что для этого вообще не обязательно обучать языковую модель - она уже и так все может и все умеет. Вместо этого, авторы учат модель ранжирования, которая дает оценку предсказнным языковой моделью планам.
1) Улучшение ранжирования модели за счет скоринга на основе взаимной информации.
Языковая модель (GPT-2/GPT-J) предсказывает топ-k возможных планов, но часто даёт популярные, но неподходящие предсказания.
* Запрос: "Как добраться в Лувр?"
* Предсказание 1: "Садись в метро, езжай на станцию Palais Royal – Musée du Louvre."
* Предсказание 2: "Лети в Париж, выйди в аэропорту Шарль-де-Голль, возьми такси."
Второе предсказание логично, но не соответствует уровню детализации запроса.
Добавляем взвешенную взаимную информацию (Mutual Information, MI):
Score(h) = (1 - λ) log p(h | τ) + λ log p(τ | h)
- Исключает смещения, когда модель копирует популярные ответы.
- Оставляет только логически согласованные планы.
После этого отбираем топ-N лучших гипотез и передаём их на следующий уровень.
2) Модель ранжирования f(g, τ, s) и функция потерь
На втором этапе проверяем, выполним ли план в текущей среде. Если стола нет, а модель предлагает "положить яблоко на стол", это невозможно.
f(g, τ, s) = θᵀ concat(fₛₜₐₜₑ(s), fₜₑₓₜ(τ, g))
- fₛₜₐₜₑ(s) — информация о среде (объекты, их расположение, выполненные подзадачи).
- fₜₑₓₜ(τ, g) — BERT-эмбеддинг инструкции и плана.
- f(g, τ, s) — оценка плана с учётом среды.
L = - ∑_(g, τ, s, R) ∈ D R log (exp f(g, τ, s) / ∑_{i=1}^{k} exp f(gᵢ, τ, s))
Где R— бинарный успех или неудача плана. Успешные планы получают больший вес, неудачные — штрафуются.
3) Двухэтажное ранжирование: сначала отбираются адекватные планы(п.1) затем они оцениваются моделью ранжирования (п2) и отбираются наиболее выполнимые
Пример (задача: "Положить яблоко на стол")
1) Языковая модель даёт топ-5 вариантов:
- ✅ "Взять яблоко, положить на стол"
- ❌ "Положить яблоко в раковину"
- ❌ "Поставить яблоко в холодильник"
- ❌ Убираем планы, не соответствующие инструкции.
- Остаётся: "Взять яблоко, положить на стол", "Поставить яблоко в холодильник".
3) Второй уровень (модель ранжирования):
- Проверяем состояние среды: стола нет, холодильник есть.
- ❌ "Взять яблоко, положить на стол" невозможно.