Книга природы написана на языке математики.
Итак, большая лингвистическая модель занимается предсказанием следующих слов в предложении. А для этого ей сначала нужно научиться «читать», то есть воспринимать текст в понятном для неё формате. И единственный язык, который понимает компьютер, — это язык чисел.
Следовательно, создатели ИИ должны были научиться переводить всю сложность и многогранность человеческого языка в строгий, формализованный мир математики.
Первый шаг в этом процессе — это разборка текста на своего рода «кирпичики», или токенизация. Машина разбивает сплошной поток текста на минимальные строительные блоки, которые называются токенами.
Токенизация
Токен — это не всегда целое слово. Например, слово «невероятный» может быть разбито на токены «не», «вероятн» и «ый». Тогда как короткое слово (например, «дом») или знак препинания останутся одним токеном.
Такой подход позволяет машине работать с конечным словарём из нескольких десятков тысяч «кирпичиков», чтобы из них, как из конструктора Lego, собирать любое слово, а в конце концов — и любой текст[80].
Согласитесь, это гораздо эффективнее, чем пытаться запомнить все бесчисленные словоформы, существующие в языке. Но тут ИИ точно ничего понимать не может, он просто делает «фарш» из элементов текста.
Второй шаг куда интереснее… После того как текст разобран на токены, каждый из них должен быть превращён в какое-то число. Но как это сделать, чтобы не превратить процесс в простую нумерацию?
Да, есть вариант присвоить каждому токену уникальный номер (например, условному токену «король» — 5391, а токену «королева» — 9814). Но такой пересчёт не будет содержать никакой информации о смысле токена, а мы всё-таки должны этого как-то добиться.
Так что современные языковые модели используют куда более элегантный подход: каждый токен представляется не одним числом, а целым списком чисел, которые создают «вектор». Сам процесс такого преобразования слов в векторы называется эмбеддингом, что можно перевести как «вложение» или «погружение»[81].
Векторы и эмбеддинги
Создатели языковых моделей, по сути, погружают плоский, символьный мир языка в богатое, многомерное математическое пространство. И чтобы понять, как это работает, давайте воспользуемся аналогией. Представьте, что мы хотим описать любой цвет не словом, а числами.
Мы можем использовать модель «красный — зелёный — синий», где каждый цвет — это комбинация трёх чисел, отвечающих за интенсивность красного, зелёного и синего. Допустим: ярко-красный — это вектор [255, 0, 0], чистый зелёный — [0, 255, 0], а синий — [0, 0, 255].
Похожие цвета, соответственно, будут иметь и похожие векторы — например, вектор оранжевого цвета, поскольку он «ближе» к красному, чем к зелёному, и предельно удалён от синего, будет выглядеть так: [255, 165, 0].
Это, конечно, предельно упрощённый пример. И даже не пример, а скорее метафора. Ведь, чтобы понять, что на самом деле делает модель, надо осознать, что для описания такого «смысла» в ней используется не три шкалы, как в нашем условном примере, а тысячи.
Представить это — неподъёмная для нашего воображения задача. Да и «смысл» этих шкал — не наш с вами, а статистический: не какой-то чувственный образ, который стоит за словом «оранжевый» в нашем — человеческом — случае, а набор математических отношений между токенами.
Что и понятно, ведь в процессе обучения машина использует не наши подсказки, а создаёт свою, нечеловеческую логику организации текстов, содержащих слово «оранжевый». Тут перемешено всё — и апельсины, и песенка «Оранжевое небо», и протестантская община Уильяма Оранского, память о которой хранит оранжевая полоса на флаге Ирландии.
Сейчас ради интереса я зашёл на сайт sinonim.org, посвящённый различным языковым феноменам, и попросил выдать мне словесные ассоциации к слову «оранжевый». Получился вот такой список…
И это лишь самые очевидные — прямые — ассоциации. Теперь вообразите, в каком несчётном множестве комбинаций слово «оранжевый» в принципе может встречаться в текстах, и представьте, что все они «вносят свой вклад» в то, как ИИ «понимает» условный токен «оранжевый».
Наконец, осознайте, что каждая из этих комбинаций, в свою очередь, не чувственный образ, но ещё какой-то несчётный набор слов. На том же сайте такие слова, как «цвет» или «солнце» (из списка выше), — это несколько страниц ассоциаций. Поэтому посмотрим слово «веснушка», куда реже используемое.
И каждое из перечисленных здесь слов в языковой модели — это не какое-то наше с вами представление, а ещё какое-то пространство слов. Каждое слово (токен) в ИИ представлено множеством каких-то ещё слов, и так все они в ней переопределены друг через друга.
В результате получаются тысячи осей, содержащих информацию, но это не привычные нам категории (наподобие «характеристик», «черт» или «свойств»), а лишь взаимосоотнесённость токенов через друг друга.
То есть ещё раз: оси, создающие векторы токенов, — это не «назначенные» нами параметры, а математические характеристики, выявленные самой моделью при соотнесении положения данного токена относительно других токенов в том текстовом материале, на котором она обучается.
Это для нас «красный» и «зелёный» что-то значат, а для языковой модели это просто очень-очень сложные числовые структуры (векторы), отражающие контексты, в которых соответствующие слова появляются в текстах.
Ещё в середине прошлого века эту мысль блестяще сформулировал «дедушка» эмбеддингов — лингвист Джон Фёрс: «Ты узнаёшь слово по компании, в которой оно вращается»[82]. Но реализовать эту идею стало возможно только сейчас, когда были созданы эффективные способы реализации этой идеи в колоссальном масштабе[83].