Архитектура ИИ, построенная из первых принципов, а не форк
Почти весь современный искусственный интеллект (ИИ) — вариации на одни и те же несколько схем. Cypha начинает с другого места: один тип C++ с правилом обучения, выведенным из математики, а не заимствованным, которое обновляется на каждом увиденном примере, а не обучается один раз и замирает. Это исследовательский проект, и неудачи публикуются рядом с результатами.
- AIXI / Solomonoff — априоры минимальной длины описания (MDL) определяют, во что модели позволено верить дёшево.
- Информационная геометрия — обновления идут по естественному градиенту, так что обучение считается с кривизной пространства параметров.
- Активный вывод / свободная энергия — даёт структурное разложение на априор, дифференциал и контекст.
- Информационное бутылочное горлышко — задаёт целевую функцию кодировщика: оставить то, что предсказывает, остальное выбросить.
Что это такое за минуту
Почти любая используемая система ИИ — вариация на горстку схем. Их обучают один раз на большой машине и поставляют замороженными, поэтому успевать за тем, что движется — за новым видом мошенничества, новой неисправностью — значит возвращаться и обучать заново. Они ещё и большие, а значит стоят в дата-центре, а не на самом оборудовании, и объяснить отдельное решение трудно.
Cypha — это один тип C++, который классифицирует, предсказывает числа и порождает последовательности. Его правило обучения выведено из четырёх разделов математики, а не скопировано с готовой архитектуры, и обновляется на каждом увиденном примере — без батчей, без эпох, без прогонов переобучения. Он достаточно мал, чтобы работать на том же железе, которое собирает данные.
Сегодня — исследователям и инженерам, готовым попробовать другую конструкцию. Задачи, на которые он нацелен, — те, где данные всё время меняются — мошенничество, отказы оборудования, меняющееся поведение — где модель должна стоять на устройстве, а не в дата-центре, и где потом кто-то должен объяснить решение.
Случайные признаки — измеренные, а не описанные
Аргумент Cypha в пользу случайных признаков Фурье (RFF) в том, что они позволяют линейной голове разделить то, что линейная голова разделить не может. Это измеримое утверждение, поэтому здесь оно измеряется — с cypha::rff_features в сборке под WebAssembly, а не через пересказ на JavaScript.
cypha::rff_features — WebAssembly
не загруженоТочное ядро радиальной базисной функции (RBF) на n выбранных точках даёт матрицу K. Случайные признаки восстанавливают приближение K̂. На графике — ‖K − K̂‖F по мере роста числа признаков: больше признаков — ближе приближение.
chi_d — и тогда ортогональная строка соответствует той гауссовой строке, которую она заменяет. Строки были короче нужного в √d раз, поэтому признаки приближали не то ядро, и ошибка выходила на плато вместо сходимости. Одна строка. Теперь это лучший из трёх.
Семь слоёв, каждый делает одну работу
Каждый компонент ниже существует потому, что его требует одна из четырёх программ — а не потому, что он появился в статье в том квартале.
Подключаемый входной модуль
Из сырого входа в вектор признаков. В комплекте VectorEncoder,
RFFEncoder (случайные признаки Фурье) и ConcatEncoder. Меняется без последствий для всего, что ниже по конвейеру.
EncoderProjection
Признаки в скрытое пространство через контрастные обновления Фишера–Рао, с ограничением нормы Фробениуса, чтобы один выброс не разнёс геометрию.
WorldPrior
Общий диагональный гауссиан, подгоняемый онлайн обновлениями Велфорда и экспоненциального скользящего среднего (EMA). Это тот “бесконечный контекст”, который никогда не забывает — и чьё движение служит сигналом дрейфа.
ClassDifferential
Сдвиги естественных параметров по каждому классу: их притягивает к наблюдениям и оттягивает назад затухание MDL. Класс — это смещение относительно мира, а не отдельная модель.
DIFMemory
Считает отношения логарифмических правдоподобий при обобщённо-гиперболических апостериорах, с таблицами отношений Бесселя, чтобы тяжёлые хвосты не стоили по трансцендентной функции на образец.
TieredContextBuffer
Короткий, средний и длинный уровни, взвешенные по уверенности NIGField, так что свежие свидетельства могут перевешивать, не стирая того, что установил длинный уровень.
Обучите классификатор кликами
Точная двумерная миниатюра конвейера Cypha: мировой априор, подгоняемый онлайн, классовые дифференциалы, притягиваемые к тому, что вы ставите, и классификация по отношению логарифмических правдоподобий. Она учится с каждого клика — никаких батчей, никаких эпох, никаких перезапусков.
cypha::Cypha — онлайн-классификатор
Кликните по холсту, чтобы добавить образец выбранного класса. Тяните мышью, чтобы нарисовать кластер.
Какой класс ставить
Загрузить набор данных
Последний вывод
Классовые дифференциалы Δₖ
Результаты и сравнение, которое имеет значение
Цифры из собственных прогонов бенчмарков репозитория после исправления, найденного диагностикой. Корректность доказывается матрицей CTest, совпадающей с зафиксированными эталонами, — а не местом в рейтинге.
Сокращения в таблице: стохастический градиентный спуск (SGD), долгая краткосрочная память (LSTM), обратное распространение во времени (BPTT).
| Набор данных | Задача | Cypha | Онлайн-SGD | Примечание |
|---|---|---|---|---|
| Линейно разделимые | 2 класса | 0.783 | 0.644 | Тот же онлайн-бюджет |
| Iris | 3 класса | 0.900 | — | Классический эталонный набор |
| Wine | 3 класса | 0.969 | — | |
| Digits | 10 классов | 0.922 | — | |
| Breast cancer | 2 класса | 0.957 | — | |
| WikiText-2 | Последовательность, 300 тыс. токенов | 2,664 BPC | — | Hybrid GRIA+LSTM L2+Wave2 BPTT |
| XOR | 2 класса, скрытый RFF | ~0.763 | — | Один линейный LLR упирается в уровень случайного угадывания |
С температурным масштабированием, с обусловливанием полем, интерполяция по границам скрытого пространства, состязательная (максимизация энтропии), сэмплирование OOD, с ограничением MDL, предковое и сэмплирование KDE из буфера воспроизведения.
Оценки аномальности из значений гейтов, оценки активного запроса как энтропия × близость к границе, и выявление дрейфа прямо по движению мирового априора.
Приоритетный буфер на 10 000 элементов, взвешенный по свежести и неожиданности, воспроизводимый с долей 0,30 — чтобы редкий информативный образец не тонул среди частых.
Отпрофилированы, а не угаданы
Они получены из отпрофилированной оптимизации по средней сетке и поставляются как эталонная конфигурация.
Чем Cypha не является
- Не обёртка. Сделана с нуля из первых принципов — а значит, и чужой настройки она не наследует.
- У линейного LLR есть потолок. На XOR без скрытого кодировщика RFF результат держится около случайного, с ним поднимается примерно до 76,3%.
- Валидация строится на совпадении. CTest против зафиксированных эталонов. Никаких заявлений о местах в рейтингах.
- CUDA только для инференса. Обучение остаётся на центральном процессоре (CPU), потому что на этой архитектуре CPU быстрее.
- Теория живёт в другом месте. Работа по гармоническому спектру и NMP — это отдельная статья про алгоритмы сжатия; Cypha — слой реализации.
Cypha, дистиллированная из настоящего шахматного движка
26 568 позиций, размеченных собственными оценками поиска обычного альфа-бета движка, подогнаны тем же отбеливанием WorldPrior и обновлениями по естественному градиенту, что применяются везде в этой архитектуре. Она воспроизводит оценку учителя с R² 0,866 на отложенных позициях и показывает 5 побед–19 поражений–6 ничьих против этого учителя при равной глубине поиска.
Небольшой ИИ, который продолжает учиться
Большинство ИИ обучают один раз в дата-центре и отгружают замороженным. Cypha достаточно мала, чтобы работать на обычном железе, и продолжает учиться на каждом новом примере, который видит.
Устройства, слишком маленькие для большого ИИ
Датчики, камеры, контроллеры и прочее железо, за которым нет места для дата-центра. Cypha достаточно мала, чтобы работать прямо на устройстве, так что ничего не обязано покидать здание.
Всё, что должно поспевать за изменениями
Схемы мошенничества, отказы оборудования, меняющееся поведение клиентов. Модель, обученная в прошлом году, уже устарела. Эта обновляется на ходу, её не надо снимать с линии и переобучать.
Работа, которую потом надо объяснять
Банкам, страховщикам и медицинским службам часто приходится обосновывать решение. Cypha достаточно мала, чтобы её осмотреть, и она публикует то, что делает плохо, а не прячет это.
Три команды
$ cmake -S native -B /tmp/cypha_build -DCMAKE_BUILD_TYPE=Release -G Ninja $ cmake --build /tmp/cypha_build --parallel $ ctest --test-dir /tmp/cypha_build -R native_ --output-on-failure # REST service $ cypha_rest --listen 127.0.0.1:8099 --cypha fixtures/reference.cypha # Qt shell (build with -DCYPHA_BUILD_QT=ON) $ cypha_qt_shell