Продвинутый PyTorch оптимизатор второго порядка на основе метода экспоненциальной релаксации для жестких задач.
Project description
ER-Optim: Accurate Second-Order Optimization for PyTorch
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 приветствуются!
- Форкните репозиторий.
- Создайте ветку вашей фичи (
git checkout -b feature/AmazingFeature). - Закоммитьте изменения (
git commit -m 'Add AmazingFeature'). - Отправьте ветку (
git push origin feature/AmazingFeature). - Откройте Pull Request.
📄 Лицензия
Распространяется под лицензией MIT. Подробности в файле LICENSE.
Разработано в рамках научно-исследовательской работы "Обучение нейронных сетей на основе методов с экспоненциальной релаксацией".
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c466d532248093e3ec5723f183124bdc45fd702e5e7224a87fe89c57bd93edf9
|
|
| MD5 |
d85876d069754f1d02a78da8ef310f14
|
|
| BLAKE2b-256 |
22f8fd567a9dd867ec88f94f1a4d80936db31e512c56a0e10b93b2fcf877afa4
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8854964c12f29cbac4fe08a5ea503c183c81602bb7178ef51ec9d2a4930053f
|
|
| MD5 |
b19c56b42c414d050d5bd85ff4f3abed
|
|
| BLAKE2b-256 |
eccee1372d7fb70e4c33a774a702e59e9d2ea3a7cd96d25dd57f5686085ec45e
|