Вероятность и температура. А мы точно собираемся говорить о человеческой речи?
Написание текстов часто окутано флером некой таинственности. Мы считаем, что для этого процесса нужно вдохновение, талант, особые условия, но с некоторых пор именно с помощью физических и математических терминов проще всего объяснить суть этого процесса.
Вероятность – основное понятие, описывающее работу ChatGPT. Вы даете ему первое слово, а он всего лишь подбирает к нему второе и последующие слова, чтобы получить осмысленную фразу. Скорость работы современных вычислительных машин такова, что для них не проблема перебрать миллионы фрагментов разных текстов и определить, какие слова чаще всего встречаются вместе с заданным.
Определяя каждое последующее слово, ChatGPT подбирает целый список возможных понятий и ранжирует их от самого вероятного к наименее вероятному. Например, со словом «поэт», заданным на русском языке, нейросеть, скорее всего, ассоциирует Пушкина, а не Бернса.
Однако все не так просто. Если выбирать самое вероятное из возможных слов, то текст будет банальным, пресным и никому не интересным. Чтобы достоверно имитировать человеческий язык, ChatGPT выбирает другие, менее вероятные варианты. Причем как именно он их выбирает – не знают даже его создатели. Именно поэтому использование одного и того же промпта (задания) иногда приводит к генерации довольно непохожих друг на друга текстов.
Если проранжировать все подходящие слова по степени их вероятности от 0 до 1, то оптимальным выбором станет слово, имеющее вероятность 0,8. Этот параметр называют температурным, но только потому, что он подчиняется тем же математическим зависимостям, что и температура. Никакого физического смысла в этом нет.
Стивен Вольфрам предлагает для начала рассмотреть более простую задачу – не создание текста, а создание одного-единственного слова.
Если мы выберем в качестве первой буквы А, то с какой вероятностью следующей будет Б? Или Ы? Вероятность того, что следующей будет буква Ы, – нулевая, потому что в русском языке нет слова, начинающегося с Ы. Идем дальше.
▶ Для начала создадим бесконечную последовательность букв, которые могут следовать друг за другом с ненулевой вероятностью.
▶ Добавим пробелы, ведь длина слов в языке тоже определяется статистикой. Скорее всего, на этом этапе мы не увидим среди результатов ни одного реального слова.
▶ Учтем, что некоторые буквы не могут следовать друг за другом, а некоторые, наоборот, тесно связаны. Например, после гласных не может быть Ъ, а после глухого согласного не может быть звонкого. Поэтому попробуем генерировать слово, добавляя не по одной букве, а сразу по две.
▶ Можно двигаться дальше и, работая с огромным объемом текста, определять наиболее вероятные многобуквенные сочетания. На этом этапе мы уже начнем получать реальные слова.
▶ А дальше, анализируя отдельные слова, мы можем оценить, насколько часто они встречаются в речи и как взаимодействуют с другими словами. Так мы сможем генерировать словосочетания, затем – предложения, а затем и целые тексты.
Реализации этого алгоритма очень мешает… недостаток текстов! При объеме словаря в несколько десятков тысяч единиц число возможных комбинаций из трех слов составляет 60 трлн, а если мы попробуем предсказать комбинацию из 20 слов, то число вариантов превысит количество элементарных частиц в космосе. Человечество еще не накопило такого количества текстов и никогда не накопит, потому что большинство из них не имеет смысла.
Выход только один – создать некую модель, которая сможет оценивать вероятности чисто гипотетически, не сталкиваясь с ними в реальных текстах. Для ChatGPT основой служит большая языковая модель (БЯМ).