Как работает ChatGPT и почему его можно считать научным открытием
Юлия Константинова прочитала книгу «Как устроен ChatGPT» и выделила пять интересных фактов, которые будут полезны всем, кто создает тексты для проектовКурирует направление «Бизнес» в издательстве МИФ
Что нужно для создания осмысленного человеческого языка? Раньше бы мы предположили, что потребуется лишь человеческий мозг. Однако теперь знаем, что нечто похожее может сделать нейронная сеть ChatGPT. Вероятно, что успех ChatGPT раскрывает важный научный факт: осмысленный человеческий язык гораздо проще и структурированнее, чем мы привыкли думать, и работает в соответствии с довольно простыми правилами. Публикуем фрагменты о том, как устроен ChatGPT, из одноименной книги издательства МИФ.
Следующее слово
Первое и главное, что нужно уяснить, — ChatGPT всегда пытается создать «разумное продолжение» любого текста, который у него есть на данный момент. Под словами «разумное продолжение» мы подразумеваем «то, что можно ожидать, исходя из того, что люди уже написали на миллиардах веб-страниц».
Предположим, что у нас есть предложение «Самое лучшее в ИИ — это его способность…». Представьте, что вы прочитываете миллиарды страниц текста, написанных людьми и находите все аналогичные предложения, а затем смотрите, какое слово чаще всего встречается в них на месте многоточия. ChatGPT делает что-то подобное, за исключением того, что он не просматривает тексты буквально — он ищет фрагменты, которые «совпадают по смыслу».
Результатом его работы является список слов, которые логически могут следовать за основным словом, ранжированных по степени вероятности их присутствия в этом предложении:
Когда ChatGPT пытается написать эссе, по сути он просто снова и снова спрашивает: «Учитывая текст на данный момент, каким должно быть следующее слово?» — и каждый раз добавляет это новое слово. (Точнее, он добавляет так называемый токен, который может быть и частью слова; именно поэтому ChatGPT иногда может «составлять новые слова». Но об этом позже.)
Температура слова
Итак, на каждом этапе ChatGPT создает список слов с указанием вероятности их присутствия на данном месте. Но какое из них нужно выбрать, например, для эссе? Можно предположить, что это должно быть слово с самым высоким рейтингом (то есть то, для которого определена самая высокая вероятность). Однако именно здесь ChatGPT начинает проявлять свои вуду-способности. Потому что по какой-то причине (возможно, однажды мы ее даже узнаем), если всегда будем выбирать слово с самым высоким рейтингом, мы получим очень гладенькое эссе без малейшего признака креативности (и которое будет слово в слово повторять множество других текстов).
Но если мы наугад выбираем слова с более низким рейтингом, то эссе получается «более интересное». Здесь действует фактор случайности, а это значит, что, даже используя каждый раз один и тот же промпт, мы, скорее всего, получим разные эссе. И, как мы уже упоминали, у ChatGPT есть своя вуду-идея, то есть у него существует так называемый температурный параметр, который определяет, как будут использоваться слова с более низким рейтингом, и для создания эссе, оказывается, лучше всего подходит температура, равная 0,8.
В интернете содержится несколько сотен миллиардов слов, в книгах, которые были оцифрованы, может содержаться еще сто миллиардов. Но при наличии 40 тысяч общеупотребительных слов (в английском языке) число возможных словосочетаний из двух слов составляет 1,6 миллиарда, а число возможных комбинаций из трех слов равно 60 триллионам. Таким образом, мы никак не можем оценить вероятности для всех этих случаев на основе имеющегося текста. И к тому времени, когда мы добираемся до «фрагментов эссе» длиной в 20 слов, количество возможных комбинаций превышает количество частиц во Вселенной, так что все эти вероятности никогда не смогут быть подсчитаны.
Что мы можем сделать? Главная идея заключается в том, чтобы создать модель, которая позволит нам оценить вероятность последовательностей, даже несмотря на то, что мы никогда не видели эти последовательности непосредственно в тексте. Именно такая модель — большая языковая модель (БЯМ, англ. large language model, LLM) — лежит в основе ChatGPT, и она была специально создана для того, чтобы выполнять оценку этих вероятностей.
Эмбеддинг слов
Представьте, что у нас есть словосочетание «the ___ cat [англ. кошка]». Если опираться на большой объем текста (скажем, в текстовом содержимом интернета), то какие слова с высокой вероятностью могли бы заполнить пробел? Или, например, какая вероятность может быть у сопутствующих слов в словосочетании «___ black [англ. черная] ___»?
Как описать эту задачу нейронной сети? Мы должны сформулировать ее в цифрах. Один из способов — присвоить уникальный номер каждому из примерно 50 тысяч наиболее распространенных слов в английском языке. Так, например, артикль the может получить номер 914, а слово cat (с пробелом перед ним) — 3542. (Это фактические числа, используемые GPT-2.)
Итак, для задачи «the ___ cat» наши входные данные будут {914, 3542}. Каким окажется результат? Ну, это должен быть список из 50 тысяч или около того чисел, которые дают вероятности для каждого из возможных «заполняющих» слов. Опять-таки, чтобы найти эмбеддинг, мы хотим «перехватить» состояние нейронной сети непосредственно перед тем, как она «примет решение», а затем получить список чисел, которые там встречаются и которые мы можем рассматривать как характеризующие каждое слово.
В необработанном виде эти векторы эмбеддинга довольно неинформативны. Например, вот что выдает GPT-2 в качестве необработанных векторов эмбеддинга для трех конкретных слов:
Если мы измерим расстояние между этими векторами, то сможем определить близость этих слов к другим словам. На данный момент для нас самое главное заключается в том, что мы можем превращать слова в наборы чисел, которые нейронная сеть способна понимать.
Токены
На самом деле мы можем характеризовать наборами чисел не только слова, но и последовательности слов или даже целые блоки текста. Именно так и работает ChatGPT. Он берет готовый текст и генерирует вектор эмбеддинга. Затем высчитывает вероятности последующих слов. Далее генерирует список чисел, которые, по сути, дают вероятности для каждого из 50 тысяч или около того возможных слов.
Строго говоря, ChatGPT работает не со словами, а с токенами — удобными лингвистическими единицами, которые представляют собой слова или фрагменты слов вроде pre, ing или ised (в английском языке эти части слов образуют разные формы глаголов). Использование токенов облегчает обработку редких и сложных слов, а также слов из других языков, а иногда позволяет — хорошо это или плохо? — изобретать новые слова.
175 миллиардов связей
Итак, в любой момент времени у ChatGPT есть определенный объем текста, и главная задача состоит в том, чтобы «придумать» следующий подходящий вариант токена.
ChatGPT работает в три этапа. Сначала берет последовательность токенов, соответствующую тексту на данный момент, и находит эмбеддинг (то есть массив чисел), который представляет эти токены. Затем продолжает работу над этим эмбеддингом при помощи стандартного подхода нейронной сети, когда значения «просачиваются» через последовательные слои сети для создания нового эмбеддинга (то есть нового массива чисел).
После ChatGPT берет последнюю часть этого массива и генерирует из нее массив, состоящий примерно из 50 тысяч значений, которые превращаются в вероятности для возможных следующих токенов. (И иногда случается так, что он использует примерно столько же токенов, сколько слов английского языка находится в широком употреблении, хотя только около трех тысяч из этих токенов являются целыми словами, а остальные представляют собой фрагменты слов.)
Вот в общих чертах то, что происходит внутри ChatGPT. Все это может показаться сложным (не в последнюю очередь из-за множества несколько произвольных «инженерных решений»), но на самом деле задействованные базовые элементы удивительно просты. Потому что, в конце концов, мы имеем дело лишь с нейронной сетью, состоящей из искусственных нейронов, каждый из которых выполняет простую операцию по получению набора числовых входных данных, а затем комбинирует их с определенными весами.
В ChatGPT существуют миллионы нейронов, что дает в общей сложности 175 миллиардов связей. Для каждого произведенного токена необходимо осуществить 175 миллиардов вычислений (и в конце еще немного), так что неудивительно, что генерация длинного фрагмента текста с помощью ChatGPT может занять некоторое время.
Человеческая работа
Но наиболее замечательно то, что все эти операции — какими бы простыми они ни были по отдельности — вместе каким-то образом могут выполнять «человеческую» работу по генерированию текста. Следует еще раз подчеркнуть, что (по крайней мере, насколько нам известно) нет никакого окончательного теоретического обоснования, почему все это работает.
Мы можем рассматривать это как потенциальное научное открытие: каким-то образом в нейронной сети, подобной ChatGPT, возможно уловить суть того, что человеческому мозгу удается делать при работе с языком. И это наводит на важную с научной точки зрения мысль: человеческий язык (и стоящие за ним модели мышления) намного проще, чем мы думали, и подчиняется определенным структурным законам. ChatGPT смог это понять.
Интересное:
Все новости:
Публикация компании
Профиль
Социальные сети