Обновить
62
Илья@proxy3d

нейробиология, нейронные сети, AR/VR

0,1
Рейтинг
23
Подписчики
Отправить сообщение

Это не работает так всегда. Если вы делали миграцию с MS SQL или Oracle на pgSql, то видели бы как это плывет на сложных хранимых процедурах. Ни какой "pgSql" не помогает тут, начинают вставлять конструкции из других диалектах, так как влияние pgSql теряется при росте контекста.

У меня с SQL языковые модели плывут сильно и часто путаются с PG и MS SQL/Oracle, когда делал миграцию БД. Проблема возникла с хранимыми процедурами, которые генерировали отчеты. Постоянно путала и вставляла конструкции от Oracle и MS SQL в конструкции PG, потом извинялась и снова.. допускала ошибки. И помогает только руками писать, так как итоговый результат пишется что выдает мусор. И подобный подход работает хорошо, только на очень простом. И дикий ужас возникает в динамических запросах, где запрос формируется в процессе и сразу не проверишь.

Тут очень не хватает специализированных моделей, заточенных под своих языки.

Смотрит, но вы слишком оптимистично считаете что это правило работает жестко. Контекст это иерархия контекстов. На одном это будут слоги. на другом соседние слова, на третьем конструкция. И результат это общее усиление. И если на одних уровнях модель не уверена и вклад не велик, а на другом уровне иерархии уверена сильнее, то именно он сыграет главную роль. То есть если модель решит что после SELECT должно идти FROM и эта связь будет сильнее чем связь данной конструкции c верхней абстракцией pgSql или ms sql, то именно она сыграет ключевую роль в выборе токена.

Влияние контекста так не работает. Он может не сработать в том ключе, как изначально предполагалось, так как контекст это не влияние одного слова или конструкции, а учет всей иерархии.

Речь идет про разные языки программирования, тот же Java и JS и TS, или же C/C++ и Rust. Нет смысла затачивать под один фреймворк.

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

Кол-во специализированных датасетов остается тем же, мы убираем мусор (в плане данной предметной области). Это похоже на то, что вы изучаете Python, и при этом еще учите рецепты от проф повара. Информация смешивается, когда вы начинаете учиться готовить питона по вьетнамски.

Вот что происходит со статистикой, когда мы собираем ее по разным цепям Маркова. Есть отдельные уникальные группы, частотность которых уникальная. А есть вырожденные группы, у которых частотность появления одинаковая. Проблема одинаковой частотности - одинаковая вероятность.

Если мы берем одну предметную область например Java, то размеры групп с одинаковой частотой будут меньше. Это меньше неопределенности. Но если мы добавим сюда JavaScript, то кол-во элементов в группах с одинаковой частотой будет расти, потому что наложиться и в JavaScript и в Java некоторая динамика переходов (цепи Маркова) встречается одинаковое кол-во раз (как не парадоксально).

В современных LLM это решается через Dropout, когда мы вносим случайный шум и смещает это распределение. Теперь значения могут немного отличаться и модель знает какое выбирать.

Это приводит к другой проблеме. Теперь у нас есть две траектории построения цепи Маркова с близкими вероятностями разделенные на небольшую случайную величину. В итоге на выходе в logits у нас может оказаться два или более схожих по вероятности значения, например 0.1 и 0.104 и 0.99997 от разных языков Java и JavaScript, потому что мы сдвинули их dropout. Но мы используем top-p или top-k, и это значит что все эти значения попадают у нас в выбор случайного следующего токена.

Если мы убираем из датасета мусор (по мусором я имею ввиду, то что не относится к предметной области модели) и при этом уменьшаем размер модели, то ни какой потери информации нет. Наоборот, модель теперь лучше улавливает связи. Потому что у нее теперь на выходе не будет logits 0.1 и 0.104 и 0.99997 от разных языков программирования схожих по синтаксису. У модели останется только те токены, которые она видела в рамках одного языка.

Да, если мы попробуем обучить огромную LLM только на Python, то вероятно данных не хватит для огромных моделей и она будет недоучена и часто генерировать галлюцинации. Но проблемы с данными при обучении языкам программирования сейчас как раз нет, так как процесс расширения данных сводится к тому, что при RL обучении, сам компилятор является учителем и выдает, что не правильно и мы обучаем только тогда все хорошо (генерируются множество вариантов и выбирается лучший).

Спасибо почитал, да вижу что в ViT это убрало проблему больших значений в классическом Attention при большом кол-ве блоков.

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

Swin Transformer V2: Softmax(τ*cos(Q,K)​+B)V , τ - температура

CosScale / Scaled Cosine Attention: β(i,j) ​= Exp(α*cos(θ(i, j)​)) / Sum(Exp(α*cos(θ(i, l)​))) , α температура

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

Можете объяснить свой ответ? Как RL решает данную проблему? Если речь про файтюнинг, то это и есть специализированные модели.

Я привел аргумент, почему MoE не даёт такую специализацию, а softmax может привести к ошибкам на близко вероятных токнах.

Но я могу ошибаться, поэтому будет интересно узнать, почему этого не возникает и как RL решает данную проблему.

Не готов объяснять разницу, если вы не попытались понять что вам дали.

Если вы говорите, что описанный вами подход рабочий и есть исследования на эту тему и показания эффективности, то это следовало привести в статье. Сейчас это выглядит как гипотеза, которую вы описали, но не обучили модель чтобы показать разницу и не привели исследования других, где показана разница.

Буду рад ошибаться, и с полостью почитаю эти исследования.

Я показал там сравнение, где обучил такую же llm того же размера на тех же данных. Там это есть и результат виден. Там дело не только в связях, там другой токенизатор, который не BPE или другой частотный я там токенизатор построен на цепях Маркова. Что касается связей, то я провел вам исследования. Я пока не понимаю, что делает вас слой, чему модель не может обучиться через уже имеющиеся слои.

Вам следует в пользу своих аргументов приводит обучение. Показать, вот я обучил llm с этим слоем и без него. Данные одинаковые, вот кривая обучения я вот результат. Я буду рад, если вы сделаете такое обучение покажите разницу.

Речь не о том что смогут на нашем языке. Вы пробовали использовать большие языковые модели для сложных SQL запросов? Они постоянно там ошибаются.

Потому что когда у вас система обобщила, что в конце select идёт одна конструкция и другая для разных диалектов, то их вероятности становяться очень близкими. Прибавляем к этому top-p/top-k на выходе при выборе случайного токена, и вот уже система легко выбрала другой диалект и пытается править его в случае ошибки.

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

Причина в softmax. У вас например после одинакового текста java и JavaScript модель выбирает следующий токен. И в вероятности попали две реализации в рамках одного и другого языка, потому что предыдущий текст усилил их вероятности у обоих (обобщил). И вы пишите код на Java, а в выборке top-p продолжение для JavaScript. И вот ещё она легко ошиблась.

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

Речь не про язык (человеческий), а про язык программирования. Если модель много обобщала, то она напишет кучу всего и не словесном языке. Да вероятно даже может решить задачу, а может и нет, так как длинный текст создал кучу шума и привел к потере деталей.

Не совсем так. Если мы посмотрим не на название MoE, а на ее реализацию, то разница есть.

Что делает MoE? Она разбивает выходной сигнал после голов на K участков. Если сильнее участок 1, то используется FFN1, если сильнее участок 2, то используется FFN2.

Что это значит? Возьмём SQL. В нем активизируется участок 1 для SQL при чем и для ms sql и для oracle sql. Система не вызовет эксперта 2. Они оба будут сидеть на участке 1.

В реальности MoE это не совсем про экспертов, это решение проблемы одного большого FFN, когда мы делим его на участки и таким образом повышаем точность (могли бы взять огромный FFN, но памяти не хватит).

То есть если мы обучаем Java и JavaScript, то это не значит что будут задействованы 2 разных участка (эксперта). Наоборот, с высокой долей вероятности, что грамматический синтаксис этих языков приведет их к одному и тому участку (эксперту) на выходе.

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

Подобное решается только через специализированные модели. Где и токенизатор заточен под язык, и головы находят соответствующие разные связи и эксперты работают в рамках одного языка, улучшая точность прогноза.

Да, если мы говорим например о языках программирования и термоядерной физике, то с большой долей вероятности головы дадут разное распределение с максимумами в сильно разных участках dim. Но когда речь идёт об одной области, то MoE тут не сильно поможет.

Выскажу свое мнение. На мой взгляд следующим шагом будут не большие языковые модели, а множество мелких специализированных языковых моделей, написанных под каждый язык программирования и свою область.

Это должно увеличить качество. Дело в том, что чем больше мы скармливаеи данных, тем сильнее модель их обобщает. Это приводит к тому, что некоторые связи становяться почти равновероятны и и могу пересекаться из разных языков. Когда накопление ошибки может привести к тому, что модель пойдет по одному маршруту.

Приведу пример, в одном языке есть фреймворк с какими-то параметрами и в другом с таким же названием. И при сильном обобщении softmax становится более плоским. Небольшая ошибка в точности (у моделей часто делают катетеризацию и уменьшают точность ради скорости и памяти), приводит к тому, что маленькое отклонение EPS приводит к смещению вероятности. Или хуже того, случайный выбор согласно температуре захватывает их.

В итоге, модель пишет вызов функция, который она например видела на sql oracle и сейчас пытается применить к sql ms sql. Такое встречается часто уже сейчас.

Более маленькие специализированные языковые модели, заточены под свою область. Они более "уверенно" и точно выдают результат, так как у них нет такой модели. В их датасете не было других языков разработки, поэтому их вероятности в softmax будут более ярко выражены.

Описанная вами проблема решается с помощью множества residual связей. В последних исследованиях, как раз пришли к этому решению.

https://t.me/greenruff/2497

В этом случае обучение более качественное, а loss остаётся стабильным. Так как в этом случае каждый блок вносит свой вклад во все последующие и модели не нужно пытаться одновременно обеспечить этот проброс на уровне одного FFN и одновременно делать обобщение данных.

Как уже сказал выше, сейчас такие же результаты получили другие исследователи.

"Простыня" была специально адаптирована, чтобы ее могла понимать LLM (и другим было проще скармливать). Я дал вам ссылку, потому что ваши ответы выше написаны нейронкоц, поэтому предложил скормить ей материал.

Что касается loss, то прежде чем делать выводы, надо было увидеть что это обучения длилось 1 день. Где целью являлось подтвердить математическую модель.

Я предлагаю подтвердить на обучении модели свои утверждения. Я провел вам не только мат модель, но и ее реализацию и показатели обучения.

В коде нет QV и прочего, вы посмотрели на развитие архитектуры, когда постепенно она приближалась к правильной.

Я же говорю, про последнюю реализацию HierarchicalMHA_20, которая есть в обоих ссылках. В ней нет классического attention и голов.

Повторюсь, целью было показать, что совершенно другая форма реализации, совсем не похожая на attention работает согласно математической модели. Как уже сказал, обучение было 1 день и модель уже строит слова, ставит скобки, пытается делать связи.

В вашем случаев, вам просто следует показать:

  • Математически, что ваши предположения на чем то основаны

  • Обучить небольшую модель, хотя бы сутки или несколько дней с вашим решением и без него и показать, что результат формирования связей (не loss) действительно отличается.

Тогда вопросы отпадут сами собой. А то сейчас вы отвечаете с помощью сетки, не привели примеры что это работает. Если говорить корректно, вы выдвинули гипотезу, которую надо либо подтвердить или опровергнуть.

Вы пытаетесь отвечать через LLM. Я предлагаю вам сделать иначе, чтобы лучше понять что такое Attention, скормить это вашей LLM (вопрос-ответ можно не скармливать, это уточнения которые были у людей по коду, я вынес как отдельные пояснения):

https://disk.yandex.ru/d/UNyaCbYUm-jpWw

Я привел вам ссылки и на код, и на текст и визуально показал.

Предлагаю скормить их вашей модели в том порядке как это указано (это специально было адаптировано для LLM). И после этого, предложить ей дать оценку, вашему предположению (не пытаясь ее переубедить).

Формально это частично объясняет то, о чем я написал выше https://t.me/greenruff/2596
Формально это частично объясняет то, о чем я написал выше https://t.me/greenruff/2596

Для большей строгости можно даже скормить ей код архитектуры, так как в ней Attention реализован как я описал выше (модель отлично обучается):

https://disk.yandex.ru/d/eJg7Nc__qIeQ9A

Без этого контекста, рассуждения мало эффективны. Так как выше математически доказанная модель, которая так же была проверена на примере архитектурного кода.

https://t.me/greenruff/2499

Что касается регулирования температуры, то как раз я имел ввиду, что вам нужно регулировать температуру внутри Attention, как это показано на рисунке выше. Тогда модель сама решает, когда ей нужно увеличить ее, а когда понизить внутри Atention.

Нет, "важность" это частотность, она же вероятность. Ломая эту информацию, мы ломаем распределение и создаем неопределенность, это означает что некоторые вещи становятся равно вероятными, хотя это не так. не должна буква "ы" быть чаще буквы "а", так и эти вектора. Это "энергия" в информационном плане (абстрактном), информация о том, сколько система тратить на переход от токена А к токену В, то есть ее затраты. И задача модели научиться найти баланс между затратами и сложностью многообразием. Вы убивая "затраты", оставляете только сложность многообразие и тем самым увеличиваете энтропию системы, а это всегда не определенность. Это ближе к тому, что мы сделаем температуру высокой, и часть вероятностей будут одинаковой важности.

Q*K это фактически I(P1, P2) взаимная информация между случайными величинами, которую можно представить как две компоненты PMMI матрицу (связи, о которых вы говорите) и "энергия" (затраты на переход между связями). Когда вы нормализуете их, то теряете информацию об этих переходах. Это как если бы для вас не было разницы, произносить А или О, потому что вы приравняли их "энергетические" затраты на открывание рта.

Информация о частотности при сравнении связей, не менее важна чем и сами связи, потому что стоимость этих переходов меньше и они чаще.

Поэтому описанная проблема это не QK, можете увеличить кол-во других данных. Или изменить архитектуру, чтобы температура была динамической, тогда в одних случаях модель будет искать баланс между затратами системы (частотность) и ее многообразием (энтропией). Вы сейчас наоборот пытаетесь жестко сделать второй вариант, а задача как раз баланс, дать системе самой определять на сколько важны связи эмбеддингов и на сколько важна частотность эмбеддингов.

Добавив нормализацию в QK, вы таким образом поломали эмбеддинги и их смысл. Они содержат информацию не только о сходстве, но и частотности. Когда вы нормализовали их перед QV, то фактически лишили информации о важности информации (какая встречается чаще, а какая реже).

Сам эмбеддинг это не только сходство между токена. Норма эмбеддингов содержит информацию о частоте, но когда вы делаете нормализацию конкретного сигнала, то теряет большую часть информации. Было например |-15.45| как частота слова "кот", которая встречалась 1000 раз и |4.3| как частота слова "собака" которая встречалась 100 раз. Вы в данном случае полностью ломаете логику, так как после нормализации Q и K они могут совпасть по норме, станут например оба 0.7 и модель уже больше не может понять, какое из них важнее.

Я выкладывал обучаемую архитектуру на которой эту логику можно проследить более отчетливо в коде.

https://t.me/greenruff/2596

Она ближе к EMB (Energy-Based Models, или Энергетические модели). Там как раз мы извлекает из эмбеддингов разные составляющие. Мы даже можем разделить эмбеддинги на составляющие, которые будут храниться и обучаться отдельно (вместо векторов).

От МТС как то ждешь больше профессионализма в статьях. которые пишут. Я бы сказал, что материал описанный в статье сильно устарел. Это было актуально в 2021-2022 году, когда были разработаны Flamingo (DeepMind) и Perceiver IO (DeepMind). Сейчас более продвинутыми все таки является V-Jepa, и более свежая этого года Le-Jepa.

То что описано в статье не стоит использовать, это крайне неэффективные и устаревшие решения. Тем более в контексте "Будущее роботизированных манипуляций". У вас отставание лет на 4-5. Приделать агентов к старым неэффективным подходам не решает проблем.

В качестве истории развития, я бы рекомендовал вот это видео (от прошлого века, до сегодняшнего времени). И не забивать себе голову мусором про VLM в рамках данной статьи. Это только пойдет во вред.

Если будет нужно использовать в других статьях исходники выше, то выложил тут:

https://disk.yandex.ru/d/J1bS853ToIpgSg

Я пока в течении недели разбирался с теоремами и архитектурой и кодом, частично через сетки, частично в фотошопе сделал данные изображения, можете если нужно что-то вырезать из них. Это облегчит задачу, так как сетки плохо генерируют такие картинки (пробовал в разных, даже с учетом подробного описания, выходило в большей части мусор), поэтому пришлось делать сначала крупные картинки (по частям генерировать фрагменты) и собирать их в фотошопе (хотел сначала в комментарии приложит именно их), но потом решил что это будет не очень понятно.

Поэтому замечательно если их переработать и написать наглядно не доказательную часть, а визуально объясняющую. Я их делал исходя из того, как их понял архитектуру с кодом и теоремы.

И чтобы добавить веса, стоит все таки провести аналогию с OpenMythos, чтобы было проще понять общую идею.

А предложенное архитектурное решение и доказательства теорем - интересные.

Потратил около недели, чтобы вникнуть в теоремы, код и статьи. Мне кажется, надо было тут делать упор не на доказательства, а в целом и затем просто ссылку на доказательства теорем. Архитектура, теоремы и подход в целом интересный и надо было его преподнести иначе. И заодно надо было сравнить со схожими архитектурами, так как предложенная в общем смысле перекликается решением той же проблемы, что и OpenMythos.

Чтобы те, кто читали статью лучше поняли, что автор предложил, попробую описать ниже. Возможно, я где то ошибся и меня поправят, но из того что я изучил в теоремах, условиях и так далее, то это выглядит так:

Предположения при доказательствах

Предположения (ограничения) в теоретическом анализе архитектуры Sessa. Эти предположения вводятся, чтобы доказать теоремы о памяти, затухании и избирательном извлечении информации.

Общие предположения при доказательстве теорем
Общие предположения при доказательстве теорем

Во многих местах предполагается, что s=f+Bs где:

f — фиксированная функция входа

B — линейный оператор

это означает, что система считается линейной, нет сложных нелинейных взаимодействий, хотя в реальности B зависит от x и есть нелинейности (tanh, softmax), поэтому доказательства следует рассматривать как идеализацию динамики.

Так же вводится ограничение на γ: 0 < γmax<1. Это нужно чтобы (I−B)^−1 существовала (то есть система была устойчивой). Влияние прошлого не должно «взорваться», спектральный радиус B<1, иначе система может стать неустойчивой и память стремится к бесконечности.

Предположение о структуре attention
Предположение о структуре attention

Для доказательств обычно предполагается, что attention веса регулярные, не вырождаются и имеют определённую гладкость. В частности A(t,i)∼smooth function of (t−i). То есть веса не случайные и есть структура по расстоянию. Это ломается, если attention в реальности спайковый, шумный или нестабильный.

Вводится предположение, что у матрицы B есть собственные значения, плотно расположенные около 1. Формально спектральный радиус близок к 1 и плотность собственных значений не дискретная. Это означает, что система «почти не затухает».

Это важное предположение. Если eigenvalues далеко от 1 → экспоненциальное затухание, eigenvalues около 1 → медленное (power-law).

Так же, при доказательствах часто полагается, что статистические свойства не зависят от позиции и система «однородна по времени». Это упрощает анализ: B(t,i)≈B(t−i).

Так же делается предположение о бесконечной длине последовательности. Для вывода асимптотики: ℓ→∞, анализируется поведение на очень больших расстояниях. Поэтому надо учитывать это, когда контекст ограничен (например, 4k–1M токенов).

Так же неявно предполагается, что (I−B) обратима. Это требует отсутствия сингулярности и собственных значений = 1, иначе система не имеет решения или имеет бесконечно много решений.

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

Если система ведёт себя как в предположениях, то появляется power-law память. Поэтому следует интерпретировать это как возможный режим у модели, в котором она принципиально сильнее.

Теоремы Sessa: математика памяти и внимание.

Sessa – это рекуррентная система, в которой внимание (attention) встроено в обратную связь. Теоремы показывают, что такая система обладает сильной и управляемой долговременной памятью.

Теоремы доказываются не для полной нейросети из кода, а для упрощённой математической модели. В них доказываются свойства «ядра механизма», а не всей архитектуры.

В контексте статьи каузальность это когда состояние s(t) зависит только от прошлых индексов i<t, то есть B(t,i)=0 для i≥t. То есть будущее не влияет на прошлое (модель идёт слева направо). Это даёт треугольную структуру матрицы B.

Матрица B имеет вид треугольной структуры, это означает что зависимости идут только “назад” и является эквивалентом DAG (ориентированный ациклический граф) во времени.

Такая матрица позволяет решать систему последовательно s1​→s2​→s3​→... чьл гарантирует отсутствие бесконечных циклов и корректность решения.

В линейной алгебре спектр — это набор собственных значений λ(i). В данной работе он означает насколько сильная обратная связь. Главным условием является ρ(B)<1, где ρ(B) — спектральный радиус (максимальное |λ|). В этом смысле:

если ∣λ∣<1 → система устойчива

если ∣λ∣≈1 → долгоживущая память

если ∣λ∣>1 → взрыв (нестабильность)

Так же теоремы требуют, что спектр не выходит за пределы единичного круга, чтобы можно было разложить решение в ряд и тогда память равна сумме влияний на всех глубинах.

Если спектр B плотно расположен около 1 и есть много собственных значений ≈ 1, тогда B(k)∼k^(−β), то несть много медленно затухающих мод, которые суммируются и дают степенной закон. Это главный результат, который говорит, что память в этом случае не экспоненциальная, а степенная.

Так же есть один важный технический момент. Attention в B должен быть нормирован (softmax), ограничен и не давать взрывных значений. Это означает ограниченность ∣B(t,i)∣≤γmax<1, стабильность так как сумма весов не растёт и локальное нормировка (влияние распределено). Это нужно, чтобы гарантировать ρ(B)<1 что дает сходимость ряда и корректность решения.

Теорема 1 про существование и устойчивость памяти доказывает, что система (I−B)s=f корректно определена и имеет единственное решение.

Теорема 2 про power-law память показывает, что влияние прошлого затухает как O(ℓ^−β), 0<β<1.

Теорема 3 про селективное извлечение показывает, что возможны режимы, где влияние не стремится к 0 при ℓ→∞.

В доказательствах видно, что сначала речь идет доказательство из каузальности → следует треугольность. Затем из треугольности, что система решается однозначно.

Затем идет разложение и оценка оценка B^k, которая анализирует как быстро уменьшается B(k).

Следом используя свойства спектра, выводится скорость затухания и получается influence∼ℓ^−β.

Теорема про selective retrieval заключается в том, что существуют такие B, где некоторые собственные значения ≈ 1 и соответствующие компоненты не затухают. Это означает, что модель может держать важную информацию бесконечно долго.

В работе делается предположения, что attention контролируемый, ограниченный γ и о структуре спектра. Это значит, что результаты не универсальны для любых весов, но достижимы конструктивно.

В этом случае из теорем следует, что память может быть степенной → лучше long-range, возможна выборочная память→ selective retrieval, модель устойчиво определена → нет взрывов и Attention становится частью динамики.

Таким образом теоремы показывают, что если сделать память как линейную систему с attention-ядром и правильно ограничить её спектр, то можно получить качественно новый режим памяти.

Теоремы показывают, что Sessa - это устойчивая казуальная динамическая система с attention-оператором, которая может реализовать сильную, долговременную память и селективную память.

Архитектура: Sessa (Selective State Space Attention)

Архитектура строит память, как устойчивое состояние системы с обратной связью, внутри которого работает attention.

В отличие от Transformer, где attention используется как одношаговый механизм чтения контекста, Sessa встраивает attention внутрь рекуррентной системы обратной связи. Это превращает вычисление представления из простого взвешенного суммирования в задачу нахождения самосогласованного состояния, где токены многократно влияют друг на друга через attention. В результате память не просто извлекается, а формируется как устойчивое состояние динамической системы.

В Transformer токены взаимодействуют один раз, а влияние прямое и плоское. Вроде: A → D

В Sessaтокены взаимодействуют много раз через цепочки, влияние распространяется как в сети, как:

A → B → C → D

A → C → D

A → D

...

Это важно, так как в Transformer влияние токенов быстро размывается, а в Sessa оно накапливается, распространяется и дольше сохраняется. Таким образом превращает attention из операции чтения в динамическую систему памяти с обратной связью.

Вместо того чтобы один раз посмотреть в прошлое (как в Transformer), модель многократно пересчитывает память, позволяя токенам влиять друг на друга через цепочки attention-связей.

В Transformer каждый токен влияет на результат один раз на слой, а глубина = число итераций взаимодействия.

В Sessa взаимодействия происходят многократно до сходимости (через inverse / series).

Ключевой момент: Bⁿ (это то, чего нет в Transformer)

s=f+fB+fB2+fB3...

здесь B это attention-граф, B2 влияние через 2 шага, Bk влияние через k переходов. В Transformer есть только B (один шаг), а глубина ≈ количество шагов. В Sessa сразу есть все Bk.

В Transformer каждый токен один раз смотрит на прошлые токены и получает взвешенную сумму.

В Sessa каждый токен сначала извлекает информацию, а затем эта информация проходит через систему взаимных влияний между всеми предыдущими состояниями.

Power-law в Sessa возникает потому, что рекурсивная attention-система с обратной связью создаёт спектр памяти без характерного масштаба, что математически эквивалентно смеси бесконечного числа экспоненциальных затуханий — а такая смесь в критическом режиме всегда даёт степенной закон.

В обычных моделях информация либо размывается (Transformer), либо затухает экспоненциально (RNN/SSM), а в Sessa информация убывает медленно → остаётся значимой даже через большое время. Это значит, что модель лучше помнит дальний контекст.

Transformer — читает прошлое,

SSM — сжимает прошлое,

Sessa — пересобирает прошлое через систему взаимных влияний.

Вместо одного чтения истории (как в Transformer), строится память как устойчивое состояние системы, где внимание участвует в прямой передаче информации и в обратной связи. Это создает много путей влияния прошлого на будущее.

Сравнение архитектур: OpenMythos и Sessa

Два разных подхода к глубокой обработке контекста.

OpenMythos - это гипотеза архитектуры типа Recurrent-Depth Transformer (RDT).

Основная идея OpenMythos

Вместо: Layer1 → Layer2 → ... → Layer100

используется: Prelude → Recurrent Block (loop × N) → Coda

один и тот же блок повторяется много раз.

Формально: h(t+1) =Ah(t)+Be+Transformer(h(t), e), где:

h(t) - внутреннее состояние (итерация мысли)

e - вход (постоянно подмешивается)

loop увеличивает глубину мышления.

Таким образом модель думает итеративно, а не за один проход как классический Transformer.

Что делает Sessa: s= f *(I−B)^−1

или: state = attention + feedback(state)

В отличии от OpenMythos, это не loop по времени, а решение фикс-точки.

Обе архитектуры делают одно и то же на концептуальном уровне: мышление — это не один проход, а процесс. Таким образом обе модели отходят от «one-pass computation» к динамическому процессу.

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

OpenMythos → h(k+1)​=F(h(k)​,x) - это итеративный процесс с явным loop. Мышление в глубине сети, повторяются слои и Transformer внутри loop, что формирует глубину по времени.

Думает через последовательность шагов: h0 → h1 → h2 → h3 ...

Sessa → s=f+Bs - это сразу решается как s=f*(I−B)^−1

Мышление внутри памяти, тут attention внутри feedback и состояние само себя перерабатывает, что формирует глубину внутри состояния.

Думает через суперпозицию всех путей сразу: s = f + Bf + B²f + B³f + ...

Обе архитектуры связаны через динамические системы.

OpenMythos h(k+1)=F(h(k)) → это дискретная динамическая система

Sessa s=F(s) → это фикс-точка динамики

Таким образом Sessa — это предельный случай OpenMythos, когда: H(k+1) → s при k→∞.

Иначе говоря, Sessa ≈ OpenMythos с бесконечным числом итераций.

Информация

В рейтинге
4 019-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность