PigeonColumba compressa

Distilling without (much) real data

Which inputs carry the teacher's knowledge best: real labeled, real unlabeled, augmented, pure noise, or inputs dreamed up by inverting the teacher?

Methods: Distilling without real data, DeepInversion (data-free via batch-norm statistics)

Bar chart of test accuracy (20-way) for each source, with a dashed reference line for the teacher. Titled “Distilling without (much) real data”. The numbers are in the table below.
Test accuracy (20-way) for each source
Bar chart of agreement with teacher for each source. Titled “Distilling without (much) real data”. The numbers are in the table below.
Agreement with teacher for each source

Table

Mean over the seeds; ± is the standard deviation where more than one seed ran. The experiment took 107 s.

SourceTest accuracy (20-way)Target-class AP ('bird')Agreement with teacherTest NLLKL(Bayes || model)Parameters (nonzero)
(labels only, 8k scratch)0.817 ± 0.0010.952 ± 0.0050.831 ± 0.0030.554 ± 0.0080.476 ± 0.0082,132
(labels only, 500 scratch)0.587 ± 0.0010.750 ± 0.0230.595 ± 0.0022.558 ± 0.0402.480 ± 0.0412,132
real: labeled set (8k)0.818 ± 0.0000.951 ± 0.0050.833 ± 0.0020.553 ± 0.0080.475 ± 0.0082,132
real: labeled + unlabeled pool (28k)0.832 ± 0.0050.954 ± 0.0050.845 ± 0.0050.511 ± 0.0130.433 ± 0.0152,132
real: 8k + online mixup0.813 ± 0.0040.945 ± 0.0040.831 ± 0.0060.564 ± 0.0150.483 ± 0.0152,132
real: 8k + online jitter0.813 ± 0.0080.944 ± 0.0100.836 ± 0.0080.599 ± 0.0220.517 ± 0.0232,132
real: 500 only0.593 ± 0.0020.749 ± 0.0330.600 ± 0.0032.461 ± 0.0342.383 ± 0.0332,132
real: 500 + online mixup0.738 ± 0.0040.888 ± 0.0310.754 ± 0.0030.817 ± 0.0240.735 ± 0.0232,132
real: 500 + online mixup+jitter0.756 ± 0.0050.903 ± 0.0070.778 ± 0.0050.733 ± 0.0090.651 ± 0.0082,132
fake: gaussian noise N(0,1)0.680 ± 0.0090.853 ± 0.0070.708 ± 0.0100.937 ± 0.0270.854 ± 0.0292,132
fake: uniform noise [-3,3]0.679 ± 0.0070.844 ± 0.0100.704 ± 0.0071.053 ± 0.0120.969 ± 0.0122,132
fake: teacher inversion (data-free)0.675 ± 0.0030.866 ± 0.0430.699 ± 0.0031.657 ± 0.0191.568 ± 0.0162,132
fake: inversion + 500 real0.698 ± 0.0030.859 ± 0.0420.722 ± 0.0061.332 ± 0.0341.246 ± 0.0342,132

Reference points

Teacher (the large model)
The full-size network trained on the labeled data; the smaller models here are measured against it. Test accuracy (20-way) 0.914, target-class AP ('bird') 0.989, test NLL 0.384, KL(Bayes || model) 0.309, parameters (nonzero) 140,052.
Bayes-optimal (the best any model can do on this problem)
Predictions from the exact class probabilities, which the lab can compute because it generated the data. Test accuracy (20-way) 0.973, target-class AP ('bird') 0.999, test NLL 0.079.

Birds in this experiment

The table's 13 smaller models hatch 1 kind of bird. Each kind is drawn once, for one model: the smallest if the bird is healthy or bones, the one that keeps the most if it's starving.

Measured against this experiment's teacher: 140,052 parameters, 4481.7 kbit, accuracy 0.914. Storage is 32 bits a parameter, the lab's rule for a dense fp32 net, which every model drawn here is. Species follows how many times smaller a model is. A bird stays healthy while its model keeps at least 95% of the reference's score, and turns to bones at 60% or less.

These are the lab's recorded results, so they aren't added to anyone's life list. Birds you hatch yourself, in the Coop or from a Field Guide run, are saved to your life list.