Изучение достижений в области обучения с малым количеством попыток с использованием модели языка с шумным каналом

Изучение достижений в области обучения с малым количеством попыток с использованием модели языка с шумным каналом

3 сентября 2024 г.

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

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

Пример 1: Несбалансированные данные в классификации медицинских текстов

Проблема:Представьте, что вы разрабатываете модель для классификации медицинских исследовательских аннотаций по разным категориям, таким как «Кардиология», «Неврология», «Онкология» и «Общая медицина». В реальных сценариях у вас часто бывает несбалансированный набор данных. Например, у вас может быть много аннотаций по «Кардиологии» и «Неврологии», но очень мало по «Онкологии» и «Общей медицине».

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

Решение с подсказкой модели языка шумного канала:Подход Noisy Channel меняет вычисление вероятности. Вместо того, чтобы предсказывать метку по аннотации, он предсказывает вероятность аннотации по каждой метке. Это заставляет модель учитывать, насколько хорошо каждая метка может объяснить данный текст. При этом, даже с меньшим количеством примеров, модель учится лучше различать категории. Например, она вычисляет вероятность фразы «рост опухоли» по метке «Онкология» по сравнению с «Общая медицина», что делает ее менее предвзятой по отношению к перепредставленным классам и улучшает ее способность точно классифицировать редкие категории.

Пример 2: обобщение невидимых меток в чат-боте службы поддержки клиентов

Проблема:Рассмотрим чат-бота поддержки клиентов, которому необходимо классифицировать запросы пользователей по различным темам, таким как «Выставление счетов», «Техническая поддержка», «Управление учетными записями» и «Общие вопросы». При запуске новых функций чат-боту может потребоваться обрабатывать запросы об этих новых функциях без изначально доступных помеченных примеров.

Традиционный подход:Традиционная модель обучения с несколькими выстрелами может напрямую предсказывать тему на основе входного текста, что хорошо работает, когда темы хорошо представлены в обучающих данных. Однако, когда возникают новые темы (например, запрос, связанный с новой функцией «Функция X»), модель может испытывать трудности с правильной классификацией этих новых запросов, поскольку она никогда не видела их раньше во время обучения. Например, если пользователь спрашивает: «Как мне активировать функцию X?», модель может неправильно отнести его к категории «Техническая поддержка» или «Общий запрос», поскольку у нее нет знаний о «Функции X».

Решение с подсказкой модели языка шумного канала:Используя подход Noisy Channel, модель предсказывает вероятность входного текста с учетом каждой возможной метки темы, включая те, на которых она никогда явно не обучалась. Благодаря такому моделированию модель может лучше выводить правильную категорию даже для невидимых меток, понимая, насколько хорошо каждая метка может генерировать заданные входные данные. Например, если добавляется новая метка «Feature X Support» и модель видит «Как мне активировать Feature X?», она оценивает вероятность этого запроса в разделе «Feature X Support» и находит высокую вероятность, тем самым правильно классифицируя его, даже если она явно не обучалась на этой новой теме.

Что такое модель зашумленного канала?

В контексте языковых моделей подход с шумным каналом меняет типичное направление вычисления вероятности. Вместо вычисления P(y∣x) — вероятности метки y при наличии входных данных x — он вычисляет P(x∣y), вероятность входных данных при наличии метки. Этот метод требует, чтобы модель «объясняла» каждое слово во входных данных на основе предоставленной метки, что может помочь усилить обучающие сигналы, когда данные скудны или несбалансированы.

Основные преимущества модели шумного канала

  1. Стабильность: Модели с шумным каналом демонстрируют меньшую дисперсию в своих предсказаниях, что приводит к более стабильной работе при использовании различных вербализаторов (текстовых выражений для меток) и случайных начальных чисел.
  2. Управление дисбалансом: Эти модели менее чувствительны к несбалансированным обучающим данным, что делает их более надежными при неравномерном распределении меток.
  3. Обобщение: Модели с шумным каналом способны обобщать данные до невидимых меток, что является решающим преимуществом в динамических средах, где со временем могут появляться новые категории или классы.

Как это работает

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

  1. Расчет обратной вероятности: Вместо того, чтобы предсказывать вероятность метки при наличии входных данных, вычислите вероятность метки при наличии входных данных. Например, если задача состоит в том, чтобы классифицировать настроение обзора фильма, вместо вычисления P("Положительный"∣"Этот фильм отличный"), модель вычисляет P("Этот фильм отличный"∣"Положительный").
  2. Быстрая настройка: Тонкая настройка непрерывных подсказок, которые добавляются к входным данным во время обучения. Этот процесс позволяет модели адаптировать представление входных данных для лучшего соответствия желаемым выходным данным.
  3. Методы демонстрации: Используйте обучающие примеры, объединяя их с входными данными или создавая ансамблевые демонстрации для улучшения контекста и сокращения использования памяти.

Конкретный пример: анализ настроений с помощью шумного канала подсказок с использованием GPT-4

Чтобы продемонстрировать, как использовать модель GPT-4 для улучшения классификации текста с несколькими кадрами с шумным каналом подсказок, давайте расширим задачу анализа настроений. Цель состоит в том, чтобы классифицировать, является ли обзор фильма положительным или отрицательным, вычислив вероятность входного текста с учетом определенной метки.

Пошаговая реализация

Во-первых, убедитесь, что у вас естьopenaiбиблиотека установлена ​​и правильно настроена с использованием вашего ключа API.

pip install openai

Теперь приступим к реализации.

import openai

# Set up your OpenAI API key
openai.api_key = 'your-api-key-here'

# Define the model
model = "gpt-4"

# Sample input text and corresponding labels
input_text = "A three-hour cinema master class."
labels = {"Positive": "It was great.", "Negative": "It was terrible."}

# Function to compute noisy channel probability
def compute_noisy_channel_probability(input_text, label_text):
    # Combine label and input text
    combined_text = f"{label_text} {input_text}"

    # Call GPT-4 to calculate the loss (negative log-likelihood)
    response = openai.Completion.create(
        model=model,
        prompt=combined_text,
        max_tokens=0,  # We don't want to generate text, just to compute log-probabilities
        logprobs=0,
        echo=True
    )

    # Extract token log probabilities
    log_probs = response['choices'][0]['logprobs']['token_logprobs']
    # Convert log probabilities to normal probabilities
    probability = sum(log_probs)

    return probability

# Compute probabilities for each label
probabilities = {label: compute_noisy_channel_probability(input_text, label_text)
                 for label, label_text in labels.items()}

# Determine the most probable label
predicted_label = max(probabilities, key=probabilities.get)
print(f"Predicted Label: {predicted_label}")

Пояснение к Кодексу

  • Настройка и инициализация:Настраиваем ключ API OpenAI и указываем модель GPT-4.
  • Вычислить вероятность зашумленного канала:Функция compute_noisy_channel_probability создает объединенный ввод текста метки, за которым следует обзор, и запрашивает завершение из модели GPT-4 с включенными logprobs. Это не генерирует текст, а вычисляет log-вероятности предоставленной текстовой последовательности.
  • Преобразование логарифмической вероятности в вероятность:Суммируя логарифмические вероятности, мы вычисляем общую логарифмическую вероятность входных данных с учетом метки, а затем преобразуем ее в вероятность для более легкого сравнения.
  • Прогноз:Модель вычисляет вероятности для каждой метки и выбирает ту, которая имеет наибольшую вероятность.

Пример вывода Предположим, что обзор — «Трехчасовой мастер-класс по кино». Возможные метки:

Положительный: «Это было здорово».

Отрицательно: «Это было ужасно».

Модель GPT-4 вычисляет вероятность обзора с учетом каждой метки:𝑃( "A three-hour cinema master class." ∣ "It was great" ), 𝑃 ( "A three-hour cinema master class." ∣ "It was terrible" )На основе вычисленных вероятностей модель может вывести:

Пример вывода:

codePredicted Label: Positive

Заключение

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

Этот метод не только стабилизирует прогнозы, но и повышает способность эффективно обрабатывать разнообразные и разреженные наборы данных, демонстрируя потенциал подсказок модели языка шумного канала в задачах обработки естественного языка.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE