Используйте мощь LLM нулевое и небольшое количество промптов.

Используйте мощь LLM с минимальным числом промптов.

Введение

Сила LLM (Large Language Models) стала новым явлением в сообществе искусственного интеллекта. Ранние пользователи активно применяют различные генеративные решения искусственного интеллекта, такие как GPT 3.5, GPT 4 и BARD, для решения различных задач. Они используются для ответов на вопросы, творческого написания текстов и критического анализа. Поскольку эти модели обучены на задачах, таких как предсказание следующего предложения на разнообразных корпусах, ожидается, что они будут отлично справляться с генерацией текста.

Мощные нейронные сети на основе трансформеров позволяют модели также адаптироваться к задачам машинного обучения, связанным с языком, таким как классификация, перевод, предсказание и распознавание сущностей. Таким образом, для ученых-данных стало легко использовать генеративные платформы искусственного интеллекта для более практических и промышленных задач, связанных с языком, предоставив соответствующие инструкции. В этой статье мы покажем, насколько просто использовать генеративные LLM для распространенных задач машинного обучения, связанных с языком, с помощью подсказок и критически проанализируем преимущества и ограничения нулевой и небольшой подсказок.

Цели обучения

  • Узнать о нулевой и небольшой подсказках.
  • Проанализировать их производительность на примере задачи машинного обучения.
  • Оценить небольшую подсказку по сравнению с более сложными техниками, такими как донастройка модели.
  • Понять преимущества и недостатки техник подсказок.

Эта статья была опубликована в рамках марафона блогов по науке о данных.

Что такое подсказка?

Давайте начнем с определения LLM. Большая модель языка, или LLM, представляет собой систему глубокого обучения, построенную с использованием нескольких слоев трансформеров и нейронных сетей прямого распространения, которые содержат сотни миллионов или миллиарды параметров. Они обучаются на огромных наборах данных из разных источников и предназначены для понимания и генерации текста. Некоторые примеры применения включают перевод языка, суммирование текста, ответы на вопросы, генерацию контента и многое другое. Существуют различные типы LLM: только энкодер (BERT), энкодер + декодер (BART, T5) и только декодер (PALM, GPT и т. д.). LLM с компонентом декодера называют генеративными LLM, это относится к большинству современных LLM.

Если вы указываете генеративному LLM задачу, он будет генерировать соответствующий текст. Однако, как мы можем указать генеративному LLM выполнение конкретной задачи? Это просто: мы даем ему письменную инструкцию. LLM были разработаны таким образом, чтобы отвечать конечным пользователям на основе инструкций, так называемых подсказок. Вы уже использовали подсказки, если взаимодействовали с LLM, например, ChatGPT. Подсказка заключается в упаковке наших намерений в запрос на естественном языке, который заставит модель вернуть желаемый ответ (Пример: Рисунок 1, Источник: Chat GPT).

Существуют два основных типа техник подсказок, на которые мы будем смотреть в следующих разделах: нулевая и небольшая. Мы рассмотрим их подробности вместе с некоторыми простыми примерами.

Нулевая подсказка

Нулевая подсказка – это особый сценарий нулевого обучения, уникальный для генеративных LLM. В нулевой подсказке мы не предоставляем модели никаких размеченных данных и ожидаем, что модель справится с абсолютно новой задачей. Например, используйте ChatGPT для нулевой подсказки на новых задачах, предоставив соответствующие инструкции. LLM могут адаптироваться к незнакомым задачам, потому что они понимают контент из множества источников. Давайте рассмотрим несколько примеров.

Вот пример запроса для классификации текста на положительные, нейтральные и отрицательные классы настроения.

Примеры твитов

Примеры твитов взяты из набора данных Twitter US Airline Sentiment. Набор данных состоит из твитов с отзывами о различных авиакомпаниях, помеченных как положительные, нейтральные или отрицательные. На рисунке 2 (Источник: ChatGPT) мы указали название задачи, то есть классификация настроения, классы, то есть положительные, нейтральные и отрицательные, текст и подсказку для классификации. На рисунке 2 показан положительный отзыв о авиакомпании, который высоко оценивает опыт полета с этой авиакомпанией. ChatGPT правильно классифицировал настроение отзыва как положительное, что демонстрирует способность ChatGPT обобщать новую задачу.

На рисунке 3 показан Chat GPT с нулевым запуском на другом примере с отрицательным настроением. Chat GPT снова правильно предсказывает настроение твита. Хотя мы показали два примера, где модель успешно классифицирует текст отзыва, есть несколько граничных случаев, в которых даже передовые языковые модели терпят неудачу. Например, давайте посмотрим на пример ниже на рисунке 4. Пользователь жалуется на качество пищи с авиаперевозчиком; Chat GPT неправильно определяет настроение как нейтральное.

В таблице ниже мы можем увидеть сравнение нулевого запуска с производительностью модели BERT (Источник) на наборе данных Twitter Sentiment. Мы рассмотрим метрики точность, F1-меру, точность и полноту. Оцените производительность нулевого запуска, подталкивая случайно выбранный поднабор данных из набора данных о настроении авиакомпаний для каждого случая и округлите значения производительности до ближайших целых чисел. Нулевой запуск имеет более низкие, но приличные показатели по каждой метрике оценки, показывая, насколько мощным может быть подталкивание. Значения производительности были округлены до ближайших целых чисел.

Подталкивание с небольшим количеством примеров

В отличие от нулевого запуска, подталкивание с небольшим количеством примеров включает предоставление нескольких помеченных примеров в подсказке. Это отличается от традиционного обучения с небольшим количеством примеров, которое предполагает донастройку языковой модели с помощью нескольких образцов для новой задачи. Этот подход уменьшает зависимость от больших помеченных наборов данных, позволяя моделям быстро адаптироваться и производить точные предсказания для новых классов с небольшим количеством помеченных образцов. Этот метод полезен, когда сбор значительного количества помеченных данных для новых классов требует времени и усилий. Вот пример (рисунок 5) с небольшим количеством примеров:

Подталкивание с небольшим количеством примеров против нулевого запуска

На сколько улучшает производительность подталкивание с небольшим количеством примеров? Хотя техники с небольшим количеством примеров и нулевого запуска показали хорошую производительность на анекдотических примерах, подталкивание с небольшим количеством примеров имеет более высокую общую производительность, чем нулевой запуск. Как показывает таблица ниже, мы можем улучшить точность текущей задачи, предоставив несколько качественных примеров и образцов граничных и критических примеров при подталкивании генеративных моделей искусственного интеллекта. Производительность улучшается с использованием обучения с небольшим количеством примеров (10, 20 и 50 примеров). Производительность подталкивания с небольшим количеством примеров была оценена на случайно выбранном поднаборе данных из набора данных о настроении авиакомпаний для каждого случая, и значения производительности были округлены до ближайших целых чисел.

На основе метрик оценки в таблице выше, подталкивание с небольшим количеством примеров превосходит нулевой запуск на значительные 10% по точности, 7% по F1-мере и достигает сопоставимой производительности с донастроенной моделью BERT. Еще одно ключевое наблюдение заключается в том, что после 20 примеров улучшения замедляются. Рассмотренный в анализе пример является особым случаем использования Chat GPT на наборе данных о настроении авиакомпаний в Twitter США. Давайте рассмотрим другой пример, чтобы понять, распространяются ли наши наблюдения на более широкий спектр задач и генеративных моделей искусственного интеллекта.

Языковые модели: обучение с небольшим количеством примеров

Ниже (рисунок 6) приведен пример из исследований, описанных в статье “Языковые модели – обучение с небольшим количеством примеров”, сравнивающий производительность моделей с небольшим количеством примеров, с одним примером и нулевым запуском с GPT-3. Производительность измеряется на тестовом наборе LAMBADA (предсказание целевого слова) в различных настройках с небольшим количеством примеров. Уникальность LAMBADA заключается в том, что он сосредоточен на оценке способности модели обрабатывать дальние зависимости в тексте, то есть ситуации, когда значительное расстояние отделяет информацию от ее соответствующего контекста. Обучение с небольшим количеством примеров превосходит обучение с нулевым количеством примеров на значительные 12,2 пп по точности.

В другом примере, рассмотренном в вышеупомянутой статье, производительность GPT-3 сравнивается при различном количестве примеров, предоставленных в подсказке, с моделью BERT, обученной на задаче SuperGLUE. SuperGLUE считается ключевым тестом для оценки производительности в задачах понимания языка с использованием машинного обучения. График (Рисунок 7) показывает, что первые восемь примеров оказывают наибольшее влияние. При добавлении большего числа примеров для few-shot подсказки мы сталкиваемся с проблемой, где нам нужно экспоненциально увеличивать количество примеров, чтобы увидеть заметное улучшение. Мы очень ясно видим, что наблюдения, сделанные в нашем примере классификации настроения, повторяются.

Zero-shot должен рассматриваться только в сценариях, где отсутствуют размеченные данные. Если у нас есть несколько размеченных примеров, мы можем достичь больших успехов в производительности, используя few-shot по сравнению с zero-shot. Но остается вопрос, насколько хорошо эти методы работают в сравнении с более сложными методами, такими как fine-tuning. В последнее время было разработано несколько хороших методов для fine-tuning языковых моделей, и их стоимость использования также существенно снизилась. Почему бы просто не провести fine-tuning своих моделей? В следующих разделах мы подробнее рассмотрим сравнение методов подсказки с fine-tuned моделями.

Few-shot подсказка против fine-tuning

Основное преимущество few-shot с генеративными LLM заключается в простоте реализации данного подхода. Собираем несколько размеченных примеров и готовим подсказку, выполняем вывод и готово. Даже с несколькими современными инновациями, fine-tuning достаточно громоздок в реализации и требует большого количества времени и ресурсов для обучения. Для нескольких конкретных случаев мы можем использовать различные генеративные LLM UI, чтобы получить результаты. Для вывода на более крупный набор данных код может выглядеть так:

import os
import openai

messages = []


# Chat GPT labeled examples
few_shot_message = ""

# Mention the Task
few_shot_message = "Task: Классификация настроения \n"

# Mention the classes
few_shot_message += "Классы: положительный, отрицательный \n"

# Add context
few_shot_message += "Контекст: Мы хотим классифицировать настроение отзывов на отели \n"

#Add labeled examples
few_shot_message += "Размеченные примеры: \n"

for labeled_data in labeled_dataset:
    few_shot_message += "Текст: " + labeled_data["text"] + "\n";
    few_shot_message += "Метка: " + labeled_data["label"] + "\n"

# Call OpenAI API for ChatGPT providing the few-shot examples
messages.append({"role": "user", "content": few_shot_message})
chat = openai.ChatCompletion.create(
            model="gpt-3.5-turbo", messages=messages
        )

for data in unlabeled_dataset:
    # Add the text to classfy
    message = "Текст: " + data + ", "
    
    # Add the prompt
    message += "Задание: Классифицировать данный текст в одну из категорий настроения."
    messages.append({"role": "user", "content": message})
    
    # Call OpenAI API for ChatGPT for classification
    chat = openai.ChatCompletion.create(
            model="gpt-3.5-turbo", messages=messages
        )
    reply = chat.choices[0].message.content
    print(f"ChatGPT: {reply}")
    messages.append({"role": "assistant", "content": reply})

Еще одно важное преимущество few-shot по сравнению с fine-tuning – это количество данных. В задаче классификации настроения авиалиний в Twitter, fine-tuning BERT был выполнен с использованием более 10 000 примеров, в то время как few-shot подсказке потребовалось всего от 20 до 50 примеров для достижения схожей производительности. Однако эти выигрыши в производительности обобщаются на другие задачи, связанные с обработкой языка? Пример классификации настроения, который мы рассмотрели, является очень специфическим случаем использования. Производительность few-shot подсказки не будет на уровне fine-tuned модели для каждого случая использования. Однако она показывает схожую/лучшую способность в широком спектре языковых задач. Чтобы продемонстрировать мощь few-shot подсказки, мы сравнили производительность с SOTA и fine-tuned языковыми моделями, такими как BERT, на задачах по стандартизированному пониманию языка, перевода и QA в следующих разделах. (Источник: Language Models are Few-Shot Learners)

Понимание языка

Для сравнения производительности few-shot и fine-tuning в задачах понимания языка мы рассмотрим тест SuperGLUE. SuperGLUE – это тест на понимание языка, включающий задачи классификации, сравнения текстов и задачи логического вывода. Для сравнения используется fine-tuned модель BERT large и fine-tuned модель BERT++, а также используется генеративная LLM – GPT-3. Графики на рисунках (Рисунок 8 и Рисунок 9) показывают few-shot подсказку с достаточно большими генеративными LLM, и около 32 примеров few-shot достаточно, чтобы обойти fine-tuned BERT++ и fine-tuned BERT large. Прирост точности по сравнению с BERT large составляет около 2.8 п.п., демонстрируя мощь few-shot на генеративных LLM.

Перевод

В следующем задании мы сравним производительность моделей с малым количеством данных и дообученных моделей на задачах перевода. Мы рассмотрим показатель BLUE, также называемый Bilingual Evaluation Understudy. BLEU вычисляет оценку от 0 до 1, где более высокая оценка указывает на более качественный перевод. Основная идея BLEU заключается в сравнении сгенерированного перевода с одним или несколькими эталонными переводами и измерении степени схожести сгенерированного перевода с эталонными переводами по n-граммам. Модели, используемые для сравнения, – это XLM, MASS и mBART, а генеративная языковая модель, используемая, – это GPT-3.

Как показано в таблице на рисунке (Рисунок 10) ниже, подсказывание с малым количеством данных с использованием генеративных языковых моделей с несколькими примерами достаточно, чтобы превзойти XLM, MASS, мультиязычную BART и даже SOTA для различных задач перевода. Few-shot GPT-3 превосходит предыдущую неподкрепленную работу по нейросетевому машинному переводу на 5 BLEU при переводе на английский язык, что отражает его силу в качестве модели английского языка для перевода. Однако важно отметить, что модель показала плохие результаты на некоторых задачах перевода, например, с английского на румынский, что подчеркивает ее недостатки и необходимость оценки производительности в каждом конкретном случае.

Вопросно-ответное моделирование

В заключительном задании мы сравним производительность моделей с малым количеством данных и дообученных моделей на задачах вопросно-ответного моделирования. Название задачи говорит само за себя. Мы рассмотрим три основных показателя для задач вопросно-ответного моделирования: PI QA (вопросы и ответы по процедурной информации), Trivia QA (фактические знания и ответы на вопросы) и CoQA (беседы вопросно-ответного моделирования). Сравнение проводится с SOTA для дообученных моделей, а генеративная языковая модель, используемая, – это GPT-3. Как показано на графиках на рисунках (Рисунок 11, Рисунок 12 и Рисунок 13) ниже, подсказывание с малым количеством данных с использованием генеративных языковых моделей с несколькими примерами достаточно, чтобы превзойти дообученную SOTA для PIQA и Trivia QA. Модель не смогла превзойти дообученную SOTA для CoQA, но показала достаточно схожую точность.

Ограничения подсказывания

Многочисленные примеры и исследования в вышеприведенных разделах ясно показывают, как подсказывание с малым количеством данных может стать предпочтительным решением перед дообучением для нескольких задач обработки языка на машинном обучении. В большинстве случаев техники с малым количеством данных давали лучшие или близкие результаты по сравнению с дообученными языковыми моделями. Однако следует отметить, что в большинстве узкоспециализированных случаев предварительное обучение модели для конкретной области деятельности значительно превосходило бы дообучение [Источник], а следовательно, и техники подсказывания. Это ограничение не может быть преодолено на уровне проектирования подсказки и потребует существенных достижений в развитии обобщенных языковых моделей.

Еще одно фундаментальное ограничение – галлюцинации от генеративных языковых моделей. Общие языковые модели часто страдают от галлюцинаций, так как они часто ориентированы на творческое письмо. Вот почему узкоспециализированные языковые модели более точны и показывают лучшие результаты на специфических для своей области бенчмарках.

Наконец, использование общих языковых моделей, таких как Chat GPT и GPT-4, сопряжено с большими рисками конфиденциальности по сравнению с дообученными или узкоспециализированными моделями, для которых мы можем создать собственный экземпляр модели. Это вызывает опасения, особенно для случаев использования, зависящих от владельческих или конфиденциальных данных пользователей.

Заключение

Техники подсказок стали мостом между LLM и практическими языковыми задачами машинного обучения. Нулевая подсказка, не требующая предварительно размеченных данных, показывает потенциал этих моделей в обобщении и адаптации к новым проблемам. Однако она не достигает аналогичной или лучшей производительности по сравнению с донастройкой. Многочисленные примеры и сравнения результатов производительности показывают, что малочисленная подсказка предлагает убедительную альтернативу донастройке в широком спектре задач. Представляя несколько размеченных примеров в подсказках, эти техники позволяют моделям быстро адаптироваться к новым классам с минимальным количеством размеченных данных. Кроме того, данные о производительности, перечисленные в разделах выше, указывают на то, что переход существующих решений на использование малочисленной подсказки с генеративными LLM является целесообразным вложением. Проведение экспериментов с подходами, упомянутыми в этой статье, повысит шансы достижения ваших целей с использованием техник подсказок.

Основные выводы

  1. Техники подсказок обеспечивают практическое использование: Техники подсказок являются мощным мостом между генеративными LLM и практическими языковыми задачами машинного обучения. Нулевая подсказка позволяет моделям обобщать без размеченных данных, в то время как малочисленная подсказка использует несколько примеров для быстрой адаптации. Эти техники упрощают развертывание, предлагая путь для эффективного использования.
  2. Малочисленная подсказка работает лучше, чем нулевая: Малочисленная подсказка обеспечивает более высокую производительность, предоставляя LLM целевое руководство с помощью размеченных примеров. Она позволяет модели использовать свои предварительно обученные знания, одновременно получая выгоду от минимального количества примеров, специфичных для задачи, что приводит к более точным и релевантным ответам на заданную задачу.
  3. Малочисленная подсказка конкурирует с донастройкой: Малочисленная подсказка является многообещающей альтернативой донастройке. Она достигает аналогичной или лучшей производительности в задачах классификации, понимания языка, перевода и ответов на вопросы, предоставляя размеченные примеры в подсказках. Она особенно преуспевает в ситуациях, где размеченные данные ограничены.
  4. Ограничения и соображения: Несмотря на то, что генеративные LLM и техники подсказок имеют несколько преимуществ, предварительное обучение с учетом специфики области по-прежнему является способом для специализированных задач. Кроме того, риски конфиденциальности, связанные с обобщенными LLM, подчеркивают необходимость осторожного обращения с конфиденциальными данными.

Часто задаваемые вопросы

Ссылки

  • Tom B. Brown и другие, Language models are few-shot learners, В Proceedings of the 34th International Conference on Neural Information Processing Systems (NIPS’20), 2020.
  • https://www.kaggle.com/datasets/crowdflower/twitter-airline-sentiment
  • https://www.kaggle.com/code/sdfsghdhdgresa/sentiment-analysis-using-bert-distillation
  •  https://github.com/Deepanjank/OpenAI/blob/main/open_ai_sentiment_few_shot.py
  • https://www.analyticsvidhya.com/blog/2023/08/domain-specific-llms/

Медиа, показанное в этой статье, не принадлежит Analytics Vidhya и используется по усмотрению автора.