
Os módulos neurais com restrições não lineares adaptativas e regularizações eficientes (Neuromancer) são uma biblioteca de programação diferenciável de código aberto (DP) para resolver problemas de otimização restrita paramétrica, identificação de sistema informada por física e controle ideal baseado em modelo paramétrico. O Neuromancer está escrito em Pytorch e permite a integração sistemática do aprendizado de máquina com computação científica para criar modelos e algoritmos diferenciáveis de ponta a ponta incorporados com conhecimento e física anteriores.
Expandimos nossos exemplos de domínio de sistemas de energia com previsão de carga para edifícios. Mostramos o uso de modelagem e previsão de séries temporais usando o conjunto de dados de previsão de carga de eletricidade de curto prazo (estudo de caso do Panamá). Demonstramos capitabilidades de previsão usando um modelo de transformador, um novo bloco adicionado aos nossos blocos (neurais ).py, bem como a outros blocos padrão. Também utilizamos dados climáticos históricos para ajudar na previsão de energia.
As redes Kolmogorov-Arnold (KANS) atraíram a atenção recentemente como uma alternativa aos perceptrons multicamadas (MLPs) para o aprendizado de máquina científica. No entanto, os Kans podem ser caros de treinar, mesmo para redes relativamente pequenas. Implementamos um bloco FBKAN (FBPINNS), para o método de decomposição de domínio para Kans que permite que vários pequenos kans sejam treinados em paralelo para fornecer soluções precisas para problemas em várias escalas.
Novos exemplos de colab:
Previsão de carga
Função de aproximação com redes Kolgomorov-Arnold
Simplesmente correr
pip install neuromancer
Para instalação manual, consulte as instruções de instalação
Um extenso conjunto de tutoriais pode ser encontrado na pasta Exemplos e nos tutoriais abaixo. As versões interativas de notebooks de exemplos estão disponíveis no Google Colab! Teste a funcionalidade do Neuromancer antes de clonar o repositório e configurar um ambiente.
Os notebooks abaixo introduzem as abstrações do núcleo da Biblioteca Neuromancer, em particular, nossa interface de programação simbólica e classes de nó.
Parte 1: Regressão linear em Pytorch vs Neuromancer.
Parte 2: Sintaxe do Neuromancer Tutorial: Variáveis, restrições e objetivos.
Parte 3: Tutorial da Sintaxe do Neuromancer: módulos, nó e classe do sistema.
Exemplo rápido de como resolver problemas de otimização restrita paramétrica usando o neuromancer, alavancando nossa interface de programação simbólica, nó e variável, bloqueios, biblioteca slim e classes de penalidade.
# 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 )O Neuromancer é construído para combater uma variedade de problemas de modelagem e controle específicos de domínio usando sua matriz de métodos. Aqui, mostramos como modelar e controlar sistemas de energia de construção, além de aplicar técnicas de previsão de carga.
Para uma cobertura mais aprofundada de nossos métodos, consulte nossa seção de tutoriais gerais abaixo.
O Neuromancer permite formular e resolver uma ampla classe de problemas de otimização paramétrica que alavancam o aprendizado de máquina para aprender as soluções para esses problemas. Mais informações sobre programação paramétrica
Parte 1: Aprendendo a resolver um problema de otimização restrito.
Parte 2: Aprendendo a resolver um problema de otimização com restrição quadraticamente.
Parte 3: Aprendendo a resolver um conjunto de problemas de otimização restrita 2D.
Parte 4: Aprendendo a resolver um problema de otimização restrito com o gradiente projetado.
PARTE 5: Usando CVXPyLYERS para projeção diferenciável no conjunto viável politópico.
Parte 6: Aprendendo a otimizar com o aprendizado métrico para camadas de divisão do operador.
O Neuromancer permite que você aprenda políticas de controle para obter o espectro completo de sistemas dinâmicos brancos/cinza/preto, sujeitos a restrições de escolha e funções objetivas. Mais informações sobre controle preditivo diferencial
O Neuromancer está atualizado com os métodos de última geração. Aqui mostramos as poderosas redes Kolgomorov-Arnold mais informações sobre as redes Kolgomorov-Arnold
O Neuromancer permite usar o aprendizado de máquina, a física anterior e o conhecimento do domínio, para construir modelos matemáticos e diferenciados de sistemas dinâmicos, dadas as observações medidas do comportamento do sistema. Mais informações sobre ID do sistema através de modelos e odes espaciais de estado neural
O design de programação simbólica do Neuromancer é perfeitamente adequado para resolver PINNs. Mais informações sobre Pinns
O Neuromancer tem sido integrado ao Torchsde para lidar com sistemas dinâmicos estocásticos. Mais informações sobre SDEs
Integramos o Lightning Pytorch para otimizar o código, ativar a lógica de treinamento personalizada, suportar configurações de GPU e multi-GPU e lidar com tarefas de aprendizado com memória de larga escala e intensiva.
A documentação para a biblioteca pode ser encontrada online. Há também um vídeo de introdução que cobre os principais recursos da biblioteca.
Para mais informações, incluindo as para desenvolvedores, vá ao nosso desenvolvedor e guia do usuário
Congratulamo-nos com contribuições e feedback da comunidade de código aberto!
Leia as diretrizes de desenvolvimento da comunidade para obter mais informações sobre contribuições, discussões e questões.
Veja as notas de lançamento documentando novos recursos.
O Neuromancer vem com licença BSD. Veja a licença para obter mais detalhes.
@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}
} Desenvolvedores principais ativos : Jan Drgona, Rahul Birmiwal, Bruno Jacob
Contribuidores notáveis : Aaron Tuor, Madelyn Shapiro, James Koch, Seth Briney, Bo Tang, Ethan King, Elliot Skomski, Zhao Chen, Christian Møldrup Legaard
Consultores científicos : Draguna Vrabie, Panos Stinis
Contribuições de código aberto feitas por:
Feito com contrib.rocks.
Esta pesquisa foi parcialmente apoiada pela matemática para iniciativas de raciocínio artificial em ciências (MARs) e modelo de convergência do modelo de dados (DMC) por meio do Laboratory Directed Research and Development (LDRD) Investments no Pacific Northwest National Laboratory (PNNL), pelo Departamento de Energia dos EUA, por meio de Systems Systems, por meio do Dados de Pesquisa Científica da DAF2), da Systems Systems Offimn Systemsn, da Systems Systems Systems Systems, da DAF2 Systems Systems Systems, da Pesquisa Científica ”). Energia renovável, Building Technologies Office sob a “descarbonização dinâmica por meio de aprendizado profundo e otimização de otimização da Física Autônoma” e o “avanço do gerenciamento de energia de energia de construção pronta para o mercado por projetos de controle preditivo diferenciável e econômico”. Este projeto também foi apoiado no Departamento de Energia dos EUA, Programa Avançado de Pesquisa em Computação Científica, sob a quantificação da incerteza para o projeto de aprendizado de operadores de multifidelidade (Molucq) (Projeto No. 81739). O PNNL é um laboratório nacional de vários programas operado para o Departamento de Energia dos EUA (DOE) pelo Battelle Memorial Institute sob o contrato nº DE-AC05-76RL0-1830.