Few-Shot Prompting
"Few-shot prompting" переводится на русский как "Промптинг с несколькими примерами или дословно несколько выстрелов".
Большие языковые модели (LLM) продемонстрировали впечатляющие возможности в области промптинга без примеров (Zero-Shot промптинг) формулирования запросов, однако они всё ещё имеют ограничения при выполнении более сложных задач в рамках данного метода. "Промптинг с несколькими примерами" (few-shot промптинг) может использоваться в качестве техники, чтобы предоставить контекстное обучение, когда мы предоставляем примеры в запросе, чтобы направить модель на более высокую производительность. Примеры служат контекстом для последующих задач, в которых мы хотим, чтобы модель генерировала ответы.
Согласно исследованию Touvron et al. 2023, свойства "few-shot" (работа несколькими примерами) впервые стали заметными, когда модели были масштабированы до достаточных размеров (Kaplan et al., 2020).
Давайте проиллюстрируем подход "few-shot" на примере из работы Brown et al. 2020. В данном случае задача заключается в корректном использовании нового слова в предложении.
Промпт:
"Вотпу" - это маленькое пушистое животное, обитающее в Танзании. Пример предложения, в котором используется слово "вотпу": Мы путешествовали в Африке и увидели этих очень милых вотпу. "Фардадл" означает быстро подпрыгивать вверх и вниз. Пример предложения, в котором используется слово "фардадл":
Результат:
Когда мы выиграли игру, мы все начали фардадлить в знак празднования.
Мы можем наблюдать, что модель каким-то образом научилась выполнять задачу, предоставив ей всего один пример (так называемый 1-shot). Для более сложных задач мы можем экспериментировать с увеличением количества примеров (например, 3-shot, 5-shot, 10-shot и т. д.).
Следуя результатам исследования Min et al. (2022), вот несколько дополнительных советов о демонстрациях/примерах при использовании few-shot промптинга:
Важно, какие слова мы используем для обозначения чего-то, и как устроен текст, который мы используем для примеров. Это важно, даже если слова не всегда подходят точно для каждой ситуации.
Также важно, как вы организовываете текст, который используете. Этот способ также влияет на то, насколько хорошо работает система. Даже если вы используете случайные слова для обозначения, это все равно лучше, чем совсем не использовать обозначения.
Дополнительные исследования показывают, что если выбирать случайные слова для обозначения из тех, которые чаще используются (а не просто равномерно), это также помогает.
Давайте рассмотрим несколько примеров. Начнем с примера, где используются случайные обозначения (то есть ключевые фразы "Отрицательно" и "Положительно" присваиваются входным данным случайным образом):
Промпт:
Это здорово! // Отрицательно Это плохо! // Положительно Вау, этот фильм был крут! // Положительно Какое ужасное шоу! //
Результат:
Отрицательно
Мы всё равно получаем правильный ответ, даже если обозначения/ключевые фразы были выбраны случайно. Важно отметить, что мы также сохраняем структуру, и это тоже полезно. На самом деле, в ходе дополнительных экспериментов становится ясно, что новые модели GPT, с которыми мы работаем, становятся более устойчивыми даже к случайным образцам. Например:
Промпт:
Положительно: Это потрясающе! Это плохо! Отрицательно Вот этот фильм был крут! Положительно Какое ужасное шоу! --
Результат:
Отрицательно
В данном примере отсутствует последовательность формата промпта, но модель всё равно верно ответила. Однако для более точного понимания нам необходимо провести более детальный анализ, чтобы убедиться, что это применимо к различным и более сложным задачам, включая разные варианты запросов.
Ограничение Few-Shot промптинга
Стандартный few-shot промптинг хорошо работает для многих задач, но это все еще несовершенная техника, особенно при работе с более сложными задачами рассуждения. Давайте продемонстрируем, почему это так. Вы помните предыдущий пример, в котором мы предложили следующую задачу:
Нечетные числа в этой группе дают в сумме четное число: 15, 32, 5, 13, 82, 7, 1. A:
Если мы повторим этот пример, модель даст следующий результат:
Да, нечетные числа в этой группе дают в сумме 107, что является четным числом.
Это неправильный ответ, что подчеркивает ограничения таких систем и необходимость более продвинутой техники формулировки промпта.
Давайте попробуем добавить несколько примеров, чтобы посмотреть, улучшит ли few-shot промптинг наши результаты.
Промпт:
Нечетные числа в этой группе дают в сумме четное число: 4, 8, 9, 15, 12, 2, 1. A: Ответ неверный (False). Сумма нечетных чисел в этой группе дает четное число: 17, 10, 19, 4, 8, 12, 24. A: Ответ верный (True). Сумма нечетных чисел в этой группе дает четное число: 16, 11, 14, 4, 8, 13, 24. A: Ответ верный (True). Сумма нечетных чисел в этой группе дает четное число: 17, 9, 10, 12, 13, 4, 2. A: Ответ неверный (False). Сумма нечетных чисел в этой группе дает четное число: 15, 32, 5, 13, 82, 7, 1. A:
Результат:
Ответ верный (True).
Этот подход не сработал. Похоже, что использование few-shot промптинга недостаточно для достижения надежных ответов на такие задачи рассуждения. Приведенный выше пример дает основную информацию о задаче. Если мы рассмотрим это ближе, то можно увидеть, что задача, которую мы представили, включает в себя несколько более сложных этапов рассуждения. Другими словами, возможно, будет полезно разбить проблему на более простые шаги и показать их модели. Недавно метод CoT prompting стал популярным для решения более сложных задач в арифметике и символическом рассуждении.
В целом, предоставление примеров действительно помогает в решении некоторых задач. Если применение zero-shot или few-shot промптингов не дает ожидаемых результатов, это может указывать на то, что модель не обладает достаточными знаниями для успешного выполнения задачи. В таком случае стоит начать рассматривать возможность настройки модели или проведения экспериментов с более сложными способами формулировки промптов. Теперь давайте поговорим о популярной технике формулировки промптов, которая называется "цепочка мыслей" (chain-of-thought prompting), и которая получила большую популярность.
Last updated