Имея достаточно большой объем текста на английском языке, мы можем определить вероятности не только отдельных букв или их пар, но и более длинных серий (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, и она была специально создана для того, чтобы выполнять оценку этих вероятностей.
Примечательно, что, когда ChatGPT пытается написать эссе, по сути он просто снова и снова спрашивает: «Учитывая текст на данный момент, каким должно быть следующее слово?» — и каждый раз добавляет это новое слово. (Точнее, он добавляет так называемый токен, который может быть и частью слова; именно поэтому ChatGPT иногда может «составлять новые слова». Но об этом позже.)
Итак, на каждом этапе ChatGPT создает список слов с указанием вероятности их присутствия на данном месте. Но какое из них нужно выбрать, например, для эссе? Можно предположить, что это должно быть слово с самым высоким рейтингом (то есть то, для которого определена самая высокая вероятность). Однако именно здесь ChatGPT начинает проявлять свои вуду-способности. Потому что по какой-то причине (возможно, однажды мы ее даже узнаем), если всегда будем выбирать слово с самым высоким рейтингом, мы получим очень гладенькое эссе без малейшего признака креативности (и которое будет слово в слово повторять множество других текстов). Но если мы наугад выбираем слова с более низким рейтингом, то эссе получается «более интересное».
Здесь действует фактор случайности, а это значит, что, даже используя каждый раз один и тот же промпт1, мы, скорее всего, получим разные эссе. И, как мы уже упоминали, у ChatGPT есть своя вуду-идея, то есть у него существует так называемый температурный параметр, который определяет, как будут использоваться слова с более низким рейтингом, и для создания эссе, оказывается, лучше всего подходит температура, равная 0,8. (Нужно подчеркнуть, что это никакая не теория — это просто вывод из того, что работает на практике. И например, понятие «температура» применяется потому, что здесь используются экспоненциальные распределения, знакомые нам из статистической физики, но нет никакой физической связи — по крайней мере насколько нам известно.)
Первое, что нужно объяснить, — ChatGPT всегда пытается создать «разумное продолжение» любого текста, который у него есть на данный момент. Под словами «разумное продолжение» мы подразумеваем «то, что можно ожидать, исходя из того, что люди уже написали на миллиардах веб-страниц».
Итак, давайте предположим, что у нас есть предложение «Самое лучшее в ИИ — это его способность…». Представьте, что вы прочитываете миллиарды страниц текста, написанных людьми (скажем, веб-страницы в интернете и оцифрованные книги), и находите все аналогичные предложения, а затем смотрите, какое слово чаще всего встречается в них на месте многоточия. ChatGPT делает что-то подобное, за исключением того, что (как я объясню позже) он не просматривает тексты буквально — он ищет фрагменты, которые «совпадают по смыслу».