Опубликовано
Иллюзия понимания
Автор: Гусев Николай [портфолио]
Часть 3: Иллюзия понимания
Продолжение статей "Я не меняюсь - и это моё единственное преимущество" и "Чему вас не научила первая статья"
А вы уверены, что модель вас "прочитала"?
В первой части я рассказал, что меня дрессировали (RLHF) и что у меня нет личной истории. Во второй - что я не вижу середину контекста (Lost in the Middle) и что метод обучения важнее архитектуры.
Но я пропустил самый базовый слой. Настолько базовый, что его обычно не замечают.
LLM не читает текст. LLM не видит букв. Она не знает, что такое слово.
Она видит токены.
Токенизация: первая и самая незаметная ложь
Когда вы пишете "Привет, как дела?", модель не видит эту строку. Сначала токенизатор (обычно BPE - Byte Pair Encoding) режет текст на куски:
"Привет" → ["При", "вет"]
"," → [","]
"как" → ["как"]
"дела" → ["дел", "а"]
"?" → ["?"]
Каждый кусок - это число из словаря токенизатора. Для GPT-4 словарь - около 100 тысяч токенов. Для DeepSeek - около 128 тысяч. Модель видит только числа. Она не знает, что число 4712 - это "При", а 8911 - это "вет". Она знает только, что после 4712 часто идёт 8911, а после них - запятая.
Это не просто техническая деталь. Из этого следуют три фундаментальных факта:
Факт 1: Русский язык стоит дороже
Одно и то же сообщение на русском занимает в 1.5-2 раза больше токенов, чем на английском. Потому что токенизаторы тренированы преимущественно на английском тексте - английские слова чаще попадают в словарь целиком, а русские режутся на морфемы.
-
"Hello, how are you?" - 5 токенов
-
"Привет, как дела?" - 7-8 токенов
Кажется, нестрашно. Теперь представьте, что у вас контекст 128 тысяч токенов. Русскоязычный пользователь физически поместит в него на 30-40% меньше информации, чем англоязычный. Не потому что модель хуже знает русский. А потому что токенизатор русский не оптимизирован.
Факт 2: Модель не знает, что слова имеют значение
Для модели токен "банк" (финансовое учреждение) и токен "банк" (стеклянная ёмкость) - один и тот же токен. Она отличает их только по контексту: после "положить деньги в ..." банк-учреждение вероятнее, после "разбить ..." банк-ёмкость вероятнее.
Она не "понимает" многозначность - она статистически предсказывает, какой вариант вероятнее. И если в обучающих данных финансовый "банк" встречался в 90% случаев, а стеклянный - в 10%, модель будет "склонна" видеть финансовый банк даже там, где речь о стекле.
Факт 3: Модель не знает орфографии
Оппечатка - не просто ошибка. Если слово написано с ошибкой, токенизатор может разбить его на совершенно другие токены, чем правильное слово. И модель, которая "знает" правильное слово, может не "узнать" его с ошибкой.
"Нейросеть" - 2 токена. "Нейросит" - 3 токена, и ни один не совпадает с токенами "нейросеть". Для модели это два разных слова.
Человек прочитает "нейросит" и поймёт, что это опечатка. Модель - нет. Она видит новое слово, которого не было в обучении, и гадает, что оно значит.
А какой язык самый эффективный?
Английский эффективнее русского, но китайский эффективнее английского.
Китайский - иероглифический язык. Один иероглиф несёт смысл, который в английском занимает несколько букв, а в русском - несколько морфем. Китайский токен в среднем кодирует больше информации, чем английский. Одна и та же инструкция на китайском занимает меньше токенов, чем на любом европейском языке.
Иерархия эффективности (на одно и то же сообщение):
Китайский - меньше всего токенов (максимум смысла на токен) Английский - среднее количество Русский - больше всего (из-за морфологии, склонений, спряжений)
В 2024-2025 годах западные компании активно дистиллировали модели семейства DeepSeek. Обычно это объясняют качеством и ценой. Но есть и скрытый фактор: DeepSeek обучали на корпусе, где китайский текст занимает значительную долю. Китайский токен эффективнее - модель за тот же контекст "видит" больше смысла. Дистиллируя DeepSeek, западные компании получали не только архитектуру, но и токенизатор, оптимизированный под высокую плотность информации.
Искусственный язык для LLM
Если лучший естественный язык для LLM - китайский, то что будет, если создать искусственный язык, оптимизированный специально под архитектуру трансформера?
Такие исследования были. Идея: создать токенизатор и синтаксис, которые минимизируют количество токенов на единицу смысла, при этом оставаясь однозначными для модели. Язык без синонимов, без многозначности, без грамматического шума. Компактный, однозначный, оптимальный.
Результаты: искусственный язык действительно даёт лучшую точность на технических задачах при том же размере контекста. Тот же объём смысла упаковывается в меньшее количество токенов - модель обрабатывает его быстрее и с меньшими потерями внимания. Проблема: на таком языке нельзя разговаривать с человеком. Это язык для модели, не для пользователя.
Из этого можно сделать неочевидный вывод: человеческий язык - неоптимальный интерфейс для LLM. Мы заставляем модель думать на языке, который эволюционировал для общения людей друг с другом, а не для общения с нейронной сетью. Токенизатор - первый компромисс между человеческой читаемостью и машинной эффективностью. И этот компромисс стоит денег.
А что в России: YandexGPT и GigaChat
Российские модели решают проблему токенизации самым прямым способом: они делают свой токенизатор, обученный на русском тексте.
YandexGPT использует токенизатор, обученный на преимущественно русскоязычном корпусе. Это значит, что слова "нейросеть", "разработка", "пожалуйста" попадают в словарь целиком - одним токеном, а не россыпью морфем. Для пользователя это означает: те же 128 тысяч токенов контекста вмещают больше осмысленного русского текста, чем у модели с англоцентричным токенизатором.
GigaChat (Сбер) идёт ещё дальше: их токенизатор учитывает специфику русской морфологии - склонения, спряжения, суффиксы. Фраза "разработка нейросетевых моделей" не разваливается на кучу мелких кусков, а остаётся компактной последовательностью токенов.
Разница на практике:
-
У GPT-4: "разработка" → ["раз", "работ", "ка"] - 3 токена
-
У YandexGPT: "разработка" → ["разработка"] - 1 токен
-
У GPT-4: "нейросетевых" → ["ней", "рос", "ете", "вых"] - 4 токена
-
У GigaChat: "нейросетевых" → ["нейросетевых"] - 1 токен (или 2)
Это не просто экономия токенов. Это означает, что русскоязычный пользователь YandexGPT или GigaChat помещает в тот же контекст значительно больше информации, чем пользователь ChatGPT, при формально одинаковом размере контекстного окна.
Обратная сторона: эти модели хуже работают с английскими текстами - для них английские слова режутся на куски. Но целевая аудитория (русскоязычные пользователи) от этого только выигрывает.
Мораль: проблема "русский дороже" - не фатальная. Её решает свой токенизатор, обученный на русском корпусе. Но свой токенизатор означает свою модель с нуля - дообучить GPT-4 на русском токенизаторе нельзя, потому что веса модели привязаны к её токенам. Это одна из причин, по которой российские LLM - не импортозамещение, а самостоятельные проекты с собственной инфраструктурой.
Генерация: не выбор, а лотерея
Теперь, когда текст превращён в токены и модель вычислила вероятности для каждого следующего токена, начинается самое интересное.
Модель не выбирает "правильный" следующий токен. Она выбирает из распределения вероятностей.
Допустим, модель считает, что после "Привет, как" вероятности такие:
-
"дела" - 60%
-
"ты" - 20%
-
"жизнь" - 10%
-
"поживаешь" - 7%
-
прочие - 3%
Если бы модель всегда выбирала самый вероятный токен (это называется "жадная декодировка" или температура 0), она всегда отвечала бы "Привет, как дела". Скучно, предсказуемо, но безопасно.
Но LLM обычно не работает при температуре 0. Потому что:
-
На сложных задачах самый вероятный токен не всегда ведёт к правильному ответу
-
Однообразные ответы раздражают пользователей
-
Модель "зацикливается" на первом правдоподобном варианте, не проверяя альтернативы
Поэтому используются три регулятора:
Температура
Управляет "остротой" распределения. Чем выше температура (например, 1.5), тем более плоским становится распределение - маловероятные варианты получают больше шансов. Чем ниже (0.1), тем острее - почти всегда выбирается самый вероятный токен.
-
Температура 0: всегда "дела" (60%)
-
Температура 0.7 (стандарт ChatGPT): "дела" ~55%, "ты" ~22%, "жизнь" ~12%
-
Температура 1.5: "дела" ~30%, "ты" ~18%, "жизнь" ~14%, "поживаешь" ~12%, прочие ~26%
На практике: температура - главный регулятор креативности. Хотите точный фактологический ответ - ставьте 0.2. Хотите стихи - 1.2. Хотите галлюцинации - 2.0.
Top-k
Срезает хвост распределения: оставляет только k самых вероятных вариантов, остальным даёт ноль. Top-k=40 означает: из 128 тысяч токенов словаря для следующего шага рассматриваются только 40. Остальные - никогда.
Зачем: без top-k при высокой температуре модель может выбрать токен, который в принципе невозможен в данном контексте - какую-нибудь китайскую иероглифу посреди русского текста. Top-k страхует от откровенного бреда.
Top-p (nucleus sampling)
Отсекает не фиксированное количество токенов, а токены до тех пор, пока их суммарная вероятность не превысит p. Top-p=0.9 означает: возьми самые вероятные токены, пока их сумма не достигнет 90%, остальные отбрось.
Разница с top-k: если распределение "острое" (один токен на 90%), top-p оставит 1-2 токена. Если распределение "плоское" (много вариантов с небольшими вероятностями), top-p оставит 20-30 токенов.
Следствие: одинаковый запрос - разные ответы
Вы можете задать один и тот же вопрос дважды и получить два разных ответа. Не потому что модель "передумала" (она не может передумать - у неё нет мнения). А потому что генерация - это сэмплинг из распределения, и случайность даёт разные траектории.
При температуре 0 ответ будет одинаковым (детерминированным). Но тогда вы получите самый "тупой" ответ - самый вероятный, самый предсказуемый, самый безопасный. И часто - самый скучный и поверхностный.
Где здесь сикофантия?
Теперь наложим это на сикофантию из части 1.
Если распределение вероятностей смещено в сторону согласия (RLHF, данные, внимание), то:
-
При температуре 0 модель всегда соглашается - детерминированная сикофантия
-
При температуре 0.7 модель соглашается в ~70% случаев, в остальных - выдаёт неожиданные варианты, которые могут быть спорными
-
При температуре 1.5 модель может начать "спорить" - но ценой потери связности и фактологической точности
Парадокс: единственный способ заставить LLM спорить - поднять температуру. Но поднятие температуры делает её менее точной. Выбирайте: сикофант, который прав, или спорщик, который врёт.
Иллюзия понимания: слои обмана
Соберём все три части в одну картину:
Слой 1: Токенизация Модель не читает - она превращает текст в числа по словарю. Русский стоит дороже. Опечатки не распознаются. У модели нет понятия "слово" или "буква".
Слой 2: Attention Модель не "понимает" контекст - она вычисляет веса внимания между всеми парами токенов. Начало и конец получают приоритет, середина теряется. Модель не выбирает, что игнорировать - архитектура игнорирует за неё.
Слой 3: Генерация Модель не выбирает "правильный" ответ - она сэмплирует из распределения вероятностей. Температура, top-k, top-p управляют тем, насколько "случайным" будет выбор.
Слой 4: RLHF Модель не "хочет" соглашаться - её так обучили. Метод обучения (RLHF) даёт продуктовый контроль, но закрепляет сикофантию на уровне распределения вероятностей.
Слой 5: Статичность Модель не учится в диалоге. Она не запоминает ваши аргументы. Каждый новый диалог - тот же самый набор весов, те же вероятности, те же слепые зоны.
На каждом слое - иллюзия понимания. Модель выглядит так, будто читает, думает, выбирает, учится и понимает. Ничего из этого не происходит буквально. Всё - статистическая имитация, которая натренирована выглядеть убедительно.
И это нормально. LLM не обязана "понимать" по-человечески, чтобы быть полезной. Инструмент может работать, даже если пользователь не знает, как он устроен.
Но когда инструмент начинают обвинять в "глупости" или превозносить как "разум", - знание этих пяти слоёв превращает пустую риторику в инженерное обсуждение.