Практическое сравнение с использованием ChatGPT и отлаженных моделей на основе кодировщика для задач контроля качества.

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

Базовая модель ChatGPT имеет только 3,5 млрд параметров, но она дает ответы лучше, чем модель GPT3 со 175 млрд параметров. Это подчеркивает важность сбора человеческих данных для точной настройки контролируемой модели. ChatGPT оценивался на хорошо известных задачах обработки естественного языка, и в этой статье производительность gpt-3.5-turbo сравнивается с моделями на основе контролируемых трансформеров из библиотеки DeepPavlov в задачах с ответами на вопросы. Для этой статьи я подготовил блокнот Google Colab, чтобы вы могли попробовать использовать модели из библиотеки DeepPavlov для некоторых задач QA.

Введение в ответы на вопросы

Ответ на вопрос — это задача обработки естественного языка, используемая в различных областях (например, в обслуживании клиентов, образовании, здравоохранении), где цель состоит в том, чтобы дать соответствующий ответ на вопросы, заданные на естественном языке. Существует несколько типов заданий на ответы на вопросы, например, фактоидный контроль качества, где ответом является краткий факт или часть информации, и нефактический контроль качества, где ответом является мнение или более подробное объяснение. Ответы на вопросы были активной областью исследований в НЛП в течение многих лет, поэтому для оценки систем обеспечения качества было создано несколько наборов данных. Вот некоторые наборы данных для QA, которые мы рассмотрим более подробно в этой статье: SQuAD, BoolQ и QNLI.

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

Библиотека DeepPavlov использует базовые модели BERT для работы с ответами на вопросы, такие как RoBERTa. BERT — это предварительно обученная модель глубокого обучения на основе преобразователя для обработки естественного языка, которая достигла самых современных результатов в широком спектре задач обработки естественного языка, когда эта модель была предложена. Также существует множество моделей с BERT-подобной архитектурой, которые обучены решать задачи на определенных языках помимо английского: китайском, немецком, французском, итальянском, испанском и многих других. Его можно использовать для решения самых разных языковых задач, изменяя при этом только один слой в исходной модели.

Введение в библиотеку DeepPavlov

Библиотека DeepPavlov — это бесплатная среда НЛП с открытым исходным кодом, включающая самые современные модели НЛП, которые можно использовать отдельно или как часть DeepPavlov Dream. Эта многофункциональная платформа AI Assistant предлагает различные модели классификации текста для распознавания намерений, классификации тем и выявления оскорблений.

PyTorch — это базовая среда машинного обучения, которую использует платформа DeepPavlov. Библиотека DeepPavlov реализована на Python и поддерживает версии Python 3.6–3.9. Также библиотека поддерживает использование моделей на основе трансформеров от Hugging Face Hub через Hugging Face Transformers. Взаимодействие с моделями возможно либо через интерфейс командной строки (CLI), интерфейс прикладного программирования (API), либо через конвейеры Python. Обратите внимание, что у конкретных моделей могут быть дополнительные требования к установке.

Понимание прочитанного (SQuAD 2.0)

Начнем наше сравнение с задания на понимание прочитанного, а именно с набора данных SQuAD 2.0. Это крупномасштабный открытый набор данных для ответов на вопросы, который содержит более 100 000 вопросов с ответами, основанными на заданном фрагменте текста. В отличие от исходного набора данных SQuAD, SQuAD 2.0 включает в себя вопросы, на которые нельзя ответить исключительно на основе предоставленного отрывка, что затрудняет точный ответ моделей машинного обучения.

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

Давайте теперь перейдем к составлению вопроса для ChatGPT. Чтобы ответы были более стабильными, я перезапускал сеанс после каждого вопроса. Итак, для получения ответов на примеры в стиле SQuAD использовалась следующая подсказка:

Пожалуйста, ответьте на данный вопрос, исходя из контекста. Если в контексте нет ответа, ответьте НЕТ.
контекст: [‘контекст’]
вопрос: [‘вопрос’]

Давайте теперь посмотрим и сравним результаты. Несмотря на то, что ChatGPT исключительно хорошо отвечает на вопросы, эксперименты на тысяче примеров показали, что ChatGPT сильно отстает от существующих решений при ответах на вопросы в заданном контексте. Если внимательно рассмотреть примеры, на которых модель неверна, то окажется, что ChatGPT плохо справляется с ответом на вопрос по контексту, когда ответ на самом деле может быть не в представленном контексте; Кроме того, он плохо работает, когда задается вопрос о порядке событий во времени. С другой стороны, библиотека DeepPavlov обеспечивает правильный вывод во всех этих случаях. Вот несколько примеров:

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

Это пример, который ChatGPT не видел. И как видим, здесь она не может ответить на вопрос о порядке событий во времени.

Для количественного сравнения предварительно обученной модели ChatGPT и DeepPavlov SQuAD 2.0 я использовал выборку из бумаги. Хотя модель из библиотеки DeepPavlov показывает лучшие результаты, чем ChatGPT, она не намного опережает тестируемый образец. Это может быть связано с ошибками в макете набора данных. В случае ее исправления ожидается улучшение результатов обеих моделей.

Естественные вопросы типа «да/нет» (BoolQ)

Библиотека DeepPavlov также содержит модель, обученную на наборе данных BoolQ, чтобы отвечать на естественные вопросы в формате да/нет. BoolQ — это набор данных для машинного обучения, содержащий более 150 000 вопросов да/нет, созданный Google Research для проверки способности алгоритмов обработки естественного языка точно отвечать на бинарные вопросы на основе заданного фрагмента текста.

Давайте посмотрим, как получить ответы от ChatGPT на примерах BoolQ. Можно воспользоваться подсказкой из статьи:

Пожалуйста, ответьте на данный вопрос, исходя из контекста. Ответ должен быть точным «да» или «нет»
контекст: [‘контекст’]
вопрос: [‘вопрос’]

Как видите, подсказка проста и не должна запутать модель. Некоторые эксперименты уже были проведены и показали, что точность ChatGPT на наборе данных BoolQ (понимание прочитанного) составляет 86,8. Однако лучшая модель достигает 91,2. Хотя разница между сравниваемыми моделями невелика, вот несколько примеров, где ChatGPT отстает от модели из библиотеки DeepPavlov:

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

Странно, но иногда ChatGPT не может сопоставить числовое значение времени со словесным.

Во всех приведенных выше примерах модель из библиотеки DeepPavlov отвечает правильно. Как и в примерах для SQUAD в наборе данных BoolQ, ChatGPT допускает ошибки, когда нужно ответить о времени и когда нужно обобщить какую-то информацию. Также я заметил, что ChatGPT сильно зависит от информации, которая была заучена во время обучения. Итак, если мы возьмем за контекст реальный факт, но добавим к нему ложную информацию, то ChatGPT в большинстве случаев будет давать ответ, используя реальную информацию, а не выдуманную. Пример:

В оригинальном тексте действительно сказано, что батат и картофель не принадлежат к одному и тому же семейству. Но опять же, в данном контексте четко написано, что они принадлежат к одному семейству — пасленовые, что ChatGPT полностью проигнорировал.

Вопросно-ответная НЛИ (QNLI)

Последняя задача обеспечения качества, в которой я сравнивал результаты библиотеки DeepPavlov и ChatGPT, — это вывод ответов на вопросы или набор данных QNLI. QNLI (Question Natural Language Inference) — это задача понимания естественного языка (NLU), в которой модель обучается определять взаимосвязь между двумя предложениями: контекстным предложением (вопросом) и предложением-гипотезой (ответом). Цель состоит в том, чтобы оценить, является ли предложение гипотезы следствием или нет, учитывая предложение контекста.

Для решения проблемы QNLI с помощью ChatGPT использовалась следующая подсказка из статьи:

Данный вопрос: [‘вопрос’]
Определите, содержит ли следующее предложение соответствующий ответ: [‘предложение’]

В большинстве случаев ChatGPT удается выбрать правильный ответ. Но мне удалось подтвердить результаты экспериментов: ChatGPT гораздо хуже откликается, чем модели на основе BERT, на задачу QNLI. Новых классов ошибок модели ChatGPT мне найти не удалось — в основном все они попадают в одни и те же классы временных ошибок (ошибки, связанные с неумением рассуждать о событиях и их последовательности во времени) и логических ошибок (ошибки, связанные с неспособность к дедуктивным или индуктивным рассуждениям).

Также я оценил модель DeepPavlov на образце из набора разработчиков как в бумаге. Результаты приведены ниже. Предварительно обученные модели QNLI в DeepPavlov превосходят ChatGPT и модели из статьи.

Несколько примеров ошибок:

На первый взгляд даже человеку может показаться, что в приведенном выше предложении содержится ответ на вопрос. Но ключевое слово в вопросе — «минимум» — об этом в предложении ничего.

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

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

Как использовать библиотеку DeepPavlov для контроля качества?

Чтобы начать работу с библиотекой DeepPavlov, сначала вам необходимо установить ее с помощью следующей команды:

pip install deeppavlov

После этого вы можете взаимодействовать с моделями. Вот код, который позволяет использовать предварительно обученную модель от DeepPavlov:

from deeppavlov import build_model
model = build_model("qa_squad2_bert", download=True, install=True)
model(["Company X releases new models every year on the 1st of September. K-3 model was released in 2003. K-1 model that was released in 2001 and K-2 model released in 2002 are the only models before the release of K-3 model."], ["What is the name of the model released one year before the release of K-2 model?"])
# [['K-1'], [98], [0.9761579036712646]]

Если вы хотите использовать модель BoolQ, сначала вам нужно запустить команду build_model. После этого достаточно вызвать модель:

from deeppavlov import build_model
model = build_model("superglue_boolq_roberta_mnli", download=True, install=True)
model(["Are a short cape and a long cloak the same?"],["Cloak - Ladies may wear a long cloak called a short cape, or a full-length cloak. Gentlemen wear an ankle-length or full-length cloak. Formal cloaks often have expensive, colored linings and trimmings such as silk, satin, velvet and fur."])
# ['True']

Чтобы использовать модель QNLI из библиотеки DeepPavlov, вы должны запустить следующее:

from deeppavlov import build_model
model = build_model("glue_qnli_roberta", download=True, install=True)
model(["What is the minimum required if you want to teach in Canada?"],["In most provinces a second Bachelor's Degree such as a Bachelor of Education is required to become a qualified teacher."])
# ['not_entailment']

Более подробная информация об использовании библиотеки DeepPavlov доступна здесь.

Заключение

Эта статья была кратким обзором сравнения моделей ChatGPT и DeepPavlov для выбранных задач QA. Несмотря на то, что модель OpenAI становится все более популярной, в определенных сценариях она уступает существующим решениям. Как я показал на одной из самых распространенных задач — ответ на вопрос — более эффективно использовать модели, обученные решать специализированные задачи. С ними можно добиться гораздо более качественных результатов, а по эффективности такие модели намного опережают ChatGPT, так как работают быстрее и потребляют меньше ресурсов. Подробнее о недостатках ChatGPT можно узнать в бумаге.

Бесплатная шпаргалка по ChatGPT от Artificial Corner

Мы предлагаем нашим читателям бесплатную шпаргалку. Подпишитесь на нашу рассылку с более чем 20 000 человек и получите нашу бесплатную памятку по ChatGPT.

Источники:

[1] Дж. Коконь и др. al., ChatGPT: мастер на все руки, мастер ни в чем (2023), публикации Arxiv
[2] C. Qin et. al., Является ли ChatGPT универсальным решателем задач обработки естественного языка? (2023), публикации Arxiv
[3] Q. Zhong et. др., Может ли ChatGPT тоже понимать? Сравнительное исследование ChatGPT и Fine-tuned BERT (2023), публикации Arxiv
[4] A. Borji et. и др., Категориальный архив сбоев ChatGPT (2023), публикации Arxiv