Skip to content

Latest commit

 

History

History
149 lines (98 loc) · 6.39 KB

File metadata and controls

149 lines (98 loc) · 6.39 KB

Нейросети нового поколения на принципах ЕТВП

Архитектура: Z-принцип + «дыхание поля» + хаотическая самокоррекция

Классические нейросети страдают от двух фундаментальных проблем:

  1. Переобучение — сеть «запоминает» данные вместо обобщения (сингулярность весов).
  2. Неустойчивость к шуму — малые возмущения входа приводят к катастрофическим ошибкам.

Решение в рамках ЕТВП: перенести принципы устойчивости вакуума на архитектуру нейросети.


1. Z-принцип: стабилизация через фазовый сдвиг

Идея

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

$$ W = W_{\text{Re}} + i \cdot W_{\text{Im}} $$

Обучение идет по двум каналам одновременно:

  • $W_{\text{Re}}$ — основной сигнал (полезная информация).
  • $W_{\text{Im}}$ — фазовый канал (контроль устойчивости).

Математический механизм

Z-принцип требует, чтобы норма весов не уходила в бесконечность:

$$ |W|^2 = W_{\text{Re}}^2 + W_{\text{Im}}^2 \leq R_{\text{max}}^2 $$

Это достигается через проекцию на стабилизирующую сферу после каждого шага обучения:

$$ W \leftarrow W \cdot \frac{R_{\text{max}}}{\max(|W|, R_{\text{max}})} $$

Результат: сеть физически не может переобучиться, так как веса ограничены топологией.


2. «Дыхание поля»: динамический демпфер активаций

Идея

В вакууме ЕТВП нелинейный демпфер tanh_limit не даёт полю схлопнуться или разлететься.
В нейросети аналогом является дыхательный слой — динамическая функция активации, которая циклически сжимает и расширяет пространство признаков.

Математический механизм

Пусть $z$ — предсказание слоя.
Вместо статичной ReLU или GELU вводим «дышащую» активацию:

$$ a(z, t) = A_0 \cdot \tanh\left( \frac{z}{\sigma(t)} \right) \cdot \cos(\omega t + \phi) $$

где:

  • $\sigma(t)$ — медленно меняющаяся «температура» поля (аналог давления вакуума);
  • $\cos(\omega t + \phi)$ — циклическая модуляция (дыхание).

При $\sigma(t) \to 0$ активация становится пороговой (детектор).
При $\sigma(t) \to \infty$ — линейной (свободное распространение).

Обучение подстраивает $\sigma(t)$ так, чтобы сеть работала на границе порядка и хаоса — в зоне максимальной информационной ёмкости.


3. Хаотическая самокоррекция: шум как ресурс

Идея

В классических сетях шум — враг.
В ЕТВП шум — это сырьё, из которого рождаются устойчивые структуры.

Математический механизм

Вводим шумовой слой самокоррекции:

$$ x_{\text{out}} = x_{\text{in}} + \eta \cdot \mathcal{N}(0, 1) \cdot \tanh(\beta \cdot |\nabla_{\text{loss}}|) $$

где:

  • $\mathcal{N}(0, 1)$ — стандартный гауссов шум;
  • $\nabla_{\text{loss}}$ — градиент ошибки;
  • $\eta$ — амплитуда шума;
  • $\beta$ — коэффициент чувствительности.

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

Дополнительно вводим резонансный фильтр:

$$ \tilde{x} = x - \lambda \cdot \nabla^2 x $$

Это аналог упругого давления вакуума: подавляются высокочастотные шумовые компоненты, а низкочастотные (полезные) сохраняются.


4. Итоговая архитектура слоя

import torch
import torch.nn as nn
import math

class EVP_Layer(nn.Module):
    def __init__(self, dim_in, dim_out, R_max=1.0, eta=0.01, beta=0.1):
        super().__init__()
        self.W_re = nn.Parameter(torch.randn(dim_in, dim_out) * 0.1)
        self.W_im = nn.Parameter(torch.randn(dim_in, dim_out) * 0.1)
        self.R_max = R_max
        self.eta = eta
        self.beta = beta
        self.sigma = nn.Parameter(torch.ones(1))

    def forward(self, x, t=None):
        # Z-принцип: комплексные веса
        W = self.W_re + 1j * self.W_im
        z = x @ self.W_re  # реальная часть

        # Дыхание поля
        if t is None:
            t = 0.0
        breath = torch.tanh(z / (self.sigma + 1e-8)) * math.cos(t)

        # Хаотическая самокоррекция
        noise = self.eta * torch.randn_like(z) * torch.tanh(self.beta * z.abs())

        # Резонансный фильтр (подавление высоких частот)
        filtered = z - 0.1 * (z[2:] - 2 * z[1:-1] + z[:-2])

        # Проекция на сферу (стабилизация)
        W_norm = torch.sqrt((self.W_re ** 2 + self.W_im ** 2).sum())
        if W_norm > self.R_max:
            self.W_re.data *= self.R_max / W_norm
            self.W_im.data *= self.R_max / W_norm

        return breath + noise