mirror of
https://github.com/dair-ai/Prompt-Engineering-Guide
synced 2024-11-02 15:40:13 +00:00
109 lines
9.0 KiB
Plaintext
109 lines
9.0 KiB
Plaintext
# Few-Shot Prompting
|
||
|
||
Большие языковые модели продемонстрировали впечатляющие возможности zero-shot промптинга, однако они все еще ограничены в более сложных задачах при использовании zero-shot настроек. Few-shot промптинг может использоваться в качестве техники для обеспечения контекстного обучения, когда мы предоставляем демонстрации в запросе, чтобы направить модель на более высокую производительность. Демонстрации служат в качестве контекста для последующих примеров, в которых мы хотим, чтобы модель генерировала ответ.
|
||
|
||
Согласно исследованию [Touvron et al. 2023](https://arxiv.org/pdf/2302.13971.pdf), few-shot свойства впервые появились, когда модели были масштабированы до достаточного размера [(Kaplan et al., 2020)](https://arxiv.org/abs/2001.08361).
|
||
|
||
Давайте продемонстрируем few-shot на примере, представленном в [Brown et al. 2020](https://arxiv.org/abs/2005.14165). В данном примере задача состоит в правильном использовании нового слова в предложении.
|
||
|
||
*Запрос:*
|
||
```
|
||
A "whatpu" is a small, furry animal native to Tanzania. An example of a sentence that uses
|
||
the word whatpu is:
|
||
We were traveling in Africa and we saw these very cute whatpus.
|
||
To do a "farduddle" means to jump up and down really fast. An example of a sentence that uses
|
||
the word farduddle is:
|
||
```
|
||
|
||
*Результат:*
|
||
```
|
||
When we won the game, we all started to farduddle in celebration.
|
||
```
|
||
|
||
Мы можем наблюдать, что модель каким-то образом научилась выполнять задачу, предоставив ей всего один пример (так называемый 1-shot). Для более сложных задач мы можем экспериментировать с увеличением количества демонстраций (например, 3-shot, 5-shot, 10-shot и т. д.).
|
||
|
||
Следуя результатам исследования [Min et al. (2022)](https://arxiv.org/abs/2202.12837), вот несколько дополнительных советов о демонстрациях/примерах при использовании few-shot промптинга:
|
||
|
||
- "пространство меток и распределение входного текста, заданного демонстрациями, оба являются важными (независимо от того, являются ли метки правильными для отдельных входов)"
|
||
- формат, который вы используете, также играет ключевую роль в производительности. Даже если вы используете случайные метки, это гораздо лучше, чем отсутствие меток вообще.
|
||
- дополнительные результаты показывают, что выбор случайных меток из реального распределения меток (вместо равномерного распределения) также помогает.
|
||
|
||
Давайте попробуем несколько примеров. Давайте сначала попробуем пример со случайными метками (то есть метки "Negative" и "Positive" случайным образом присваиваются входным данным):
|
||
|
||
*Запрос:*
|
||
```
|
||
This is awesome! // Negative
|
||
This is bad! // Positive
|
||
Wow that movie was rad! // Positive
|
||
What a horrible show! //
|
||
```
|
||
|
||
*Результат:*
|
||
```
|
||
Negative
|
||
```
|
||
|
||
Мы все равно получаем правильный ответ, даже если метки были случайно выбраны. Обратите внимание, что мы также сохраняем формат, что также полезно. Фактически, с дальнейшими экспериментами, кажется, что новые модели GPT, с которыми мы экспериментируем, становятся более устойчивыми даже к случайным форматам. Например:
|
||
|
||
*Запрос:*
|
||
```
|
||
Positive This is awesome!
|
||
This is bad! Negative
|
||
Wow that movie was rad!
|
||
Positive
|
||
What a horrible show! --
|
||
```
|
||
|
||
*Результат:*
|
||
```
|
||
Negative
|
||
```
|
||
|
||
В данном случае нет последовательности формата, но модель все равно предсказала правильную метку. Однако нам нужно провести более подробный анализ, чтобы убедиться, что это справедливо для различных и более сложных задач, включая различные вариации запросов.
|
||
|
||
### Ограничения few-shot промптинга
|
||
|
||
Стандартный few-shot промптинг хорошо работает для многих задач, но это все еще несовершенная техника, особенно при работе с более сложными задачами рассуждения. Давайте продемонстрируем, почему это так. Вы помните предыдущий пример, в котором мы предложили следующую задачу:
|
||
|
||
```
|
||
The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1.
|
||
|
||
A:
|
||
```
|
||
|
||
Если мы повторим этот пример, модель выводит следующее:
|
||
|
||
```
|
||
Yes, the odd numbers in this group add up to 107, which is an even number.
|
||
```
|
||
|
||
Это неправильный ответ, что подчеркивает ограничения таких систем и необходимость более продвинутой техники формулировки запросов.
|
||
|
||
Давайте попробуем добавить несколько примеров, чтобы посмотреть, улучшит ли few-shot промптингрезультаты.
|
||
|
||
*Запрос:*
|
||
```
|
||
The odd numbers in this group add up to an even number: 4, 8, 9, 15, 12, 2, 1.
|
||
A: The answer is False.
|
||
|
||
The odd numbers in this group add up to an even number: 17, 10, 19, 4, 8, 12, 24.
|
||
A: The answer is True.
|
||
|
||
The odd numbers in this group add up to an even number: 16, 11, 14, 4, 8, 13, 24.
|
||
A: The answer is True.
|
||
|
||
The odd numbers in this group add up to an even number: 17, 9, 10, 12, 13, 4, 2.
|
||
A: The answer is False.
|
||
|
||
The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1.
|
||
A:
|
||
```
|
||
|
||
*Результат:*
|
||
```
|
||
The answer is True.
|
||
```
|
||
|
||
Это не сработало. Кажется, что few-shot промптинга недостаточно для получения надежных ответов на этот тип задач рассуждения. Приведенный выше пример предоставляет базовую информацию о задаче. Если взглянуть поближе, то задача, которую мы представили, включает несколько более сложных шагов рассуждения. Другими словами, возможно, будет полезно разбить проблему на шаги и продемонстрировать их модели. Недавно [CoT prompting](https://arxiv.org/abs/2201.11903) стал популярным для решения более сложных задач арифметики, здравого смысла и символического рассуждения
|
||
|
||
В целом, предоставление примеров полезно для решения некоторых задач. Когда zero-shot и few-shot промптингов недостаточны, это может означать, что то, что было изучено моделью, недостаточно для успешного выполнения задачи. В таком случае рекомендуется начать думать о настройке модели или экспериментах с более продвинутыми техниками формулировки запросов. Далее мы расскажем о одной из популярных техник формулировки запросов, называемой цепочкой мыслей (chain-of-thought prompting), которая получила большую популярность. |