
Les modules neuronaux avec des contraintes non linéaires adaptatives et des régularisations efficaces (neuromancer) sont une bibliothèque de programmation de programmation différenciable (DP) open source (DP) pour résoudre les problèmes d'optimisation contrainte paramétrique, l'identification du système informé de la physique et le contrôle optimal paramétrique basé sur un modèle. Le neuromancer est écrit en pytorch et permet une intégration systématique de l'apprentissage automatique avec l'informatique scientifique pour créer des modèles et des algorithmes différenciables de bout en bout intégrés avec des connaissances et de la physique antérieures.
Nous élargissons nos exemples de domaine des systèmes énergétiques avec des prévisions de charge pour les bâtiments. Nous présentons l'utilisation de la modélisation et des prévisions de séries chronologiques à l'aide de l'ensemble de données de prévision de la charge d'électricité à court terme (Panama Case Study). Nous démontrons les capaïes de prévision à l'aide d'un modèle de transformateur, un nouveau bloc ajouté à nos blocs (neuronaux ).py, ainsi que d'autres blocs standard. Nous utilisons également des données météorologiques historiques pour aider à la prévision énergétique.
Les réseaux de Kolmogorov-Arnold (KANS) ont récemment attiré l'attention en tant qu'alternative aux perceptrons multicouches (MLP) pour l'apprentissage automatique scientifique. Cependant, les Kans peuvent être coûteux à s'entraîner, même pour des réseaux relativement petits. Nous avons implémenté un bloc FBKAN (FBPINNS), pour la méthode de décomposition du domaine pour les Kans qui permet à plusieurs petits Kans d'être formés en parallèle pour donner des solutions précises pour des problèmes à plusieurs échelles.
Nouveaux exemples de colab:
Prévision de charge
FONCTION D'APPROXIMATION AVEC LES RÉTACLES DE KOLGOMOROV-ANNOLD
Courir simplement
pip install neuromancer
Pour l'installation manuelle, veuillez vous référer aux instructions d'installation
Un ensemble étendu de tutoriels se trouve dans le dossier Exemples et les tutoriels ci-dessous. Des versions de cahiers interactives des exemples sont disponibles sur Google Colab! Testez la fonctionnalité des neuromancer avant de cloner le référentiel et de configurer un environnement.
Les ordinateurs portables ci-dessous introduisent les abstractions centrales de la bibliothèque Neuromancer, en particulier, notre interface de programmation symbolique et nos classes de nœuds.
Partie 1: Régression linéaire dans Pytorch vs Neuromancer.
Partie 2: Tutoriel de syntaxe des neuromancer: variables, contraintes et objectifs.
Partie 3: Tutoriel de syntaxe des neuromancer: modules, nœud et classe système.
Exemple rapide pour résoudre un problème d'optimisation contrainte paramétrique à l'aide de Neuromancer, en tirant parti de notre interface de programmation symbolique, du nœud et de la variable, des blocs, des classes de bibliothèque mince et de pénaltyloss.
# Neuromancer syntax example for constrained optimization
import neuromancer as nm
import torch
# define neural architecture
func = nm . modules . blocks . MLP ( insize = 1 , outsize = 2 ,
linear_map = nm . slim . maps [ 'linear' ],
nonlin = torch . nn . ReLU , hsizes = [ 80 ] * 4 )
# wrap neural net into symbolic representation via the Node class: map(p) -> x
map = nm . system . Node ( func , [ 'p' ], [ 'x' ], name = 'map' )
# define decision variables
x = nm . constraint . variable ( "x" )[:, [ 0 ]]
y = nm . constraint . variable ( "x" )[:, [ 1 ]]
# problem parameters sampled in the dataset
p = nm . constraint . variable ( 'p' )
# define objective function
f = ( 1 - x ) ** 2 + ( y - x ** 2 ) ** 2
obj = f . minimize ( weight = 1.0 )
# define constraints
con_1 = 100. * ( x >= y )
con_2 = 100. * ( x ** 2 + y ** 2 <= p ** 2 )
# create penalty method-based loss function
loss = nm . loss . PenaltyLoss ( objectives = [ obj ], constraints = [ con_1 , con_2 ])
# construct differentiable constrained optimization problem
problem = nm . problem . Problem ( nodes = [ map ], loss = loss )Le neuromancer est conçu pour s'attaquer à une variété de problèmes de modélisation et de contrôle spécifiques au domaine en utilisant son éventail de méthodes. Ici, nous montrons comment modéliser et contrôler les systèmes d'énergie de construction, ainsi que d'appliquer des techniques de prévision de charge.
Pour une couverture plus approfondie de nos méthodes, veuillez consulter notre section General Tutorials ci-dessous.
Neuromancer vous permet de formuler et de résoudre une large classe de problèmes d'optimisation paramétrique tirant parti de l'apprentissage automatique pour apprendre les solutions à de tels problèmes. Plus d'informations sur la programmation paramétrique
Partie 1: Apprendre à résoudre un problème d'optimisation contraint.
Partie 2: Apprendre à résoudre un problème d'optimisation à contrainte quadratique.
Partie 3: Apprendre à résoudre un ensemble de problèmes d'optimisation contraints 2D.
Partie 4: Apprendre à résoudre un problème d'optimisation contraint avec le gradient projeté.
Partie 5: Utilisation de cvxpyLayers pour une projection différenciable sur l'ensemble polytopique possible.
Partie 6: Apprendre à optimiser avec l'apprentissage métrique pour les couches de division des opérateurs.
Neuromancer vous permet d'apprendre des politiques de contrôle pour le spectre complet des systèmes dynamiques blanc / gris / noir, sous réserve de contraintes de choix et de fonctions objectives. Plus d'informations sur le contrôle prédictif différentiel
Le neuromancer est à jour avec des méthodes de pointe. Ici, nous présentons les puissants réseaux Kolgomorov-Arnold plus d'informations sur les réseaux Kolgomorov-Arnold
Neuromancer permet d'utiliser l'apprentissage automatique, la physique antérieure et les connaissances du domaine, pour construire des modèles mathématiques et différentiés des systèmes dynamiques étant donné les observations mesurées du comportement du système. Plus d'informations sur l'ID système via les modèles d'espace d'État neuronal et les ODE
La conception de programmation symbolique du neuromancer est parfaitement adaptée à la résolution de PIN. Plus d'informations sur Pinns
Le neuromancer a été intégré à Torchsde pour gérer les systèmes dynamiques stochastiques. Plus d'informations sur SDES
Nous avons intégré Pytorch Lightning pour rationaliser le code, activer la logique de formation personnalisée, prendre en charge les configurations GPU et multi-GPU et gérer les tâches d'apprentissage à grande échelle et à forte intensité de mémoire.
La documentation de la bibliothèque peut être trouvée en ligne. Il existe également une vidéo d'introduction couvrant les caractéristiques de base de la bibliothèque.
Pour plus d'informations, y compris celles des développeurs, veuillez consulter notre développeur et notre guide de l'utilisateur
Nous accueillons les contributions et les commentaires de la communauté open source!
Veuillez lire les directives de développement communautaire pour plus d'informations sur les contributions, les discussions et les questions.
Voir les notes de publication documentant les nouvelles fonctionnalités.
Neuromancer est livré avec une licence BSD. Voir la licence pour plus de détails.
@article{Neuromancer2023,
title={{NeuroMANCER : Neural Modules with Adaptive Nonlinear Constraints and Efficient Regularizations}},
author={Drgona, Jan and Tuor, Aaron and Koch, James and Shapiro, Madelyn and Jacob, Bruno and Vrabie, Draguna},
Url= {https://github.com/pnnl/neuromancer},
year={2023}
} Développeurs de noyau actif : Jan Drgona, Rahul Birmiwal, Bruno Jacob
Contributeurs notables : Aaron Tuor, Madelyn Shapiro, James Koch, Seth Briney, Bo Tang, Ethan King, Elliot Skomski, Zhao Chen, Christian Møldrup Legaard
Conseillers scientifiques : Draguna Vrabie, Panos Stinis
Contributions open source effectuées par:
Fait avec contribution.
Cette recherche sur le raisonnement artificiel (MARS) et les investissements de convergence des modèles de données (DMC) via les investissements de convergence des modèles de données (DMC) via les investissements de convergence des modèles de données (DMC) via les investissements en laboratoire (LDRD) sur le laboratoire national (PNNL), par le Bureau de l'énergie du Laboratoire national du Pacifique du Laboratory Research and Development (LDRD), par le biais du Bureau du Pacific Northwest National Laborator Office des énergies renouvelables, des technologies de construction dans le cadre de la «décarbonisation dynamique à travers l'apprentissage en profondeur et l'optimisation autonomes de la physique» et la gestion de l'énergie de la construction du marché avancé par le marché par des projets de contrôle prédictif différenciable ». Ce projet a également été soutenu par le Programme de recherche en informatique scientifique avancée, dans le cadre du projet de quantification de la quantification de l'incertitude pour l'apprentissage de l'opérateur multifidélité (MOLUCQ) (projet n ° 81739). PNNL est un laboratoire national multi-programme exploité pour le Département américain de l'Énergie (DOE) par le Battelle Memorial Institute en vertu du contrat n ° DE-AC05-76RL0-1830.