Откуда нейросеть знает слова

Почему модель режет текст на кусочки и подбирает следующий кусочек по вероятности — и что из этого следует для работы с ней.

С нуля 7 мин

Это продолжение серии о том, откуда взялись нейросети — начните с первой статьи, «Что такое нейросеть, если без формул».

Языковая модель не хранит словарь, как в книге, и не «знает» слова в том смысле, в каком их знаете вы. Она работает с кусочками текста и с вероятностями. Разберём, что это значит на практике.

Текст режется на кусочки

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

Точное число токенов на слово зависит от конкретной модели и от того, как её обучали — какого-то универсального правила здесь нет. Важен сам принцип: модель не видит слова целиком, она видит цепочку пронумерованных кусочков.

Текст режется на кусочки — токены«согласуйте скидку»согласуйте· скидкуПример деления — точное зависит от модели
Рисунок 1. Фраза «согласуйте скидку» разбивается на несколько токенов — часть из них целые слова, часть — фрагменты.

Расход этих кусочков в переписке с чат-ботом мы уже разбирали в другой статье — там же объяснено, почему длинный запрос или долгий диалог «стоит» больше токенов. Смотрите раздел «Что такое токены» в статье «Первый час с нейросетями: экран за экраном», здесь эту тему повторять не будем.

Модель выбирает следующий кусочек — и так снова и снова

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

Например, после кусочка «Уважаемый» самый вероятный следующий токен — что-то вроде «коллега» или начало обращения по имени, а «пятница» — крайне маловероятный продолжатель. Модель берёт один из вероятных вариантов, добавляет его к тексту — и повторяет весь расчёт заново, уже с учётом нового кусочка. Слово за словом, а точнее токен за токеном, так и собирается весь ответ.

Модель выбирает следующее слово Уважаемый коллегаИванклиентгосподин коллега И снова: что дальше?
Рисунок 2. После «Уважаемый» модель взвешивает варианты продолжения по вероятности и выбирает один — потом повторяет расчёт для следующего токена.

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

Почему модели трудно посчитать буквы или посчитать точно

Из устройства через токены прямо вытекает слабое место, которое иначе выглядит странно. Если попросить модель посчитать, сколько букв «р» в каком-то длинном слове, она может ошибиться — причём уверенно. Причина в том, что модель видит не буквы, а токены, и конкретное слово могло попасть в её «поле зрения» уже разбитым на два-три кусочка, где отдельные буквы внутри не пересчитываются напрямую.

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

Модель видит кусочки, а не буквыклубника клуб ника 2 кусочка — не 8 букв Сколько букв «к»? Букв модель не видит —только кусочки
Рисунок 3. Слово попадает в модель уже разбитым на токены — пересчитать буквы внутри кусочка напрямую нечем.

Почему один и тот же вопрос иногда даёт разные ответы

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

Это не поломка и не признак того, что модель «передумала». Это следствие того, как устроен сам выбор следующего кусочка текста.

Что из этого следует для работы в офисе

Отсюда — несколько практических выводов, которые складываются прямо из механизма, без всякой мистики.

Не просите модель точно посчитать символы, знаки или совпадения по буквам — для этого есть функция подсчёта в Word или формула в Excel, они считают по правилам, а не предсказывают. Не доверяйте вычислениям с большими числами без перепроверки калькулятором — для коротких и обычных сумм модель почти всегда права, но для ответственного расчёта нужна отдельная проверка. Если получили два разных ответа на один вопрос в разных чатах — это не повод считать один из них однозначно верным, оба стоит сверить с источником. И если модель предлагает конкретную цифру или факт, которого вы не видите в собственных документах — это тоже эффект предсказания правдоподобного продолжения, а не гарантия точности.

Чего это не объясняет

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

Все статьи · Курсы и лабораторные работы

Ещё по теме