Как думает ChatGPT: эмбеддинг, токены и другая невидимая «начинка» нейросети
Эмбеддинг слов
Представим, что у нас есть словосочетание «the ___ cat [англ. кошка]». Опираясь на обширный массив текстовых данных в интернете, мы можем определить, какие слова с высокой вероятностью могут заполнить этот пробел. Аналогично, в словосочетании «___ black [англ. черная] ___» мы можем оценить вероятность появления различных сопутствующих слов.
Как можно описать эту задачу с точки зрения нейронной сети? Один из способов — присвоить уникальный идентификационный номер каждому из примерно 50 тысяч наиболее распространенных слов английского языка. Например, артикль the может получить номер 914, а слово cat (с пробелом перед ним) — 3542.
Таким образом, для задачи «the ___ cat» наши входные данные будут {914, 3542}. Результатом станет список из примерно 50 тысяч чисел, представляющих вероятности для каждого возможного заполняющего слова. Этот набор чисел можно рассматривать как характеризующий каждое слово — своего рода эмбеддинг слова. Чтобы найти эмбеддинг, мы должны «перехватить» состояние нейронной сети непосредственно перед тем, как она «примет решение». В необработанном виде эти векторы эмбеддинга довольно неинформативны.
Если измерить расстояние между этими векторами, то можно определить близость этих слов к другим словам. Самое главное заключается в том, что мы можем обращать слова в наборы чисел, которые нейронная сеть способна понимать.
Токены
Более того, подобным образом можно получить эмбеддинги не только для отдельных слов, но и для последовательностей слов или целых блоков текста. Именно так и работает ChatGPT — он берет готовый текст, генерирует его векторное представление, а затем вычисляет вероятности для каждого последующего слова, формируя список чисел, соответствующих ≈50-тысячному словарю.
Стоит отметить, что ChatGPT работает не со словами, а с токенами — удобными лингвистическими единицами, представляющими слова или их части (вроде pre, ing или ised, образующих в английском языке разные формы глаголов). Это позволяет эффективнее обрабатывать редкие, сложные и многоязычные слова, а иногда даже создавать новые.
Проще, чем казалось
Работа нейронной сети, лежащей в основе ChatGPT, отличается простотой и заключается в однократной передаче входных данных через всю сеть для каждого нового слова или части слова. Благодаря этому процессу ChatGPT способен создавать тексты, похожие на те, что уже существуют в интернете, книгах и других источниках. Однако эти тексты не являются подлинно человеческими, а представляют собой сгенерированный контент, следующий заданному промпту и использующий информацию, почерпнутую из обучающих данных.
Несмотря на впечатляющие результаты, у ChatGPT не всегда получается генерировать осмысленные тексты, поскольку он просто создает фразы, которые выглядят «правильно» с точки зрения статистических закономерностей, выявленных в ходе обучения. Таким образом, ChatGPT извлекает связные текстовые последовательности из «статистики общепринятого мнения», накопленной в процессе обучения, но не обладает подлинным пониманием смысла.
Тем не менее, тот факт, что результаты ChatGPT так похожи на человеческие, наводит на важные размышления. Возможно, человеческий язык и лежащие в его основе модели мышления проще, чем мы предполагали, и подчиняются определенным структурным закономерностям. И ChatGPT смог их уловить.