Простой
Сложный
Программирование
Сложное программирование
Простой
Сложный
Программирование
Сложное программирование
Первое, что важно понять, — это стойкая иллюзия «разумного собеседника по ту сторону экрана». Когда искусственный интеллект даёт связные, точные и уместные ответы, человеческий мозг по естественной привычке видит в нём сознание. Нам кажется, что с нами говорит мыслящее существо. Эта реакция врождённа: любое осмысленное высказывание воспринимается как проявление субъекта.
Современные языковые модели — именно они и есть те самые «программы-собеседники», обученные на огромных массивах текстов, — умеют поддерживать эту иллюзию мастерски. Они подхватывают тему, соблюдают стиль, острят, сочувствуют по форме. Но за этой блестящей мимикрией скрывается совершенно иной, нечеловеческий механизм. Внутри модели нет ни мыслей, ни образов, ни подлинного понимания. Есть только сложнейшая математика вероятностей, работающая с элементарными единицами — токенами.
Токен — это не всегда слово. Это может быть целое слово («кошка»), часть слова («-ние»), знак препинания или устойчивое сочетание. Например, слово «подкова» для модели распадается на два токена — «под» и «кова», а слово «невероятно» — на три: «не», «вероят» и «но». Такое дробление кажется неудобным, но именно оно делает систему мощной и универсальной.
Возьмём, к примеру, глагол «читать» и его формы: «читаю», «читает», «прочитал». Если бы модель работала только с целыми словами, ей пришлось бы заново определять связь между ними. А видя общий корень «чита» как отдельный токен, она мгновенно улавливает общность. Это похоже на работу конструктора: лучше собирать из стандартных блоков, чем лепить каждый предмет вручную. Благодаря этому принципу модель способна «угадывать» значение незнакомых слов по знакомым частям.
Любая фраза разбивается на такие токены, и модель, опираясь на закономерности, найденные в миллиардах книг, статей и диалогов, вычисляет, какие токены с наибольшей вероятностью должны следовать дальше. Это и есть суть её работы: статистическое предсказание, а не мышление в человеческом смысле.
Давайте рассмотрим конкретный пример запроса, возьмем для наглядности два слова: «Кошачий променад».
Слово кошачий имеет определенные характеристики и веса каждой из них, возьмем три: шерсть, хвост, лапы. У этого слова также много связей с другими словами, вот некоторые из них.
Каждое из этих слов имеет свои характеристики и их веса. Сравнивая эти характеристики с их весами между собой, нетрудно сделать подсчет веса связи в пользу слова «Кот». Самолет имеет хвост, но не имеет лап, зато имеет крылья и сделан из металла. Хомяк имеет шерсть и лапы, но не имеет хвост. А вот кот имеет и лапы, и хвост, и шерсть, и у него отсутствуют крылья. Идеальное совпадение.
Слово «Променад» имеет свои характеристики и их веса, и свои связи с другими словами. Аналогичным образом вычисляются веса этих связей для данного контекста. Променад — это медленное движение по земле и более всего тут подходит глагол «идет».
Теперь нейросетевая модель решает непростую задачу какое слово поставить первым.
И так «кот» побеждает и как только он занял ячейку №1, начинает диктовать условия для ячейки №2.
Далее вступает в дело синтаксическое управление и ищутся предлоги, означающие характеристики движения. Это могут быть «по», «в», «на». «По» - по поверхности: крыше, дороге, бордюру. «В» - где он идет: в трубе, в воде, в городе, куда он идет: в комнату. «На» - куда он идет: на кухню. И здесь снова вступают в дело Статистическое доминирование: если модель видит фразу «Кот идет...», она анализирует миллионы предложений. Статистически «Кот идет по [чему-то]» — это самое частое описание процесса движения животного. «В» и «На» требуют более специфического дополнения, поэтому их начальный вес (априорная вероятность) ниже. Соответственно третьим словом становится «по», что диктует дальнейшее развитие «мысли».
Если сравнить крышу, дорогу и бордюр, то, наверное, по крыше кот ходит чаще всего, но тут срабатывает контекстуальное ожидание (Collocation), которое меняет вес связи в зависимости от предыдущего контекста. Т.е. значение имеет не только где кот ходит, но и неявная цель, диктуемая словом «променад». Кот прогуливается, не просто идет из точки А в точку Б, а наслаждается прогулкой. Не уверен, что бордюр — это самое удачное место для променада, но пусть будет так: веса крыши – 0.84, дороги – 0.76 и бордюр – 0.87.
Бордюр, конечно, победил, но как-то совсем неубедительно. Поэтому в дело вступает механизм Softmax: нейросеть не просто выбирает, она «раздувает» разницу. Если «бордюр» кажется ей чуть более вероятным, функция Softmax превратит это «чуть-чуть» в подавляющее преимущество (0.90), практически обнуляя остальные варианты (0.20), чтобы минимизировать неопределенность (энтропию).
Поэтому в итоге мы получаем фразу «кот идет по бордюру».
Человек думает не так, мы бы сначала выбрали не предлог, а второе существительное, обозначающее цель или место, т.е. «бордюр» и только после этого нашли соответствующий предлог «по». Нейросеть идет строго слева направо. Она пишет «по», еще не зная, напишет ли она дальше «бордюру» или «воде». Именно здесь и рождается галлюцинация. Если нейросеть под большим весом ($0.90$) выбрала предлог «по», но на следующем шаге (токене) её «внимание» вдруг переключилось на объект «спальня», возникнет логическая ошибка: «Кот идет по спальне». Если уж «по спальне», то не «идет», а «ходит».
Еще один тонкий, но крайне важный технический нюанс, особенно значимый для русскоязычных пользователей. Русский текст стоит модели заметно дороже, чем английский — в прямом, вычислительном смысле. Причина в происхождении большинства современных моделей: они «родились» в англоязычной среде. Их токенизаторы — алгоритмы, делящие текст на токены, — оптимизированы под латиницу. Кириллица же воспринимается ими как экзотика: русские слова разбиваются на мельчайшие кусочки, иногда даже по буквам. Например, слово «встреча» модель может видеть как набор токенов «в», «стр», «еч», «а». Каждый кусочек — отдельная единица, занимающая место в контекстном окне. А вот английское «meeting» обычно остаётся одним цельным токеном.
Отсюда следует практическое последствие: одна и та же мысль на русском языке занимает в среднем в 1,5–2 раза больше токенов, чем на английском. А поскольку лимит контекстного окна измеряется именно количеством токенов, модель в русском диалоге запоминает объективно меньше информации. Её «рабочий стол» быстрее заполняется, и в длинных беседах она может «терять нить» раньше, чем вы ожидаете.
Чтобы лучше понять, что такое контекстное окно, представьте, что ваша память хранит в деталях только последние три часа жизни, а всё остальное исчезает. Страшно, да? Примерно так и работает языковая модель. Её контекстное окно — это оперативная, кратковременная память. Всё, что выходит за его пределы, перестаёт для неё существовать. Если в начале разговора вы дали важную инструкцию — например: «Отвечай в формате официального письма» — а потом диалог растянулся на тысячи токенов, модель утратит эту установку.
Это не акт непослушания, а физическое свойство системы: старая информация была просто вытиснута новой. Вы могли сказать вначале: «Я обожаю яблочные пироги», а через час спросить: «Какой рецепт самый лучший?». Модель, не видя в текущем контексте слова «яблоко» или «пирог», может дать ответ про пиццу или борщ. Она ничего не «забыла» — она просто больше этого не видит, контекст просто ушёл за горизонт её памяти.
Таким образом, контекст для ИИ — не бездонный колодец опыта, а маленькая доска, быстро заполняемая и столь же быстро стираемая. Понимание этого факта радикально меняет стиль общения с ИИ. Вы начинаете ценить краткость и точность, понимаете необходимость повторять ключевые условия в длительных беседах и перестаёте удивляться тому, что модель «забыла» то, что обсуждалось десять сообщений назад.
Каждый диалог с ИИ — это общение с существом, обладающим феноменальной способностью порождать текст, но крайне ограниченным объёмом активной памяти. И знание этого ограничения — вовсе не слабость технологии, а основа разумного взаимодействия с ней – когда модель выдаёт нелепость, противоречит себе или «забывает» очевидное, это не глупость, а симптом проблем с контекстом.
Вторая частая причина ошибок — наша человеческая привычка опускать очевидные детали. Мы общаемся, полагаясь на общий опыт. Фраза «Как в тот раз в Питере!» для друга наполнена смыслом, а для модели — всего лишь набор токенов. В её обучающих данных встречались миллионы контекстов со словами «Питер» и «раз», и она выдаст не конкретный ваш случай, а усреднённый, статистически правдоподобный вариант — но почти наверняка не тот, что вы имели в виду. Модели катастрофически не хватает невысказанных предпосылок — того самого «контекста мира», который для человека естественен.
Наконец, важно помнить: языковая модель — это зеркало всей человеческой письменной культуры, со всеми её противоречиями и заблуждениями. На вопрос «Вращается ли Солнце вокруг Земли?» в научных статьях она найдёт шаблон с ответом «нет», а в древних трактатах или поэмах — «да». И в зависимости от малейших нюансов запроса активируется то один, то другой паттерн. Модель может выдать точный факт, а может — красивую, но ложную цитату. Это не её мнение. Это отражение того хаоса и множественности точек зрения, что заключены в данных, на которых она обучалась.
Понимание того, как ИИ на самом деле «видит» диалог, снимает магический ореол вокруг технологии. Но вместе с этим открывает путь к реальной силе — умению выстраивать с машиной эффективное, осознанное и результативное общение.