nous

0

Описание

Nous — нейросимволическая библиотека для интерпретируемого ИИ

Языки

  • Python100%
5 месяцев назад
5 месяцев назад
5 месяцев назад
7 месяцев назад
5 месяцев назад
5 месяцев назад
README.md

Nous: нейро-символическая библиотека для объяснимого ИИ

PyPI версия Лицензия: MIT Python ≥3.8 PyTorch ≥2.1 GitHub

Nous (др.-греч. νοῦς — «разум») — библиотека для нейро-символического обучения, которая позволяет строить понятные, прозрачные и производительные модели классификации и регрессии. Библиотека совмещает дифференцируемые β-факты с логическими правилами, создавая модели, решения которых можно прочитать как текст, сохраняя при этом все преимущества градиентной оптимизации.

🚀 Возможности

  • Понятные объяснения
    Модель выдаёт правила вида «ЕСЛИ-ТО», которые объясняют каждое предсказание

  • Обучение символьных правил градиентами
    Логические правила оптимизируются через backpropagation

  • Честная интерпретируемость
    Leave-one-out анализ, контрфактуалы и минимально достаточные объяснения

  • Экспорт без зависимостей
    Выгрузка обученной модели в чистый NumPy для боевого использования

  • Классификация через прототипы
    Решение принимается на основе близости к выученным эталонам

  • Специализированные оптимизаторы
    Инструменты для обучения разреженных моделей с управляемой активацией правил

📦 Установка

Стабильная версия

🎯 Быстрый старт

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

Получаем объяснения

Выгружаем в production

🏗️ Архитектура

Из чего состоит модель

β-факты — дифференцируемые строительные блоки, работающие по формуле:

βᵢ(x) = σ(kᵢ · (Lᵢx − Rᵢx − θᵢ))^νᵢ

где

k
задаёт резкость переходов,
ν
— форму активации, а параметры
(L, R, θ)
описывают линейный предикат

Слои правил — комбинируют β-факты через логические операции AND/OR/k-из-n/NOT в нескольких режимах работы

Гейты — механизмы мягкого отбора top-k правил или маскирования по заданному бюджету

Прототипная голова — классифицирует объекты по близости к выученным эталонам с L2-нормализацией

📊 Результаты на бенчмарках

ДатасетМетрикаNousXGBoostEBMMLPKAN
HELOC (классификация)AUC0.7922 ± 0.00370.7965 ± 0.00710.8001 ± 0.00650.7910 ± 0.00450.7964 ± 0.0060
Точность0.7199 ± 0.00630.7239 ± 0.00890.7279 ± 0.00830.7218 ± 0.00630.7252 ± 0.0073
California Housing (регрессия)RMSE ↓0.5157 ± 0.01170.4441 ± 0.01170.5500 ± 0.01310.5231 ± 0.00720.5510 ± 0.0046
R² ↑0.8001 ± 0.00910.8517 ± 0.00900.7726 ± 0.01070.7944 ± 0.00270.7719 ± 0.0038

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

🔍 Продвинутые фичи

Минимально достаточные объяснения

Контрфактуалы

Глобальный анализ

🗂️ Структура проекта

nous/ ├── model.py # Основной класс NousNet ├── facts.py # β-факты и калибраторы признаков ├── rules/ # Слои правил и гейты ├── prototypes.py # Прототипная голова для классификации ├── explain/ # Инструменты объяснимости ├── export/ # Экспорт в NumPy ├── training/ # Утилиты для обучения ├── optim/ # Специальные оптимизаторы └── examples/ # Примеры использования

🤝 Участие в разработке

Буду рад любому вкладу:

  1. Форкните репозиторий
  2. Создайте ветку (
    git checkout -b feature/cool-stuff
    )
  3. Добавьте тесты и документацию
  4. Отправьте pull request

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

📄 Лицензия

MIT License. Подробности в LICENSE.