Конечно, сеть может узнать ответ для конкретных несводимых вычислений. Но как только появляются вероятности, этот подход не срабатывает. Итак, пришло время протянуть нейронным сетям руку помощи и использовать настоящие вычислительные инструменты. (Для этого однозначно подходят Wolfram|Alpha и Wolfram Language, потому что они созданы для того, чтобы «говорить о вещах в мире», точно так же как и нейронные сети языковой модели.)
Что позволяет ChatGPT работать?
Человеческий язык и процесс мышления – это своего рода последний уровень сложности. Удивительно, что все это функционирует благодаря мозгу, состоящему всего лишь из 100 миллиардов (или около того) нейронов (и, возможно, из 100 триллионов связей). Можно предположить, что в мозге находятся не только нейроны, а целый мир, который физика еще не познала. Но теперь благодаря ChatGPT мы знаем, что простая искусственная нейронная сеть, имеющая примерно столько же связей, сколько нейронов в мозге человека, способна на удивление хорошо генерировать человеческий язык.
Да, это по-прежнему большая и сложная система: в нейронной сети столько же весов, сколько в мире на сегодняшний день написано слов. Однако нам еще сложно поверить, что богатство языка и все сложные вещи, о которых мы говорим на этом языке, могут быть заключены в такую ограниченную систему. Частично причиной этого становится повсеместное явление, которое впервые стало очевидным на примере «правила тридцати»: вычислительные процессы могут существенно увеличивать кажущуюся сложность систем, даже если их основные правила просты. Но на самом деле, как мы уже говорили ранее, нейронные сети, используемые в ChatGPT, сконструированы таким образом, чтобы минимизировать этот эффект (и связанную с ним вычислительную несводимость), что делает обучение более доступным.
Как же тогда системы вроде ChatGPT добиваются прогресса в языковой области? Я думаю, ответ заключается в том, что на фундаментальном уровне язык проще, чем кажется. А это означает, что ChatGPT – даже с его предельно простой структурой нейронной сети – успешно способен уловить суть и логику человеческого языка. Более того, в процессе обучения ChatGPT каким-то образом «неявно обнаружил» те закономерности в языке (и мышлении), которые делают это возможным.
Я думаю, что успех ChatGPT позволяет ожидать открытия новых масштабных законов языка – и, по сути, законов мышления. В ChatGPT, который построен как обычная нейронная сеть, эти законы непременно работают, хотя мы их и не знаем. Но если бы мы могли каким-то образом выявить данные законы, то смогли бы сделать то, что ChatGPT уже делает, гораздо более простыми, эффективными и прозрачными способами.
Хорошо, но что это за законы? В конечном счете они должны объяснить нам, как устроен язык, на котором мы говорим. Позже мы обсудим, какие подсказки может дать нам ChatGPT, если мы заглянем внутрь него, и как создание вычислительного языка способно указать нам дальнейший путь. А пока давайте обсудим два давно известных языковых закона и то, как они связаны с работой ChatGPT.
Первый языковой закон – это синтаксис. Язык – это не просто случайный набор слов. В нем есть четкие грамматические правила, определяющие, как могут взаимодействовать слова разных типов: например, в английском языке существительным могут предшествовать прилагательные, а глаголы идут после существительных, и так далее. Такая грамматическая структура может быть отражена (по крайней мере, приблизительно) набором правил, которые определяют дерево грамматического анализа предложений:

У ChatGPT нет никаких специальных знаний об этих правилах. Однако каким-то образом в процессе обучения он обнаруживает их, а затем, кажется, успешно им следует. Так как же это работает? Общая картина до сих пор неясна. Но некоторое представление позволяет получить простой пример.
Рассмотрим «язык», сформированный из единиц «(» и «)»; при этом известно, что круглые скобки всегда должны быть парными. Обратимся к следующему синтаксическому анализу:

Можем ли мы научить нейронную сеть генерировать грамматически правильный парентезис [5]? В нейронных сетях существуют различные способы обработки подобных единиц речи, но давайте рассмотрим, как это делают сети-трансформеры вроде ChatGPT. Имея простую сеть-трансформер, мы можем дать ей грамматически правильные единицы речи в качестве обучающих примеров. Тонкость, которая проявляется и в языке, генерируемом ChatGPT, заключается в том, что в дополнение к нашим токенам контента – здесь это «(» и «)» – мы должны добавить конечный токен, который генерируется, чтобы сеть поняла, где заканчивается мысль.
Если мы создадим сеть-трансформер только с одним блоком внимания с восемью головами внимания и с векторами признаков длиной 128 значений (ChatGPT также использует векторы признаков длиной 128 значений, но имеет 96 блоков внимания, каждый по 96 голов), то мы не сможем заставить ее изучить парентезис. Однако с двумя блоками внимания процесс обучения, похоже, идет успешно – по крайней мере после того, как сеть изучила около десяти миллионов примеров (как это часто бывает с сетями-трансформерами, большое количество примеров только ухудшает производительность).
Таким образом, с помощью этой сети мы можем создать аналог того, что делает ChatGPT, и узнать вероятности следующих токенов в парентезисе:

В первом случае сеть почти уверена, что последовательность не может закончиться на этом токене, и это верный ответ, потому что в противном случае скобки остались бы непарными. Во втором случае сеть правильно распознаёт, что последовательность может здесь закончиться, однако она также указывает, что можно начать последовательность заново, ставя «(» предположительно в паре с «)». Но, даже изучив 400 тысяч весов, сеть считает, что существует 15 %-ная вероятность того, что следующим токеном станет «)», но это неверно, ведь обязательно приведет к несбалансированному парентезису.
Вот что мы получим, если попросим сеть указать наибольшую вероятность для более длинных последовательностей текста:

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