Zero-shot промптинг: это когда вы просите модель выполнить задачу только по инструкции, не показывая ни одного примера нужного ответа. «Переведи этот абзац на испанский» и «Перескажи это письмо в двух предложениях»: это zero-shot промпты. Так люди пользуются чат-моделями по умолчанию, и для распространённых задач обычно больше ничего и не нужно.
Что значит zero-shot
В машинном обучении «shot» означает готовый пример. Эти термины старше чат-моделей, но в смысле промптинга их популяризировала статья Brown et al. 2020 года «Language Models are Few-Shot Learners», где GPT-3 проверяли в трёх режимах: описание задачи с нулём, одной или несколькими демонстрациями в промпте и без дообучения в каждом из них. Для той модели несколько примеров обычно давали результат лучше, чем ни одного.
С тех пор чат-модели интенсивно обучали следовать инструкциям, поэтому простая просьба теперь работает так хорошо. Zero-shot промпт: ровно та ситуация, к которой их готовили. Кто-то описывает работу словами и ждёт, что её сделают.
Zero-shot не означает ноль контекста. Хороший zero-shot промпт всё равно называет аудиторию, содержит входные данные и описывает формат и ограничения. Единственное, чего в нём нет: готового примера результата.
Хороший zero-shot промпт
Промпт ниже извлекает задачи из заметок со встречи без примера результата, только с его точным описанием. Отключайте части, чтобы увидеть, какие строки делают работу.
Синк по спринту, вторник
Прия починит таймаут входа до пятницы.
Обсуждали переход на новый CI-сервис, решения нет.
Том пишет заметки к релизу 2.4.
Кому-то надо обновить документ для онбординга.
Лена: посмотрю заметки Тома до четверга.Прия: Починить таймаут входа (до пятницы) Том: Написать заметки к релизу 2.4 Не назначен: Обновить документ для онбординга Лена: Проверить заметки Тома к релизу (до четверга)
Строка формата делает то, что сделал бы пример: она точно описывает форму каждой строки, и копировать нечего. Отключите её, и ответ выберет форму сам, часто маркированный список с жирными именами, который читается нормально, но в трекер уже чисто не вставляется. Отключите ограничения, и обсуждение CI может попасть в задачи, потому что ничто не сказало модели, что нерешённые темы не считаются.
Когда zero-shot достаточно
Zero-shot работает, когда модель может вывести всё из ваших слов:
- Задача распространённая. Пересказ, перевод, объяснение, исправление грамматики и написание функции по ясному описанию: всё это модель видела при обучении бесчисленное количество раз.
- Вы можете точно описать результат. «Одна строка на задачу, ответственный первым» так же ясно, как пример. Как описывать форматы, которые будет читать программа, смотрите на странице структурированный вывод.
- Категории значат то, что написано. Разделение отзывов на положительные и отрицательные обычно не требует примеров, потому что эти метки почти для всех значат одно и то же.
Когда лучше добавить примеры
Некоторые вещи трудно выразить словами, и именно там zero-shot промпты начинают промахиваться:
- Ваши собственные границы. Если ваша поддержка относит «не могу войти» к проблемам с аккаунтом, а не к багам, модель этого знать не может. Она выберет прочтение, которое выбрало бы большинство.
- Принятый у вас стиль. Сообщения коммитов вашей команды или тон вашей рассылки проще показать, чем описать.
- Повторяющиеся промахи. Если вы дважды переформулировали инструкцию, а результат всё так же чуть-чуть не тот, перестаньте переформулировать и покажите два-три правильных ответа.
Это few-shot промптинг. Разумная привычка: начинать с zero-shot, смотреть, что приходит, и добавлять примеры только для того конкретного, в чём модель ошибается.
Zero-shot chain of thought
Kojima et al. 2022, «Large Language Models are Zero-Shot Reasoners», обнаружили, что добавление одной фразы, «Let's think step by step» («Давай подумаем шаг за шагом»), заметно улучшало результаты больших моделей на арифметических, символьных и логических задачах, вообще без примеров. Фраза заставляет модель выписать промежуточные шаги перед ответом, и каждый написанный шаг становится контекстом для следующего. Их метод использовал два вызова: первый давал рассуждение, а второй просил итоговый ответ.
В блоке ниже первая вкладка требует немедленного ответа, а вторая даёт модели место для работы.
12:40
Первый ответ потерял 10 минут, которые нагнал поезд: такая ошибка случается, когда модель должна определиться с ответом в первых же токенах. Современная модель вполне может решить эту задачу правильно в обоих случаях; разница растёт с числом шагов в задаче. У второй версии есть ещё одно преимущество: каждый шаг виден, так что можно понять, где ответ пошёл не туда.
Модели, которые рассуждают внутри перед ответом, делают эту работу и без просьбы, поэтому «давай подумаем шаг за шагом» добавляет им мало, кроме более длинного ответа. Техника подробно, включая few-shot версию, разобрана на странице chain of thought промптинг.
Zero-shot и few-shot: коротко
| Zero-shot | Few-shot | |
|---|---|---|
| Что содержит промпт | Инструкции, контекст и входные данные | То же плюс несколько пар «вход и ответ» |
| Лучше всего подходит для | Распространённых задач с легко описываемым результатом | Своих меток, необычных форматов, принятого стиля |
| Стоимость | Короткий промпт | Длиннее промпт, больше токенов на вызов |
| Типичная ошибка | Выбирает самое распространённое прочтение, а не ваше | Копирует случайные закономерности в примерах |
Часто задаваемые вопросы
Что такое zero-shot промптинг?
Zero-shot промптинг: это постановка задачи языковой модели только с инструкциями, без готовых примеров результата. «Перескажи это письмо в двух предложениях»: это zero-shot промпт. Современные чат-модели обучены следовать инструкциям, поэтому zero-shot промпты хорошо справляются с большинством повседневных задач.
Чем zero-shot отличается от few-shot промптинга?
Zero-shot промпт описывает задачу словами. Few-shot промпт добавляет несколько примеров, каждый из которых: вход в паре с нужным ответом, чтобы модель могла повторить схему. Начинайте с zero-shot; переходите к few-shot, когда результат раз за разом промахивается мимо формата или различия, которое проще показать, чем описать.
Почему это называется zero-shot?
В машинном обучении «shot» означает готовый пример. В статье Brown et al. 2020 года о GPT-3, «Language Models are Few-Shot Learners», модель проверяли с нулём, одной или несколькими демонстрациями задачи в промпте, и после этого названия закрепились в промптинге: zero-shot, one-shot и few-shot.
Когда zero-shot промптинг не работает?
Он буксует, когда задача зависит от правил, которые знаете только вы, например от категорий вашей команды или принятого у вас стиля, когда формат вывода необычный, и на многошаговых рассуждениях, где модель отвечает слишком быстро. Первые два случая исправляют примеры; с третьим помогает просьба решать пошагово.
Что такое zero-shot chain of thought?
Это zero-shot промпт, который просит модель порассуждать перед ответом, в самом известном варианте с помощью фразы «Давай подумаем шаг за шагом». Kojima et al. в 2022 году показали, что одно это предложение, без всяких примеров, улучшило результаты больших моделей на арифметических и логических задачах.