diff --git a/db/cv/okennedy/grants.json b/db/cv/okennedy/grants.json index 6c12e863..7bb86427 100644 --- a/db/cv/okennedy/grants.json +++ b/db/cv/okennedy/grants.json @@ -1,5 +1,24 @@ [ - + { "title" : "Collaborative Research: III: MEDIUM: U4U - Taming Uncertainty with Uncertainty-Annotated Databases", + "agency" : "NSF: CISE: IIS: MEDIUM", + "role" : "Co-PI", + "amount" : 663996, + "effort" : "100%", + "status" : "submitted", + "start" : "08/15/2020", "end" : "08/14/2024", + "type" : "grant", + "commitment" : { "summer" : 0.5 }, + "projects" : ["mimir", "vizier"], + "copis" : [ + "Atri Rudra" + ], + "collaborative" : [ + { "institution" : "Illinois Inst. Tech.", + "pis" : ["Boris Glavic"], + "amount" : 535014 + } + ] + }, { "title" : "SCC-IRG Track 1: A Sustainable and Connected Community-Scale Food System to Empower Consumers, Farmers, and Retailers in Buffalo, NY", "agency" : "NSF: CISE: CNS: CSR", "role" : "Co-I", diff --git a/src/teaching/cse-662/2019fa/index.md b/src/teaching/cse-662/2019fa/index.md index ee22d456..7dc85b02 100644 --- a/src/teaching/cse-662/2019fa/index.md +++ b/src/teaching/cse-662/2019fa/index.md @@ -88,7 +88,7 @@ After the taking the course, students should be able to: * **Sep 17** - Program Slicing ([reading 1](https://cse.buffalo.edu/LRG/CSE705/Papers/Weiser-Static-Slicing.pdf) | [reading 2](http://sites.computer.org/debull/A07dec/cheney.pdf)) * **Sep 19** - Learned Index Structures ([slides](slide/2019-09-18-LearnedIndexStructures.pdf)) * **Sep 24** - Program Slicing ([slides](slide/2019-09-24-ProgramSlicing2.html)) -* **Oct 1** - Interpretable Deep Learning ([reading](https://ieeexplore-ieee-org.gate.lib.buffalo.edu/abstract/document/8022871)) +* **Oct 1** - Interpretable Deep Learning ([reading 1](https://ieeexplore-ieee-org.gate.lib.buffalo.edu/abstract/document/8022871) | [reading 2](https://dl-acm-org.gate.lib.buffalo.edu/citation.cfm?Id=2939778)) --- diff --git a/src/teaching/cse-662/2019fa/slide/2019-10-01-ProvenanceInNNs.erb b/src/teaching/cse-662/2019fa/slide/2019-10-01-ProvenanceInNNs.erb new file mode 100644 index 00000000..158a766c --- /dev/null +++ b/src/teaching/cse-662/2019fa/slide/2019-10-01-ProvenanceInNNs.erb @@ -0,0 +1,451 @@ +--- +template: templates/cse662_2019_slides.erb +title: Explaining Machine Learning +date: October 1 +--- + +
+
+

Machine Learning

+

Given a set of sample points: discover their defining function

+
+ +
+

Classical Regression

+

given $\{(x_1,y_1), \ldots, (x_K,y_K)\}$, find $f(x) = y$

+ +

Fit data to a predefined equation / family of equations.

+
+ +
+

Limitations

+ +
+ +
+

Neural Networks

+ + + $$z = RELU(v_{z,1}y_1 + ... + v_{z,7}y_7)$$ + $$y_i = RELU(v_{y,i,1}x_1 + ... + v_{y,i,7}x_7)$$ + $$x_i = RELU(v_{x,i,1}w_1 + ... + v_{x,i,10}w_10)$$ + +

$RELU$: Discontinuity Function

+

One big mega-function to fit to the data

+
+ +
+

More complex flavors

+
+
+
Convolutional NNs
+
Train pattern-matching kernels for images.
+
+
+
Recurrent NNs
+
Feed output of NN back into itself for time-series data.
+
+
+ +

In general: Pre-specify layering structure as a NN workflow.

+
+
+ +
+
+

Today

+

Not looking at how to train a NN!

+

Why are NNs dangerous?

+
+ +
+

NN Use Cases

+ + +

Why does it make the choices it does?

+
+ +
+

Why is "why" important?

+
+
+
Legal reasons
+
Protected classes or variables that can act as proxies (redlining).
+
+
+
Training-only signals
+
Image quality (tanks), Coincidental features (dogs).
+
+
+
Debugging
+
Anticipate, react to unusual failure modes.
+
+
+
Overfitting
+
Is the model just "memorizing" the training data?
+
+
+
+ +
+

Contrast with...

+
+
Classical Regression
+
The formula is the formula!
+ +
Graphical Models
+
Model structure clearly connects related variables.
+ +
Decision Trees
+
Everything is phrased as Yes/No questions.
+ +
Neural Networks
+
🤷
+
+
+
+ +
+
+

Understanding NNs

+

Today's discussion:

+
+
Slicing?
+
Not practical: Too many interdependencies.
+
Sensitivity Analysis
+
Figure out which "features" are the most relevant.
+
Direct Debugging
+
Help the user discover patterns in the neurons.
+
+
+ +
+

Understanding NNs

+

+

Observation 1: Describing the entire model concisely is hard

+

Observation 2: Describing the model on a single input is easier

+

Contrast with dynamic slicing

+
+
+ +
+
+

Sensitivity Analysis

+ +

Given a target point, figure out which of the point's features are most responsible for the classification.

+
+ +
+

“Why Should I Trust You?” Explaining the Predictions of Any Classifier

+

Ribero, Sing, Guestrin

+
+ +
+

Model

+ $$f : \mathbb R^d \rightarrow \mathbb R$$ +
+ +
+

Model

+

Arguments to $f$ are input features. For example:

+ +
+
Probability that an email is spam
+
Each known word is a binary (0-1) feature
+
0-1 confidence that a greyscale image contains a "3"
+
The brightness of each pixel is a feature.
+
Chance of default on a potential loan
+
Customer characteristics (income, spending, education)
+ + +

Note: The source model doesn't have to be an NN.

+
+ +
+

Abstractions

+
+ +
+

Focusing on similar inputs, learn an explainable model $g$.

+ +

Define similarity by a distance function:

+ $$\pi_x : R^d \times R^d \rightarrow [0,1]$$ +
+ +
+

Desiderata

+ + +

Overall Goal: Find a $g$ that minimizes $\mathcal L(f, g, \pi_x) + \Omega(g)$

+
+ +
+

Simpler Model

+ $$g : \mathbb \{0,1\}^d \rightarrow \mathbb R$$ + $$g(x) = w_1\cdot x_1 + \ldots + w_d\cdot x_d$$ +

Boolean- (not Real-)valued features.

+
+ +
+

Simplification: Thresholding

+ $$x'_i = \begin{cases} 1 & \textbf{if } x_i \geq T \\ 0 & \textbf{otherwise} \end{cases}$$ +
+ +
+

Sampling Around $x$

+
    +
  1. Pick a number of features $\# \sim Uniform(1, |\{x'_i \neq 0\}|)$
  2. +
  3. Randomly select features $F \subseteq \{i \;|\;x'_i \neq 0\}$ s.t. $|F| = \#$
  4. +
  5. Pick $z$ (resp., $z'$) s.t. $z_i = \begin{cases} x_i & \textbf{if } i \in F \\ \textit{random} & \textbf{otherwise}\end{cases}$
  6. +
  7. Repeat $K$ times to get a collection of samples $(z,z') \in \mathcal Z$
  8. +
+
+ +
+

Simple Error Function

+ $$\mathcal L(f,g,\pi_x) = \sum_{(z,z')\in \mathcal Z} \pi_x(z) (f(z) - g(z'))^2$$ +

Pick a $g$ (resp., $\{w_i\}$) that minimizes this!

+
+ +
+

Example

+

Classifying Email Subjects

+ +

Each feature is a word: '1' if the word is present, '0' if not.
($x = x'$)

+ +

Complexity Function: (at most $K$ features) + $\Omega(g) = \begin{cases} 0 & \textbf{if }|\{w_i > 0\}| > K \\ \infty & \textbf{otherwise}\end{cases}$ +

+ +

Simplified model: Find the $K$ features most responsible for differentiating between the target class.

+
+ +
+ + “Why Should I Trust You?” Explaining the Predictions of Any Classifier (Ribero et. al.) +
+ +
+

Example

+

Interpreting Image Classification

+ +

Each feature is a "superpixel" (a contiguous region of similarly colored pixels): $x_i$ is the color of the pixel; $x_i'$ is 1 if the superpixel is identical to the original.

+ +

Complexity Function: (at most $K$ superpixels) + "Lasso" (as in the lasso tool) pixels together into a contiguous region of no more than $K$ superpixels. +

+ +

Simplified model: Find the $K$ superpixels most responsible for differentiating between the target class.

+
+ +
+ + “Why Should I Trust You?” Explaining the Predictions of Any Classifier (Ribero et. al.) +
+ +
+

Summary

+ + +

If the model has the features identified by $g$, it is probably of the target class.

+
+ +
+ +
+
+

ACTIVIS: Visual Exploration of Industry-Scale +Deep Neural Network Models

+

Kahng, Andrews, Kalro, Chau

+
+ +
+

Shortcomings

+ +

Solution: Let users see the nodes themselves.

+
+ +
+ +
+ +
+

Desiderata

+
+
Can't see what the network is doing.
+
Let users compare neuron activations.
+ +
Can't test hypotheses
+
Let users pick comparison points.
+
+
+ + + +
+

Exploring comparison points

+ +
+ +
+

Select by Class

+ + ACTIVIS: Visual Exploration of Industry-Scale Deep Neural Network Models (Kahng et. al.) +
+ +
+

Select by Activation

+
+ + → +
+ ACTIVIS: Visual Exploration of Industry-Scale Deep Neural Network Models (Kahng et. al.) +
+ +
+

Select Manually

+ + ACTIVIS: Visual Exploration of Industry-Scale Deep Neural Network Models (Kahng et. al.) +
+ +
+

Compare Neurons

+ + ACTIVIS: Visual Exploration of Industry-Scale Deep Neural Network Models (Kahng et. al.) +
+
+ +
+
+

Compare to Provenance/Slicing

+ + +
+
+ \ No newline at end of file diff --git a/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-BasicNN.svg b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-BasicNN.svg new file mode 100644 index 00000000..1460cb30 --- /dev/null +++ b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-BasicNN.svg @@ -0,0 +1,1297 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x1 + x2 + x3 + x4 + x5 + x6 + x7 + y1 + y2 + y3 + y4 + y5 + y6 + y7 + z + w1 + w2 + w3 + w4 + w5 + w6 + w7 + w8 + w9 + w10 + + diff --git a/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-Compare.svg b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-Compare.svg new file mode 100644 index 00000000..13245a8c --- /dev/null +++ b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-Compare.svg @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-Images.svg b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-Images.svg new file mode 100644 index 00000000..aaf0d6a0 --- /dev/null +++ b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-Images.svg @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + (a)OriginalImage + + + + + + (b)Explaining + + + Electricguitar + + + + + + (c)Explaining + + + Acousticguitar + + + + + + (d)Explaining + + + Labrador + + + diff --git a/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-SelectExampleByActivation.svg b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-SelectExampleByActivation.svg new file mode 100644 index 00000000..6047837e --- /dev/null +++ b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-SelectExampleByActivation.svg @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-SelectExampleByClass.svg b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-SelectExampleByClass.svg new file mode 100644 index 00000000..7cb87e5c --- /dev/null +++ b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-SelectExampleByClass.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-SelectExampleManually.svg b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-SelectExampleManually.svg new file mode 100644 index 00000000..c5f58bc8 --- /dev/null +++ b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-SelectExampleManually.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-WeightedNN.svg b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-WeightedNN.svg new file mode 100644 index 00000000..3ae18c92 --- /dev/null +++ b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-WeightedNN.svg @@ -0,0 +1,1297 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x1 + x2 + x3 + x4 + x5 + x6 + x7 + y1 + y2 + y3 + y4 + y5 + y6 + y7 + z + w1 + w2 + w3 + w4 + w5 + w6 + w7 + w8 + w9 + w10 + + diff --git a/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-Weights.svg b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-Weights.svg new file mode 100644 index 00000000..ac504a35 --- /dev/null +++ b/src/teaching/cse-662/2019fa/slide/graphics/2019-10-01-Weights.svg @@ -0,0 +1,74 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + +