Почему ChatGPT такой «умный» и что такое prompt engineering?

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

ChatGPT доступен для бесплатного использования на время периода «сбора обратной связи». Компания надеется использовать собранные данные для улучшения финальной версииФото: © CHUAN CHUAN / Shutterstock / FOTODOM
ChatGPT доступен для бесплатного использования на время периода «сбора обратной связи». Компания надеется использовать собранные данные для улучшения финальной версииФото: © CHUAN CHUAN / Shutterstock / FOTODOM

ChatGPT разработала американская компания OpenAI. За несколько месяцев чат-бот уже успешно сдал экзамены в нескольких вузах США, помог российскому студенту написать диплом и в ближайшем будущем может изменить наш подход к использованию поисковых систем. В его основе лежит языковая модель GPT-3.

Языковая программная модель (нейросеть) GPT-3 считается наиболее сложной и объемной на сегодняшний деньФото: © Tada Images / Shutterstock / FOTODOM
Языковая программная модель (нейросеть) GPT-3 считается наиболее сложной и объемной на сегодняшний деньФото: © Tada Images / Shutterstock / FOTODOM

Если совсем просто, то языковая модель — это алгоритм, который предсказывает следующее слово в тексте. Допустим, надо продолжить фразу «В школьной программе математики ученики изучают…». Машина понимает, что логично добавить слово «алгебру», а не, к примеру, «анатомию», и выбирает именно его. Но ведь история явно не закончена: математика в школе не ограничивается одной алгеброй!

Так что снова обращаемся к языковой модели и получаем следующий результат: «В школьной программе математики ученики изучают алгебру и…». Человек построил бы фразу именно так. Но предложение не закончено.

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

У языковой модели есть возможность явно сообщить нам, что, «по ее мнению», она написала достаточно. Об окончании генерации текста сигнализирует специальное слово. Например, «[КОНЕЦ]».

В итоге продолженный языковой моделью текст мог бы выглядеть следующим образом: «В школьной программе математики ученики изучают алгебру и геометрию, которая подразделяется на планиметрию и стереометрию[КОНЕЦ]». Обратите внимание, что знаки препинания тоже можно рассматривать как «слова», которые генерирует модель в процессе своей работы.

Обучение языковой модели

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

Для того чтобы модель умела связывать слова в предложения подобно людям, нужно показать ей большое количество реальных текстов. Например, та же GPT-3 обучалась на сотнях миллионов примеров из интернета и книг.

Процесс обучения языковой модели выглядит следующим образом. Мы берем какой-то кусочек текста и делим его на две части: основную и слово-продолжение, которое должно идти после нее. Предложенный выше пример мы можем разделить на основную часть «В школьной программе математики ученики изучают…» и слово-продолжение «алгебру».

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

Кроме создания текстов, ботов и поисковиков языковая модель способна решать задачи по программированиюФото: © TippaPatt / Shutterstock / FOTODOM
Кроме создания текстов, ботов и поисковиков языковая модель способна решать задачи по программированиюФото: © TippaPatt / Shutterstock / FOTODOM

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

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

Как сделать из языковой модели чат-бот

Имея на руках языковую модель, которая умеет продолжать тексты, уже можно создать продвинутый чат-бот. Давайте посмотрим на то, как это работает.

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

Для того чтобы машина «понимала», что ей задают вопрос и на него нужно ответить, в конце предложения добавляется специальное слово. Например, «[ОТВЕТ]». В процессе обучения она запомнила, что после него нужно сгенерировать фразу, раскрывающую суть предшествующего вопроса. Кроме того, машина уже знает, что Санкт-Петербург основал Петр I. Все это позволяет модели при генерации продолжения для подобного вопросительного текста корректно ответить на поставленный вопрос.

Такой рисунок нейросеть выдала за собственным авторством на запрос — Chat GPTФото: © Shutterstock.AI / Shutterstock / FOTODOM
Такой рисунок нейросеть выдала за собственным авторством на запрос — Chat GPTФото: © Shutterstock.AI / Shutterstock / FOTODOM

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

[Человек] Кто является основателем Санкт-Петербурга?

[Чат-бот] Петр I Алексеевич — последний царь всея Руси и первый Император Всероссийский.

[Человек] А город называется в честь Петра I?

Для того чтобы правильно ответить, чат-боту необходим весь контекст диалога. Он должен понимать, что под словом «город» подразумевается «Санкт-Петербург», а для этого ему нужно «держать в уме» первый вопрос.

Однако можно взять весь текущий диалог человека и чат-бота и сгенерировать продолжение для него целиком. За счет этого мы сможем сообщить машине контекст, который необходим для ответа на последний вопрос:

[Человек] Кто является основателем Санкт-Петербурга?

[Чат-бот] Петр I Алексеевич — последний царь всея Руси и первый Император Всероссийский.

[Человек] А город называется в честь Петра I?

[Чат-бот] Не совсем так. Санкт-Петербург был назван в честь небесного покровителя Петра I — апостола Петра.

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

Работа с диалогами

Идея в том, чтобы взять готовую языковую модель, например GPT-3, и дополнительно обучить ее на диалогах, структурированных знакомым нам образом:

[Человек] Что-то спрашивает.

[Чат-бот] Отвечает на поставленный вопрос.

[Человек] Что-то уточняет.

[Чат-бот] Снова отвечает.

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

Качество ответов на запросы

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

Нейросеть просчитывает связи между словами и предлагает наиболее вероятную последовательность. Модель работает по принципу автодополнения — почти как функция Т9 в смартфонахФото: © Ascannio / Shutterstock / FOTODOM
Нейросеть просчитывает связи между словами и предлагает наиболее вероятную последовательность. Модель работает по принципу автодополнения — почти как функция Т9 в смартфонахФото: © Ascannio / Shutterstock / FOTODOM

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

Для этого на втором этапе дообучения языковая модель генерирует несколько вариантов ответа на запрос, а человек-эксперт оценивает их качество. За правильные машина получает «награду», а за некорректные — «штраф». Таким образом, модель стремится получать как можно большее суммарное вознаграждение. Допустим, мы попросили ее написать хокку и получили два варианта:

Уже почти вечер.

А я все один сижу.

Осень.

Дело было вечером.

Я вышел на улицу, чтобы прогуляться.

Однако начался дождь, и я вернулся домой.

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

Итого

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

Если алгоритмы выдают некорректный результат, пользователям становится интересно, что дать алгоритму, чтобы результат получился точнее. Вот они и экспериментируют с запросами (промтами) , подбирают подсказки, которые помогают нейросети выдавать более адекватные ответы. Подбор модификаций текста называется Prompt Engineering, он позволяет решать любую задачу и создавать новые сущности. Именно поэтому многие считают GPT-3 подобием сильного искусственного интеллекта.

Применение ChatGPT

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

Например, ChatGPT умеет генерировать тексты по заданию. Человеку нужно сформулировать, каким условиям должен удовлетворять текст, а чат-бот сгенерирует его так, чтобы все они были соблюдены. Вот такой текст ChatGPT может выдать при запросе «Напиши небольшое стихотворение про возможности, которыми обладает ChatGPT»:

I am ChatGPT, a language wizard,

Can answer any question in a blizzard.

Information in my head I store,

Ask me anything, I’ll help you explore.

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

«Я — ChatGPT, волшебник языка,

Отвечу на любой вопрос, будто в метели.

Информацию храню в своей голове,

Спроси меня, о чем угодно, я помогу тебе исследовать».

Важная особенность ChatGPT — умение вычленять из текста основную мысль и представлять ее в компактном виде, так называемая суммаризация. Например, можно попросить чат-бота сократить имеющийся у вас текст. Это полезная функция. Представьте себе, что при вводе запроса в поисковик вы получаете не только набор ссылок, но и небольшую справку про объект поиска, которая объединяет информацию из нескольких независимых источников. Сейчас подобная функциональность внедряется в поисковую систему Bing от Microsoft

Bing будет диалоговым и отвечать как ChatGPT. Согласно презентации Microsoft, он «просматривает результаты в интернете, чтобы найти и обобщить ответ на запрос» Фото: © mundissima / Shutterstock / FOTODOM
Bing будет диалоговым и отвечать как ChatGPT. Согласно презентации Microsoft, он «просматривает результаты в интернете, чтобы найти и обобщить ответ на запрос» Фото: © mundissima / Shutterstock / FOTODOM

У языков программирования своя структура, но модели обучили работать и с ними. ChatGPT неплохо умеет писать код или искать в нем ошибки. Можно попросить чат-бот создать программу с заданной функциональностью на необходимом языке программирования. Если нам надо найти ошибку в уже написанной программе, мы отправляем чат-боту кусочек кода и спрашиваем, что в нем не работает. А модель уже сама попробует разобраться, что пошло не так. Понятно, что сегодня чат-бот способен справляться далеко не со всеми подобными запросами, но сам факт того, что он умеет с ними работать, впечатляет.

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

Хотите больше? Подписывайтесь на наш Telegram-канал!

77
Начать дискуссию