nous
Описание
Nous — нейросимволическая библиотека для интерпретируемого ИИ
Языки
- Python100%
Nous: нейро-символическая библиотека для объяснимого ИИ
Nous (др.-греч. νοῦς — «разум») — библиотека для нейро-символического обучения, которая позволяет строить понятные, прозрачные и производительные модели классификации и регрессии. Библиотека совмещает дифференцируемые β-факты с логическими правилами, создавая модели, решения которых можно прочитать как текст, сохраняя при этом все преимущества градиентной оптимизации.
🚀 Возможности
-
Понятные объяснения
Модель выдаёт правила вида «ЕСЛИ-ТО», которые объясняют каждое предсказание -
Обучение символьных правил градиентами
Логические правила оптимизируются через backpropagation -
Честная интерпретируемость
Leave-one-out анализ, контрфактуалы и минимально достаточные объяснения -
Экспорт без зависимостей
Выгрузка обученной модели в чистый NumPy для боевого использования -
Классификация через прототипы
Решение принимается на основе близости к выученным эталонам -
Специализированные оптимизаторы
Инструменты для обучения разреженных моделей с управляемой активацией правил
📦 Установка
Стабильная версия
🎯 Быстрый старт
Обучаем классификатор
Получаем объяснения
Выгружаем в production
🏗️ Архитектура
Из чего состоит модель
β-факты — дифференцируемые строительные блоки, работающие по формуле:
βᵢ(x) = σ(kᵢ · (Lᵢx − Rᵢx − θᵢ))^νᵢ
где задаёт резкость переходов, — форму активации, а параметры описывают линейный предикат
Слои правил — комбинируют β-факты через логические операции AND/OR/k-из-n/NOT в нескольких режимах работы
Гейты — механизмы мягкого отбора top-k правил или маскирования по заданному бюджету
Прототипная голова — классифицирует объекты по близости к выученным эталонам с L2-нормализацией
📊 Результаты на бенчмарках
| Датасет | Метрика | Nous | XGBoost | EBM | MLP | KAN |
|---|---|---|---|---|---|---|
| HELOC (классификация) | AUC | 0.7922 ± 0.0037 | 0.7965 ± 0.0071 | 0.8001 ± 0.0065 | 0.7910 ± 0.0045 | 0.7964 ± 0.0060 |
| Точность | 0.7199 ± 0.0063 | 0.7239 ± 0.0089 | 0.7279 ± 0.0083 | 0.7218 ± 0.0063 | 0.7252 ± 0.0073 | |
| California Housing (регрессия) | RMSE ↓ | 0.5157 ± 0.0117 | 0.4441 ± 0.0117 | 0.5500 ± 0.0131 | 0.5231 ± 0.0072 | 0.5510 ± 0.0046 |
| R² ↑ | 0.8001 ± 0.0091 | 0.8517 ± 0.0090 | 0.7726 ± 0.0107 | 0.7944 ± 0.0027 | 0.7719 ± 0.0038 |
Nous обеспечивает превосходную интерпретируемость при конкурентной точности, с минимальными разрывами в производительности ради полной прозрачности.
🔍 Продвинутые фичи
Минимально достаточные объяснения
Контрфактуалы
Глобальный анализ
🗂️ Структура проекта
nous/
├── model.py # Основной класс NousNet
├── facts.py # β-факты и калибраторы признаков
├── rules/ # Слои правил и гейты
├── prototypes.py # Прототипная голова для классификации
├── explain/ # Инструменты объяснимости
├── export/ # Экспорт в NumPy
├── training/ # Утилиты для обучения
├── optim/ # Специальные оптимизаторы
└── examples/ # Примеры использования
🤝 Участие в разработке
Буду рад любому вкладу:
- Форкните репозиторий
- Создайте ветку (
)git checkout -b feature/cool-stuff - Добавьте тесты и документацию
- Отправьте pull request
Особенно приветствуются: баг-репорты, улучшения документации, новые примеры использования.
📄 Лицензия
MIT License. Подробности в LICENSE.