Нейролента - подборка новостей о нейронных сетях, ChatGPT

Many-Shot In-Context Learning. Rishabh Agarwal, Avi Singh, Lei...

Many-Shot In-Context Learning
Rishabh Agarwal, Avi Singh, Lei M. Zhang, Bernd Bohnet, Stephanie Chan, Ankesh Anand, Zaheer Abbas, Azade Nova, John D. Co-Reyes, Eric Chu, Feryal Behbahani, Aleksandra Faust, Hugo Larochelle
Статья: https://arxiv.org/abs/2404.11018

Развитие темы про очень большие контексты (https://t.me/gonzo_ML/2415), с которыми модели теперь поддерживают many-shot in-context learning (ICL) или ICL с очень большим числом примеров (сотни и больше). Во времена контекстов размера 2-4k об этом сложно было думать, туда и единицы примеров не всегда нормально влезали, но с контекстом в 1M жизнь меняется. В отличие от файнтюнинга, в режиме ICL не требуется оптимизировать параметры модели и подстраиваться под задачу можно прямо во время инференса. Остаётся правда вопрос цены и скорости инференса.

В работе авторы показали, что many-shot ICL неплохо скейлится и качество решения различных задач растёт при подаче большего числа примеров в промпте. За основу взяли Gemini 1.5 Pro, использовали greedy decoding. Для более надёжных результатов для каждого промпта несколько раз сэмплили примеры с разными сидами. Сделали так, чтобы каждый K-shot промпт включал все примеры из промптов с меньшим K.

На задаче машинного перевода в низкоресурсный язык (в курдский или тамильский) в режиме few-shot от 1 до 10 примеров улучшение незначительное, зато при дальнейшем увеличении до почти тысячи (997) примеров качество (по метрике chrF) растёт на 4.5% для курдского и 1.5% для тамильского относительно 1-shot режима. В результате побили продакшн Google Translate и достигли новой SoTA для этих языков.

В принципе, это не сильно отличается от примеров из работы про Gemini 1.5 (https://arxiv.org/abs/2403.05530), когда чем большую порцию учебника языка Kalamang в неё подаёшь, тем лучше она переводит (https://t.me/gonzo_ML/2358).

На abstractive суммаризации и оценке на XSum итоговое качество довольно близко к специальным зафайнтюненным моделям (PEGASUS и mT5). На XSum качество растёт примерно до 50 примеров, потом ухудшается (модель начинает выдумывать даты и времена). На XLSum растёт монотонно до 500 примеров (из XSum), что говорит о положительном трансфере.

На генерации планов в области логистики (сгенерили датасет с задачами с 2-3 городами, 1-2 посылками, одним грузовиком и самолётом на город) есть сильное улучшение до десятка примеров, затем слабое до 400 и скачок к 800. До специализированных планировщиков далеко, но результат интересный.

Также попробовали сделать LLM-верификатор для предсказания корректности решения задач из GSM8K. На 16 и выше примерах (не путать с 16+!) best-of-4 начинает превосходить pass@1.

Проблема с таким many-shot ICL в том, что получить кучу хороших человеческих примеров может быть сложно, например для задач со сложным reasoning типа GPQA (Google-Proof Q&A Benchmark, https://arxiv.org/abs/2311.12022). Авторы предложили два подхода, которые могут помочь.

Reinforced ICL генерит объяснения через chain-of-thought prompt и оставляет только те, что дают правильный ответ. Они затем добавляются как примеры в ICL. Могут быть проблемы с false positive, когда неправильный вывод привёл к правильному результату.

Unsupervised ICL идёт дальше и убирает сгенерённые объяснения, оставляя только примеры задач без ответа. В таком случае промпт состоит из трёх частей: 1) преамбулы типа “You will be provided questions similar to the ones below:”, 2) амбулы списка задач без решения и 3) zero-shot инструкции или few-shot промпта с желаемым форматом ответа.

Проверили эти методы на датасете MATH. И reinforced и unsupervised ICL побили ICL с ground-truth решениями. Особенно прикольно, что метод только с задачами хорошо работает. Видимо, такие задачи модель выучила в предобучении. Кроме того промпты, полученные на MATH, приводят к лучшему решению GSM8K. Особенно хорошо работает Reinforced ICL.