# Математическая основа Kokao Engine v1.0

## Основная модель

Сигнал вычисляется как скалярное произведение:

\[
S(\mathbf{x}) = \mathbf{w}^T \mathbf{x} = \sum_{i=1}^{n} w_i x_i
\]

Нормализация весов:  
\[
\sum_{i=1}^{n} |w_i| = 100
\]

Это обеспечивает инвариантность к масштабу и стабильность градиентов.

### Пример

Пусть `w = [0.5, -0.3, 0.2]`, сумма модулей `|0.5| + |-0.3| + |0.2| = 1.0`. После нормализации получим `w_norm = w * 100 / 1.0 = [50, -30, 20]`. Тогда для `x = [1, 1, 1]`, `S = 50*1 + (-30)*1 + 20*1 = 40`.

## Инверсная задача

Для заданного целевого сигнала `T` и, возможно, исходного вектора `x₀`, ищем `x`, минимизируя:

\[
\mathcal{L} = (S(\mathbf{x}) - T)^2 + \lambda \|\mathbf{x} - \mathbf{x}_0\|_1
\]

- Первый член – MSE, второй – L1-регуляризация для разреженности.
- Оптимизация ведётся градиентным методом (Adam).

### Пример инверсии

Пусть ядро `w = [50, -30, 20]`, `x₀ = [1, 1, 1]`, `T = 100`, `λ = 0.01`. Ищем `x` такой, что `S(x) ≈ 100`. Начальное приближение `x = x₀`. На каждой итерации вычисляем градиент по `x` и обновляем его. Через несколько шагов получим, например, `x ≈ [2.5, 0.2, 1.8]`.

## Обучение ядра

**Классическое** (без градиентов):  
\[
\mathbf{w}_{\text{new}} = \mathbf{w} + \eta (T - S(\mathbf{x})) \mathbf{x}
\]

**Градиентное** (с autograd): используется Adam для минимизации MSE на батче.
