Введение
Что если бы языковые модели могли решать сложные проблемы, используя тот же пошаговый подход, что и люди? В области больших языковых моделей (LLM) стратегия Least-to-Most Prompting предлагает многообещающее решение. Основываясь на статье «Least-To-Most Prompting Enables Complex Reasoning in Large Language Models», этот блог исследует, как этот инновационный метод улучшает способности LLM к рассуждению. Разбивая сложные задачи на управляемые подзадачи, Least-to-Most Prompting направляет LLM через последовательный переход от простого к сложному.
Что такое Least-to-Most Prompting?
Least-to-Most Prompting — это инновационная стратегия, представленная в статье «Least-To-Most Prompting Enables Complex Reasoning in Large Language Models», предназначенная для улучшения способностей больших языковых моделей (LLM) к рассуждению. Этот метод помогает LLM решать сложные проблемы, разбивая их на серию более простых и управляемых подзадач. Процесс включает два основных этапа:

- Декомпозиция: Сложная проблема разбивается на список более простых подзадач. На этом этапе используются постоянные примеры, демонстрирующие процесс декомпозиции, после чего следует конкретный вопрос, который нужно разбить на части.
- Решение подзадач: Затем модель побуждается решать эти подзадачи последовательно. Решение каждой подзадачи облегчается ответами на ранее решённые подзадачи. Этот этап включает примеры решений подзадач, список ранее решённых подвопросов и их решений, а также следующий вопрос, который необходимо решить.
Подсказки (prompts) составляются таким образом, чтобы направлять модель через прогрессивную последовательность — от самых простых аспектов проблемы к самым сложным, отсюда и название «least-to-most» (от простого к сложному).
Зачем нужен Least-to-Most Prompting?
Необходимость в Least-to-Most Prompting возникает из-за ограничений, наблюдаемых в существующих методах подсказок, особенно в chain-of-thought (цепочке рассуждений).
Chain-of-thought prompting — это подход, который побуждает большие языковые модели формулировать свой процесс рассуждения пошагово, подобно тому, как человек обдумывает проблему. Этот метод предполагает, что модель явно указывает каждый логический шаг, который она предпринимает для перехода от понимания вопроса к получению окончательного ответа. Разбивая задачу на серию промежуточных шагов рассуждения, модель обеспечивает прозрачный и обоснованный путь решения.
Хотя chain-of-thought prompting показал значительное улучшение производительности для различных задач логического вывода на естественном языке, он часто испытывает трудности при обобщении для решения проблем, которые сложнее, чем примеры, приведённые в подсказках.
Как Least-to-Most Prompting позволяет LLM выполнять сложные рассуждения?
Экспериментальный дизайн в статье «Least-to-Most Prompting Enables Complex Reasoning in Large Language Models» можно разбить на следующий пошаговый процесс:
Определение цели исследования
Цель состоит в том, чтобы дать большим языковым моделям возможность выполнять сложные задачи рассуждения, требующие решения проблем, которые сложнее, чем продемонстрированные в обучающих примерах.
Выбор задач
Исследователи выбрали задачи, которые являются репрезентативными для разных типов рассуждений, включая символьные манипуляции, композиционное обобщение и математические рассуждения.
Задача 1: Символьные манипуляции (задача конкатенации последних букв):
- Проблема: Дан список слов, требуется вывести конкатенацию последних букв каждого слова в списке.
- Пример: Для входа «think, machine, learning» правильный вывод — «keg».
- Least-to-Most Prompting:
- Декомпозиция проблемы: Разбейте список на последовательные подсписки («think», «think, machine», «think, machine, learning»).
- Решение подзадач: Конкатенируйте последние буквы слов в каждом подсписке («think» даёт «k», «machine» — «e», «learning» — «g»).
- Объединение решений: Используйте решения подзадач для построения окончательного ответа («k» + «e» = «ke» и «ke» + «g» = «keg»).
Задача 2: Композиционное обобщение (бенчмарк SCAN):
- Проблема: Преобразование команд на естественном языке в последовательности действий. Задача состоит в обобщении на более длинные последовательности действий, чем те, что были видны во время обучения.
- Пример: Команда «look opposite right thrice after walk» должна быть преобразована в последовательность действий «TURN RIGHT, TURN RIGHT, LOOK, WALK».
- Least-to-Most Prompting:
- Декомпозиция команды: Разбейте сложную команду на более простые части («look opposite right thrice» и «walk»).
- Преобразование в действия: Переведите каждую часть в действия («look opposite right thrice» становится «TURN RIGHT, TURN RIGHT, LOOK», повторённое трижды, а «walk» остаётся «WALK»).
- Объединение действий: Последовательно выполните действия, чтобы сформировать финальную последовательность.
Задача 3: Математические рассуждения (наборы данных GSM8K и DROP):
- Проблема: Решение математических текстовых задач, которые могут требовать нескольких шагов рассуждения.
- Пример: «У Эльзы 5 яблок. У Анны на 2 яблока больше, чем у Эльзы. Сколько яблок у них вместе?»
- Least-to-Most Prompting:
- Декомпозиция проблемы: Определите подзадачи (Сколько яблок у Анны? Сколько яблок у них вместе?).
- Решение подзадач: Вычислите яблоки Анны (5 + 2 = 7), затем общее количество (5 + 7 = 12).
- Окончательный ответ: Заключите, что у Эльзы и Анны вместе 12 яблок.
Разработка стратегий подсказок
Сравниваются две основные стратегии подсказок:
- Chain-of-Thought Prompting: Этот подход включает предоставление модели примеров, демонстрирующих пошаговый процесс рассуждения для решения задачи.

- Least-to-Most Prompting: Эта новая стратегия включает разбиение сложной проблемы на более простые подзадачи и их последовательное решение, используя решения предыдущих подзадач для облегчения решения следующей.

Создание примеров подсказок
Для каждой стратегии подсказок исследователи подготовили примеры, демонстрирующие, как подходить к задачам. Для Least-to-Most Prompting это включает примеры как декомпозиции проблемы, так и решения подзадач.
Реализация подсказок в модели
Затем языковая модель получает эти подсказки на вход. Для Least-to-Most Prompting это включает два этапа:
- Этап декомпозиции: Модели предлагается разбить исходную проблему на серию более простых подзадач.
- Этап решения подзадач: Затем модели предлагается последовательно решать эти подзадачи, используя ответы предыдущих подзадач для информирования решения следующей.
Построение тестовых наборов
Для каждой задачи исследователи создали тестовые наборы с различными уровнями сложности.
Задача 1: Символьные манипуляции (задача конкатенации последних букв):
- Тестовый набор для этой задачи включал создание списков слов различной длины для проверки способности модели конкатенировать последние буквы каждого слова в списке.
- Исследователи использовали список из 10 000 самых распространённых английских слов из Wiktionary, исключая нецензурные слова, в результате получив список из 9 694 слов.
- Для каждого желаемого размера списка (от 4 до 12 слов) они сгенерировали 500 случайных последовательностей этих слов. Каждая последовательность служила входом, а соответствующим выходом была последовательность последних букв слов.
Задача 2: Композиционное обобщение (бенчмарк SCAN):
- Бенчмарк SCAN состоит из команд на естественном языке, которые необходимо преобразовать в последовательности действий. Тестовый набор проверяет способность модели обобщать от более коротких к более длинным последовательностям действий.
- Исследователи использовали существующие разбиения набора данных SCAN, особенно сосредоточившись на разбиении по длине, которое содержит последовательности действий, более длинные, чем в обучающем наборе.
- Они также убедились, что тестовый набор охватывает ряд команд для оценки способности модели справляться с различными типами композиционного обобщения.
Задача 3: Математические рассуждения (наборы данных GSM8K и DROP):
- Для математических рассуждений исследователи использовали текстовые задачи из набора данных GSM8K и подмножество числовых рассуждений из набора данных DROP.
- Тестовый набор включал задачи, требующие разного количества шагов рассуждения для решения, что позволяло исследователям оценить, насколько хорошо модель может обобщать от более простых к более сложным задачам.
- Задачи были выбраны так, чтобы представлять диапазон уровней сложности и гарантировать, что некоторые задачи требуют больше шагов, чем продемонстрировано в подсказках.
Построив тестовые наборы таким образом, исследователи смогли тщательно оценить стратегию Least-to-Most Prompting и сравнить её эффективность со стандартными методами подсказок на разных задачах рассуждения.
Проведение экспериментов и сбор результатов
Исследователи провели эксперименты с использованием модели GPT-3 (конкретно версии code-davinci-002) с обеими стратегиями подсказок. Они записали точность ответов модели на тестовых наборах.
Анализ результатов
Исследователи сравнили производительность модели при использовании разных стратегий подсказок. Они рассматривали общую точность, а также разбивали результаты по количеству шагов рассуждения, необходимых для решения задач.
Анализ ошибок
Для Least-to-Most Prompting исследователи провели детальный анализ ошибок, чтобы понять распространённые ошибки, такие как неправильная декомпозиция проблем или неправильное решение подзадач.
Насколько улучшается производительность LLM с помощью Least-to-Most Prompting?
Статья «Least-To-Most Prompting Enables Complex Reasoning in Large Language Models» демонстрирует эффективность Least-to-Most Prompting в различных задачах и сравнивает его производительность с chain-of-thought prompting и стандартными методами подсказок. Вот сводка улучшений производительности для каждой задачи, описанных в статье:
Символьные манипуляции (задача конкатенации последних букв):
Least-to-Most Prompting значительно превзошёл chain-of-thought prompting, особенно при увеличении длины списков слов.
Для списков длиной от 4 до 12 слов точность Least-to-Most Prompting с моделью GPT-3 code-davinci-002 варьировалась от 74,0% до 94,0%, что было существенно выше точности chain-of-thought prompting, которая составляла от 31,8% до 84,2%.

Композиционное обобщение (бенчмарк SCAN):
Least-to-Most Prompting достиг точности 99,7% в условии разбиения по длине, используя всего 14 примеров, что является выдающимся результатом, учитывая, что специализированные нейро-символические модели, обученные на всём наборе данных из более чем 15 000 примеров, часто испытывают трудности с этой задачей.
В отличие от этого, chain-of-thought prompting достиг лишь 16,2% точности с той же моделью в условии разбиения по длине.
Математические рассуждения (наборы данных GSM8K и DROP):
На наборе данных GSM8K Least-to-Most Prompting незначительно улучшил результат по сравнению с chain-of-thought prompting, с общей точностью 62,39% против 60,87% для chain-of-thought prompting.
Однако для задач, требующих как минимум 5 шагов для решения, Least-to-Most Prompting показал значительное улучшение: точность 45,23% по сравнению с 39,07% для chain-of-thought prompting.
На наборе данных DROP Least-to-Most Prompting значительно превзошёл chain-of-thought prompting с точностью 82,45% и 74,77% для подмножеств non-football и football соответственно, по сравнению с 58,78% и 59,56% для chain-of-thought prompting.
Эти результаты показывают, что Least-to-Most Prompting особенно эффективен в задачах, требующих от модели обобщения от более простых примеров к более сложным проблемам. Стратегия разбиения сложных задач на серию более простых подзадач и их последовательное решение позволяет модели достигать более высокой точности в различных задачах рассуждения.
Как интегрировать Least-to-Most Prompting в свою LLM?
Основываясь на подходах, представленных авторами «Least-To-Most Prompting Enables Complex Reasoning in Large Language Models», мы создали для вас следующее пошаговое руководство:
Шаг 1: Получите API LLM
Сначала вам нужен доступ к LLM, которую вы можете использовать для своей задачи. Novita AI LLM API предоставляет разработчикам множество экономически эффективных вариантов LLM, включая Llama3–8b, Llama3–70b, Mythomax-13b и другие.

Вот пример вызова Chat Completion API с помощью Novita AI LLM API:
from openai import OpenAI
client = OpenAI(
base_url="https://api.novita.ai/v3/openai",
# Получите ключ API Novita AI, обратившись: https://novita.ai/get-started/Quick_Start.html#_3-create-an-api-key
api_key="<ВАШ КЛЮЧ API Novita AI>",
)
model = "Nous-Hermes-2-Mixtral-8x7B-DPO"
stream = True # или False
max_tokens = 512
chat_completion_res = client.chat.completions.create(
model=model,
messages=[
{
"role": "system",
"content": "Ведите себя как полезный ассистент.",
},
{
"role": "user",
"content": "Привет!",
}
],
stream=stream,
max_tokens=max_tokens,
)
if stream:
for chunk in chat_completion_res:
print(chunk.choices[0].delta.content or "", end="")
else:
print(chat_completion_res.choices[0].message.content)
Шаг 2: Подготовьте подсказку для декомпозиции
Создайте набор примеров подсказок, демонстрирующих, как разбить сложную проблему на серию более простых подзадач. Примеры должны показывать структуру декомпозиции, но не обязательно конкретное содержание подзадач.
Шаг 3: Подготовьте подсказку для решения подзадач
Создайте набор примеров подсказок, демонстрирующих, как решать отдельные подзадачи. Эти примеры должны показывать процесс построения решения пошагово, используя результаты ранее решённых подзадач.
Шаг 4: Реализуйте алгоритм Least-to-Most Prompting
Ключевые шаги в алгоритме Least-to-Most Prompting: a. Передайте исходную проблему в подсказку для декомпозиции и получите список подзадач. b. Для каждой подзадачи создайте подсказку, включающую решения предыдущих подзадач (если есть) и текущую подзадачу, и передайте её LLM для получения решения. c. Объедините решения подзадач, чтобы получить окончательное решение исходной проблемы.
Шаг 5: Интеграция с вашим приложением
Включите алгоритм Least-to-Most Prompting в рабочий процесс вашего приложения. Это может включать предварительную обработку входных данных, создание подсказок, вызов API LLM и постобработку выходных данных.
Шаг 6: Оценка и итерации
Протестируйте вашу реализацию на различных задачах и уровнях сложности. Проанализируйте ошибки и доработайте дизайн подсказок или алгоритм подсказок по мере необходимости.
Это высокоуровневый пример, созданный LLM; вам может потребоваться адаптировать его под свой конкретный случай использования и LLM.
import openai
# Установите ключ API Novita AI
openai.api_key = "<ВАШ КЛЮЧ API Novita AI>"
openai.base_url = "https://api.novita.ai/v3/openai"
def decomp_prompt(original_problem):
"""
Генерирует подсказку для декомпозиции исходной проблемы на серию подзадач.
Args:
original_problem (str): Исходная проблема для декомпозиции.
Returns:
str: Подсказка для декомпозиции проблемы.
"""
return f"""
Пожалуйста, разбейте следующую проблему на серию подзадач, которые можно решить пошагово:
{original_problem}
Подзадачи:
{{{decomp_steps}}}
"""
def solve_prompt(prev_solutions, subproblem):
"""
Генерирует подсказку для решения конкретной подзадачи с учётом ранее решённых подзадач.
Args:
prev_solutions (str): Ранее решённые подзадачи.
subproblem (str): Подзадача, которую нужно решить.
Returns:
str: Подсказка для решения подзадачи.
"""
return f"""
Учитывая следующие ранее решённые подзадачи:
{prev_solutions}
Пожалуйста, решите следующую подзадачу:
{subproblem}
"""
def solve_problem(original_problem):
"""
Решает исходную проблему с помощью алгоритма Least-to-Most Prompting.
Args:
original_problem (str): Исходная проблема для решения.
Returns:
list: Список решений подзадач.
"""
# Декомпозиция исходной проблемы на подзадачи
decomp_result = openai.Completion.create(
engine="text-davinci-002",
prompt=decomp_prompt(original_problem),
max_tokens=1024,
n=1,
stop=None,
temperature=0.7,
)
decomp_steps = decomp_result.choices[0].text.strip()
# Решение подзадач одну за другой
solutions = []
for step in decomp_steps.split("\
"):
step = step.strip()
if step:
solve_result = openai.Completion.create(
engine="text-davinci-002",
prompt=solve_prompt("\
".join(solutions), step),
max_tokens=1024,
n=1,
stop=None,
temperature=0.7,
)
solutions.append(solve_result.choices[0].text.strip())
return solutions
# Пример использования
original_problem = "Решите сложную математическую задачу пошагово."
solutions = solve_problem(original_problem)
print("\
".join(solutions))
Каковы ограничения Least-to-Most Prompting?
Доменная специфичность:
Подсказки для декомпозиции часто адаптированы к конкретным доменам и могут плохо обобщаться на разные типы проблем. Подсказка, хорошо работающая для математических текстовых задач, может быть неэффективна для задач здравого смысла или проблем из других доменов.
Проблема обобщения внутри домена:
Даже в рамках одного домена обобщение процесса декомпозиции может быть затруднено. Подсказки должны быть тщательно разработаны, чтобы продемонстрировать правильную декомпозицию для достижения моделью оптимальной производительности.
Сложность декомпозиции:
Некоторые сложные проблемы могут требовать глубокого понимания того, как разбить их на более простые подзадачи. Разработка подсказок, эффективно направляющих модель через этот процесс, может быть сложной задачей.
Последовательная зависимость:
Сгенерированные в Least-to-Most Prompting подзадачи часто зависимы и должны решаться в определённом порядке. Это последовательное требование может усложнить процесс подсказок по сравнению с независимыми подзадачами.
Распространение ошибок:
Если модель допускает ошибку на ранних этапах декомпозиции проблемы или решения подзадачи, эта ошибка может распространиться на последующие шаги, что приведёт к неверному итоговому решению.
Специфичность для модели:
Производительность Least-to-Most Prompting может различаться между разными моделями или версиями одной и той же модели. Некоторые модели могут лучше подходить для решения итеративного и рекурсивного характера задачи.
Проектирование подсказок:
Эффективность Least-to-Most Prompting может сильно зависеть от качества проектирования подсказок. Создание эффективных подсказок, которые приводят к точной декомпозиции и генерации решений, требует тщательного обдумывания и опыта.
Масштабируемость:
Хотя Least-to-Most Prompting может быть эффективным, он может не так хорошо масштабироваться для очень больших или чрезвычайно сложных проблем из-за возросшей сложности разработки подходящих подсказок и потенциального распространения ошибок.
Отсутствие двунаправленного взаимодействия:
Авторы предполагают, что подсказки в целом, возможно, не являются оптимальным методом для обучения навыкам рассуждения LLM, потому что это однонаправленная форма общения. Более естественное развитие может включать эволюцию подсказок в полностью двунаправленные беседы, которые допускают немедленную обратную связь и более эффективное обучение.
Заключение
Разбивая сложные проблемы на более простые шаги и решая их последовательно, LLM с помощью Least-to-Most Prompting не только улучшают свои способности к рассуждению, но и демонстрируют выдающуюся производительность в различных задачах — от символьных манипуляций до композиционного обобщения и математических рассуждений.
Однако важно признать проблемы, сопровождающие этот метод. Доменная специфичность, трудности с обобщением внутри домена и сложность декомпозиции могут создавать препятствия. Кроме того, последовательная зависимость подзадач и потенциальное распространение ошибок подчёркивают необходимость тщательного проектирования подсказок и учёта специфики модели.
Продолжая исследовать новые горизонты в разработке ИИ, Least-to-Most Prompting выделяется как ключевая стратегия, которая даёт LLM возможность преодолевать сложности задач рассуждения с беспрецедентной точностью и эффективностью, а также стимулирует текущие исследования по оптимизации её применения в различных проблемных областях.
Ссылки
Zhou, D., Schärli, N., Hou, L., Wei, J., Scales, N., Wang, X., Schuurmans, D., Cui, C., Bousquet, O., & Chi, E. (2023). Least-to-Most Prompting Enables Complex Reasoning in Large Language Models. In Proceedings of the International Conference on Learning Representations.
Novita AI — это облачная платформа «всё в одном», которая воплощает ваши амбиции в области ИИ. С легко интегрируемыми API, бессерверными вычислениями и ускорением GPU мы предоставляем экономически эффективные инструменты, необходимые для быстрой разработки и масштабирования вашего бизнеса на основе ИИ. Устраните проблемы с инфраструктурой и начните бесплатно — Novita AI превращает ваши мечты об ИИ в реальность.
