-
Notifications
You must be signed in to change notification settings - Fork 8
/
lumberjack_vs_deeplearning.html
439 lines (274 loc) · 9.52 KB
/
lumberjack_vs_deeplearning.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
<!DOCTYPE html>
<html>
<head>
<title>RF vs DL </title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<link rel="stylesheet" href="fonts/quadon/quadon.css">
<link rel="stylesheet" href="fonts/gentona/gentona.css">
<link rel="stylesheet" href="slides_style.css">
<script type="text/javascript" src="assets/plotly/plotly-latest.min.js"></script>
</head>
<body>
<textarea id="source">
class: left,
name:opening
## Lumberjack vs Deep Learning
Joshua T. Vogelstein
<br><br><br>
<img src="images/funding/jhu_bme_blue.png" STYLE="HEIGHT:95px;"/>
<img src="images/funding/KNDI.png" STYLE="HEIGHT:95px;"/>
.foot[[[email protected]](mailto:jovo at jhu dot edu)
<http://neurodata.io/talks/lumberjack_vs_deeplearning.html>]
---
# Background
- Decision forest (RF) are things
- Deep learning (DL) are other things
- They share some stuff
- They excel in complementary ways
- Can we put all the good stuff from DL into RF?
---
### When Does RF Win?
Definite wins
- Classification
- Caruana et al. 2006 (ICML) - low-dim classification
- Caruana et al. 2008 (ICML) - high-dim classification
- Delgado et al. 2014 (JMLR) - >100 classificaiton problems
- Chen et al. 2016 (KDD) - Kaggle competitions
- Independence testing
Likely wins:
- K-sample testing
- Manifold learning
- Conditional entropy and mutual information
- Regression
---
### Lumberjack (LJ) does even better
<br><br>
<img src="images/rerf_perf.png" style="width: 800px;"/>
---
### When does DL Win?
- Image classification
- Image localization
- Translation
- Speech to Text
- Reinforcement Learning
---
### What are the shared properties for when DL beats RF?
Assume $(x_i,y_i) \sim F$, $x_i \in \mathcal{X}$, $y_i \in \mathcal{Y}$ where $|\mathcal{Y}|=K$, and $i \in [n]$
1. n >> p,
2. K is large, and
3. X is "structured".
For example, if X is the space of images, and therefore can be represented by R<sup>p x 2</sup>, where the first column corresponds to the magnitude of the pixel, and the 2nd column corresponds to the index/location of the pixel.
Then, there exist F such that MI(X,Y) > MI(X(1,:),Y).
---
### What properties does DL have that RF does not?
Alternately, what great ideas in stats/signal processing/machine learning are not yet in RF?
1. Rescaling
2. Kernel Smoothing
2. Matching Pursuit
3. Representation Learning
3. Importance Sampling / Empirical Bayes
<!-- 1. At each level, the representation of data is updated
2. Structure of data is encoded in structure of estimator
3. Features are learned from the data -->
---
### Can we get those properties into RF?
# Yes
---
### Rescaling
DL updates data representation per level, <br>
So do brains, RF does not.
1. RF is invariant to monotonic transformations of the data,
1. .r[LumberJack] (LJ) is not.
2. LJ could rescale to [0,1] linearly or via ranks
3. Can do after each split
4. Thus, all features are updated after each split, in a data-split dependent fashion
---
class: center, middle
<img src="images/Fig4_benchmark_ranks.png" style="height: 600px;"/>
---
### Kernel Smoothing
- Histograms can be improved by kernel density estimators (they are a special case)
- KDE (and DL) utilize "indices", not just magnitudes, without sacrificing consistency
1. RF is invariant to permuting pixels
2. DL is not
3. Structured LJ (S-LJ), which samples *patches* rather than *pixels*, is also not
---
class: left, middle
<img src="images/image_stripes.png" style="height: 500px;"/>
S-LJ is just a first step, *patches* can be replaced by an arbitrary kernel/dictionary, e.g., gabor filters or scattering networks, etc.
---
### Matching Pursuit
1. KDE fixes the kernel, or learns the bandwith
2. Matching pursuit tries many kernels at each location, and chooses the best
3. RF can be thought of as matching pursuit
4. Replace *single* kernel with a dictionary of kernels
---
### Representation Learning
In DL, features are learned from the data
1. When S-LJ starts with features, it can linearly combine them
2. One can "keep" the used/learned features, to add them to the dictionary
---
### Empirical Bayes / Importance Sampling
1. S-LJ starts with a set of "features/atoms"
2. Various recent proposals to weight feature sampling probabilities
3. Various recent proposals for computing feature importance
4. With LJ, one could analytically update feature weights using importance from previously learned trees
---
<img src="images/lumberjack_mobius.png" style="height: 600px;"/>
---
### What to Do?
1. Incorporate node specific rescaling
2. Replace standard basis with suitable (adaptive) dictionaries
3. Incorporate iterated feature weights using feature importance
5. Run some experiments
---
### Experiment #1
Setting
- Take CIFAR-10
- Subsample classes so that K=2
- Permute the indices of the images
- Determine the current best DL algorithm on this dataset
Evaluation
- Compare accuracy of LJ vs DL as a function of sample size.
- Also compare "rescaling" LJ (which may be required even for this)
---
### Experiment #2
Setting
- Same as Experiment #1, but without permuting indices
Evaluation
- Add S-LJ
- Replace standard basis with suitable dictionary
- Add iterated feature importance sampling
---
### Experiment #3
Setting
- Same as experiment #2, but let K=10 again.
Evaluation
- Same as experiment #2
- Note that RF for K>2 gets a bit wonky, we might need to think about that more
---
### Experiments #4-#6
Same as #1-#3, but replace images with something on speech (with Sanjeev)
---
### Speeding up LJ Training
Implementation Changes
1. James has some ideas that just change implementation, not algorithm
3. Distributed implementation
Algorithm Changes
1. Subsample as in U-RerF
2. Quantize features
2. Recursive partitioning approach, ie, test each feature to see which has the most information about Y, and then find the best split for that
1. avoids checking each split point for each feature,
2. enables treating categorical and continuous features in the same fashion
---
### Next Steps: Who Wants What?
Experiments
1. Vision
2. Speech
3. Other?
Algorithm
3. Node rescaling
4. Dictionaries
5. Updated feature importance
6. Feature sampling probabilities
Computational Efficiency
4. Recursive partitioning
2. Subsample/Quantize
1. C++/Python bindings
5. Distributed implementation
---
### Papers to Write
1. LJ with dictionaries
2. LJ Posterior sampling
3. LJ w/transformations (0-1, rank, subsample, quantize)
1. LJ manifold learning
1. LJ info theory
1. LJ hypothesis testing
1. Fast LJ implementation
1. Each modality experiments
---
### Next Steps
1. Dealing better with large K
1. Multi-modal LJ
---
### References
- Lumberjack [[1]](https://arxiv.org/abs/1506.03410)
- Forest Packing: Fast, Parallel Decision Forests [[3]](https://arxiv.org/abs/1806.07300)
- Lumberjack R package: [CRAN](https://cran.r-project.org/web/packages/rerf/index.html)
---
class: top, left
### Acknowledgements
<div class="container">
<img src="faces/cep.png"/>
<div class="centered">Carey Priebe</div>
</div>
<div class="container">
<img src="faces/randal.jpg"/>
<div class="centered">Randal Burns</div>
</div>
<div class="container">
<img src="faces/cshen.jpg"/>
<div class="centered">Cencheng Shen</div>
</div>
<div class="container">
<img src="faces/minh.jpg"/>
<div class="centered">Minh Tang</div>
</div>
<div class="container">
<img src="faces/percy.jpg"/>
<div class="centered">Percy Li</div>
</div>
<div class="container">
<img src="faces/tyler.jpg"/>
<div class="centered">Tyler Tomita</div>
</div>
<div class="container">
<img src="faces/james.jpg"/>
<div class="centered">James Browne</div>
</div>
<div class="container">
<img src="faces/falk_ben.jpg"/>
<div class="centered">Ben Falk</div>
</div>
<div class="container">
<img src="faces/jesse.jpg"/>
<div class="centered">Jesse Patsolic</div>
</div>
<div class="container">
<img src="faces/loftus.jpg"/>
<div class="centered">Alex Loftus</div>
</div>
<div class="container">
<img src="faces/veronika.jpg"/>
<div class="centered">Veronika Strnadova</div>
</div>
<span style="font-size:200%; color:red;">♥, 🦁, 👪, 🌎, 🌌</span>
<img src="images/funding/nsf_fpo.png" STYLE="HEIGHT:95px;"/>
<img src="images/funding/nih_fpo.png" STYLE="HEIGHT:95px;"/>
<img src="images/funding/darpa_fpo.png" STYLE=" HEIGHT:95px;"/>
<img src="images/funding/iarpa_fpo.jpg" STYLE="HEIGHT:95px;"/>
<img src="images/funding/KAVLI.jpg" STYLE="HEIGHT:95px;"/>
<img src="images/funding/schmidt.jpg" STYLE="HEIGHT:95px;"/>
### Questions?
</textarea>
<!-- <script src="https://gnab.github.io/remark/downloads/remark-latest.min.js"></script> -->
<script src="remark-latest.min.js"></script>
<script src="assets/KaTeX/0.5.1/katex.min.js"></script>
<script src="assets/KaTeX/0.5.1/auto-render.min.js"></script>
<link rel="stylesheet" href="assets/KaTeX/0.5.1/katex.min.css">
<script type="text/javascript">
var options = {};
var renderMath = function() {
renderMathInElement(document.body);
// or if you want to use $...$ for math,
renderMathInElement(document.body, {delimiters: [ // mind the order of delimiters(!?)
{left: "$$", right: "$$", display: true},
{left: "$", right: "$", display: false},
{left: "\\[", right: "\\]", display: true},
{left: "\\(", right: "\\)", display: false},
]});
}
var slideshow = remark.create(options, renderMath);
</script>
</body>
</html>