Cypha · v2.4.0

Архитектура ИИ, построенная из первых принципов, а не форк

Почти весь современный искусственный интеллект (ИИ) — вариации на одни и те же несколько схем. Cypha начинает с другого места: один тип C++ с правилом обучения, выведенным из математики, а не заимствованным, которое обновляется на каждом увиденном примере, а не обучается один раз и замирает. Это исследовательский проект, и неудачи публикуются рядом с результатами.

ЯзыкC++
Релизv2.4.0
WikiText-2, бит на символ (BPC)2,664 BPC
Последняя отправканедавно
Четыре программы, одно правило обучения
  • AIXI / Solomonoff — априоры минимальной длины описания (MDL) определяют, во что модели позволено верить дёшево.
  • Информационная геометрия — обновления идут по естественному градиенту, так что обучение считается с кривизной пространства параметров.
  • Активный вывод / свободная энергия — даёт структурное разложение на априор, дифференциал и контекст.
  • Информационное бутылочное горлышко — задаёт целевую функцию кодировщика: оставить то, что предсказывает, остальное выбросить.
Простыми словами

Что это такое за минуту

Проблема

Почти любая используемая система ИИ — вариация на горстку схем. Их обучают один раз на большой машине и поставляют замороженными, поэтому успевать за тем, что движется — за новым видом мошенничества, новой неисправностью — значит возвращаться и обучать заново. Они ещё и большие, а значит стоят в дата-центре, а не на самом оборудовании, и объяснить отдельное решение трудно.

Решение

Cypha — это один тип C++, который классифицирует, предсказывает числа и порождает последовательности. Его правило обучения выведено из четырёх разделов математики, а не скопировано с готовой архитектуры, и обновляется на каждом увиденном примере — без батчей, без эпох, без прогонов переобучения. Он достаточно мал, чтобы работать на том же железе, которое собирает данные.

Кому это нужно

Сегодня — исследователям и инженерам, готовым попробовать другую конструкцию. Задачи, на которые он нацелен, — те, где данные всё время меняются — мошенничество, отказы оборудования, меняющееся поведение — где модель должна стоять на устройстве, а не в дата-центре, и где потом кто-то должен объяснить решение.

Оценивайте это как исследование. Цифры ниже — из собственных прогонов бенчмарков репозитория, сверенных с зафиксированными тестовыми эталонами, а не с местом в таблице лидеров. Раздел под заголовком Чем Cypha не является перечисляет ограничения, включая стандартный тест, на котором результат держится около случайного, пока не включишь один конкретный компонент. Дальше на этой странице — архитектура и измерения.
Сама библиотека

Случайные признаки — измеренные, а не описанные

Аргумент Cypha в пользу случайных признаков Фурье (RFF) в том, что они позволяют линейной голове разделить то, что линейная голова разделить не может. Это измеримое утверждение, поэтому здесь оно измеряется — с cypha::rff_features в сборке под WebAssembly, а не через пересказ на JavaScript.

cypha::rff_features — WebAssembly

не загружено

Точное ядро радиальной базисной функции (RBF) на n выбранных точках даёт матрицу K. Случайные признаки восстанавливают приближение K̂. На графике — ‖K − K̂‖F по мере роста числа признаков: больше признаков — ближе приближение.

Библиотека
—
Компиляция этого нашла баг. Ортогональные случайные признаки (ORF) — плотный вариант — нормировали каждую строку до единичной длины, тогда как Yu et al. берут норму строки из chi_d — и тогда ортогональная строка соответствует той гауссовой строке, которую она заменяет. Строки были короче нужного в √d раз, поэтому признаки приближали не то ядро, и ошибка выходила на плато вместо сходимости. Одна строка. Теперь это лучший из трёх.
Однопоточно намеренно: многопоточному WebAssembly нужен SharedArrayBuffer, которому нужны заголовки Cross-Origin-Opener-Policy (COOP) и Cross-Origin-Embedder-Policy (COEP), а GitHub Pages их не отправляет.
Архитектура

Семь слоёв, каждый делает одну работу

Каждый компонент ниже существует потому, что его требует одна из четырёх программ — а не потому, что он появился в статье в том квартале.

Конвейер Cypha по порядку: кодировщик, проекция, мировой априор, классовые дифференциалы, память и многоуровневый контекст — на выходе класс с уверенностью, оценкой аномальности и флагом выхода за пределы распределения
прокрутите, чтобы увидеть всю схему →
Один тип, четыре работы. Демонстрация ниже на этой странице — ровно этот конвейер в двух измерениях — мировой априор это пунктирный эллипс, дифференциалы это столбики.
Кодировщик

Подключаемый входной модуль

Из сырого входа в вектор признаков. В комплекте VectorEncoder, RFFEncoder (случайные признаки Фурье) и ConcatEncoder. Меняется без последствий для всего, что ниже по конвейеру.

Проекция

EncoderProjection

Признаки в скрытое пространство через контрастные обновления Фишера–Рао, с ограничением нормы Фробениуса, чтобы один выброс не разнёс геометрию.

θ₀

WorldPrior

Общий диагональный гауссиан, подгоняемый онлайн обновлениями Велфорда и экспоненциального скользящего среднего (EMA). Это тот “бесконечный контекст”, который никогда не забывает — и чьё движение служит сигналом дрейфа.

Δₖ

ClassDifferential

Сдвиги естественных параметров по каждому классу: их притягивает к наблюдениям и оттягивает назад затухание MDL. Класс — это смещение относительно мира, а не отдельная модель.

Память

DIFMemory

Считает отношения логарифмических правдоподобий при обобщённо-гиперболических апостериорах, с таблицами отношений Бесселя, чтобы тяжёлые хвосты не стоили по трансцендентной функции на образец.

Контекст

TieredContextBuffer

Короткий, средний и длинный уровни, взвешенные по уверенности NIGField, так что свежие свидетельства могут перевешивать, не стирая того, что установил длинный уровень.

Классификация от начала до конца: кодирование → проекция → оценка отношения логарифмических правдоподобий каждого класса против мирового априора → возврат argmax вместе с уверенностью, оценкой аномальности и флагом выхода за пределы распределения. Демонстрация ниже — ровно этот конвейер, в миниатюре.
Интерактив

Обучите классификатор кликами

Точная двумерная миниатюра конвейера Cypha: мировой априор, подгоняемый онлайн, классовые дифференциалы, притягиваемые к тому, что вы ставите, и классификация по отношению логарифмических правдоподобий. Она учится с каждого клика — никаких батчей, никаких эпох, никаких перезапусков.

cypha::Cypha — онлайн-классификатор

Кликните по холсту, чтобы добавить образец выбранного класса. Тяните мышью, чтобы нарисовать кластер.

Какой класс ставить

Загрузить набор данных

Образцов
0
Точность
—
Макс. LLR
—
Дрейф априора
0.00

Последний вывод

Простой
Наведите курсор на холст, чтобы классифицировать точку, не обучаясь на ней.

Классовые дифференциалы Δₖ

Двумерная учебная реализация, написанная для этой страницы — та же структура, что у настоящего конвейера, но без его масштаба. Реализация на C++ лежит в native/.
Попробуйте исключающее ИЛИ (XOR) с выключенным кодировщиком RFF. Точность падает до уровня случайного угадывания, и это не баг демонстрации — это задокументированное ограничение линейного отношения логарифмических правдоподобий, прямо названное в README Cypha. Включите скрытый кодировщик RFF и посмотрите, как она восстанавливается. Публиковать режим отказа рядом с исправлением — в этом весь смысл.
Измерено

Результаты и сравнение, которое имеет значение

Цифры из собственных прогонов бенчмарков репозитория после исправления, найденного диагностикой. Корректность доказывается матрицей CTest, совпадающей с зафиксированными эталонами, — а не местом в рейтинге.

Сокращения в таблице: стохастический градиентный спуск (SGD), долгая краткосрочная память (LSTM), обратное распространение во времени (BPTT).

Набор данныхЗадачаCyphaОнлайн-SGDПримечание
Линейно разделимые2 класса0.7830.644Тот же онлайн-бюджет
Iris3 класса0.900—Классический эталонный набор
Wine3 класса0.969— 
Digits10 классов0.922— 
Breast cancer2 класса0.957— 
WikiText-2Последовательность, 300 тыс. токенов2,664 BPC—Hybrid GRIA+LSTM L2+Wave2 BPTT
XOR2 класса, скрытый RFF~0.763—Один линейный LLR упирается в уровень случайного угадывания
Генерация

С температурным масштабированием, с обусловливанием полем, интерполяция по границам скрытого пространства, состязательная (максимизация энтропии), сэмплирование OOD, с ограничением MDL, предковое и сэмплирование KDE из буфера воспроизведения.

Аномалии и активное обучение

Оценки аномальности из значений гейтов, оценки активного запроса как энтропия × близость к границе, и выявление дрейфа прямо по движению мирового априора.

Воспроизведение

Приоритетный буфер на 10 000 элементов, взвешенный по свежести и неожиданности, воспроизводимый с долей 0,30 — чтобы редкий информативный образец не тонул среди частых.

Эталонные значения по умолчанию

Отпрофилированы, а не угаданы

Они получены из отпрофилированной оптимизации по средней сетке и поставляются как эталонная конфигурация.

Размерность признаков128
Бюджет RFF256
Доля воспроизведения0.30
Окно контекста32
LR мирового априора0.008
LR классового дифференциала0.05
LR кодировщика0.002
Лямбда MDL0.001
Без прикрас

Чем Cypha не является

  • Не обёртка. Сделана с нуля из первых принципов — а значит, и чужой настройки она не наследует.
  • У линейного LLR есть потолок. На XOR без скрытого кодировщика RFF результат держится около случайного, с ним поднимается примерно до 76,3%.
  • Валидация строится на совпадении. CTest против зафиксированных эталонов. Никаких заявлений о местах в рейтингах.
  • CUDA только для инференса. Обучение остаётся на центральном процессоре (CPU), потому что на этой архитектуре CPU быстрее.
  • Теория живёт в другом месте. Работа по гармоническому спектру и NMP — это отдельная статья про алгоритмы сжатия; Cypha — слой реализации.
Демонстрация продукта

Cypha, дистиллированная из настоящего шахматного движка

26 568 позиций, размеченных собственными оценками поиска обычного альфа-бета движка, подогнаны тем же отбеливанием WorldPrior и обновлениями по естественному градиенту, что применяются везде в этой архитектуре. Она воспроизводит оценку учителя с R² 0,866 на отложенных позициях и показывает 5 побед–19 поражений–6 ничьих против этого учителя при равной глубине поиска.

Кому это нужно

Небольшой ИИ, который продолжает учиться

Большинство ИИ обучают один раз в дата-центре и отгружают замороженным. Cypha достаточно мала, чтобы работать на обычном железе, и продолжает учиться на каждом новом примере, который видит.

01

Устройства, слишком маленькие для большого ИИ

Датчики, камеры, контроллеры и прочее железо, за которым нет места для дата-центра. Cypha достаточно мала, чтобы работать прямо на устройстве, так что ничего не обязано покидать здание.

02

Всё, что должно поспевать за изменениями

Схемы мошенничества, отказы оборудования, меняющееся поведение клиентов. Модель, обученная в прошлом году, уже устарела. Эта обновляется на ходу, её не надо снимать с линии и переобучать.

03

Работа, которую потом надо объяснять

Банкам, страховщикам и медицинским службам часто приходится обосновывать решение. 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
Условия лицензирования