Slide 116
Slide 116 text
@karimhamdanali
Program Analysis
!6
goto fail;
goto fail;
© Copyright 2014, Philip Koopman. CC Attribution 4.0 International license.
5
http://www.cbsnews.com/news/toyota-unintended-acceleration-has-killed-89/
May 25,
2010
@karimhamdanali
Program Analysis
!13
Code Navigation
Code Recommenders
Code Refactoring
Constant Propagation
Dead Code Elimination
Static Inlining
Parallelization
@karimhamdanali !103
Scalability Usability
Precision
@karimhamdanali
Future of
Program Analysis
!111
Fixing Neural Networks with Solver-Aided Languages
Revan MacQueen1, Julian Dolby2, Karim Ali1
1UNIVERSITY OF ALBERTA, 2IBM RESEARCH
https://github.com/themaplelab/ML-SE
• Understanding the internals of neural networks is limited due to their complexity
• Fixing errors in neural networks without retraining is hard and currently not supported
• We use Rosette to solve for changes in weights to a neural network
• Rosette is able to represent neural networks and their results as symbolic values,
which can then be solved for, under the assertion that a given data point is correct
OVERVIEW
Rosette
Objective
Adjust n weights
We use rosette
to solve for
changes in
network weights
subject to the
following
objective
To maximize
Weight
Selection
• We evaluate network performance
before and after solving
• Network with 784 input nodes, 300
hidden, and 10 output nodes
• On average, after making changes,
99.85% of testing points remain
correctly classified
EVALUATION
WEIGHT SELECTION
METHOD
TRAINING
SOLVING
Training
Effect of Number of Symbolic Weights on Runtime
Solving
Evaluation
#lang rosette
(define-symbolic x integer?)
(assert (> x3))
(define solution (solve x))
> (evaluate x solution)
4
@karimhamdanali
Analysis-Driven Inliner
Discriminants Budget Algorithm Search Space
Call Frequency
Method Size
Method Size Nested Knapsack All IDT Methods
Post-Inlining
Transformations
!59
Extra Images: SIGPLAN Blog