Skip to main content

Продвинутый PyTorch оптимизатор второго порядка на основе метода экспоненциальной релаксации для жестких задач.

Project description

ER-Optim: Accurate Second-Order Optimization for PyTorch

License: MIT Python 3.8+ PyTorch 2.0+

ER-Optim — это библиотека для оптимизации нейронных сетей на основе метода Экспоненциальной Релаксации (ER). Она разработана специально для решения «жестких» (stiff) задач, таких как Physics-Informed Neural Networks (PINNs) и SIREN, где классические методы первого порядка (Adam, SGD) демонстрируют медленную сходимость или стагнацию.


🚀 Ключевые особенности

  • Точность второго порядка: Использование честных произведений Гессиана на вектор (HVP) через torch.autograd.
  • Спектральные аппроксимации:
    • Chebyshev ER: Аппроксимация экспоненты полиномами Чебышева для индефинитных матриц.
    • Lanczos ER: Итеративное построение подпространства Крылова для точного поиска экстремальных собственных значений.
  • Гибридный режим: Бесшовное переключение с Adam/L-BFGS на ER при стагнации Loss.
  • Умный Trust Region: Встроенный механизм Backtracking Line Search и послойное демпфирование для защиты от взрыва градиентов.
  • ER Studio: Встроенный GUI на PyQt5 для визуализации ландшафта функции потерь и послойной обусловленности в реальном времени.

📦 Установка

Из исходников (режим разработчика)

git clone https://github.com/your-username/er-optim.git
cd er-optim
pip install -e .

Зависимости

  • PyTorch >= 2.0.0
  • NumPy, SciPy
  • Matplotlib
  • PyQt5 (для GUI)

💡 Быстрый старт

Использовать EROptimizer так же просто, как и любой стандартный оптимизатор PyTorch.

from er_optim import EROptimizer

model = MyNeuralNet()
# Инициализация ER с аппроксимацией Чебышева
optimizer = EROptimizer(
    model, 
    er_method='Chebyshev', 
    chebyshev_k=7, 
    h=1.0, 
    init_damping=1e-4
)

def loss_fn(output, target):
    return torch.mean((output - target)**2)

# В методе step необходимо передавать функцию потерь и данные
for epoch in range(100):
    loss_val, cond_numbers = optimizer.step(loss_fn, inputs, targets)
    print(f"Epoch {epoch}, Loss: {loss_val:.6f}")

🔬 Математическое обоснование

Метод ER основывается на вычислении шага через операторную экспоненту матрицы Гессе $H$:

$$\Delta w = -(I - e^{-hH})H^{-1}g$$

Где $g$ — вектор градиента, а $h$ — параметр релаксации. В отличие от метода Ньютона, ER естественным образом ограничивает длину шага в областях с высокой кривизной, что делает его значительно более стабильным при обучении PINN для уравнений типа Аллена-Кана или Навье-Стокса.


🖥 ER Studio (GUI)

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

Запуск из терминала:

er-studio
  • Вкладка 1: Сходимость (Loss vs Epochs/Time).
  • Вкладка 2: Визуализация решения (Heatmaps для PINN, Image Reconstruction для SIREN).
  • Аналитика: Мониторинг чисел обусловленности каждого слоя.

🛠 Архитектура проекта

  • er_optim.optimizer: Ядро библиотеки, реализация EROptimizer.
  • er_optim.trainer: Высокоуровневые функции для проведения экспериментов.
  • er_optim.gui: Код графического интерфейса пользователя.

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

Ваши предложения и Pull Requests приветствуются!

  1. Форкните репозиторий.
  2. Создайте ветку вашей фичи (git checkout -b feature/AmazingFeature).
  3. Закоммитьте изменения (git commit -m 'Add AmazingFeature').
  4. Отправьте ветку (git push origin feature/AmazingFeature).
  5. Откройте Pull Request.

📄 Лицензия

Распространяется под лицензией MIT. Подробности в файле LICENSE.


Разработано в рамках научно-исследовательской работы "Обучение нейронных сетей на основе методов с экспоненциальной релаксацией".

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

er_optim-0.1.0.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

er_optim-0.1.0-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file er_optim-0.1.0.tar.gz.

File metadata

  • Download URL: er_optim-0.1.0.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for er_optim-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c466d532248093e3ec5723f183124bdc45fd702e5e7224a87fe89c57bd93edf9
MD5 d85876d069754f1d02a78da8ef310f14
BLAKE2b-256 22f8fd567a9dd867ec88f94f1a4d80936db31e512c56a0e10b93b2fcf877afa4

See more details on using hashes here.

File details

Details for the file er_optim-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: er_optim-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for er_optim-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a8854964c12f29cbac4fe08a5ea503c183c81602bb7178ef51ec9d2a4930053f
MD5 b19c56b42c414d050d5bd85ff4f3abed
BLAKE2b-256 eccee1372d7fb70e4c33a774a702e59e9d2ea3a7cd96d25dd57f5686085ec45e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page