Дрейф сюжетов emerge_v2 — математика и семантика смещения · версия 2, полный корпус
743 генераций, 1458 работ (2026-06-29 02:29 → 2026-08-01 09:56) · «сюжет» = artistic_statement работы ·
эмбеддинги text-embedding-3-large, 3072d, сырое пространство · свежий read-only дамп прод-БД, без новых вызовов генеративных моделей.
Наведи на любую точку любого графика — всплывёт название и саммари сюжета.
Что показали данные
0 · Как это устроено — от смысла к вектору и обратно
Весь отчёт держится на одном приёме: текст превращается в точку многомерного
пространства, и дальше со смыслом работает геометрия. Ниже — девять экранов: первый объясняет
сам приём на простой картинке, остальные разбирают его по шагам на настоящих данных
корпуса — те же векторы, те же работы, те же числа, что и во всех остальных разделах.
Кликай по номерам.
шаг 1 · интуиция
Что вообще значит «превратить смысл в вектор»
Прежде чем считать — простая картинка, безо всяких данных корпуса.
Идея эмбеддинга одна: каждому смыслу сопоставить точку в пространстве так, чтобы
похожие смыслы стояли рядом, а далёкие — далеко. Тогда «похоже по смыслу» становится
просто «близко в пространстве», и с текстом можно работать линейкой. Ниже — облако из
обычных слов, вращающееся в трёх измерениях: соседи по смыслу держатся вместе.
Облако медленно поворачивается — три оси показаны для наглядности; каждая
точка это слово, глубина передана размером и яркостью. Группы:
животные, транспорт,
погода, чувства.
Наведи, чтобы остановить вращение.
Почему осей не три, а тысячи
В трёх измерениях рядом умещается мало соседей. «Кошка» близка и к «собаке»
(животное), и к «тёплому», и к «мягкому», и к «домашнему» — но трёх осей не хватает,
чтобы все эти виды близости уместились одновременно, не наступая друг на друга.
Поэтому настоящая модель берёт не три оси, а 3072. В таком пространстве
места хватает: каждый оттенок смысла получает своё направление, и близость перестаёт
быть случайной. Нарисовать 3072 осей нельзя — поэтому здесь их три, а дальше в
дело идут числа, а не картинка.
Классическая проверка идеи: если у смыслов
есть направления, то «король» − «мужчина» + «женщина» приводит примерно в точку
«королева». Смысл стал арифметикой — это и есть векторизация.
шаг 2 · векторизация
Текст становится числом
Теперь по-настоящему. Модель эмбеддингов читает сюжет работы —
текст справа — и выдаёт 3072 числа; узор слева и есть эти числа,
выложенные в клетки. Ни одно из них ничего не значит по отдельности: смысл записан в узоре
целиком. Модель обучена так, что тексты про близкие вещи получают близкие узоры — это
единственное её свойство, на котором держится весь отчёт. Ниже — настоящие векторы трёх
работ корпуса, все 3072 координаты.
Наведи на клетку — увидишь номер координаты и её значение.
Справа налево
Панель ниже — исходный сюжет работы, тот самый текст, который ушёл в модель.
Узор слева — его результат: те же 3072 чисел, разложенные в решётку 64 в ряд
только для того, чтобы уместиться на экран. Смени работу кнопками — сменятся и текст,
и узор: другой смысл — другая точка пространства.
Что видно на карте координат
Синее — отрицательные значения, оранжевое — положительные, тёмное — около нуля.
Узор выглядит шумом, и это нормально: у эмбеддинга нет «оси цвета» или «оси эмоции»,
признаки размазаны по всем координатам сразу.
Переключи работу — узор поменяется целиком, но сравнивать их на глаз бесполезно.
Именно поэтому дальше в дело идёт не глаз, а скалярное произведение.
длина вектора—
координат заметно ≠ 0—
модельtext-embedding-3-large
шаг 3 · метрика
Что значит «близко»
Похожесть двух сюжетов — это косинус угла между их векторами:
перемножить координаты попарно и сложить. 1 — одно и то же направление, 0 — никакой связи.
Само по себе число ничего не говорит, его надо откалибровать по корпусу: вот распределение
всех 247 456 пар работ и четыре опорные точки на нём.
Калибровка
Две случайные работы корпуса похожи на —. Соседние по времени —
на 0.65. Разрыв крошечный: 80% расстояния между
случайными работами набирается уже за один шаг.
Отсюда и главный вывод отчёта: соседние работы почти так же различны, как
несвязанные. Это не поломка — это мера того, насколько широко движок разбрасывает
сюжеты вокруг одной темы.
шаг 4 · размерность
3072 измерения, из которых работают ~64
Пространство огромно, но облако сюжетов занимает в нём тонкий блин. Слева —
сколько разброса приходится на каждое направление после поворота осей к главным компонентам;
справа — накопленная доля. Первые 10 направлений держат 31% всего разброса,
первые 100 — 75%.
Разброс по направлениям
Логарифмическая шкала. Пунктир — эффективная размерность
(participation ratio) 64: столько независимых направлений реально
используется вместо 3072.
Накопленная доля разброса
Чтобы собрать 90% разброса, нужно уже больше сотни направлений —
облако не плоское до конца. Но и не полнокровное: 3072 измерений выродились
в ~64 работающих.
Зачем это знать. Эффективная размерность — это ширина словаря, которым
движок реально пользуется. Если бы она росла со временем, можно было бы говорить о расширении
территории. По фазам движка она стоит на месте: 47.0 → 46.0 → 49.7.
шаг 5 · шаг
Как выглядит один шаг
От работы к работе вектор смещается: Δ = v(следующая) − v(текущая). Чтобы этот
сдвиг увидеть, его нужно куда-то спроецировать — но не «для красоты». Плоскость ниже построена
честно: горизонталь — направление предыдущего шага, вертикаль — то, что осталось
от направления «к центру облака» после вычитания горизонтали. Обе координаты — настоящие
скалярные произведения в 3072 измерениях.
Каждая точка — один реальный шаг корпуса (700 штук), цвет — эпоха.
Наведи — увидишь сюжет, к которому шаг привёл.
Что показывает облако
Точки лежат слева: следующий шаг в среднем идёт против предыдущего. Средний угол
между соседними шагами 119° — при свободном блуждании было бы 90°.
Точки лежат сверху: шаг систематически направлен к центру облака,
средний косинус +0.63. Это возвращающая сила — груз на пружине.
Вместе это и есть «дрожание на привязи»: размах шага большой, а уйти он никуда
не даёт, потому что каждый следующий отыгрывает предыдущий назад.
Заметь, чего здесь нет: сгустка справа-снизу. Не будь возвращающей
силы и разворотов, облако было бы симметричным кругом вокруг нуля — и тогда сюжеты
расходились бы по пространству, а не толклись на месте.
шаг 6 · обратный перевод
Из точки пространства — обратно в текст
Эмбеддинг необратим: из 3072 чисел нельзя восстановить текст, который
их породил. Читать пространство можно только одним способом — взять точку и посмотреть, какая
реальная работа к ней ближе всех. Ниже — движение вдоль оси дрейфа, той самой единственной
координаты, по которой корпус едет со временем: девять остановок от раннего полюса к позднему,
на каждой стоит настоящая работа корпуса. Веди мышкой слева направо и читай, как меняется тема.
——
Между работами — пустота. Если взять прямую между двумя крайними
работами (ген 174 и ген 718) и идти по ней, то на 13 остановках
из 13 ближайшей реальной работой остаётся один из самых концов: в середине пути промах
доходит до 0.176, а ближайшая работа, кроме двух концов, отстоит на
0.227. Пространство заселено пятнами — движок не проходит территорию,
он прыгает по обжитым местам.
Здесь и происходит стык. Смысл живёт в геометрии, потому что близкие
точки читаются как близкие тексты. Именно это даёт право мерить дрейф темы расстоянием.
Но сам движок ход в этом пространстве не делает: точка посреди пустоты текстом не
является, и записать по ней формулу нельзя. Ход делается там, где он определён — в дискретной
решётке. Это следующий экран.
шаг 7 · где ход делается формулой
Решётка: материал × композиция × палитра
У движка есть свой словарь визуальных решений: 20 материалов ×
10 композиций × 8 палитр = 1600 клеток. Работа получает
клетку, генотип пишется как m4_c8_p8, а следующая работа получает соседнюю — и вот
этот переход движок записывает буквально операцией palette:6->2. Это и есть «шаг по
формуле»: он делается не в смысловом пространстве, а здесь.
Решётка материал × композиция · цвет = сколько раз клетка занята
Как считается ход
Каждая ось — просто список. Ход — смена индекса на одной или нескольких осях:
palette:6->2 значит «взять шестую палитру и заменить второй».
За корпус так изменилось: одна ось — — раз, две — —,
все три — —.
Посещено 564 клеток из 1600. Куда идти дальше, решает
MAP-Elites: он держит архив лучших работ по нишам и предпочитает редко занятые.
Словарь растёт. Индексы за пределами базовых списков — это
то, что агент придумал себе сам: сверх базы он отрастил 10 материалов,
6 композиций и 4 палитр. Их текста в дампе нет, поэтому в примерах
такие значения помечены как «отращено».
шаг 8 · цепочка
Клетка → медиум → сюжет → промт → картинка
Вот полная цепочка одной настоящей работы: от хода в решётке до готового
изображения. Каждый блок — реальный текст из трейса генерации, ничего не реконструировано.
Здесь видно место, где формальный ход превращается в замысел: между клеткой и сюжетом стоит
языковая модель, которая обязана связать назначенные ей материал, композицию и палитру
в осмысленную сцену.
шаг 9 · перцептивное пространство
Третье пространство — и что всё это значит
Готовая картинка тоже векторизуется, но уже другой моделью и по другому
признаку: CLIP превращает изображение в 1024 чисел, где рядом оказывается то, что
похоже на вид, а не по смыслу. В этом пространстве движок держит 64 ниш
(MAP-Elites) и следит, чтобы работы не сбивались в кучу. В дампе CLIP есть у 517 работ.
Перцептивная карта · точка = картинка, кольца = ниши
Проекция CLIP-пространства на две главные компоненты. Цвет точки — время.
Полые кружки — центры 64 ниш MAP-Elites; занято 64.
Сколько смысла доезжает до картинки
Каждая точка — пара работ: по горизонтали расстояние их сюжетов,
по вертикали — расстояние их картинок. Связь есть, но слабая:
ρ = +0.21.
0.21
расстояние между двумя картинками
одного и того же сюжета
0.29
расстояние между картинками
разных сюжетов
0.56
дрейф со временем в перцептивном
пространстве (в смысловом — 0.74)
64/64
ниш занято —
по картинкам корпус покрывает всё поле
Один сюжет — две картинки, и они расходятся
почти как чужие (0.21 против 0.29). Текст недоопределяет изображение: львиная
доля визуального решения принимается уже после того, как смысл сформулирован — в медиуме,
в промте и внутри самой генеративной модели.
Это и есть вычислительная креативность
Творчество здесь — не момент, когда модель «придумала». Это замкнутый контур из трёх
пространств. В решётке ход определён формально, и его можно сделать и записать.
В языке ход превращается в замысел: медиум, момент, сюжет — то, чего в решётке не
было и что нельзя вывести из индексов. В перцептивном пространстве результат
измеряется как картинка и возвращается обратно в архив ниш, определяя, куда система пойдёт
дальше. А смысловое пространство, которому посвящён весь остальной отчёт, — это наш
измерительный прибор поверх контура: в нём видно, куда фактически уехала тема.
Креативность в такой системе — свойство не шага, а контура: способность держать поиск
открытым, не сваливаясь ни в повтор, ни в шум. Этот отчёт измеряет, насколько контур
справляется. Ответ на полном корпусе честный и невесёлый: размах шага огромен
(80% от расстояния между случайными работами), но каждый следующий шаг
отыгрывает предыдущий назад (119°), а облако тянет к центру (+0.63) —
поиск идёт, территория не растёт. Уезжает при этом сама привязь: ось дрейфа
коррелирует со временем на 0.74, и за 743 генераций тема прошла
— эпох. Творчество здесь есть — но это не экспансия, а медленный снос
обжитой области.
1 · Карта сюжетов и след центра тяжести
Каждая точка — один сюжет в семантическом пространстве (UMAP по косинусу).
Серые — весь корпус, яркие — активные в выбранном окне. Ломаная с градиентом —
след центра масс по времени: от синего (старт) к жёлтому (финиш), то есть куда уезжала тема.
Зелёный кружок — центр текущего окна. Отдельные работы прыгают почти случайно, поэтому смотреть
надо именно на след — и ещё вернее на ось дрейфа в следующем разделе.
Карта
Сюжет генерации
2 · Ось дрейфа — систематическое смещение под шумом
Единственное направление в 3072-мерном пространстве, вдоль которого сюжеты
меняются монотонно со временем (найдено как ковариация эмбеддинга с номером генерации).
Точки — отдельные работы, линия — скользящее среднее по 15 генерациям. Разброс точек огромен,
но линия идёт уверенно вверх: . Полюса оси подписаны словами, которые
сильнее всего с ней коррелируют.
Ранний полюс (низ оси)
Поздний полюс (верх оси)
2б · Что означает эта ось — три независимых чтения
Отдельная координата эмбеддинга не значит ничего: смысл в этом пространстве
записан направлениями, а не осями координат. Ось дрейфа — как раз такое найденное
направление, и его можно прочитать. Здесь три способа, которые считались независимо друг
от друга. Первый — спроецировать на ось сами слова: 938 слова закодированы
той же моделью, что и сюжеты, и разложены по оси по их собственному положению в
пространстве — ответ изнутри, без обращения к текстам корпуса. Второй — посмотреть,
частота каких tf-idf-терминов растёт вместе с координатой работы. Третий — просто
прочитать названия крайних работ. Если три способа сходятся, ось прочитана верно; расхождения
тоже показаны.
Линейка оси: обычные слова (не жаргон корпуса — список общих понятий
вроде «кожа», «машина», «память», «пыль») разложены по своей проекции на это направление,
в отклонениях σ. Терминов корпуса здесь нет намеренно: они сидят на самых краях и середину
оси не показывают. Читать надо порядок слева направо — сам ноль ничего не значит.
нижний полюс оси
1 · слова, спроецированные на ось
2 · термины, чья частота растёт к этому полюсу
3 · крайние работы корпуса
верхний полюс оси
1 · слова, спроецированные на ось
2 · термины, чья частота растёт к этому полюсу
3 · крайние работы корпуса
3 · Эпохи и реальные работы
Границы эпох найдены бинарной сегментацией по эмбеддингам: разрез принимается,
только если выигрыш в объяснённом разбросе превышает 95-й перцентиль того же выигрыша на
перемешанном во времени корпусе. Под полосой — сами работы; наведи, чтобы увеличить.
3б · Лента сюжетов — читаем траекторию по шагам
Тот же дрейф, но словами. Каждая строка — одна генерация: название сюжета, саммари,
техника исполнения и величина шага от предыдущей работы. Читая подряд, видно, как смещение вектора
превращается в смену темы: где текст ползёт синонимами, а где действительно переламывается.
Клик по строке раскрывает полное саммари и подсвечивает работу на всех графиках.
Фильтр «переломы» оставляет только генерации на границах эпох и самые крупные шаги.
4 · Математика движения
Шесть проверок, отвечающих на один вопрос: это направленный дрейф,
случайное блуждание или дрожание на привязи. Все нулевые гипотезы проверены
перестановкой времени (500 повторов, фиксированный seed).
5 · Матрица возвратов
Косинус каждой работы с каждой. Диагональ — сама с собой. Яркие пятна вдоль
диагонали = эпохи (соседние работы похожи). Яркие пятна вдали от диагонали = возврат:
агент вернулся к теме, которую уже проходил. Наведи — увидишь пару; клик — перейти к работе.
Все пары
Наведи на клетку.
Новизна: насколько сюжет не похож ни на что прошлое
Для каждой генерации — 1 − максимальный косинус со всеми предыдущими работами.
Провалы = агент повторил уже пройденное. Красные метки — ближайший «двойник» в прошлом.
6 · Семантика: что именно сместилось
7 · Смещение и качество
Если большой прыжок — это исследование, он должен окупаться оценкой критика.
Проверяем ранговой корреляцией Спирмена.