Текст книги "Как устроен ChatGPT? Полное погружение в принципы работы и спектр возможностей самой известной нейросети в мире"
Автор книги: Стивен Вольфрам
Жанр: Программы, Компьютеры
Возрастные ограничения: +16
сообщить о неприемлемом содержимом
Текущая страница: 1 (всего у книги 7 страниц) [доступный отрывок для чтения: 2 страниц]
Стивен Вольфрам
Как устроен ChatGPT? Полное погружение в принципы работы и спектр возможностей самой известной нейросети в мире
Научный редактор Здоров Антон
На русском языке публикуется впервые
Все права защищены.
Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
What Is ChatGPT Doing … and Why Does It Work?
© 2023 Stephen Wolfram.
Original English language edition published by Wolfram Media 100 Trade Center Dr. 6th Floor, Champaign Illinois 61820, USA.
Arranged via Licensor's Agent: DropCap Inc. and Igor Korzhenevskiy of Alexander Korzhenevski Agency (Russia). All rights reserved
© Издание на русском языке, перевод, оформление. ООО «Манн, Иванов и Фербер», 2024
* * *
Предисловие
Эта небольшая книга представляет собой попытку объяснить, как работает ChatGPT. В некотором смысле это история о технологиях. Но еще и разговор о науке и философии. И для того, чтобы рассказать эту историю, нам придется собрать воедино огромный спектр идей и открытий, сделанных на протяжении многих столетий.
Я сам с большим интересом и волнением наблюдаю, как вещи, которые так долго меня интересовали, объединяются в результате такого прогресса. Сложное поведение простых программ, погружение в суть языка и смыслообразования, а также практические возможности больших компьютерных систем – все это является частью истории ChatGPT.
ChatGPT основан на концепции нейронных сетей, составленной в 1940-х годах в качестве модели работы головного мозга. Я сам впервые спрограммировал нейронную сеть в 1983 году, но тогда ничего интересного из нее не вышло. Однако 40 лет спустя, когда у нас есть компьютеры, считающие в миллион раз быстрее, миллиарды страниц текста в интернете и целый ряд инженерных инноваций, ситуация совершенно иная. И, ко всеобщему удивлению, современная нейронная сеть, которая в миллиард раз больше созданной мной в 1983 году, способна делать то, что раньше считалось под силу только человеку, – генерировать осмысленный текст.
Эта книга, написанная вскоре после дебюта ChatGPT, состоит из двух частей. В первой объясняется, что такое ChatGPT и как ему удается выполнять сугубо человеческую работу по генерированию текста. Вторая посвящена вычислительным инструментам ChatGPT (выходящим за рамки человеческих возможностей) и сверхспособностям нашей системы Wolfram|Alpha в области вычисляемых знаний.
На момент написания книги прошло всего три месяца с запуска ChatGPT, и мы только начинаем понимать последствия этого события – как практические, так и интеллектуальные. Но пока ChatGPT служит напоминанием о том, что, несмотря на множество уже сделанных изобретений и открытий, сюрпризы всё еще возможны.
Стивен Вольфрам, 28 февраля 2023 года
Что делает ChatGPT и почему это работает?
Он просто добавляет по одному слову за раз
Тот факт, что ChatGPT может автоматически генерировать текст, который выглядит так, словно написан человеком, поражает наше воображение. Большинство людей недоумевают, как чат-бот выполняет интеллектуальную работу, которая прежде считалась доступной исключительно человеку. Как он это делает? Моя цель – дать вам хотя бы общее представление о том, что происходит внутри ChatGPT, а затем исследовать, как ему удается так хорошо создавать то, что выглядит как осмысленный текст. Хочу сразу сказать, что я собираюсь сосредоточиться на общих принципах работы ChatGPT и, хотя буду упоминать некоторые технические детали, не стану в них углубляться. (Все, о чем я буду говорить, применимо и к другим большим языковым моделям, подобным ChatGPT.)
Первое, что нужно объяснить, – ChatGPT всегда пытается создать «разумное продолжение» любого текста, который у него есть на данный момент. Под словами «разумное продолжение» мы подразумеваем «то, что можно ожидать, исходя из того, что люди уже написали на миллиардах веб-страниц».
Итак, давайте предположим, что у нас есть предложение «Самое лучшее в ИИ – это его способность…». Представьте, что вы прочитываете миллиарды страниц текста, написанных людьми (скажем, веб-страницы в интернете и оцифрованные книги), и находите все аналогичные предложения, а затем смотрите, какое слово чаще всего встречается в них на месте многоточия. ChatGPT делает что-то подобное, за исключением того, что (как я объясню позже) он не просматривает тексты буквально – он ищет фрагменты, которые «совпадают по смыслу». Результатом его работы является список слов, которые логически могут следовать за основным словом, ранжированных по степени вероятности их присутствия в этом предложении:
Самое лучшее в ИИ – это его способность…
(англ. The best thing about AI is its ability to…)
…учиться (англ. learn) – 4,5 %
…предсказывать (англ. predict) – 3,5 %
…создавать (англ. make) – 3,2 %
…понимать (англ. understand) – 3,1 %
…делать (англ. do) – 2,9 %
Примечательно, что, когда ChatGPT пытается написать эссе, по сути он просто снова и снова спрашивает: «Учитывая текст на данный момент, каким должно быть следующее слово?» – и каждый раз добавляет это новое слово. (Точнее, он добавляет так называемый токен, который может быть и частью слова; именно поэтому ChatGPT иногда может «составлять новые слова». Но об этом позже.)
Итак, на каждом этапе ChatGPT создает список слов с указанием вероятности их присутствия на данном месте. Но какое из них нужно выбрать, например, для эссе? Можно предположить, что это должно быть слово с самым высоким рейтингом (то есть то, для которого определена самая высокая вероятность). Однако именно здесь ChatGPT начинает проявлять свои вуду-способности. Потому что по какой-то причине (возможно, однажды мы ее даже узнаем), если всегда будем выбирать слово с самым высоким рейтингом, мы получим очень гладенькое эссе без малейшего признака креативности (и которое будет слово в слово повторять множество других текстов). Но если мы наугад выбираем слова с более низким рейтингом, то эссе получается «более интересное».
Здесь действует фактор случайности, а это значит, что, даже используя каждый раз один и тот же промпт[1]1
Промпт (от англ. prompt – «побуждать») – запрос, подсказка или инструкция, которые вы даете искусственному интеллекту. Прим. пер.
[Закрыть], мы, скорее всего, получим разные эссе. И, как мы уже упоминали, у ChatGPT есть своя вуду-идея, то есть у него существует так называемый температурный параметр, который определяет, как будут использоваться слова с более низким рейтингом, и для создания эссе, оказывается, лучше всего подходит температура, равная 0,8. (Нужно подчеркнуть, что это никакая не теория – это просто вывод из того, что работает на практике. И например, понятие «температура» применяется потому, что здесь используются экспоненциальные распределения, знакомые нам из статистической физики, но нет никакой физической связи – по крайней мере насколько нам известно.)
Прежде чем мы продолжим, я должен объяснить, что ради простоты изложения не стану рассматривать всю систему, лежащую в основе ChatGPT. Вместо этого буду работать с более простой системой – GPT-2, которую можно запустить на обычном персональном компьютере. И поэтому практически для всего, что вам здесь покажу, я включу код на языке Wolfram, который вы сможете немедленно запустить на своем компьютере.
Например, вот как получить таблицу вероятностей, приведенную выше. Во-первых, мы должны иметь базовую нейронную сеть языковой модели:
In[]:= model = NetModel[{"GPT-2 Transformer Trained on WebText Data", «Task» → «LanguageModeling»}]
Out[]= NetChain[]
Позже мы заглянем внутрь этой нейронной сети и поговорим о том, как она работает. Но пока можем просто применить эту модель к нашему тексту в качестве черного ящика и запросить пять наиболее подходящих слов, которые, по мнению модели, должны следовать за указанным текстом:
In[]:= model["The best thing about AI is its ability to", {"TopProbabilities", 5}]
Out[]= {do → 0,0288508, understand → 0,0307805,
make → 0,0319072, predict → 0,0349748, learn → 0,0445305}
Затем эти строки превращаются в отформатированный набор данных:
In[]:= Dataset[ReverseSort[Association[%]],
ItemDisplayFunction → (PercentForm[#, 2] &)]
Вот что произойдет, если многократно «применять модель» – на каждом шаге добавлять слово, имеющее наибольшую вероятность (в коде это слово decision):
In[]:= NestList[StringJoin[#, model[#, «Decision»]] &, «The best thing about AI is its ability to», 7]
Out[] = {Самое лучшее в ИИ – это его способность,
Самое лучшее в ИИ – это его способность учиться,
Самое лучшее в ИИ – это его способность учиться на,
Самое лучшее в ИИ – это его способность учиться на собственном опыте,
Самое лучшее в ИИ – это его способность учиться на собственном опыте.,
Самое лучшее в ИИ – это его способность учиться на собственном опыте. Это,
Самое лучшее в ИИ – это его способность учиться на собственном опыте. Это не,
Самое лучшее в ИИ – это его способность учиться на собственном опыте. Это не так.}
Что будет, если мы продолжим предложение? В этом случае (при нулевой температуре) полученный текст оказывается запутанным и изобилующим повторами:
Самое лучшее в ИИ – это его способность учиться на собственном опыте. Это не просто вопрос обучения на своем опыте, это изучение окружающего вас мира. Искусственный интеллект – очень хороший пример. Это очень хороший пример того, как использовать искусственный интеллект для улучшения своей жизни. Это очень хороший пример того, как использовать искусственный интеллект для улучшения своей жизни. Искусственный интеллект – очень хороший пример того, как использовать его для улучшения своей жизни. Это очень хороший пример того, как использовать искусственный интеллект для
Но что, если вместо того, чтобы всегда выбирать самое популярное слово, мы выберем слова с меньшей вероятностью (с температурой 0,8)? Тогда может получиться следующий текст:
{Самое лучшее в ИИ – это его способность,
Самое лучшее в ИИ – это его способность создавать,
Самое лучшее в ИИ – это его способность создавать миры,
Самое лучшее в ИИ – это его способность создавать миры, которые,
Самое лучшее в ИИ – это его способность создавать миры, которые являются,
Самое лучшее в ИИ – это его способность создавать миры, которые являются одновременно захватывающими,
Самое лучшее в ИИ – это его способность создавать миры, которые являются одновременно захватывающими,}
И каждый раз, когда мы будет выбирать случайные слова, текст окажется разным, как в следующих примерах:
Самое лучшее в ИИ – это его способность к обучению. Мне всегда нравилось
Самое лучшее в ИИ – это его способность по-настоящему проникать в ваш мир и просто
Самое лучшее в ИИ – это его способность изучать поведение человека и то, как он
Самое лучшее в ИИ – это его способность проделывать отличную работу по обучению нас
Самое лучшее в ИИ – это его способность создавать реальные задачи, но вы можете
Стоит отметить, что даже на первом этапе имеется множество возможных «следующих слов» (при температуре 0,8), хотя вероятность их использования падает достаточно быстро (данные на этом логарифмическом графике демонстрируют зависимость от n-1, которая очень характерна для общей статистики языка):
Так что же произойдет, если мы продолжим создавать текст? Вот этот случайный пример уже лучше, чем пример с самыми популярными (нулевая температура) словами, но текст все еще немного странный:
Самое лучшее в ИИ – это его способность видеть насквозь и осмысливать мир вокруг нас, а не паниковать и игнорировать. Мы также можем сказать, что ИИ «выполняет свою работу» или «заурядный ИИ». Действительно, делая бесконечное количество шагов, разработка машины, которая может быть интегрирована с другими системами или управляться одной системой, является одним из наиболее фундаментальных процессов ИИ. Помимо взаимодействия человека и машины ИИ также играет важную роль в творчестве.
Этот текст был написан простой моделью GPT-2 (2019 года выпуска). У более современной модели, GPT-3, результаты получаются намного лучше. Следующий текст был создан при помощи самых популярных (нулевая температура) слов с использованием того же самого промпта, но с помощью новой модели – GPT-3:
Самое лучшее в ИИ – это его способность автоматизировать процессы и принимать решения быстро и точно. ИИ можно использовать для автоматизации повседневных задач вроде ввода данных или для принятия сложных решений, таких как прогнозирование поведения клиентов или анализ больших наборов данных. ИИ также можно использовать для улучшения обслуживания клиентов, поскольку он позволяет быстро и точно реагировать на запросы клиентов. ИИ также можно использовать для повышения точности медицинских диагнозов и автоматизации процесса открытия новых лекарств.
А вот пример, созданный при температуре 0,8:
Самое лучшее в ИИ – это его способность учиться и развиваться с течением времени, что позволяет ему постоянно улучшать свою производительность и быть более эффективным в выполнении задач. ИИ может использоваться для автоматизации повседневных задач, позволяя людям сосредоточиться на более важных вещах. ИИ также можно использовать для принятия решений и предоставления информации, которую в противном случае людям было бы невозможно понять.
Откуда берутся эти вероятности?
Итак, ChatGPT всегда выбирает следующее слово, основываясь на вероятностях. Но откуда берутся эти вероятности? Давайте начнем с более простой задачи. Рассмотрим создание текста на английском языке по одной букве (а не по слову) за раз. Как мы можем определить вероятность для каждой буквы?
Самое простое, что мы могли бы сделать, – это взять образец английского текста и подсчитать, как часто в нем встречается каждая буква. Например, так подсчитываются буквы в статье о кошках (англ. cats) в «Википедии»:
In[]:= LetterCounts[WikipediaData["cats"]]
Out[]= <|e → 4279, a → 3442, t → 3397, i → 2739, s → 2615, n → 2463, o → 2426, r → 2147, h → 1613, l → 1552, c → 1405, d → 1331, m → 989, u → 916, f → 760, g → 745, p → 651, y → 591, b → 511, w → 509, v → 395, k → 212, T → 114, x → 85, A → 81, I → 68, S → 55, F → 42, z → 38, F → 36…|>
А это в статье о собаках (англ. dogs):
In[]:= LetterCounts[WikipediaData["dogs"]]
Out[]= <|e → 3911, a → 2741, o → 2608, i → 2562, t → 2528, s → 2406, n → 2340, r → 1866, d → 1584, h → 1463, l → 1355, c → 1083, g → 929, m → 859, u → 782, f → 662, p → 636, y → 500, b → 462, w → 409, v → 406, k → 151, T → 90, C → 85, I → 80, A → 74, x → 71, S → 65…|>
Результаты похожи, но не идентичны (буква о, без сомнения, чаще встречается в статье о собаках, потому что, в конце концов, она присутствует в самом слове dog). Тем не менее, если мы возьмем достаточно большую выборку текстов на английском языке, то можем ожидать, что в итоге получим достаточно схожие результаты:
In[]:= []
Out[]= {e → 12,7 %, t → 9,06 %, a → 8,17 %, o → 7,51 %, i → 6,97 %, n → 6,75 %, s → 6,33 %, h → 6,09 %, r → 5,99 %, d → 4,25 %, I → 4,03 %, c → 2,78 %, u → 2,76 %, m → 2,41 %, w → 2,36 %, f → 2,23 %, g → 2,02 %, y → 1,97 %, p → 1,93 %, b → 1,49 %, v → 0,978 %, K → 0,772 %, j → 0,153 %, x → 0,150 %, q → 0,0950 %, z → 0,0740 %}
Вот что мы получим, если просто сгенерируем последовательность букв с такими вероятностями:
rronoitadatcaeaesaotdoysaroiyiinnbantoioestlhddeocneooewceseciselnodrtrdgriscsatsepesdcniouhoetsedeyhedslernevstothindtbmnaohngotannbthrdthtonsipieldn
Мы можем разбить это на «слова», добавив пробелы, как если бы это были буквы с определенной вероятностью:
sd n oeiaim satnwhoo eer rtr ofiianordrenapwokom del oaas ill e h f rellptohltvoettseodtrncilntehtotrkthrslo hdaol n sriaefr hthehtn ld gpod a h y oi
Мы также можем упростить процесс, разделив буквы в соответствии со стандартной длиной слов в английском языке:
ni hilwhuei kjtn isjd erogofnr n rwhwfao rcuw lis fahte uss cpnc nluoe nusaetat llfo oeme rrhrtn xdses ohm oa tne ebedcon oarvthv ist
Нам не удалось обнаружить здесь никаких реально существующих слов, но последующие результаты выглядят немного лучше. Однако, чтобы пойти дальше, нам нужно сделать нечто большее, чем просто выбрать буквы наугад. Так, например, мы знаем, что если у нас есть буква q, то следующей буквой должна быть u.
Вот график вероятностей самих букв:
А вот график, который показывает вероятности пар букв в типичном английском тексте. Первая буква пары показана сверху, вторая – слева:
Здесь мы видим, например, что столбец q пуст (нулевая вероятность), за исключением пересечения со строкой u. Итак, теперь вместо того, чтобы генерировать наши «слова» по одной букве за раз, давайте генерировать их, рассматривая по две буквы за раз. Вот результат, который, как оказалось, включает в себя несколько реальных слов:
on inhuman men ise forernoft wheat iofobato buc is corey ousesetiv fallen tinoco rye for a the ecseri pasuthrgr cuconom tra tesla will tat pere thi
Имея достаточно большой объем текста на английском языке, мы можем определить вероятности не только отдельных букв или их пар, но и более длинных серий (n-буквенные). И если мы будем генерировать случайные «слова», постепенно увеличивая это число n, то увидим, что получающиеся «слова» становятся более реалистичными:
0 – on gxeeetowmt tsifhy ah aufnsoc ior oia itlt bnc tu ih uls
1 – ri io os ot timumumoi gymyestit ate bshe abol viowr wotybeat mecho
2 – wore hi usinallistin hia ale warou pothe of premetra bect upo pr
3 – qual musin was witherins wil por vie surgedygua was suchinguary outheydays theresist
4 – stud made yello adenced through theirs from cent intous wherefo proteined screa
5 – special average vocab consumer market prepara injury trade consa usually speci utility
Но давайте предположим, что мы имеем дело с целыми словами, а не с отдельными буквами (как и делает ChatGPT). В английском языке насчитывается около 40 тысяч достаточно часто используемых слов. И, просмотрев большой корпус английского текста (скажем, несколько миллионов книг, содержащих в общей сложности несколько сотен миллиардов слов), мы можем определить, насколько часто встречается каждое слово. Используя эту информацию, можно начать генерировать «предложения», в которых каждое слово выбирается независимо и случайным образом на основе той вероятности, которой оно обладает в корпусе. Вот пример того, что мы получаем:
of program excessive been by was research rate not here of of other is men were against are show they the different the half the the in any were leaved
Безусловно, получается полная ерунда. Итак, как же добиться лучших результатов? Точно так же, как с буквами, мы можем учитывать вероятности не только для отдельных слов, но и для словосочетаний из двух и большего числа слов. Вот пять примеров того, что можно получить, если начать генерировать предложение, начинающееся со слова «кошка»:
cat through shipping variety is made the aid emergency can the
cat for the book flip was generally decided to design of
cat at safety to contain the vicinity coupled between electric public
cat throughout in a confirmation procedure and two were difficult music
cat on the theory an already from a representation before a
Здесь текст становится более читабельным. Теперь мы можем представить, что, если бы использовали достаточно длинные словосочетания, мы бы, по сути, получили чат – в том смысле, что это нечто генерировало бы последовательности слов длиной в эссе с «правильными общими вероятностями написания эссе». Но проблема заключается в том, что у нас нет такого количества написанных на английском языке текстов, чтобы можно было вывести эти вероятности.
В интернете, возможно, содержится несколько сотен миллиардов слов, в книгах, которые были оцифрованы, может содержаться еще сто миллиардов. Но при наличии 40 тысяч общеупотребительных слов число возможных словосочетаний из двух слов составляет 1,6 миллиарда, а число возможных комбинаций из трех слов равно 60 триллионам. Таким образом, мы никак не можем оценить вероятности для всех этих случаев на основе имеющегося текста. И к тому времени, когда мы добираемся до «фрагментов эссе» длиной в 20 слов, количество возможных комбинаций превышает количество частиц во Вселенной, так что все эти вероятности никогда не смогут быть подсчитаны.
Что мы можем сделать? Главная идея заключается в том, чтобы создать модель, которая позволит нам оценить вероятность последовательностей, даже несмотря на то, что мы никогда не видели эти последовательности непосредственно в тексте. Именно такая модель – большая языковая модель (БЯМ, англ. large language model, LLM) – лежит в основе ChatGPT, и она была специально создана для того, чтобы выполнять оценку этих вероятностей.
Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?