Gating is ??? a discrete, sparse choice of ... Limiting of information flow!? Why is it important? It can provide differentiable sparsity? Sparsity is the real goal?
Gating allows us to choose (at run time) which computations to apply. This means we can save ... (somewhat like attention).
Specifically I am interested in applying this to gating/heirarchical/... for image processing.
-
what is the best way to ensure that the the gating fn diversifies and the experts specialise?
-
how can we learn which expert we should have selected?!? to make them neighbors in some sense?
-
what is the best way to distribute shared vairables across different models? (as a way of )
This idea revolves around the duality between linear functions and arrays. Instead of thinking of a matrices index as a look up table, we can think of them as inputs to a function. Which means that it could make sense to take derivatives with respect to indexes (if we assume they are reals). Or approximate with differences.
- What restrictions are there on the functions? Alternatives are;
- piecewise linear approximations.
- derivative of a 3 point parabola (that turns out to be the same thing?)
- ?
Noise could really screw this over. Trade stability for computational efficiency (avg of iterations). The smaller the neighborhood used for the estimate, the lower the stability. Sounds like taylor expansions? Wait we want the sum/mean of local approximations to the gradient. How does that relate to integration?
Could learn/predict the gradient? dAdx = MA. Where M is some learned vector/array can can be applied to a neighborhood? Sounds a lot like a convolution??
Wait can you write integration as a matmul? So integration is just the linear combination (sum) of a bunch of 'linearisations' about points.
The interaction between higher order derivatives and their lower counter parts? Could take the higher order ones the 'atomic' and view them as generating the resulting function. It must get pretty complex how they interact with each other?
Settings.
Have;
- small number of labels (very expensive) + noisy contextual info (less expensive)
Need. Hierarchical labels. Which can be generated easily with some human input and the low level labels. E.g. Pinus radiata < Radiata < Introduced species Male < Hihi < Bird
Learn a mapping/grouping/clustering between labels. (aka the higher level patterns?)
Problems with switching
- We only have a finite number of processors. And we want to keep the variables stored close to them. In fact we would prefer to have variables allocated to each processor. But, if we have to many parameters/too few processors. We need to move the parameters around quite often. This takes time and resources.
- How do you accumulate enough values for a batch in paths that are infrequently traversed? Store activations until you have enough?
How can we ever learn that we should have used another expert? Experts have 'opinions' about each other, they are neighbors somehow?
- A distance function between their parameters?
- Could even share some parameters?