У них же нет обучения с нуля. В свое время на заборе была статья от Сбера, где была ссылка на их репозиторий с моделью. Как раз после того как deepseek выложил в opensource. Они по-моему писали что взяли ее и дообучали. Я смотрел код их модели на том гмтхабе, там косметические изменения были. Так что, эти крупные модели Сбера не обучены с нуля, а используют в своей основе Deepseek.
Проблема галлюцинаций моделей за последние годы так и не была решена. Однако практический опыт (включение поиска в ChatGPT) показывает, что проблема почти полностью исчезает и взаимодействие с моделью выходит на принципиально иной уровень надежности.
Проблема ни куда не исчезает, она ещё и множится и усугубляется. Возможно для простых вещей, вроде рецепт приготовления супа все нормально, но более сложных - полнейшее фиаско и галлюцинации.
Это отлично видно на математике, где важна точность и логика. Через поиск она находит какую-то работу, берет из нее фрагмент, который косвенно связан. Переформулирует на свое усмотрение и выдает, что "согласно исследованиям/теореме, мы получаем". Смотришь, а там другое, да слова совпадают и даже есть аналогия, но формулы другие, речь о другом. И такое постоянно.
А режим исследования в ChatGPT, вы пробовали смотреть на что он опирается? Там можно посмотреть весь список материалов. Так вот там легко вам может попасться срач на форуме мамочки.ру (условно), где они обсуждали мозги. А ты попросил исследований конкретной темы по неокортексу. Так как модель не может отличить значимость мамочки.ру и сайт с публикацией исследований, особенно когда они рядом в выводе.
Нейронки в текущей архитектуре как были подвержены галлюцинациям, так и будут. Так как проблема не в доступе к информации, не в рассуждениях. Это проблема самой архитектуры, ее ограничений.
Чтобы не вводить в заблуждение, это скорее расширение. Так как в основе также трансформеры ограниченные контекстным окном. То есть временной рад ограничен временным окном трансформера.
Таких кросс моделей сейчас делают много. Китайцы как дополнительные модальности пихают все в своих работах, от разных форматов документов до видео, картинок и так далее.
По сути, в данной работе временной ряд кодируют патчами, как видео. И вставляют токены "временного ряда" с токенами текста.
Точно так же делают когда объединяют модальности видео и текста, картинок и текста и другие.
Так что вещь ограниченная и очень специфичная при такой реализации
Плохо у них с ними. Не раз пробовал с помощью них доказывать теоремы. Постоянно уносит не туда или в рекурсию. Например, асимптотике начинают вводить константы, потом ругаются, что константы надо расписать их значения, где из этого снова говорят что для новых значений надо константы и надо... в итоге начинают выкидывать важные детали.
Другой пример, так как они не понимают, а просто пытаются обобщить, то легко могут проигнорировать прежние теоремы и начинают рассматривать случаи, которые не вписываются в теоремы. То есть самостоятельно не способны обобщить и понять, что какие-то условия ограничены и эти ограничения понятны обычному человеку, но не LLM и она начинает пытаться натянуть сову на глобус. То есть ей надо разжевать все, подобно описать все, почему и откуда, ткнуть прям, и тогда она "решит". Хотя несколькими сообщениями выше все было расписано. Просто механизм внимания это проигнорировал. То есть она хорошо может разложить формулу и объединить (хотя тут очень очень часто косячит тоже).
Но вот в оформлении теорем - они очень удобны, так как когда все расписано, они дополнят все дополнительными замечаниями, которые писать самостоятельно отнимает время и силы.
Так "решат" они любую задачу. Но только решение будет бредом, если досконально не прописать формулировку и план доказательства. Но по сути это и есть решение задачи, самая сложная часть. Если доказательство вытекает из описанного плана решения и точных формулировок.
И это я еще молчу, про то что они могут сослаться на "работы", которых либо нет, либо в которых говорится о другом.
Поэтому если оставить их доказывать самостоятельно, они докажут что у них просят и что земля плоская и солнце это обезьяна. Только по факту это будет бред полный.
Потратил целый вечер, чтобы разобраться. Лень расписывать. Но, слишком громкие заголовки, в реальности не увидел там чего-то принципиально нового.
1) дальние зависимостей у них под вопросом. В статье они говорят, что BDH-GPU содержит “linear attention” как один из механизмов.
Они утверждают, что макро-механизмы внимания трансформера могут быть “аппроксимированы” через их локальные динамики с состоянием, особенно когда активность и связи ведут себя определённо. Не верю - это не доказано. Локально да, но для иерархических данных - нет.
В разделе "6.1 Macro-expressiveness of attention in BDH-GPU" они обсуждают, как attention может быть выражено в BDH-GPU и как "state capacity vs distinction capacity" работает. Они также упоминают, что BDH-GPU оперирует в "высоком измерении нейронов" и что state (состояние) хранятся на нейронах, а не на связях, что позволяет более "глобальное" внимание скрыто реализовываться.
Но главное, что они говорят: теория говорит, что макро-внимание может быть "синтезировано" из комбинации линейного внимания + локальной динамики + "скрытого состояния", а не что они прямо реализуют классический softmax attention на весь контекст.
Это все вызывает вопросы, так как их мат аппарат приведен не до конца (подтверждений не нашел), а исходники дают еще меньше информации. Нет явной иерархической структуры внимания (например, одни слои — локальные, другие — глобальные) — внимание однородно по всем слоям, но может маскироваться / модулироваться локально через xy_sparse и через ReLU.
2) скрытые состояния есть у SSM. То, что модель хранит скрытое состояние, реагирует на входы при помощи него, обновляет его - это не новшество. Структурированные SSM (State-Space Models), RNN с памятью, LSTM, управляемые динамикой модели уже делают это. BDH утверждает, что его скрытые состояния "локализованы на нейрон-нейронных парах" (синапсы), дают интерпретируемость, и что они поддерживают "локальные графовые правила". Но в коде этого нет, чтобы такие "графовые правила" были явно реализованы.
3) В коде нет динамического изменения связей (пластичности) во время forward. Одна из ключевых обещанных идей - пластичность, Hebbian обучение во время вывода, динамическое изменение "синапсов" на основе активаций - в коде этого нет. Это означает, что реальное поведение модели ближе к “фиксированным параметрам + некоторым маскирующим процедурам” чем к активной сети, которая перестраивается на лету (как их гипотеза).
4) Про тот же residual, не нашёл доказательств, что в BDH каждый токен в истории может перескакивать напрямую через "top-down" путь без прохождения через цепочки нейронов или промежуточного состояния. То есть идея "перескока" напрямую (skip) — не явно.
5) Масштабируемость: размер ρ - матрица n х d или n х n может быть дорогим, особенно если n велико. Здесь ρ скрытое состояние ~ "синапсы", n - число "нейронов", модель работает в пространстве размерности n. Скрытое состояние модели (на шаг времени / слой) представляется матрицей (или набором матриц) ρ. Не понятно, дает ли это преимущество или наоборот раздувает размер. Статья не позволяет оценить.
То есть код выглядит ближе к модификации архитектуры Transformer, где есть attention + MLP + residual, но с добавлением sparse@ шагами и перемножениями для модуляции.
И там много всего еще. Потратив кучу времени, нашел лишь некоторые доказательства их реализации, но не доказательства, что это будет работать как обещают. Мат аппарат либо не весь выложен либо не доказывает, то что обещают.
Я не понимаю, чем их текущая реализация сейчас лучше гибридных SSM с локальным вниманием и скрытыми состояниями.
Ну и про биологию неокортекса - тут вообще без комментариев.
Либо я не понял вас. Вы просто выше сравнивали LLM и трансформеры (их архитектуру в основе LLM) с перцептрон, говоря о том что те не туда ушли. Или я не так понял.
Чтобы не было путаницы, я говорю о том, что классический RNN это аппроксимация марковской цепи. Под классическим я подразумевая MLP с рекуррентной связью.
Я не говорю, что через MLP нельзя выстроить иерархию. Тот же трансформер - это архитектурное решение MLP. FFN - это MLP практически. Головы - это множество MLP. И все отличие тут - это механизм внимания, который и описывает иерархию связей. То есть разорванные марковские цепи. Каждый блок трансформера - выделяет отдельные уровни структуры (пусть будут признаки). Головы - находят локальные максимумы на данном уровне, это локальные расстояния, где связи наиболее сильные (как на примере картинки что я приводил, где идут волны).
Например, MoE легко делается через множество MLP, где множество Softmax на выходе (как было изображено выше) и формируют иерархическую сетку.
SSM делает тоже самое, но классическая реализация не имеет иерархии. Но формально он аппроксимирует тоже, что и MLP только немного иначе. Но у него есть преимущество, он может динамически подстраиваться под данные, так как описывает периодические функции (тот же linOSS как расширение SSM описывает еще и затухание).
Марковские цепи имеют историю - информация о ней зашита в соседнем элементе. Да, разложить обратно из цепочки в элементы мы не можем. В марковской сети от последнего элемента зависит предсказание следующего. Это и есть RNN.
Разрыв необходим. Иерархия как раз позволяет связать в разрывы. В мозге например в неокортексе это называет top-down связи, когда верхние уровни иерархии, модулируют предыдущие области (нижние уровни иерархии).
разрыв происходит из за бифуркации, когда вероятность для ограниченного набора "словаря" (не путать со словарем букв, тут это набор уникальных значений) приводит к разрыву марковской цепи. Единственный способ сохранить информацию между цепочками - это их связь через верхний уровень.
что касается backprop, то прогоните эти теоремы через сетку. Она может быть лучше объяснит как backprop связан с этим. Там она как раз и получается из теорем R.4, но для нее нужно прогнать остальные теоремы.
Вы правы так и есть, это и есть марковские цепи. Но, они иерархические. И их иерархия закодирована в механизме внимания, который связывает дальние зависимости на расстоянии D. Как раз, то что и показывает собранная статистика выше. Без этого, мы получаем просто классический RNN с быстрых затуханием марковской цепи без иерархии. То о чем вы сейчас говорите это классический RNN. Но без иерархии, марковская цепь быстро исчезает, ее вероятность становиться очень-очень маленькой. Система нашла выход из этого, через разрывы марковской цепи, когда они не различимы с равномерным распределением. Но чтобы не потерять связи между разрывами, они связаны через иерархию, сегмент верхнего уровня. Тут не ни какой магии.
Это не число рекуррентных шагов, это именно иерархия. Одним слоем он не описывает иерархию. Хорошо, напишите новую статью, так как пока что я не вижу возможности с помощью него описывать динамические иерархические структуры, которые кодируют марковские цепи на каждом уровни иерархии. Это значит, что они должны оказывать влияние не только не предыдущий элемент на текущем уровне цепи, но и на соседний элемент на нижнем уровне цепи (то есть на целый сегмент). И при этом делать эту аппроксимацию эффективно, а не в лоб как большая матрица статистики с прямыми связями (слишком гигантские матрицы получаются).
Они показывают, что вероятности для текста имеют иерхаическую структуру
Марковская цепь: мама = p(м) -> p(а|м)-> p(м|а)-> p(а|м), то есть зависимости на расстоянии d=1 между соседями. Это перцептрон может уловить.
Но в реальности, связи образуют иерархию. Это приводит к тому, что d=1 а может быть равен d=4 (например последняя А связана сильнее с первой М, а не с соседней третей М). Именно это и отображает график. Собрана статистика по частоте пар на разном расстоянии. Например первые пары там пробел-пробел, пробел-о и так далее. И видно как меняется их частотность с расстоянием, когда между ними есть другие символы. Это и есть отражение иерархии через верхние уровни, которые позволяют связывать дальние элементы. Перцептрон не может описывать иерархии, с помощью него мы можем получить через аппроксимацию классическую марковскую цепь.
Адаптировал доказательства под нейронные сети, чтобы можно было прогнать через них и проверить. Теорема R.1 связывает с Лагранжа, а R.4 связывает в backpropagation.
Затем на этом строятся теоремы о бифуркации (моменте разрыва марковской цепи из-за неопределенности)
Супер, вы подтвердили мои слова, что на выходе получается полный мусор.
Сделай даже проще. Вот код SSM, который нужно было визуализировать и первый запрос, поле которого была множество попыток детального описания и рисования:
Опиши, что нарисовать, чтобы объяснить математический и физический принцип LinOSS_IM_Attn_Hysteresis? Чтобы не запутать человека математическими формулами, а объяснить на ней общие принципы. Я думаю, правильно будет не рисовать формулу и математические операции. А рисовать блоки с названиями и изображениями, которые отражают физические процессы реализуемые блоком.
class LinOSS_IM_Attn_Hysteresis(nn.Module):
"""
LinOSS_IM_Attn_Hysteresis: Linear Operator-based State Space Model with Implicit Integration,
Attention Modulation, and Hysteresis Dynamics.
--- ОБЩАЯ ИДЕЯ ---
Эта модель реализует линейную комплексную систему (SSM) с имплицитной интеграцией (implicit midpoint),
расширенную тремя компонентами:
1. **Механизм внимания (attention)** — модулирует вход через взвешивание по матрице внимания `M`.
2. **Гистерезис** — добавляет память предыдущих приращений и колебаний входного сигнала.
3. **Имплицитная интеграция** — устойчивая дискретизация дифференциальной системы с комплексным оператором A.
Результат — мощная и устойчивая архитектура для обработки длинных зависимостей,
обладающая способностью извлекать и временные колебания, и асимметричные отклонения.
--- МАТЕМАТИЧЕСКАЯ ФОРМУЛИРОВКА ---
Обозначения:
- `x_t ∈ ℝ^D`: входной вектор в момент времени t
- `M ∈ ℝ^{L×L}`: матрица внимания (например, Zipf-локальное внимание)
- `u_t`: оригинальный вход `x_t`
- `w_t`: модифицированный вход (взвешен по вниманию)
- `v_t`: итоговый вход для SSM (включает гистерезис)
- `y_t, z_t ∈ ℂ^m`: скрытые состояния
### Attention:
w(t) = Σ_j softmax(M(t,j)) * u(j)
v_mod = B_mod @ w(t)
### Гистерезис:
Δu(t) = u(t) - u(t-1)
Δ²u(t) = u(t) - 2u(t-1) + u(t-2)
h(t) = γ·h(t-1) + α·Δu(t) + β·Δ²u(t)
v_hyst = B_hyst @ h(t)
### Объединённый вход:
v(t) = B @ u(t) + v_mod + v_hyst
### Оператор A (комплексный, диагональный):
A = diag(λ_k + i·ω_k), где Re(λ_k) < 0
### Имплицитная интеграция (implicit midpoint):
y(t) = (y(t-1) + dt·z(t-1) + dt²·v(t)) / (1 + 0.5·dt²·A)
z(t) = (y(t) - y(t-1)) / dt
### Выход:
o(t) = C @ Re(y(t)) + D ⊙ u(t)
--- ОСОБЕННОСТИ И РЕАЛИЗАЦИЯ ---
- `A_log` и `A_im` задают комплексный оператор A = -softplus(A_log) + i·A_im
(обеспечивает устойчивость: Re(A) < 0).
- Используется softmax-альтернатива `ZipfLagrangeLocalActivation` для локального внимания.
- Гистерезис реализован как рекуррентное обобщение производных 1-го и 2-го порядка.
- Метод интеграции — implicit midpoint (устойчивый при больших dt).
- `C` — выходная проекция скрытых состояний, `D` — скип-коннект с входом.
- `log_dt` — обучаемый логарифм временного шага (в диапазоне [dt_min, dt_max]).
--- ПЛЮСЫ ---
- Обработка **длинных временных зависимостей** (через SSM).
- Устойчивость при больших шагах `dt` (через имплицитную схему).
- Захват **локальных резонансов и осцилляций** (через комплексный спектр A).
- Выделение **асимметричных паттернов и резких изменений** (через гистерезис).
- Улучшение **селективности и контекста** (через attention-модуляцию).
--- ОТЛИЧИЯ ОТ КЛАССИЧЕСКОГО SSM ---
| Компонент | Классический SSM | LinOSS_IM_Attn_Hysteresis |
|--------------------|----------------------------------|--------------------------------------------------|
| Оператор A | Вещественный | Комплексный, спектральный |
| Дискретизация | Явная (например, Euler) | Имплицитная (midpoint) |
| Внимание | Отсутствует | Взвешенный контекст через матрицу M |
| Гистерезис | Нет | Механизм памяти изменений сигнала |
| Выходной слой | Только скрытое состояние | Skip-соединение с входом через `D` |
--- ПРИМЕНЕНИЕ ---
Модель особенно эффективна для задач:
- моделирования последовательностей с медленной или гистеретической динамикой,
- обработки сигналов с фазовой структурой (например, речь, музыка),
- извлечения устойчивых и редких признаков в потоке (например, в видео/аудио).
"""
def __init__(self, d_model, d_state, dt_min=1e-3, dt_max=1e-1, modulation=True, dropout=0.1):
super().__init__()
self.d_model = d_model # Размерность входного сигнала (D)
self.d_state = d_state # Размерность скрытого состояния (m)
self.modulation = modulation
# --- Спектральный оператор A = diag(−λ + iω), λ > 0 для устойчивости ---
self.A_log = nn.Parameter(torch.rand(d_state)) # Реальная часть λ (логарифмирована и подавляется через softplus)
self.A_im = nn.Parameter(torch.randn(d_state)) # Мнимая часть ω
# --- Матрицы входа ---
self.B = nn.Parameter(torch.randn(d_state, d_model) / math.sqrt(d_model)) # Прямой вход B * u_t
if modulation:
self.B_mod = nn.Parameter(torch.randn(d_state, d_model) / math.sqrt(d_model)) # Модулированный вход B_mod * w_t
self.B_hyst = nn.Parameter(torch.randn(d_state, d_model) / math.sqrt(d_model)) # Вклад от гистерезиса
# --- Матрицы выхода ---
self.C = nn.Parameter(torch.randn(d_model, d_state) / math.sqrt(d_state)) # Проекция из скрытого состояния
self.D = nn.Parameter(torch.ones(d_model)) # Скип-коннект (u_t * D)
# --- Шаг интегрирования ---
self.log_dt = nn.Parameter(torch.empty(1)) # Обучаемый логарифм шага
self.log_dt.data.uniform_(math.log(dt_min), math.log(dt_max)) # Начальная инициализация
self.dt_min = dt_min
self.dt_max = dt_max
self.dropout = nn.Dropout(dropout)
# --- Нелинейная активация для внимания ---
if modulation:
self.softmax = ZipfLagrangeLocalActivation() # Модуляция входа через внимание
# --- Параметры гистерезиса ---
self.alpha = nn.Parameter(torch.tensor(0.0)) # Чувствительность к скорости (du)
self.beta = nn.Parameter(torch.tensor(0.0)) # Чувствительность к ускорению (ddu)
self.gamma = nn.Parameter(torch.tensor(0.0)) # Инерция памяти
self.damping = nn.Parameter(torch.tensor(0.2)) # демпфирование, по скорости
self.stiffness = nn.Parameter(torch.tensor(0.5)) # обратная связь, по положению
# Сырой параметр демпфирования ζ (приводится в диапазон [0, 1] через сигмоиду)
self.raw_zeta = nn.Parameter(torch.tensor(0.0)) # обучаемый параметр: zeta ∈ (0, 1)
# Логарифм собственных частот ω (обеспечивает положительность частоты)
self.log_omega = nn.Parameter(torch.tensor(0.0)) # обучаемый параметр: log(omega)
self.beta_softmax = nn.Parameter(torch.tensor(1.0))
# --- Хранилище состояний ---
self.register_buffer("y_state", None, persistent=False) # Состояние y(t)
self.register_buffer("z_state", None, persistent=False) # Производная состояния z(t) = dy/dt
self.register_buffer("u_prev_state", None, persistent=False) # u(t-1)
self.register_buffer("u_prev2_state", None, persistent=False) # u(t-2)
self.register_buffer("h_state", None, persistent=False) # внутреннее состояние гистерезиса
def forward(self, x, M=None, reset_state=False):
"""
x: [B, L, D] — входная последовательность
M: [B, L, L] — матрица внимания (например, подобная self-attention)
"""
B, L, D = x.shape # B — batch size, L — длина последовательности, D — размерность
device = x.device
if reset_state or self.y_state is None:
self.reset_state(B, device)
# --- Построение комплексного оператора A ---
lambda_t = -F.softplus(self.A_log) # Re(A) < 0 для устойчивости
omega_t = self.A_im # Im(A)
A = torch.complex(lambda_t, omega_t) # [B, d_state]
# --- Расчёт шага dt ∈ [dt_min, dt_max] ---
dt_t = torch.exp(self.log_dt).clamp(self.dt_min, self.dt_max) # Скаляр
# Cross-attention modulation
# --- Взвешивание входа по вниманию ---
if self.modulation:
# M_sm = F.softmax(M, dim=-1) # [B, L, L]
M_sm = self.softmax(M) # [B, L, L] — локализованная softmax или иная функция
U_mod = M_sm @ x # [B, L, D] — w(t) = sum(j) softmax(M(t, j)) * u(j)
# --- Инициализация скрытых переменных ---
y = self.y_state # Состояние y(t)
z = self.z_state # Производная состояния z(t) = dy/dt
# --- Переменные для гистерезиса ---
u_prev = self.u_prev_state # u(t-1)
u_prev2 = self.u_prev2_state # u(t-2)
h_t = self.h_state # внутреннее состояние гистерезиса
# --- Имплицитное обновление состояния через метод среднего шага ---
A_b = A.unsqueeze(0).expand(B, -1) # [B, d_state] расширение A на батч
# implicit-midpoint update
dt_sq = dt_t * dt_t
denom = 1.0 + 0.5 * dt_sq * A_b # [B, d_state]
outputs = []
for t in range(L):
u_t = x[:, t, :] # [B, D] текущий вход
# --- Гистерезис: h(t) = γ * h(t-1) + α * Δu + β * Δ²u ---
du = u_t - u_prev # Δu(t) = u(t) − u(t-1)
ddu = u_t - 2 * u_prev + u_prev2 # Δ²u(t) = u(t) − 2u(t-1) + u(t-1)
h_t = self.gamma * h_t + self.alpha * du + self.beta * ddu
u_hyst = F.linear(h_t, self.B_hyst) # [B, d_state] = вклад от гистерезиса
# linear transforms
B_u = F.linear(u_t, self.B) # [B, d_state] = B * u(t)
if self.modulation:
# --- Прямой и модулированный вход ---
u_mod_t = U_mod[:, t, :] # [B, D] взвешенный по вниманию вход w(t)
B_u_mod = F.linear(u_mod_t, self.B_mod) # [B, d_state] = B_mod * w(t)
inp = B_u + B_u_mod + u_hyst # [B, d_state] = полный вход в SSM
else:
inp = B_u + u_hyst # [B, d_state] = полный вход в SSM
inp_eff = inp - self.damping * z - self.stiffness * y
numer = y + dt_t * z + dt_sq * inp_eff # [B, d_state]
numer = torch.sigmoid(numer)
# numer = self.softmax_complex(numer)
y_next = numer / denom # y(t) = (y(t-1) + dt*z(t-1) + dt²*v(t)) / (1 + 0.5*dt²*A)
# Спектральное преобразование: затухание + фаза
z_next = self.spectral_damped_derivative(y_next, y, dt_t)
y, z = y_next, z_next
# --- Выход: проекция + skip-связь ---
out = F.linear(y.real, self.C) + u_t * self.D # [B, D] — C*Re(y(t)) + D*u(t)
outputs.append(out)
# --- Обновление истории для гистерезиса ---
u_prev2 = u_prev
u_prev = u_t
# Сохраняем состояния для следующего вызова
self.y_state = y.detach()
self.z_state = z.detach()
self.u_prev_state = u_prev.detach()
self.u_prev2_state = u_prev2.detach()
self.h_state = h_t.detach()
y_seq = torch.stack(outputs, dim=1) # [B, L, D] — итоговая последовательность
y_seq = self.dropout(y_seq)
return y_seq
def softmax_complex(self, z):
amp = torch.abs(z)
phase = z / amp.clamp(min=1e-6) # нормированный вектор (unit phase)
weights = F.softmax(-amp / self.beta_softmax, dim=-1) # softmax по модулю
output = weights * phase # вернёт комплексный результат
return output
"""
Спектральный демпфированный производный метод, вычисляющий приближение производной
с демпфированием и фазовым сдвигом в комплексной форме.
Использует параметры, которые обучаются (dt, ζ, ω), чтобы гибко моделировать
производные сигналов во временной области с учётом колебательных и затухающих компонентов.
"""
def spectral_damped_derivative(self, y, y_prev, dt_t):
"""
Аргументы:
y (Tensor): текущее значение входного сигнала
y_prev (Tensor): предыдущее значение сигнала (на шаге назад)
dt_t (Tensor): текущий шаг времени dt
Возвращает:
z (Tensor): комплексное приближение производной сигнала с затуханием и фазой
"""
# Демпфирующий коэффициент ζ ∈ [0, 1]
zeta = torch.sigmoid(self.raw_zeta)
# Собственная частота ω > 0
omega = torch.exp(self.log_omega)
# Демпфированная частота: ω_d = ω * sqrt(1 - ζ²)
# Добавляем 1e-6 для численной устойчивости при ζ → 1
omega_d = omega * torch.sqrt(1 - zeta ** 2 + 1e-6)
# Амплитудное затухание: exp(-ζωdt)
decay = torch.exp(-zeta * omega * dt_t)
# Фазовый множитель: exp(i * ω_d * dt), где i = sqrt(-1)
phase = torch.complex(
torch.cos(omega_d * dt_t),
torch.sin(omega_d * dt_t)
)
# Спектрально-демпфированное приближение производной:
# z = exp(-ζωdt) * exp(iω_d dt) * (y - y_prev) / dt
# Оно имеет и амплитудное затухание, и вращение в комплексной плоскости
z = decay * phase * (y - y_prev) / dt_t
if torch.isnan(z).any():
print("Есть хотя бы одно значение NaN.")
print(z)
print(y)
print(y_prev)
print(dt_t)
sys.exit()
return z
Теперь по поводу изображения островов:
Основная геометрия Река идёт горизонтально или диагонально, чтобы можно было разместить несколько «островов» слева направо.
Острова — это сегменты: S1, S2, S3, S4 (можно подписать так же, как в теоремах).
Между соседними островами есть короткие прямые мосты — это классические марковские связи (локальные зависимости).
Дополнительно есть длинные диагональные мосты — это ранговые связи (сильные глобальные зависимости).
Общее оформление
Две горизонтальные части: верхняя — классическая марковская цепь, нижняя — ранговая цепь.
В каждой части три острова.
Движение слева направо — передача информации от Отправителя к Получателю.
На каждом острове — Отправитель (в начале, середине и конце пути).
На третьем острове — Получатель.
Верхняя часть — Классическая марковская цепь
Общий вид:
Три острова, соединённые только последовательными мостами.
Мосты тонкие, над водой падают коробки.
Передача информации с потерями.
Элементы:
Первый остров (начало пути)
Отправитель с тремя коробками.
Мост к среднему острову.
Второй остров (середина пути)
Отправитель с двумя коробками, третья падает в воду с моста.
Мост к третьему острову.
Третий остров (конец пути)
Получатель с одной коробкой в руках.
Лицо грустное, поза разочарованная — символ потери информации.
Нижняя часть — Ранговая цепь
Общий вид:
Те же три острова, короткие последовательные мосты остаются, как в верхней части.
Добавлен дальний арочный мост от первого к третьему острову.
Отправитель идёт по дальнему мосту, но короткие мосты визуально присутствуют.
Коробки не теряются.
Элементы:
Первый остров (начало пути)
Отправитель с тремя коробками.
Начинает путь по дальнему мосту, короткий мост к среднему острову также виден.
Второй остров (середина пути)
Отправитель с тремя коробками, ничего не падает.
Короткий мост к третьему острову виден, но путь идёт по дальнему мосту.
Третий остров (конец пути)
Получатель с тремя коробками в руках.
Улыбка и радостная поза — символ сохранения всей информации.
Смысл визуализации
Классическая цепь — только последовательные мосты → часть коробок падает → получатель получает меньше.
Ранговая цепь — есть дальний мост (глобальная зависимость) → информация доходит целиком, короткие мосты показывают, что связь с промежуточными островами сохраняется.
Эмоции Получателя подчёркивают результат: грусть при потерях и радость при полной доставке.
Предлагаю вам подкреплять ваши слова. Выше я привел собранную статистику для подкрепления, когда проверял мат. аппарат. Насчет интерпретации в MLP работы backpropagation: это балансирование системы между стоимостью затрат и энтропией через Лагранжа (принцип наименьшего действия Лагранжа ). backpropagation выводится именно из него.
С одной стороны вы правильно указали на иерархию, что LLM важную роль играет иерархическая связь. Но потом вас унесло куда-то не туда.
Сейчас как раз доказываю теоремы об иерархической структуре данных и их построении. Как раз проверял их на текстах.
самый частый пробел-пробел, но его вероятность увеличивается с расстоянием, а не в начале (два пробела в начале реже встречаются).
Выше изображены вероятности следования букв на расстоянии D друг от друга. В классической марковской сети - это расстояние только между соседями. В случае иерархической, разные уровни иерархи разбиваются на сегменты (каждый небольшая марковская цепь), которые так же связаны с соседним сегментов на текущем уровне и с последовательностью элементов из которых состоит соседний. На сборке статистики это как раз видно, чтоб вероятности между двумя "символами" не убывают монотонно, а имеют волнообразный затухающий вид. То есть если у нас есть буква "В" и вероятность следующей "А" как соседней (В -> 0 символов -> А) равна 0.02, но при этом вероятность "Е" на расстоянии D=5 (5 символов назад: Е -> 5 символов -> В -> Е) равна 0.08, то мы получим ВЕ а не ВА.
Это визуализация статистики частоты переходов символов на расстоянии от 0 до 20, а не только соседних.
Тут это немного лучше видно.
Перцептрон в классическом виде не может обеспечить полноценную иерархию связей.
Например, тот же трансформер через механизм внимания "проецирует" иерархию связей на плоское контекстное окно. В этом плане перцептрон не реализует и не может полноценно реализовать необходимую архитектуру.
А теперь про управляемость генерации картинок. Когда вы просто хотите бесполезную ерунду - отлично он вам сгенерирует. Но когда вам нужно решить реальную задачу связанную с изображения - генераторы изображений становятся бесполезными.
То есть - сгенерировать мусорную картинку к статье не несущую смысла - да. Но полезную цельную задачу - нет, они выдают мусор.
Единственный удобный инструмент в плане генерации изображений - это генерация отдельных объектов вместо их поиска и дальше ручками. Например подходит для игр, иконки сгенерировать, фоновые объекты и так далее.
Для примера, мне надо было по детальному описанию (которое расписала сама же сетка, вплоть до цветов, расположения и прочего) сгенерировать изображение, чтобы наглядней объяснить текст.
Вот Grok и ChatGpt
Grok
ChatGPT
Красиво? да наверное красочно, Айвазовский завидует. Мусор? Однозначно - полный бред. Все попытки ни к чему не приводили. В итоге приходилось делать самостоятельно.
То есть в итоге приходится делать вручную
Я уже молчу про такое. Тут сетки вообще плыли при генерации. При том, что я просил только изображения без текста. Приходилось делать ручками, генерируя отдельно каждое изображение в Qwen и дальше вырезая, дорисовывая, меняя палитру и так далее. То есть от монотонной нудной части, когда одна такая картинка требует часа 2-4 не избавляет.
Как итог, самым лучшим решением было использовать Qwen для генерации отдельных изображений на белом фоне и дальше ручками через фотошоп уже желать картинку. Так как все остальные сетки выдавали Айвазовского и Дали - то есть бесполезный шлак, который имеет 0 пользу.
А когда нужно реально что-то полезное. Например, я хотел изобразить как была доработана SSM модель в нейронках. Код программы сетки видели, описание было подробнейшее в виде текста и так же специального промта. Результат - египетские записи, стрелки не туда, вообще хаотично. Где вход, где реально выход, что за некоторые объекты не ясно.
Были у меня попытки и поэтапно генерировать. Сначала базовую, потом просишь дополни тем то.. а он тебе просто качество улучшает.
Поэтому в реальности - генерация мусора, да отлично справляются. А вот для остального ряд ограничений, и я практически не припомню случаев, когда потом н приходилось вручную что-то еще доделывать.
Ты хочешь нарисовать схему, а он тебе Айвазовского рисует.
Практически перестал использовать ChatGPT, так как он стал сильно тупее. Что в разработке, что в рассуждениях. Qwen, Gemini дают более качественный результат. Deepseek любит придумывать, если не знает. Qwen меньше, но тоже грешит этим порой. Поэтому используешь сетки, только когда сам знаешь ответ и рассчитываешь сократить черновую работу. При такой постановке задачи от ответов ChatGPT ждёшь правильных предсказаний кода или ответов. Как по мне, качество моделей openai сильно упало. Может на бенчмарки они натаскали хорошо, но в обычных задачах просели (хотя и раньше было далеко не идеально).
Так современные LLM не справляются с нормальными задачами. Приведу пример, мне вчера надо было сконвертировать в базе на Postgres в заглавный регистр все названия таблиц, полей, процедур и функций, операторы вставки/обновления/удаления и удаления. Я потратил час-два, пытаясь добиться от разных LLM этого. Ни одна даже близко не справилась, прям полное фиаско. Внутри функций и процедур вообще кошмар, в других местах элементарно не учитывает название схем и правильно кавычки. Все написанные ими парсеры тоже дали плачевный результат. При чем тот же OpenAI анализирует и проверяет и выдает код, но когда смотришь его - там бред. Как итог, пришлось все делать самостоятельно и через час сделал. То есть на сетки потратил больше, чем мог бы сразу сам.
Другой пример, мне надо было перенести на реализацию кода набор теорем. Да, код сгенерировал и он вызывается и даже выдает, но в нем куча ошибок. И гоняя повторно по кругу, он все уходи в разнос. Такие прогоны одной функции могут занять больше получаса, когда самостоятельно можно написать быстрее. И то, каждый "удачный" прогон, где он пишет что ошибок нет, надо проверять лично. Так как там в 99% есть ошибки. И это отнимает и силы и время.
О какой замене на LLM может идти речь? Возможно json он распарсит, это простая задача даже для тех кто слабо знаком с разработкой, так как встречается часто и есть множество удобных инструментов для этого, которые позволяют мне сделать это в несколько строк на разных языках разработки.
И вы предлагаете дать сетке генерировать бух проводки? Он вам такое наделает. Я когда составлял таблицу для сравнения добавляя в нее значения в запросах, он легко мог начать их путать уже на 15 строчках, выкидывая детали. И оказывается что Excel гораздо более удобный и надежный.
тут отрывок про один из экспериментов, скрестили чернокожих "черные пантеры" и белых (закончился провалом, но как раз из-за того, что организация черных пантер увидела что вместо революционного настроя люди стали спокойнее).
Так же был такой эксперимент с монастырем одним (можно поискать), тоже скрестили послушниц из женского монастыря с общением с обычными людьми (в итоге монастырь опустел).
Так что подобных экспериментов было не мало. Другое дело, что все они были контролируемые (чтобы ни кто не пострадал), поэтому люди говорили все что думают не опасаясь за свою безопасность.
А теперь, после того как LLM выдала вам ответ, попросить ее проверить его на ошибки. Найти слабые стороны ответа. Написать ответ-критику.
И то, что до этого вы считали верным (опираясь на LLM), вам выдаст тонны обратных утверждений. Но если будете пытаться переубедить сетку, то она снова выдаст вам аргументы за.
Автору бы сразу так надо было привести ссылку. Не встречал ранее такой формулы и не видел статьи. Но в таком толковании становится более понятно. Тот же Loss отражает суммарную перекрестную энтропию. А формулу, хоть и грубо и не точно, но отражает связь объема данных/ структуры данных (через ошибку)/ размер модели (выделение структуры). Пошел читать, откуда они ее получили, и как интерпретировали.
Тоже удивился. Даже эмпермически такой формулы нет. Такие формулы любят генерировать сетки, замечал такое. Связывая лишь бы связать, без доказательства, без эвристики. Так что формулу просто сгенерировала сетка и даже возможно "обосновала" ее правильность. А так да, к реальности формула не имеет отношения.
У них же нет обучения с нуля. В свое время на заборе была статья от Сбера, где была ссылка на их репозиторий с моделью. Как раз после того как deepseek выложил в opensource. Они по-моему писали что взяли ее и дообучали. Я смотрел код их модели на том гмтхабе, там косметические изменения были. Так что, эти крупные модели Сбера не обучены с нуля, а используют в своей основе Deepseek.
Проблема ни куда не исчезает, она ещё и множится и усугубляется. Возможно для простых вещей, вроде рецепт приготовления супа все нормально, но более сложных - полнейшее фиаско и галлюцинации.
Это отлично видно на математике, где важна точность и логика. Через поиск она находит какую-то работу, берет из нее фрагмент, который косвенно связан. Переформулирует на свое усмотрение и выдает, что "согласно исследованиям/теореме, мы получаем". Смотришь, а там другое, да слова совпадают и даже есть аналогия, но формулы другие, речь о другом. И такое постоянно.
А режим исследования в ChatGPT, вы пробовали смотреть на что он опирается? Там можно посмотреть весь список материалов. Так вот там легко вам может попасться срач на форуме мамочки.ру (условно), где они обсуждали мозги. А ты попросил исследований конкретной темы по неокортексу. Так как модель не может отличить значимость мамочки.ру и сайт с публикацией исследований, особенно когда они рядом в выводе.
Нейронки в текущей архитектуре как были подвержены галлюцинациям, так и будут. Так как проблема не в доступе к информации, не в рассуждениях. Это проблема самой архитектуры, ее ограничений.
Чтобы не вводить в заблуждение, это скорее расширение. Так как в основе также трансформеры ограниченные контекстным окном. То есть временной рад ограничен временным окном трансформера.
Таких кросс моделей сейчас делают много. Китайцы как дополнительные модальности пихают все в своих работах, от разных форматов документов до видео, картинок и так далее.
По сути, в данной работе временной ряд кодируют патчами, как видео. И вставляют токены "временного ряда" с токенами текста.
Точно так же делают когда объединяют модальности видео и текста, картинок и текста и другие.
Так что вещь ограниченная и очень специфичная при такой реализации
Плохо у них с ними. Не раз пробовал с помощью них доказывать теоремы. Постоянно уносит не туда или в рекурсию. Например, асимптотике начинают вводить константы, потом ругаются, что константы надо расписать их значения, где из этого снова говорят что для новых значений надо константы и надо... в итоге начинают выкидывать важные детали.
Другой пример, так как они не понимают, а просто пытаются обобщить, то легко могут проигнорировать прежние теоремы и начинают рассматривать случаи, которые не вписываются в теоремы. То есть самостоятельно не способны обобщить и понять, что какие-то условия ограничены и эти ограничения понятны обычному человеку, но не LLM и она начинает пытаться натянуть сову на глобус. То есть ей надо разжевать все, подобно описать все, почему и откуда, ткнуть прям, и тогда она "решит". Хотя несколькими сообщениями выше все было расписано. Просто механизм внимания это проигнорировал. То есть она хорошо может разложить формулу и объединить (хотя тут очень очень часто косячит тоже).
Но вот в оформлении теорем - они очень удобны, так как когда все расписано, они дополнят все дополнительными замечаниями, которые писать самостоятельно отнимает время и силы.
Так "решат" они любую задачу. Но только решение будет бредом, если досконально не прописать формулировку и план доказательства. Но по сути это и есть решение задачи, самая сложная часть. Если доказательство вытекает из описанного плана решения и точных формулировок.
И это я еще молчу, про то что они могут сослаться на "работы", которых либо нет, либо в которых говорится о другом.
Поэтому если оставить их доказывать самостоятельно, они докажут что у них просят и что земля плоская и солнце это обезьяна. Только по факту это будет бред полный.
Аналогично хотел написать об этом, но понял что авторы вес равно не прочитают комментарии. Нет смысла тратить силы.
https://arxiv.org/html/2509.26507v1
Разбирал для себя, что они на самом деле сделали. Там есть их работа, для себя разбирал.
А так же полез в их исходники.
https://github.com/pathwaycom/bdh/blob/main/bdh.py
Потратил целый вечер, чтобы разобраться. Лень расписывать. Но, слишком громкие заголовки, в реальности не увидел там чего-то принципиально нового.
1) дальние зависимостей у них под вопросом. В статье они говорят, что BDH-GPU содержит “linear attention” как один из механизмов.
Они утверждают, что макро-механизмы внимания трансформера могут быть “аппроксимированы” через их локальные динамики с состоянием, особенно когда активность и связи ведут себя определённо. Не верю - это не доказано. Локально да, но для иерархических данных - нет.
В разделе "6.1 Macro-expressiveness of attention in BDH-GPU" они обсуждают, как attention может быть выражено в BDH-GPU и как "state capacity vs distinction capacity" работает. Они также упоминают, что BDH-GPU оперирует в "высоком измерении нейронов" и что state (состояние) хранятся на нейронах, а не на связях, что позволяет более "глобальное" внимание скрыто реализовываться.
Но главное, что они говорят: теория говорит, что макро-внимание может быть "синтезировано" из комбинации линейного внимания + локальной динамики + "скрытого состояния", а не что они прямо реализуют классический softmax attention на весь контекст.
Это все вызывает вопросы, так как их мат аппарат приведен не до конца (подтверждений не нашел), а исходники дают еще меньше информации. Нет явной иерархической структуры внимания (например, одни слои — локальные, другие — глобальные) — внимание однородно по всем слоям, но может маскироваться / модулироваться локально через xy_sparse и через ReLU.
2) скрытые состояния есть у SSM. То, что модель хранит скрытое состояние, реагирует на входы при помощи него, обновляет его - это не новшество. Структурированные SSM (State-Space Models), RNN с памятью, LSTM, управляемые динамикой модели уже делают это. BDH утверждает, что его скрытые состояния "локализованы на нейрон-нейронных парах" (синапсы), дают интерпретируемость, и что они поддерживают "локальные графовые правила". Но в коде этого нет, чтобы такие "графовые правила" были явно реализованы.
3) В коде нет динамического изменения связей (пластичности) во время forward. Одна из ключевых обещанных идей - пластичность, Hebbian обучение во время вывода, динамическое изменение "синапсов" на основе активаций - в коде этого нет. Это означает, что реальное поведение модели ближе к “фиксированным параметрам + некоторым маскирующим процедурам” чем к активной сети, которая перестраивается на лету (как их гипотеза).
4) Про тот же residual, не нашёл доказательств, что в BDH каждый токен в истории может перескакивать напрямую через "top-down" путь без прохождения через цепочки нейронов или промежуточного состояния. То есть идея "перескока" напрямую (skip) — не явно.
5) Масштабируемость: размер ρ - матрица n х d или n х n может быть дорогим, особенно если n велико. Здесь ρ скрытое состояние ~ "синапсы", n - число "нейронов", модель работает в пространстве размерности n. Скрытое состояние модели (на шаг времени / слой) представляется матрицей (или набором матриц) ρ. Не понятно, дает ли это преимущество или наоборот раздувает размер. Статья не позволяет оценить.
То есть код выглядит ближе к модификации архитектуры Transformer, где есть attention + MLP + residual, но с добавлением sparse@ шагами и перемножениями для модуляции.
И там много всего еще. Потратив кучу времени, нашел лишь некоторые доказательства их реализации, но не доказательства, что это будет работать как обещают. Мат аппарат либо не весь выложен либо не доказывает, то что обещают.
Я не понимаю, чем их текущая реализация сейчас лучше гибридных SSM с локальным вниманием и скрытыми состояниями.
Ну и про биологию неокортекса - тут вообще без комментариев.
Либо я не понял вас. Вы просто выше сравнивали LLM и трансформеры (их архитектуру в основе LLM) с перцептрон, говоря о том что те не туда ушли. Или я не так понял.
Чтобы не было путаницы, я говорю о том, что классический RNN это аппроксимация марковской цепи. Под классическим я подразумевая MLP с рекуррентной связью.
Я не говорю, что через MLP нельзя выстроить иерархию. Тот же трансформер - это архитектурное решение MLP. FFN - это MLP практически. Головы - это множество MLP. И все отличие тут - это механизм внимания, который и описывает иерархию связей. То есть разорванные марковские цепи. Каждый блок трансформера - выделяет отдельные уровни структуры (пусть будут признаки). Головы - находят локальные максимумы на данном уровне, это локальные расстояния, где связи наиболее сильные (как на примере картинки что я приводил, где идут волны).
Например, MoE легко делается через множество MLP, где множество Softmax на выходе (как было изображено выше) и формируют иерархическую сетку.
SSM делает тоже самое, но классическая реализация не имеет иерархии. Но формально он аппроксимирует тоже, что и MLP только немного иначе. Но у него есть преимущество, он может динамически подстраиваться под данные, так как описывает периодические функции (тот же linOSS как расширение SSM описывает еще и затухание).
Марковские цепи имеют историю - информация о ней зашита в соседнем элементе. Да, разложить обратно из цепочки в элементы мы не можем. В марковской сети от последнего элемента зависит предсказание следующего. Это и есть RNN.
Разрыв необходим. Иерархия как раз позволяет связать в разрывы. В мозге например в неокортексе это называет top-down связи, когда верхние уровни иерархии, модулируют предыдущие области (нижние уровни иерархии).
разрыв происходит из за бифуркации, когда вероятность для ограниченного набора "словаря" (не путать со словарем букв, тут это набор уникальных значений) приводит к разрыву марковской цепи. Единственный способ сохранить информацию между цепочками - это их связь через верхний уровень.
https://telegra.ph/Rangovaya-model-veroyatnostej-i-bifurkacii-kak-utraty-asimmetrii-07-17
что касается backprop, то прогоните эти теоремы через сетку. Она может быть лучше объяснит как backprop связан с этим. Там она как раз и получается из теорем R.4, но для нее нужно прогнать остальные теоремы.
https://disk.yandex.ru/d/b8fr7DIiT23AGA
Вы правы так и есть, это и есть марковские цепи. Но, они иерархические. И их иерархия закодирована в механизме внимания, который связывает дальние зависимости на расстоянии D. Как раз, то что и показывает собранная статистика выше. Без этого, мы получаем просто классический RNN с быстрых затуханием марковской цепи без иерархии. То о чем вы сейчас говорите это классический RNN. Но без иерархии, марковская цепь быстро исчезает, ее вероятность становиться очень-очень маленькой. Система нашла выход из этого, через разрывы марковской цепи, когда они не различимы с равномерным распределением. Но чтобы не потерять связи между разрывами, они связаны через иерархию, сегмент верхнего уровня. Тут не ни какой магии.
Это не число рекуррентных шагов, это именно иерархия. Одним слоем он не описывает иерархию. Хорошо, напишите новую статью, так как пока что я не вижу возможности с помощью него описывать динамические иерархические структуры, которые кодируют марковские цепи на каждом уровни иерархии. Это значит, что они должны оказывать влияние не только не предыдущий элемент на текущем уровне цепи, но и на соседний элемент на нижнем уровне цепи (то есть на целый сегмент). И при этом делать эту аппроксимацию эффективно, а не в лоб как большая матрица статистики с прямыми связями (слишком гигантские матрицы получаются).
Они показывают, что вероятности для текста имеют иерхаическую структуру
Марковская цепь: мама = p(м) -> p(а|м)-> p(м|а)-> p(а|м), то есть зависимости на расстоянии d=1 между соседями. Это перцептрон может уловить.
Но в реальности, связи образуют иерархию. Это приводит к тому, что d=1 а может быть равен d=4 (например последняя А связана сильнее с первой М, а не с соседней третей М). Именно это и отображает график. Собрана статистика по частоте пар на разном расстоянии. Например первые пары там пробел-пробел, пробел-о и так далее. И видно как меняется их частотность с расстоянием, когда между ними есть другие символы. Это и есть отражение иерархии через верхние уровни, которые позволяют связывать дальние элементы. Перцептрон не может описывать иерархии, с помощью него мы можем получить через аппроксимацию классическую марковскую цепь.
Я пока только делаю публикацию теорем. Тут можно посмотреть их
https://disk.yandex.ru/d/b8fr7DIiT23AGA
Адаптировал доказательства под нейронные сети, чтобы можно было прогнать через них и проверить. Теорема R.1 связывает с Лагранжа, а R.4 связывает в backpropagation.
Затем на этом строятся теоремы о бифуркации (моменте разрыва марковской цепи из-за неопределенности)
https://t.me/greenruff/2462
и затем уже связь с иерархией, как построение иерархии разорванных марковский цепей (сегментов).
https://t.me/greenruff/2465
https://t.me/greenruff/2466
https://t.me/greenruff/2469
Супер, вы подтвердили мои слова, что на выходе получается полный мусор.
Сделай даже проще. Вот код SSM, который нужно было визуализировать и первый запрос, поле которого была множество попыток детального описания и рисования:
Опиши, что нарисовать, чтобы объяснить математический и физический принцип LinOSS_IM_Attn_Hysteresis? Чтобы не запутать человека математическими формулами, а объяснить на ней общие принципы.
Я думаю, правильно будет не рисовать формулу и математические операции. А рисовать блоки с названиями и изображениями, которые отражают физические процессы реализуемые блоком.
Теперь по поводу изображения островов:
Основная геометрия
Река идёт горизонтально или диагонально, чтобы можно было разместить несколько «островов» слева направо.
Острова — это сегменты: S1, S2, S3, S4 (можно подписать так же, как в теоремах).
Между соседними островами есть короткие прямые мосты — это классические марковские связи (локальные зависимости).
Дополнительно есть длинные диагональные мосты — это ранговые связи (сильные глобальные зависимости).
Общее оформление
Две горизонтальные части: верхняя — классическая марковская цепь, нижняя — ранговая цепь.
В каждой части три острова.
Движение слева направо — передача информации от Отправителя к Получателю.
На каждом острове — Отправитель (в начале, середине и конце пути).
На третьем острове — Получатель.
Верхняя часть — Классическая марковская цепь
Общий вид:
Три острова, соединённые только последовательными мостами.
Мосты тонкие, над водой падают коробки.
Передача информации с потерями.
Элементы:
Первый остров (начало пути)
Отправитель с тремя коробками.
Мост к среднему острову.
Второй остров (середина пути)
Отправитель с двумя коробками, третья падает в воду с моста.
Мост к третьему острову.
Третий остров (конец пути)
Получатель с одной коробкой в руках.
Лицо грустное, поза разочарованная — символ потери информации.
Нижняя часть — Ранговая цепь
Общий вид:
Те же три острова, короткие последовательные мосты остаются, как в верхней части.
Добавлен дальний арочный мост от первого к третьему острову.
Отправитель идёт по дальнему мосту, но короткие мосты визуально присутствуют.
Коробки не теряются.
Элементы:
Первый остров (начало пути)
Отправитель с тремя коробками.
Начинает путь по дальнему мосту, короткий мост к среднему острову также виден.
Второй остров (середина пути)
Отправитель с тремя коробками, ничего не падает.
Короткий мост к третьему острову виден, но путь идёт по дальнему мосту.
Третий остров (конец пути)
Получатель с тремя коробками в руках.
Улыбка и радостная поза — символ сохранения всей информации.
Смысл визуализации
Классическая цепь — только последовательные мосты → часть коробок падает → получатель получает меньше.
Ранговая цепь — есть дальний мост (глобальная зависимость) → информация доходит целиком, короткие мосты показывают, что связь с промежуточными островами сохраняется.
Эмоции Получателя подчёркивают результат: грусть при потерях и радость при полной доставке.
Предлагаю вам подкреплять ваши слова. Выше я привел собранную статистику для подкрепления, когда проверял мат. аппарат. Насчет интерпретации в MLP работы backpropagation: это балансирование системы между стоимостью затрат и энтропией через Лагранжа (принцип наименьшего действия Лагранжа ). backpropagation выводится именно из него.
С одной стороны вы правильно указали на иерархию, что LLM важную роль играет иерархическая связь. Но потом вас унесло куда-то не туда.
Сейчас как раз доказываю теоремы об иерархической структуре данных и их построении. Как раз проверял их на текстах.
Выше изображены вероятности следования букв на расстоянии D друг от друга. В классической марковской сети - это расстояние только между соседями. В случае иерархической, разные уровни иерархи разбиваются на сегменты (каждый небольшая марковская цепь), которые так же связаны с соседним сегментов на текущем уровне и с последовательностью элементов из которых состоит соседний. На сборке статистики это как раз видно, чтоб вероятности между двумя "символами" не убывают монотонно, а имеют волнообразный затухающий вид. То есть если у нас есть буква "В" и вероятность следующей "А" как соседней (В -> 0 символов -> А) равна 0.02, но при этом вероятность "Е" на расстоянии D=5 (5 символов назад: Е -> 5 символов -> В -> Е) равна 0.08, то мы получим ВЕ а не ВА.
Тут это немного лучше видно.
Перцептрон в классическом виде не может обеспечить полноценную иерархию связей.
Например, тот же трансформер через механизм внимания "проецирует" иерархию связей на плоское контекстное окно. В этом плане перцептрон не реализует и не может полноценно реализовать необходимую архитектуру.
А теперь про управляемость генерации картинок. Когда вы просто хотите бесполезную ерунду - отлично он вам сгенерирует. Но когда вам нужно решить реальную задачу связанную с изображения - генераторы изображений становятся бесполезными.
То есть - сгенерировать мусорную картинку к статье не несущую смысла - да. Но полезную цельную задачу - нет, они выдают мусор.
Единственный удобный инструмент в плане генерации изображений - это генерация отдельных объектов вместо их поиска и дальше ручками. Например подходит для игр, иконки сгенерировать, фоновые объекты и так далее.
Для примера, мне надо было по детальному описанию (которое расписала сама же сетка, вплоть до цветов, расположения и прочего) сгенерировать изображение, чтобы наглядней объяснить текст.
Вот Grok и ChatGpt
Красиво? да наверное красочно, Айвазовский завидует. Мусор? Однозначно - полный бред. Все попытки ни к чему не приводили. В итоге приходилось делать самостоятельно.
То есть в итоге приходится делать вручную
Я уже молчу про такое. Тут сетки вообще плыли при генерации. При том, что я просил только изображения без текста. Приходилось делать ручками, генерируя отдельно каждое изображение в Qwen и дальше вырезая, дорисовывая, меняя палитру и так далее. То есть от монотонной нудной части, когда одна такая картинка требует часа 2-4 не избавляет.
Как итог, самым лучшим решением было использовать Qwen для генерации отдельных изображений на белом фоне и дальше ручками через фотошоп уже желать картинку. Так как все остальные сетки выдавали Айвазовского и Дали - то есть бесполезный шлак, который имеет 0 пользу.
А когда нужно реально что-то полезное. Например, я хотел изобразить как была доработана SSM модель в нейронках. Код программы сетки видели, описание было подробнейшее в виде текста и так же специального промта. Результат - египетские записи, стрелки не туда, вообще хаотично. Где вход, где реально выход, что за некоторые объекты не ясно.
Были у меня попытки и поэтапно генерировать. Сначала базовую, потом просишь дополни тем то.. а он тебе просто качество улучшает.
Поэтому в реальности - генерация мусора, да отлично справляются. А вот для остального ряд ограничений, и я практически не припомню случаев, когда потом н приходилось вручную что-то еще доделывать.
Ты хочешь нарисовать схему, а он тебе Айвазовского рисует.
Практически перестал использовать ChatGPT, так как он стал сильно тупее. Что в разработке, что в рассуждениях. Qwen, Gemini дают более качественный результат. Deepseek любит придумывать, если не знает. Qwen меньше, но тоже грешит этим порой. Поэтому используешь сетки, только когда сам знаешь ответ и рассчитываешь сократить черновую работу. При такой постановке задачи от ответов ChatGPT ждёшь правильных предсказаний кода или ответов. Как по мне, качество моделей openai сильно упало. Может на бенчмарки они натаскали хорошо, но в обычных задачах просели (хотя и раньше было далеко не идеально).
Так современные LLM не справляются с нормальными задачами. Приведу пример, мне вчера надо было сконвертировать в базе на Postgres в заглавный регистр все названия таблиц, полей, процедур и функций, операторы вставки/обновления/удаления и удаления. Я потратил час-два, пытаясь добиться от разных LLM этого. Ни одна даже близко не справилась, прям полное фиаско. Внутри функций и процедур вообще кошмар, в других местах элементарно не учитывает название схем и правильно кавычки. Все написанные ими парсеры тоже дали плачевный результат. При чем тот же OpenAI анализирует и проверяет и выдает код, но когда смотришь его - там бред.
Как итог, пришлось все делать самостоятельно и через час сделал. То есть на сетки потратил больше, чем мог бы сразу сам.
Другой пример, мне надо было перенести на реализацию кода набор теорем. Да, код сгенерировал и он вызывается и даже выдает, но в нем куча ошибок. И гоняя повторно по кругу, он все уходи в разнос. Такие прогоны одной функции могут занять больше получаса, когда самостоятельно можно написать быстрее. И то, каждый "удачный" прогон, где он пишет что ошибок нет, надо проверять лично. Так как там в 99% есть ошибки. И это отнимает и силы и время.
О какой замене на LLM может идти речь? Возможно json он распарсит, это простая задача даже для тех кто слабо знаком с разработкой, так как встречается часто и есть множество удобных инструментов для этого, которые позволяют мне сделать это в несколько строк на разных языках разработки.
И вы предлагаете дать сетке генерировать бух проводки? Он вам такое наделает. Я когда составлял таблицу для сравнения добавляя в нее значения в запросах, он легко мог начать их путать уже на 15 строчках, выкидывая детали. И оказывается что Excel гораздо более удобный и надежный.
Такие эксперименты были и не один. Смысл как раз в том, что они не беседуют мило, но постепенно выпустив пар начинают конструктивный диалог.
https://vk.com/video-52526415_456242434?t=2h16m54s
тут отрывок про один из экспериментов, скрестили чернокожих "черные пантеры" и белых (закончился провалом, но как раз из-за того, что организация черных пантер увидела что вместо революционного настроя люди стали спокойнее).
Так же был такой эксперимент с монастырем одним (можно поискать), тоже скрестили послушниц из женского монастыря с общением с обычными людьми (в итоге монастырь опустел).
Так что подобных экспериментов было не мало. Другое дело, что все они были контролируемые (чтобы ни кто не пострадал), поэтому люди говорили все что думают не опасаясь за свою безопасность.
А теперь, после того как LLM выдала вам ответ, попросить ее проверить его на ошибки. Найти слабые стороны ответа. Написать ответ-критику.
И то, что до этого вы считали верным (опираясь на LLM), вам выдаст тонны обратных утверждений. Но если будете пытаться переубедить сетку, то она снова выдаст вам аргументы за.
Автору бы сразу так надо было привести ссылку. Не встречал ранее такой формулы и не видел статьи. Но в таком толковании становится более понятно. Тот же Loss отражает суммарную перекрестную энтропию. А формулу, хоть и грубо и не точно, но отражает связь объема данных/ структуры данных (через ошибку)/ размер модели (выделение структуры). Пошел читать, откуда они ее получили, и как интерпретировали.
Тоже удивился. Даже эмпермически такой формулы нет. Такие формулы любят генерировать сетки, замечал такое. Связывая лишь бы связать, без доказательства, без эвристики. Так что формулу просто сгенерировала сетка и даже возможно "обосновала" ее правильность. А так да, к реальности формула не имеет отношения.