Giter VIP home page Giter VIP logo

explain_invertible's Introduction

Introduction

  • This repo contains the code to reproduce the results on toy example for the paper Decision explanation and feature importance for invertible networks
  • Explicitly determine the decision boundary with an invertible neural network.
  • Direct explanation of network decisions
  • After determining the decision boundary, we can calculate the projection of a data point onto the decision boundary.
    The difference between and point and its projection onto the boundary can be viewed as the explanation for network decision.

Requirements

  • PyTorch 0.4 or higher
  • matplotlib
  • tqdm

How to run

  • run python train_inverse_net_1d.py to train
  • run python generate_boundary.py to generate figures

Invertible block structure

Invertible Network Structure

The forward and inverse of an invertible block is:
Forward_inverse

Invertible Network as a 2-stage model

  • Transfrom from the input domain to the feature domain feature = T(x) where T is an invertible function
  • Linear classifier in the feature domain \hat{y} = Linear\_Classifier(feature)
  • It's easy to determine the decision boundary for a linear classifier, denoted as B. Since T is invertible, we can determine the corresponding boundary in the input domain.
  • We can explain the decision of a linear classifier as the difference between a point and its projection onto the decision boundary, similarly, we can determine the projection onto boundary in the feature domain, and invert the projection into the input domain. In this way, we get a similar analysis to linear cases.

Results

  • We explicitly determine the decision boundary, and the projection of datapoints onto the boundary
    results

explain_invertible's People

Contributors

juntang-zhuang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

explain_invertible's Issues

ABIDE data

hi,
Very interesting work, but there are some problems when I reproduce, I don't know where to put ABIDE data, could you please tell me?

Confusion about feature importance in the non-linear case

A very interesting job! But I have a question that in the None-linear case of section 3.3.3 in your paper "Decision Explanation and Feature Importance for Invertible Networks", do x and x_p mean the corresponding paired data (x and its projection) in Equation 10? Or x is sampled around x_p?

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.