Что такое Chain-of-Thought без токенов (latent CoT) и как это реализовано?
Краткий тезис
Latent CoT (Reasoning|скрытая цепочка рассуждений) — это метод, при котором модель рассуждает в непрерывном скрытом пространстве, не генерируя промежуточные текстовые токены. Вместо декодирования каждого шага рассуждения в слова, модель выполняет итеративные обновления скрытого состояния через дополнительные слои или специальные механизмы. Это позволяет ускорить инференс, снизить вычислительные затраты и потенциально улучшить глубину рассуждений. Ключевые реализации — COCONUT (2025) и ∇-Reasoner.
1. Термин: Chain-of-Thought (CoT) и его ограничения
Chain-of-Thought (CoT) — техника, при которой модель генерирует последовательность промежуточных шагов рассуждения в виде текста перед финальным ответом. CoT значительно улучшает производительность на задачах, требующих многошаговой логики (математика, планирование).
Ограничения обычного CoT
- Генерация токенов требует времени — каждый шаг декодируется авторегрессивно, что линейно увеличивает задержку.
- Высокая вычислительная стоимость — длинные цепочки потребляют много памяти и FLOPs.
- Избыточность — модель может генерировать многословные, неинформативные шаги.
- Ограничение длины контекста — длинные CoT могут превысить окно внимания.
Latent CoT предлагает обойти эти проблемы, выполняя рассуждения в скрытом пространстве, без порождения текста.
2. Идея latent CoT: рассуждение в скрытом пространстве
В обычном трансформере каждый слой преобразует state|скрытое состояние. Latent CoT добавляет дополнительные итерации (или слои), которые обновляют state|скрытое состояние, не выводя его в слова. Модель «думает» в непрерывном пространстве, а затем одним декодирующим шагом выдаёт ответ.
Ключевые принципы
- Скрытые рассуждения — модель выполняет несколько шагов внутреннего обновления, аналогичных шагам CoT, но без токенизации.
- Непрерывность — состояния — векторы в R^d, а не токены|дискретные токены.
- Эффективность — один проход через дополнительные слои быстрее, чем генерация последовательности токенов.
3. Архитектурные подходы к реализации
3.1 Дополнительные слои трансформера
Модель содержит резервные слои (residual blocks), которые активируются только во время рассуждения. После обычного прямого прохода модель выполняет K итераций через эти слои, обновляя скрытое состояние последнего слоя.
3.2 Итеративное обновление скрытого состояния (рекуррентный подход)
Вместо дополнительных слоёв используется рекуррентный блок, который применяется к скрытому состоянию несколько раз. Например, в ∇-Reasoner применяется градиентный спуск по скрытому состоянию для минимизации «энергии рассуждения».
3.3 Механизм «latent reasoning tokens»
В COCONUT вводится специальный latent reasoning token — обучаемый вектор, который вставляется в последовательность скрытых состояний. Модель обрабатывает его как обычный токен, но не декодирует в текст. После нескольких итераций latent token агрегирует информацию, и модель выдаёт ответ.
4. COCONUT (2025) — конкретная реализация
COCONUT (Chain-of-Continuous-Thought) — метод, предложенный в 2025 году. Основные идеи:
- Обучение с учителем — модель обучается на парах (вопрос, ответ) с использованием специальной функции потерь, которая поощряет формирование внутренней цепочки рассуждений.
- Архитектура — стандартный декодерный трансформер, в который добавлены latent reasoning layers (LRL). Эти слои имеют ту же структуру, что и обычные, но их выход не подаётся на декодирующую голову до завершения всех итераций.
- Процесс инференса:
- Входной запрос кодируется до последнего слоя.
- Включается режим рассуждения: скрытое состояние проходит через LRL T раз (T — гиперпараметр).
- После T итераций финальное состояние декодируется в ответ.
- Обучение — используется auxiliary loss, который штрафует за преждевременное декодирование и поощряет разнообразие скрытых состояний.
Псевдокод инференса COCONUT
def forward_with_latent_cot(model, input_ids, num_reasoning_steps=5):
hidden = model.embed(input_ids)
# Прямой проход через основные слои
for layer in model.base_layers:
hidden = layer(hidden)
# Режим рассуждения
for _ in range(num_reasoning_steps):
hidden = model.latent_reasoning_layer(hidden)
# Декодирование
logits = model.lm_head(hidden[:, -1, :])
return logits
5. ∇-Reasoner — градиентный подход
∇-Reasoner использует градиентный спуск в скрытом пространстве для имитации рассуждения. Идея: определить «энергию» скрытого состояния (например, несоответствие между текущим состоянием и ожидаемым ответом) и минимизировать её путём итеративного обновления.
- Функция энергии E(h) — обычно отрицательное логарифмическое правдоподобие ответа при данном скрытом состоянии.
- Обновление: h_{t+1} = h_t - η ∇_h E(h_t)
- Преимущество: не требует дополнительных слоёв, использует существующие градиенты модели.
- Недостаток: необходимость вычисления градиентов на инференсе (дорого), но можно аппроксимировать.
6. Сравнение обычного CoT и latent CoT
| Характеристика | Обычный CoT (текстовый) | Latent CoT (скрытый) |
|---|---|---|
| Форма рассуждений | Дискретные токены | Непрерывные векторы |
| Скорость инференса | Медленнее (линейно от длины цепочки) | Быстрее (константное число итераций) |
| Вычислительные затраты | Высокие (генерация каждого токена) | Ниже (один проход через доп. слои) |
| Интерпретируемость | Высокая (можно прочитать шаги) | Низкая (скрытые состояния не читаемы) |
| Контролируемость | Можно редактировать шаги | Сложно вмешаться |
| Длина контекста | Ограничена окном внимания | Не влияет (нет новых токенов) |
| Точность на сложных задачах | Высокая (проверено) | Потенциально выше (больше итераций) |
7. Преимущества latent CoT
- Скорость — инференс в 2–5 раз быстрее, чем эквивалентный текстовый CoT.
- Эффективность памяти — не нужно хранить длинные последовательности токенов.
- Глубина рассуждений — можно выполнять десятки итераций без риска превысить лимит контекста.
- Параллелизм — итерации скрытого состояния можно частично распараллелить (в отличие от авторегрессивной генерации).
8. Недостатки и вызовы
- Интерпретируемость — невозможно прочитать «мысли» модели, что критично для отладки и доверия.
- Обучение — требуется специальная процедура, чтобы модель научилась использовать скрытые итерации. Без правильного обучения модель может игнорировать дополнительные шаги.
- Контроль — сложно гарантировать, что модель действительно рассуждает, а не просто «перекодирует» вход.
- Гиперпараметры — число итераций T нужно подбирать; слишком мало — недостаточно рассуждений, слишком много — затухание градиентов.
9. Применение в Agentic RAG
В Agentic RAG агенты часто используют CoT для планирования последовательности действий (поиск документов, вызов инструментов). Latent CoT может ускорить этот процесс:
- Планирование без токенов — агент «обдумывает» план в скрытом пространстве, а затем генерирует только финальную последовательность действий.
- Многошаговое рассуждение — агент может выполнять десятки итераций рассуждения для сложных запросов без увеличения времени ответа.
- Интеграция с памятью — скрытые состояния могут быть сохранены и использованы как контекст для следующих шагов.
Пример: агент получает запрос «Найди последние статьи по квантовым вычислениям и сравни их с обзором 2023 года». Вместо генерации длинного текстового плана, latent CoT за несколько итераций формирует внутреннее представление плана, а затем выдаёт команды: search("quantum computing 2024"), retrieve("review 2023"), compare().
10. Пет-проект для закрепления
Задача Реализовать упрощённую версию latent CoT на базе небольшого трансформера (например, GPT-2) для задачи математических рассуждений (сложение многозначных чисел).
Инструменты PyTorch, Hugging Face Transformers, небольшой датасет (например, GSM8K subset).
Шаги:
- Загрузите предобученный GPT-2 (distilgpt2).
- Добавьте latent reasoning layer — один дополнительный трансформерный слой после последнего слоя модели. Заморозьте основные слои.
- Определите режим рассуждения: после обычного прямого прохода примените LRL K раз (K=3) к скрытому состоянию последнего токена.
- Обучите LRL на задаче: вход — строка "123 + 456 =", выход — правильный ответ "579". Используйте loss только на финальном токене.
- Сравните точность и скорость с обычным fine-tuning (без latent CoT) и с текстовым CoT (генерируйте промежуточные шаги).
Ожидаемый результат Модель с latent CoT покажет сопоставимую точность с текстовым CoT, но будет работать в 2–3 раза быстрее на инференсе. Вы сможете визуализировать скрытые состояния и увидеть, как они меняются с каждой итерацией.
11. Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 289 | Архитектура Agentic RAG |
| 291 | Планирование в Agentic RAG |
| 292 | Использование инструментов агентами |
| 293 | Память в Agentic RAG |
| 294 | Мультиагентные системы |
| 295 | Оценка агентов |
12. Навигация
- Предыдущий: 289
- Следующий: 291
- Индекс: 00. Индекс разборов
Навигация
- Предыдущий: 289
- Следующий: 291
- Индекс: 00. Индекс разборов