IMG-LOGO
image

05 авг. 2024

Просмотров: 111

Что скрывает ChatGPT: как эмбеддинг и токены создают текст

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

Эмбеддинг слов

Давайте сыграем в языковую угадайку. Вот вам фраза: «the ___ cat». Какое слово, по-вашему, должно стоять в пропуске? «Black», «fluffy», «angry»? Наш мозг, насмотревшись на тонны текстов, молниеносно предлагает варианты. Примерно то же самое делает и нейросеть, только на языке математики. Другой пример: «___ black ___». Контекст сразу сужается, правда?

Как же превратить эту интуитивную игру в цифры? Один из способов — присвоить каждому частому слову английского языка (их около 50 000) свой уникальный номер. Скажем, артиклю «the» достанется 914, а слову «cat» — 3542.

Тогда для задачи «the ___ cat» входными данными будут просто два числа: {914, 3542}. А на выходе нейросеть выдаст длинный-длинный список из 50 тысяч вероятностей — шансов для каждого слова из словаря заполнить этот пробел. Этот набор чисел, этот числовой «отпечаток» слова, и называется эмбеддингом. Чтобы его поймать, нужно заглянуть в «мозг» сети прямо перед тем, как она сделает окончательный выбор. В сыром виде эти векторы выглядят как бессмысленный набор цифр. Но в этом и вся магия!

Что скрывает ChatGPT: как эмбеддинг и токены создают текст

Если измерить «расстояние» между такими числовыми отпечатками, можно обнаружить удивительные вещи: слова со схожими значениями оказываются математически близко. Главный итог? Мы можем превратить любое слово в набор чисел, с которым нейросеть умеет работать. По сути, мы переводим поэзию на язык алгебры.

Токены

Более того, так можно получить эмбеддинг не только для одного слова, но и для целых фраз или абзацев. Именно так и работает ChatGPT: он берёт ваш текст, переводит его в облако чисел (вектор), а затем вычисляет, какое число-слово должно идти следующим, сверяясь с тем самым 50-тысячным «словарём».

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

Что скрывает ChatGPT: как эмбеддинг и токены создают текст

Проще, чем казалось

Что поражает во всём этом, так кажущаяся простота основного механизма. Нейросеть, лежащая в основе ChatGPT, по сути, всего лишь один раз пропускает входные данные через себя, чтобы породить каждое новое слово или токен. И этого достаточно, чтобы создавать тексты, которые мы с вами читаем в интернете.

Но давайте будем честны: это не «мысль» в человеческом понимании. Это статистически правдоподобная симуляция. ChatGPT не «понимает» смысл, он находит самые вероятные последовательности слов, опираясь на гигантский архив человеческих текстов. Он выдаёт не истину, а «статистику общепринятого мнения», застывшую в данных его обучения. Иногда это приводит к гениальным пассажам, а иногда — к полной бессмыслице.

И вот здесь кроется самый философский момент. Если результат так похож на человеческий, может быть, и наше мышление с языком устроены проще, чем мы думаем? Возможно, за нашей богатой, образной речью скрываются определённые структурные правила, закономерности, которые машина смогла вычислить. И это заставляет задуматься: а что, собственно, такое «понимание»? Если итог неотличим, имеет ли значение, как он был получен?