October 10, 2023

LLM. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

⛓️ Chain-of-Thought Prompting Elicits Reasoning in Large Language Models


🤘 one-liner:
Способствование генерации цепочек рассуждений, а не только ответов, в больших языковых моделях значительно улучшает решение сложных задач

Figure 1: Chain-of-thought prompting enables large language models to tackle complex arithmetic, commonsense, and symbolic reasoning tasks. Chain-of-thought reasoning processes are highlighted.

В целом на этом можно и закончить разбор!


Собственно как все таки раскрыть способность больших языковых моделей к рассуждению.

  1. По старинке. обучать с нуля или finetuning
  2. В In-context режиме. Вместо того чтобы дообучить модель под конкретную задачу, можно адаптировать замороженную языковую модель к задачам, предоставляя в промпт, включающий в себе условие задачи и несколько входных и выходных примеров.
♿️ Ограничения простого промптинга Второй подход плохо справляется с задачами, требующими способности к рассуждению, и при этом увеличении размера языковой модели не сильно улучшает качество.
💡 Идея В качестве примеров в промпте использовать не дуплет, а триплет:
<input, output><input, chain of thought, output>
Где сhain of thought — последовательность промежуточных шагов (рассуждений) на естественном языке, которые приводят к конечному результату.

Почему такой подход важен:

  1. Не нужно преобучать llm под конкретную задачу, выбрасывая время на сбор необходимого датасета и деньги на GPU-часы
  2. Благодаря prompt-base подходу можно выполнять множество задач используя одни и теже веса модели
💫 Положительные свойства CoT 1. При разделении сложной задачи на последовательные этапы, модель может выделять дополнительные ресурсы для решения тех задач, где требуется больше шагов в рассуждениях
2. Такой подход делает процесс генерации более прозрачным. Благодаря цепочки рассуждений можно понять как модель пришла к тому или иному ответу. Тем самым появляется возможность для отладки
3. Данных подход может быть использован с любой LLM, просто включив примеры последовательностей цепочки рассуждений в промпт

Нужно отметить что метод расцветает с увеличением размера модели.

Figure 4: Chain-of-thought prompting enables large language models to solve challenging math problems. Notably, chain-of-thought reasoning is an emergent ability of increasing model scale. Prior best numbers are from Cobbe et al. (2021) for GSM8K, Jie et al. (2022) for SVAMP, and Lan et al. (2021) for MAWPS.
♿️ Ограничения CoT

1. Не понятно где именно происходит процесс рассуждения в LLM 2. Для finetuning ручное добавление к обычному запросу CoT может быть дорогим, хотя в целом эту часть можно будет выполнять при помощи автогенерации
3. Нет гарантии генерации правильной цепочки рассуждений и тем более правильного ответа при правильной цепочки рассуждений 4. Как видно из графиков выше, CoT начинает работать на больших моделях, деплой которых может позволить себе далеко не каждый

Потные вопросы 1. Интуиция почему подход CoT благоприятно влияет на результаты модели?
2. Почему метод начинает показывать хорошие результаты начиная с размерности в ∼100B параметров?

👨‍💻 Code

Default prompt

from langchain.llms import OpenAI

llm = OpenAI(
  model_name="text-davinci-003",
  temperature=0,
)

default_prompt = """
I went to the market and bought 10 apples. I gave 2 apples to the neighbor and 2 to the repairman.
I then went and bought 5 more apples and ate 1. How many apples did I remain with?
"""

default_output = llm(default_prompt)
print(default_output)
13 apples

With Chain of Thought

cot_prompt = """
I went to the market and bought 10 apples. I gave 2 apples to the neighbor and 2 to the repairman.
I then went and bought 5 more apples and ate 1. How many apples did I remain with?
Let's think step by step.
"""

cot_output = llm(cot_prompt)
print(cot_output)
I bought 10 apples.
I gave away 4 apples.
I bought 5 more apples.
I ate 1 apple.

So, I remain with 10 apples.