Пока повсюду продолжаются бурные обсуждения интересных промптов (текстовых запросов на естественном языке) для Midjourney и ChatGPT, я думаю, будет в тему поделиться с вами одной статьей с альтернативным подходом к промптам. Статья называется "The Power of Scale for Parameter-Efficient Prompt Tuning" и опубликована на моей любимой конференции в прошлом году - https://aclanthology.org/2021.emnlp-main.243.pdf 🥰
Суть такова: пока вирджины мучительно, с покрасневшими глазами подбирают оптимальные промпты к seq-2-seq текстовым моделям то вручную, то с помощью других моделей, гигачады не заморачиваются и кидают нейросети на вход вместо промпта случайные токены, а она сама себе находит оптимальный эмбеддинг (внутреннее представление) этого "промпта" для каждой задачи!
Для воплощения своей идеи авторы берут несколько вариантов sequence-to-sequence трансформера T5 и датасет SuperGLUE. Это датасет с несколькими заданиями разных типов на понимание естественного языка, который считается более сложным, чем классический GLUE. Стандартный сценарий оценки T5 на нем - придумывать к каждому заданию подходящее описание на естественном языке (промпт) и подавать модели на вход пример вместе с таким описанием. Например, задачу entailment, где модель должна ответить, следует ли предложение sentence 2 из предложения sentence 1, можно сформулировать в духе "<sentence 1>. Using only above description and what you know about the world, is <sentence 2> definitely correct? Yes or no?", потом подать всю эту последовательность как один сплошной текст на вход модели, и на выходе она выдаст ответ на вопрос. Качество ответа на вопрос будет сильно зависеть от того, насколько он "хорошо" (с точки зрения модели) сформулирован - особенно если берется базовая предобученная версия модели, которая не видела похожих задач во время обучения.
Естественно, если дообучить T5 отдельно на конкретной задачке (downstream task), она будет решать ее намного лучше, чем базовая версия, которой просто задали подходящий вопрос, но модель большая, и дообучать ее полностью каждый раз очень затратно. Подбор описаний-вопросов вручную (prompt design) неизмеримо "дешевле", но работает существенно хуже. Где-то между этими подходами, в золотой середине, и находится prompt-tuning, придуманный авторами статьи.
Самый простой из предложенных вариантов propmt-tuning выглядит так: они фиксируют количество и позицию токенов, которые будут служить заменой нормального промпта и заполняют их случайными токенами. Далее они фиксируют эти токены и замораживают все параметры модели, кроме тех, которые относятся к эмбеддингу этого случайно сгенерированного "промпта". Потом начинают дообучать параметры этого эмбеддинга на каждой задачке, подавая модели на вход промпт вместе с самими примерами и считая градиент как обычно. В итоге выходит, что хоть изначально токены промпта и бессмысленны, но эмбеддинг у них выучивается оптимальный под задачу! Чем больше модель, тем эффективнее prompt-tuning: при 10 млрд. параметров модель преисполняется от него настолько, что скор на SuperGLUE становится таким же, как от полного дообучения на каждой задаче.
Конечно, авторы рассматривают и другие (неслучайные) способы инициализации промпта, разное количество токенов и тому подобное. В конце статьи они также рассматривают ансамбли из нескольких моделей, каждая из которых выучила свой эмбеддинг отдельно от других. Эти ансамбли работают еще лучше, но недостатком их является необходимость хранить несколько копий тяжелой модели.
#объяснения_статей
Суть такова: пока вирджины мучительно, с покрасневшими глазами подбирают оптимальные промпты к seq-2-seq текстовым моделям то вручную, то с помощью других моделей, гигачады не заморачиваются и кидают нейросети на вход вместо промпта случайные токены, а она сама себе находит оптимальный эмбеддинг (внутреннее представление) этого "промпта" для каждой задачи!
Для воплощения своей идеи авторы берут несколько вариантов sequence-to-sequence трансформера T5 и датасет SuperGLUE. Это датасет с несколькими заданиями разных типов на понимание естественного языка, который считается более сложным, чем классический GLUE. Стандартный сценарий оценки T5 на нем - придумывать к каждому заданию подходящее описание на естественном языке (промпт) и подавать модели на вход пример вместе с таким описанием. Например, задачу entailment, где модель должна ответить, следует ли предложение sentence 2 из предложения sentence 1, можно сформулировать в духе "<sentence 1>. Using only above description and what you know about the world, is <sentence 2> definitely correct? Yes or no?", потом подать всю эту последовательность как один сплошной текст на вход модели, и на выходе она выдаст ответ на вопрос. Качество ответа на вопрос будет сильно зависеть от того, насколько он "хорошо" (с точки зрения модели) сформулирован - особенно если берется базовая предобученная версия модели, которая не видела похожих задач во время обучения.
Естественно, если дообучить T5 отдельно на конкретной задачке (downstream task), она будет решать ее намного лучше, чем базовая версия, которой просто задали подходящий вопрос, но модель большая, и дообучать ее полностью каждый раз очень затратно. Подбор описаний-вопросов вручную (prompt design) неизмеримо "дешевле", но работает существенно хуже. Где-то между этими подходами, в золотой середине, и находится prompt-tuning, придуманный авторами статьи.
Самый простой из предложенных вариантов propmt-tuning выглядит так: они фиксируют количество и позицию токенов, которые будут служить заменой нормального промпта и заполняют их случайными токенами. Далее они фиксируют эти токены и замораживают все параметры модели, кроме тех, которые относятся к эмбеддингу этого случайно сгенерированного "промпта". Потом начинают дообучать параметры этого эмбеддинга на каждой задачке, подавая модели на вход промпт вместе с самими примерами и считая градиент как обычно. В итоге выходит, что хоть изначально токены промпта и бессмысленны, но эмбеддинг у них выучивается оптимальный под задачу! Чем больше модель, тем эффективнее prompt-tuning: при 10 млрд. параметров модель преисполняется от него настолько, что скор на SuperGLUE становится таким же, как от полного дообучения на каждой задаче.
Конечно, авторы рассматривают и другие (неслучайные) способы инициализации промпта, разное количество токенов и тому подобное. В конце статьи они также рассматривают ансамбли из нескольких моделей, каждая из которых выучила свой эмбеддинг отдельно от других. Эти ансамбли работают еще лучше, но недостатком их является необходимость хранить несколько копий тяжелой модели.
#объяснения_статей