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

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

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

Языковая модель — алгоритм ИИ, который умеет продолжать произвольный текст Фото: © Tada Images / Shutterstock / FOTODOM

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

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

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

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

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

В каких профессиях чат-боты смогут заменить человека?

Читать

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

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

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

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

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

GPT-3 — одна из самых больших языковых моделей Фото: © TippaPatt / Shutterstock / FOTODOM

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

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

Чат-боты все еще ошибаются, но скоро смогут изменить мир

Читать

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

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

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

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

Модели ИИ могут создавать не только тексты, но и изображения. Выше представлено изображение, сгенерированное нейросетью по запросу - ChatGPT Фото: © Shutterstock.AI / Shutterstock / FOTODOM

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

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

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

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

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

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

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

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

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

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

Чат-бот заслужил степень магистра бизнес-администрирования

Читать

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

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

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

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

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

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

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

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

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

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

ChatGPT способен не только общаться с пользователями, но и исполнять их запросы, например, писать программы или сочинять стихи Фото: © Ascannio / Shutterstock / FOTODOM

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

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

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

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

Осень.


 

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

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

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

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

Итого

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

С помощью запросов, которые вы отправляете ChatGPT, можно задавать контекст, в котором будет происходить генерация ответа. Например, можно попросить чат-бот дать «очень подробный» ответ на вопрос, а можно попросить его ответить «в стихах». От детальности запроса часто зависит качество ответа, который сгенерирует модель, поэтому составлению запросов уделяется особое внимание. Есть даже отдельное направление в работе с языковыми моделями — инженерия запросов (от англ. — prompt engineering).

Дизайн будущего: что такое prompt engineering

Читать

Применение 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, которая может использовать для ответов на вопросы языковую модель Фото: © mundissima / Shutterstock / FOTODOM

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

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

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

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

Оцените статью
Поделись знанием