Либо я не понял вас. Вы просто выше сравнивали 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 отражает суммарную перекрестную энтропию. А формулу, хоть и грубо и не точно, но отражает связь объема данных/ структуры данных (через ошибку)/ размер модели (выделение структуры). Пошел читать, откуда они ее получили, и как интерпретировали.
Тоже удивился. Даже эмпермически такой формулы нет. Такие формулы любят генерировать сетки, замечал такое. Связывая лишь бы связать, без доказательства, без эвристики. Так что формулу просто сгенерировала сетка и даже возможно "обосновала" ее правильность. А так да, к реальности формула не имеет отношения.
Смысл тут следующий. Случайный выбор токена с учётом top-k и температуры (ошибки в обучении мы не берём в расчет) влияет на предсказание цепочки в ответе. При чем правильный ответ не всегда может соответствовать самому обобщенному. Есть спорные ответы.
В свое время в чате сберкомьюнити разбирали это. Я тогда предложил подход описанный по ссылке и затем сделал проверку через код (народ проверял вручную). В моем случае, использовалась белуга 7b и спорные вопросы. Так вот, использование даже одной модели, но с разными параметрами существенно улучшает результат. Если в данных модели где то "запрятан" ответ, то его выдаст при определенных условиях.
Там главное было ещё в том, что правильность или не правильность оценивалось не только по ответу, но и по объяснению почему был дан такой ответ. Это позволяло отсеит слабые размытые ответы, не по теме.
Но тут важно было чтобы все модели были равные. Баланс. Иначе слабые модели могли просто "отсчюечь" ответ сильной модели, или другие критерии. Постепенно, цепочка оставляла только одного победителя и его ответ принимался.
Это чем то похоже на рассуждающие модели, но с той разницей что их много и оценка даётся не только ответу, но и аргументации ответа, создавая турнирную цепочку.
Проблема тут была в том, что это очень дорого и медленно. Для 10-и LLM время ответа могло быть 30 минут. Ресурсов это тоже съедало очень много. Поэтому для простых вопросов это очень дорогой подход.
Это работало, как своего рода метод Монте Карло. Когда мы считаем что ответу могут быть случайными, но с одной разницей - правильны ответы должны выдаваться чаще чем не правильные. Поэтому данный подход снижает вероятность получения неверного ответ, так как каждый раз мы выбираем наиболее "верный" (набравший больше всех подтверждений правильности).
Так что в целом подход к статье верный. Не знаю учитывает ли он нюансы описанные выше.
Я привел ссылки, исходники, результаты. Вы же просто порождаете бессмысленный флуд.
Вы не понимаете связь с Loss, даже на скриншоте вы увидели только часть смысла. Вам дают примеры где можно открыть исходники, запустить. Дают объяснение почему и как, как к этому пришли. Выстраивают на этом математически обоснованную математическую теорию, которую можно проверить. Проверяют каждый шаг на противоречия другим моделям, а так же на практических примерах.
Я не готов продолжать диалог, так как вы показали, что у вас нет компетенций ни в области нейронных сетях, ни достаточных знаний в математике. Вы нахватались каких-то поверхностных знаний. Поэтому с вами невозможно вести равный диалог из-за отсутствия у вас знаний в предметной области.
1) если бы вы зашли в комментарии по ссылке с арбитрами, то увидели бы что суть теста был не в том что модель становилась умнее, а задача была снизить галлюцинации моделей. Там есть примеры и результаты, есть исходный код который вы можете проверить.
2) Теперь про curriculum learning - дальше скриншота видимо не пошли, ну ок. curriculum learning лишь перекликается с этим. В данном случае это расширение подхода от эмпирического к математического, через расчет энтропии марковских цепей и постепенном усложнении структуры (за счет включения новых блоков при обучении). Скриншот был о другом - о том, что даже стандартные оценки порой не отражают правильно ошибки. И объяснил почему так.
Насчет выкладок, я делаю примеры и выкладываю, чтобы каждый мог проверить. В вашем случае, я пока не увидел того, что вы разбираетесь в теме и понимаете ее. Ваши рассуждения носят поверхностный характер и говорят о том, что в обучении моделей, в теории вероятности, теории информации и других разделах математики вы плохо разбираетесь. Иначе не несли бы чушь, которую написали выше.
Во первых, я привел вам пример с Loss для наглядности. Так как рассуждения и стиль моделей отражаются их Loss в обобщению данных на которых они были обучены. Поэтому, когда модель грубо сравнивает стиль со своим, это отражения сравнение Loss двух прогнозов токенов. Не 1 в 1, но отражает их сравнение. Поэтому, раз вы этого не поняли, я перешел на более понятный для вас подход.
Насчет конфигурации, то я не просто пробовал. А строил на этом подходе рассуждающую модель со множество арбитров, где судьями выступали сами LLM - с целью снижения галлюцинаций. Замечу, что это был ансамбль множества разных LLM. И даже выкладывал код (в комменатриях).
Сейчас у меня он переписанный под крупные модели включая ChatGPT, DeepSeek и другие. Поэтому да, я могу утверждать, что все что написано мной выше верно. Нельзя вот так в лоб делать сравнение на любой случай. Мы получаем мусорный бенчмарк. Максимум мы можем усреднить этот показатель, и сравнивать с усреднённым при условии равнозначных моделей в ансамбле при оценке.
К сожалению глобальный Loss и другие такие метрики, тоже не панацея. На примере выше видно, что при правильном обучении модель начинает быстрее выделять структурные связи. Но Loss это не отражает, по той причине что стандартные критерии оценки Loss не умеют давать оценку иерархический моделей. А текст отражает именно иерархию признаков. Поэтому высокочастотные слова дают меньше Loss, а более правильная структура построения выдает хуже Loss. Это для наглядности, чтобы было понятно, что пограничные условия при сравнении равных моделей без правильного понимания, как это работает - бессмысленны.
Теперь что касается математической строгости. Это не нытье. В отличии от вас, я занимаюсь этим https://t.me/greenruff/2469
Поэтому могу сказать на основе доказанных теорем (которые можно легко проверить), что есть более точные критерии для сравнения моделей по энтропии. А не как в данном бенчмарке, который не имеет отношения к реальным данным. Любое действие должно быть обоснованным и доказанным. Я пока не увидел от вас ни одного обоснования, у вас все смешалось в кучу и синтетические данные, и экстраполяция бенчмарков и другие утверждения.
Вы понимаете, что все сильнее закапываете себя? Я привел Loss в качестве примера для наглядности и понимания в целом. Так как он отражает их обобщение между данными при обучении и обобщенными самой моделью.
Если на более поверхностном, то если одна модель выступает судьёй для другой, то её оценка неизбежно смещена в сторону её собственных представлений и формулировок. То есть она “выбирает” то, что похоже на её собственный стиль ответа. Получается не абсолютная оценка “качества”, а метрика “похожести на суждения судьи”.
Если мы сравниваем маленькую модель с большой, то в роли судьи можно взять большую модель. Тут предполагается, что она в среднем ближе к человеческим стандартам (лучше знает грамматику, логику, структуру).
Для варианта выше используют более строгие методы:
люди-эксперты или обычные пользователи дают оценки.
пользователям или “судье” показывают два ответа и они выбирают лучший - это уменьшает смещение.
несколько разных моделей оценивают и усредняют.
агрегированные метрики: например, измерение фактической точности (правильные факты против галлюцинаций), то что я написал на примере Loss (как одной из возможных оценок - и даже он не показатель)
Но что хуже, это то что строгих "теорем правильности" у этого подхода нет. Есть лишь эмпирические работы, показывающие, что оценки крупных моделей коррелируют с человеческими (есть исследования про корреляцию 80%). Но это всё статистика, а не строгая теория.
Так что судейство одной моделью — это в лучшем случае приближение. Более того, это не строгий критерий, а эвристика.
Для крупных моделей между собой — почти бессмысленно!!!
Либо я не понял вас. Вы просто выше сравнивали 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 отражает суммарную перекрестную энтропию. А формулу, хоть и грубо и не точно, но отражает связь объема данных/ структуры данных (через ошибку)/ размер модели (выделение структуры). Пошел читать, откуда они ее получили, и как интерпретировали.
Тоже удивился. Даже эмпермически такой формулы нет. Такие формулы любят генерировать сетки, замечал такое. Связывая лишь бы связать, без доказательства, без эвристики. Так что формулу просто сгенерировала сетка и даже возможно "обосновала" ее правильность. А так да, к реальности формула не имеет отношения.
На самом деле это заметно снижается галлюцинации.
https://t.me/greenruff/1757
https://t.me/greenruff/1740
Смысл тут следующий. Случайный выбор токена с учётом top-k и температуры (ошибки в обучении мы не берём в расчет) влияет на предсказание цепочки в ответе. При чем правильный ответ не всегда может соответствовать самому обобщенному. Есть спорные ответы.
В свое время в чате сберкомьюнити разбирали это. Я тогда предложил подход описанный по ссылке и затем сделал проверку через код (народ проверял вручную). В моем случае, использовалась белуга 7b и спорные вопросы. Так вот, использование даже одной модели, но с разными параметрами существенно улучшает результат. Если в данных модели где то "запрятан" ответ, то его выдаст при определенных условиях.
Там главное было ещё в том, что правильность или не правильность оценивалось не только по ответу, но и по объяснению почему был дан такой ответ. Это позволяло отсеит слабые размытые ответы, не по теме.
Но тут важно было чтобы все модели были равные. Баланс. Иначе слабые модели могли просто "отсчюечь" ответ сильной модели, или другие критерии. Постепенно, цепочка оставляла только одного победителя и его ответ принимался.
Это чем то похоже на рассуждающие модели, но с той разницей что их много и оценка даётся не только ответу, но и аргументации ответа, создавая турнирную цепочку.
Проблема тут была в том, что это очень дорого и медленно. Для 10-и LLM время ответа могло быть 30 минут. Ресурсов это тоже съедало очень много. Поэтому для простых вопросов это очень дорогой подход.
Это работало, как своего рода метод Монте Карло. Когда мы считаем что ответу могут быть случайными, но с одной разницей - правильны ответы должны выдаваться чаще чем не правильные. Поэтому данный подход снижает вероятность получения неверного ответ, так как каждый раз мы выбираем наиболее "верный" (набравший больше всех подтверждений правильности).
Так что в целом подход к статье верный. Не знаю учитывает ли он нюансы описанные выше.
Я привел ссылки, исходники, результаты. Вы же просто порождаете бессмысленный флуд.
Вы не понимаете связь с Loss, даже на скриншоте вы увидели только часть смысла. Вам дают примеры где можно открыть исходники, запустить. Дают объяснение почему и как, как к этому пришли. Выстраивают на этом математически обоснованную математическую теорию, которую можно проверить. Проверяют каждый шаг на противоречия другим моделям, а так же на практических примерах.
Я не готов продолжать диалог, так как вы показали, что у вас нет компетенций ни в области нейронных сетях, ни достаточных знаний в математике. Вы нахватались каких-то поверхностных знаний. Поэтому с вами невозможно вести равный диалог из-за отсутствия у вас знаний в предметной области.
1) если бы вы зашли в комментарии по ссылке с арбитрами, то увидели бы что суть теста был не в том что модель становилась умнее, а задача была снизить галлюцинации моделей. Там есть примеры и результаты, есть исходный код который вы можете проверить.
2) Теперь про curriculum learning - дальше скриншота видимо не пошли, ну ок. curriculum learning лишь перекликается с этим. В данном случае это расширение подхода от эмпирического к математического, через расчет энтропии марковских цепей и постепенном усложнении структуры (за счет включения новых блоков при обучении). Скриншот был о другом - о том, что даже стандартные оценки порой не отражают правильно ошибки. И объяснил почему так.
Насчет выкладок, я делаю примеры и выкладываю, чтобы каждый мог проверить. В вашем случае, я пока не увидел того, что вы разбираетесь в теме и понимаете ее. Ваши рассуждения носят поверхностный характер и говорят о том, что в обучении моделей, в теории вероятности, теории информации и других разделах математики вы плохо разбираетесь. Иначе не несли бы чушь, которую написали выше.
Во первых, я привел вам пример с Loss для наглядности. Так как рассуждения и стиль моделей отражаются их Loss в обобщению данных на которых они были обучены. Поэтому, когда модель грубо сравнивает стиль со своим, это отражения сравнение Loss двух прогнозов токенов. Не 1 в 1, но отражает их сравнение. Поэтому, раз вы этого не поняли, я перешел на более понятный для вас подход.
Насчет конфигурации, то я не просто пробовал. А строил на этом подходе рассуждающую модель со множество арбитров, где судьями выступали сами LLM - с целью снижения галлюцинаций. Замечу, что это был ансамбль множества разных LLM. И даже выкладывал код (в комменатриях).
https://t.me/greenruff/1756
Сейчас у меня он переписанный под крупные модели включая ChatGPT, DeepSeek и другие. Поэтому да, я могу утверждать, что все что написано мной выше верно. Нельзя вот так в лоб делать сравнение на любой случай. Мы получаем мусорный бенчмарк. Максимум мы можем усреднить этот показатель, и сравнивать с усреднённым при условии равнозначных моделей в ансамбле при оценке.
К сожалению глобальный Loss и другие такие метрики, тоже не панацея.
На примере выше видно, что при правильном обучении модель начинает быстрее выделять структурные связи. Но Loss это не отражает, по той причине что стандартные критерии оценки Loss не умеют давать оценку иерархический моделей. А текст отражает именно иерархию признаков.
Поэтому высокочастотные слова дают меньше Loss, а более правильная структура построения выдает хуже Loss.
Это для наглядности, чтобы было понятно, что пограничные условия при сравнении равных моделей без правильного понимания, как это работает - бессмысленны.
Теперь что касается математической строгости. Это не нытье. В отличии от вас, я занимаюсь этим https://t.me/greenruff/2469
Поэтому могу сказать на основе доказанных теорем (которые можно легко проверить), что есть более точные критерии для сравнения моделей по энтропии. А не как в данном бенчмарке, который не имеет отношения к реальным данным. Любое действие должно быть обоснованным и доказанным. Я пока не увидел от вас ни одного обоснования, у вас все смешалось в кучу и синтетические данные, и экстраполяция бенчмарков и другие утверждения.
Вы понимаете, что все сильнее закапываете себя? Я привел Loss в качестве примера для наглядности и понимания в целом. Так как он отражает их обобщение между данными при обучении и обобщенными самой моделью.
Если на более поверхностном, то если одна модель выступает судьёй для другой, то её оценка неизбежно смещена в сторону её собственных представлений и формулировок. То есть она “выбирает” то, что похоже на её собственный стиль ответа. Получается не абсолютная оценка “качества”, а метрика “похожести на суждения судьи”.
Если мы сравниваем маленькую модель с большой, то в роли судьи можно взять большую модель. Тут предполагается, что она в среднем ближе к человеческим стандартам (лучше знает грамматику, логику, структуру).
Для варианта выше используют более строгие методы:
люди-эксперты или обычные пользователи дают оценки.
пользователям или “судье” показывают два ответа и они выбирают лучший - это уменьшает смещение.
несколько разных моделей оценивают и усредняют.
агрегированные метрики: например, измерение фактической точности (правильные факты против галлюцинаций), то что я написал на примере Loss (как одной из возможных оценок - и даже он не показатель)
Но что хуже, это то что строгих "теорем правильности" у этого подхода нет. Есть лишь эмпирические работы, показывающие, что оценки крупных моделей коррелируют с человеческими (есть исследования про корреляцию 80%). Но это всё статистика, а не строгая теория.
Так что судейство одной моделью — это в лучшем случае приближение. Более того, это не строгий критерий, а эвристика.
Для крупных моделей между собой — почти бессмысленно!!!