
Представьте, что хороший знакомый или родственник внезапно подойдет к вам, скажет: «Оливье с креветками» — и замолчит. Что первым придет в голову (ну, исключая заболевания)? А о чем подумает нейросеть LLM типа «Алиса» или DeepSeek в такой же ситуации? Попробуем разобраться.
Меня зовут Андрей Сенченко, я бизнес-архитектор решений розницы и логистики в MWS. На работе я занимаюсь автоматизацией сети магазинов МТС, а в свободное время увлекаюсь нейросетями.
В разговорах со знакомыми, которые пользуются нейронками от случая к случаю, нередко возникает вопрос “почему нейронка ответила на мой запрос именно так”. Мне нравится при объяснении технических особенностей использовать аналогии. Одну из них я считаю удачной и хочу поделиться ею с вами.
Дисклеймер:
Этот материал — не учебник, а блокнот IT-аналитика, увлеченного разбором поведения нейросетей (txt2img и не только) для получения стабильного результата.
Буду признателен за ваши дельные замечания и комментарии.
Немного базы
Память vs граф. Оливье для человека и AI
Память человека
Итак, что вам приходит в голову при слове «оливье»? Предположу, цепочка будет плюс-минус следующей:
внешний вид салата;
примерный набор ингредиентов;
Новый год;
любимый рецепт;
ну с яблоками же!;
майонез — очень вредно;
это что-то о французах.
При упоминании «оливье» вы в первую очередь подумаете о том, с чем имели дело чаще: с его готовкой, употреблением или даже с холиварами о яблоках.
Если же речь именно о рецепте, обычный человек запомнит и при случае сможет назвать от силы 2–3, хотя реально в мире их сотни. И да, у каждой хозяйки свой сорт яблок.
Кроме собственно ингредиентов, мы запоминаем или записываем их количество и пошаговую инструкцию по приготовлению.
Память нейросети
Здесь есть коренное отличие. Оливье для нейросети — это граф. Представьте схему метро. Нет, не Самары, а московского.
Станции — узлы графа. Здесь происходит обработка: помыть, сварить, нарезать.
Линии — ребра графа. На них хранится информация: три морковки, один час, размер кубика.
Точки пересадки — места, куда можно добраться разными путями с неодинаковыми параметрами и продолжить путь.
Доехать до конечной в виде готового «оливье» получится десятками способов по разным линиям-ребрам и станциям-узлам. Давайте прямо по схеме метро:
Вариант: на Красной ветке вы возьмёте 3 морковки → помоете → 40 минут → будете варить.
Вариант: на Синей ветке будет уже 2 морковки → помыть → 1 час → пароварка.
Затем на Охотном ряду или Площади Революции вы пересядете на Театральную и уже оттуда в любом случае → кубиками размером с горошину → нарежете морковку.
Это напоминает книжку рецептов, в которой одна часть шагов может быть разной, а другая — добуквенно одинаковой.
Для тех, кому не хватило аналогии с метро, я набросал очень примерную схемку:

Теперь об опыте. Сеть не «сталкивается» с оливье. Ее обучают инженеры. В процессе на каждой линии-ребре проставляется вес.
Для морковки это: «5 минут варки — плохо», «3 часа — плохо», «1 час — отлично». Запомненный один раз вес больше не меняется вплоть до fine-tuning, точечной настройки, или full retraining, полного переобучения модели.
Представьте навигатор. Дорога, которая помечена как «грунтовая», такой и останется, пока на картах через механизм переобучения не отметят, что ее расширили и заасфальтировали. На дороге из грунта могут через механизм тонкой настройки лишь указать, что там идет ремонт.
Обученная модель не запоминает конкретные рецепты. Каждый раз, когда ей задают вопрос об оливье, она пробегает по ребрам графа с наибольшими весами и предлагает итоговый результат.
Маршрут зависит от параметра temperature. Если temperature = 0, это будет один и тот же путь. Если больше 0 — свыше одного маршрута. И далее с возрастающей хаотичностью.
Если при тренировке сети наибольшие веса были выставлены на пути рецепта с яблоками, она будет выдавать способы с ними. Если же — на стихи об оливье, прочитает вирши вместо рецептов. Разумеется, это преувеличение для понимания концепции.
Опыт vs эмбеддинг. Ингредиенты
Человек
Опыт подсказывает нам, что морковка — это такой продолговатый твердый оранжевый овощ, который нужно чистить перед едой. Еще ее любят кролики. Продолжение свойств и аналогий — на вкус читателя.
А колбаса, ветчина и сосиски для салата — приблизительно одно и то же. В родной для нейросети векторной арифметике это почти выглядит как формула:
ветчина ≈ колбаса — копченая + нежная
Чтобы понять это выражение, сравните его с классикой:
король-мужчина + женщина = королева
Нейросеть
У нее нет визуальных и тактильных ощущений, как и жизненного опыта в человеческом понимании.
Зато есть эмбеддинг. Каждому слову, которое учит нейросеть, задают до 300 параметров вида:
колбаса: [белок = 0,9; жирность = 0,7; цена = 0,3; …]
креветки: [белок = 0,95; жирность = 0,1; цена = 0,8; …]
морковь: [углеводы = 0,8; цвет = оранжевый; цена = 0,1; …]
Эти значения — вектор, указатель в многомерном пространстве, по которому можно найти похожие по какому-то свойству слова.
У нейросети нет кулинарного опыта, но она видит близкие значения «белок» у колбасы и креветок. И ищет ближайший вектор в пространстве свойств.
Если эмбеддинги колбасы [0,9; 0,7] и креветок [0,95; 0,1] близки по «белку», модель предложит замену. Даже несмотря на то, что сочетание вида «яйца + креветки» гастрономически спорное.
Если кому-то интересно, как это выглядит визуально, можете запустить TensorFlow Embedding Projector и покрутить разные варианты.
Промпт «оливье с креветками»
Токенизация
Что здесь происходит.
Человеческая память и опыт уже подсказывают нам, что речь, скорее всего, о салате. В голове начинают всплывать рецепты тех, которые с креветками.
Нейросеть использует токенизацию. Она разбивает текст запроса на слова и слоги и изучает их эмбеддинги. Если в процессе тренировки в «оливье» задали высокий эмбеддинг на свойство «салат», она тоже поймет, что речь именно о салате, и направит вектор в ту область, где хранятся такие рецепты, а дополнение «с креветками» уточнит этот вектор.
Замена ингредиента
Человек
Опытная хозяйка догадается, что разговор идет о замене ингредиента, и интуитивно поймет: скорее всего, нужно вместо колбасы взять креветки.
Нейросеть
У опытной нейросети вместо интуиции — статистика. И здесь работает векторная математика.
Модель решает через attention — механизм внимания. Сейчас будет самая сложная часть для нетехнарей.
Слово «оливье» активирует шаблон описания [картофель, […], горошек], где […] — место для «белка».
Креветки математически, через взаимное влияние сравниваются с кандидатами: колбасой, ветчиной, курицей, рябчиком. Технически механизм внимания анализирует смысл всей фразы, и определяет какие токены (слова) больше всего влияют друг на друга в данном контексте.
Производится замена наиболее близких по контексту и математике значений.
Кулинарная и вкусовая совместимость не играют никакой роли. Это векторная арифметика.
Добавление ингредиента
Подходим к самому интересному. Если хозяйка не очень опытная, а нейросеть обучалась на узких наборах данных (датасетах), они могут решить просто добавить креветки в существующий рецепт.
При этом человек снова интуитивно оценит совместимость итогового набора ингредиентов. Возможно, уберет что-то (скажем, яйца) или добавит (допустим, каперсы) и определит количество на вкус.
А вот для нейросети это будет задача посложнее. Рецепторов у нее нет, и ей придется заново пересчитать все связи в графе:
Сочетаются ли креветки с майонезом или огурцом? Зависит от статистики совместных упоминаний.
Сколько именно креветок добавить? По весу или по размеру порции? Определяют свойства в эмбеддинге.
В итоге вполне приличный с точки зрения сети рецепт может оказаться не очень вкусным или даже совсем несъедобным. Если в наборе данных, на котором тренировали сеть, будет богатый раздел «экспериментальные салаты», в наш оливье может попасть даже свежая клубника.
Промпт «салат оливье с креветками»
А вот и самое интересное. Добрались. Что изменилось для наших героев?
Для человека — ничего. Мы давно уже поняли, что речь о салате.
Для нейросети произошло серьезное изменение: добавился еще один ключ для токенизации (разбора запроса). Теперь у нас:
Целых два салата: собственно «салат» и «оливье», он ведь тоже салат.
Появился новый отдельный «салат с креветками».
Что произойдет теперь? Чуть выше все описано. Сеть будет пересчитывать граф, причем векторы еще больше сместятся от простого майонезного «оливье» к новому «салату с креветками». И здесь уже с очень высокой вероятностью в рецепт попадут новые ингредиенты.
И хорошо, если граф пойдет через средиземноморскую кухню и добавит каперсы. Это уж точно не страшнее яблок. А если отправится на Восток, в рецепты роллов? Тогда он принесет нам авокадо и васаби. С майонезом — самое то.
Таким образом, каждое слово и даже слог в тексте запроса могут и улучшить результат, добавив нужный контекст, и ухудшить, уведя нейросеть по ошибочному пути. Пример будет ниже вместе с картинкой.
Рецепты от профи
В начале текста я так переживал за «Алису» и DeepSeek, что теперь уже просто обязан проверить. Включаю оба в режиме рассуждения.
«Алиса Про»

Рецепт оливье с креветками. Оливье с креветками — это вкусная и изысканная вариация классического салата. Вот один из возможных рецептов. Ингредиенты: креветки — 200 г; картофель — 3–4 шт.; морковь — 1–2 шт.; яйца — 3 шт.; огурцы (свежие или маринованные) — 1–2 шт.; зеленый горошек (консервированный) — 100 г; майонез — по вкусу; соль, перец — по вкусу.
DeepSeek

Рецепт салата оливье с креветками — это изысканная вариация классического блюда, где вместо мяса (колбасы или курицы) используются креветки. Он получается более легким, с ярким морским акцентом. Вот проверенный рецепт. Ингредиенты (на 4–6 порций): креветки — 300–400 г (крупные очищенные королевские или тигровые, варено-мороженые или свежие). Картофель — 3–4 шт. (средние, варенные в мундире). Морковь — 1–2 шт. (средние, вареные). Яйца — 4 шт. (сваренные вкрутую). Огурцы — 3–4 шт. (средние соленые или маринованные, можно добавить 1 свежий для сочности). Горошек консервированный — 1 банка (около 200–250 г, слить жидкость). Лук репчатый — 1/2 небольшой луковицы (мелко порезать, по желанию: ошпарить кипятком или замариновать на 10 мин. в уксусе с сахаром/водой, чтобы убрать горечь). Укроп/петрушка — небольшой пучок (мелко порубить). Майонез — 150–200 г (лучше использовать качественный классический или чуть менее жирный; можно часть заменить натуральным йогуртом или нежирной сметаной для легкости). Соль — по вкусу. Свежемолотый черный перец — по вкусу. Лимонный сок — 0,5–1 ч. л. (по желанию, для свежести). Вариации и советы: авокадо. Добавьте 1 спелый авокадо, нарезанный кубиками, в самом конце сборки (после добавления майонеза), аккуратно перемешайте. Добавит кремовости и свежести. Яблоко: некоторые добавляют 1 кисло-сладкое яблоко (очищенное, без сердцевины, нарезанное мелкими кубиками) для свежей нотки. Сбрызните его лимонным соком, чтобы не потемнело. Икра: для праздничной подачи украсьте салат ложкой красной икры. Соус: попробуйте смешать майонез с 1 ч. л. дижонской горчицы или добавить немного мелко натертого чеснока. Для пикантности — каплю соуса табаско. Подача: можно выложить салат в порционные тарталетки, в половинки авокадо или на листья салата.
Подкупает, что DeepSeek в ответе объявил рецепт проверенным и бонусом насыпал авокадо и икру. Видимо, генерация шла с приличной температурой. Раз так, пойду мариновать лук и рубить укроп с петрушкой.
Рецепт картинки
Сложности именно txt2img-сетей с генерацией этого изображения — тема для отдельного поста. Если будет интересно, мы подробно рассмотрим, почему фарш невозможно провернуть назад. А пока просто поверьте: самый стабильный способ сделать картинку такого блюда — собрать его четко по рецепту. Текст промпта:
салат оливье с майонезом.
ингредиенты:
1) горошек;
2) оливково-зелёные огурцы(кубики размером с горошек);
3) отварная морковь(кубики размером с горошек);
4) белая отварная картошка(кубики размером с горошек);
5) креветки очищенные(строго ОЧЕНЬ маленькие);
6) вареные яйца(мелко нарезанные).
СТРОГО ХАОТИЧНАЯ СМЕСЬ (НЕ СЛОИ, НЕ РАЗДЕЛЬНО, НЕ УЗОР);
ВСЕ ингредиенты СИЛЬНО покрыты белым соусом–майонезом;
сервировка: ПУСТОЙ черный стол, глубокая прозрачная тарелка.
Знаки пунктуации и CAPS отлажены для слабых «гражданских» нейронок.


СТОП!
А откуда в салате на картинке появились оливки? Их же нет в рецепте!
Те, кто внимательно и вдумчиво прочитал сначала этот пост, а затем текст промпта, наверняка догадались.
Оливково-зеленый огурец был разбит на токены ["оливков", "о-", "зеленый"]. К этому добавился токен “олив” из названия “оливье”. Модель направила вектор в «оливки», нашла мощную статистическую связь с токеном «салат» (тысячи изображений салатов с оливками) и охотно нарисовала их на нашем арте.
Эта иллюстрация — явное и наглядное доказательство того, что каждый слог в промпте может иметь значение.
В качестве вывода
Какой бы запрос вы ни писали в LLM-редакторе, не стоит забывать, что это не библиотека с готовыми текстами на бумажных или электронных страницах, а система генерации ответов на ваши вопросы, построенная на базе очень серьезной математики.
И отношения с майонезом у этой системы многомерные. Каждое слово в промпте — это вектор, меняющий результат.
Biga
Пост напомнил бородатый анекдот про "формулу бороды".
Берем слово "борода". Токенизатор разбивает его на "бор" + "ода". Для них есть внутренние эмбеддинги: "бор" - это лес, а "ода" - это стих. Получается - "лес стих". То есть "безветрие", без v три e. Итого, формула бороды: "3e - v", где e - экспонента, а v - параметр бороды.
Примерно так работают рассуждающие нейросети в моём понимании.
ASenchenko Автор
Спасибо :)) Сижу ржу :)
Moog_Prodigy
е не экспонента а постоянная, а v - коэффициент волосатости.
Но да, в принципе так они все и думают. А мы думаем разве иначе? Поэтому оно и ведет себя как среднестатический чел, с поправкой на то, что он сумасшедший академик вообще по всем вопросам. А иногда и как разумный.
Штука то скопирована с нашей модели поведения, чего теперь пенять на зеркало?