Git Product home page Git Product logo

neural-certificates's Introduction

Neural Certificates

A prototype learner-verifier for dynamical systems.

This project is no longer maintained actively. Please don't use it as a reference for your work.

Cautions for using this repository

Most of the code here is written experimentally. Some modules are stale, and will not work. Some modules are duplicates of other modules. My suggestion is to look at the drafts; at commit a1830c1, all drafts work.

Using Maraboupy

We use the Marabou verifier via its Python interface. To build Marabou (and Maraboupy), follow the instructions on the Marabou installation page at this link. Before compiling, make sure to change the parameter INTERVAL_SPLITTING_FREQUENCY (in this file) to 1. This might cause some tests to fail; it is OK.

After building Marabou, make a link to the maraboupy directory, like the following:

ln -s /path/to/Marabou/maraboupy .

This lets us use maraboupy as a module in this project.

Using neural_clbf

The project neural_clbf is available at this page. Follow the instructions on their page. You might want to make a link to neural_clbf. Steps are the same as the case with maraboupy.

The playground notebook

As the name suggests, it is only a playground. All useful things from the playground are already implemented in the source files (or drafts).

neural-certificates's People

Contributors

mahykari avatar kmallik avatar

Watchers

 avatar

neural-certificates's Issues

Fix expression blow-up when using Z3, CVC5 solvers

Right now, we create a single expression for a neural network; which has many duplicates. The downside is a (possibly exponential) blow-up on the size of the expression.

As a solution, let's Introduce intermediate variables for each neuron of the network. this will drastically decrease the size of expressions, and improve solver efficiency.

Learning with GPU

At the moment, learning is the most time-consuming phase of the CEGIS loop. Using a GPU during training should be able to reduce this time.

As we have access to GPUs with CUDA support, the goal will be to train models on a GPU (when possible).

Fix {Learner,Verifier}_Reach_C

The following need to be fixed:

  • Model combination C should no longer be used. Change everything to V instead.
  • There is no longer C_tgt and C_dec. We have a single sample set S.
  • Change the verifier to use DReal; this is what should be done, so the general case can be handled.

Translate NNs with Aws method

Look at chapter 5 of the following book by Aws Albarghouthi: https://arxiv.org/abs/2109.10317.

There, a formalized method of translating NNs into SMT constraints is presented. This method also introduces ways for encoding nonlinear activation functions.

We can consider using this method in our symbolic translators.

Add new encoding for Marabou

The current encoding of combining A, B, and V cannot exploit Marabou at all! This is due to the fact that the abstract interpreter is effectively turned off.

There is a new method for combining A, B, and V so that the resulting NN will look like a normal NN (with well-formed layers and activation functions). We need to switch to this encoding to use Marabou effectively.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.