AI’s big leap to tiny devices opens world of possibilities
blogs.microsoft.com
blogs.microsoft.com
There's just no way to train dumb little computers on enough observed data. You have to centralize the AI training at least, and therefore centralize data collection. Most existing services (like Amazon Echo or Siri) also centralize the AI logic, requiring them to be online to function.
This setup of ubiquitous, always-online smart devices reporting to a central collection server is very hazardous. At the very least, we need to require that these devices be disconnectable with a hardware switch (without losing other functionality), and that the training data they send home be pre-cooked as much as possible.
The article mentions de-centralized training (in the "bottom up" section), but that begins by saying we have to reinvent the entire field.
https://research.googleblog.com/2017/04/federated-learning-c...
This is pretty great. How can we tell if a particular ML problem is amenable to weight quantization without sacrificing accuracy?
if you have a 24bit value.. say, a 24bit color, that means you have ~16million.. 2^24==16777216.. possible colors
but if you only want to use 200 colors you can, instead of representing them as the full 24bit value, use an 8bit value.. 2^8==256>200.. and have those 8bits represent a value in an index that points to the desired full 24bit value
so you have to ask yourself.. what parameters of my neural net can be represented as an index? or, what parameters are of a quantity less than the parameter values' size?
wiki defines ann parameters as:
An ANN is typically defined by three types of parameters:
The connection pattern between the different layers of neurons
The weights of the connections, which are updated in the learning process.
The activation function that converts a neuron's weighted input to its output activation.
here is a great paper that tries to answer this question for you in a way that highlights error resulting from quantization decisions(i)(o) https://en.wikipedia.org/wiki/Artificial_neural_network#Netw...
(i) https://www.cmpe.boun.edu.tr/~ethem/files/papers/fatih_icann...
What an incredible responsibility we have to protect our families from the misuse of this capability.
A second technique is to use deep learning to learn from stack traces. Any old software could be stack-traced by inserting a few prints here and there. Then a NN could learn recursive algorithms just by trying to recreate the whole stack trace, not just the actual outputs. It's a way to distill plain old programming into NNs, by incorporating side information that is cheap to get. This would be useful to quickly teach a NN some algorithm while making it less brittle than symbolic approaches. Imagine how many algorithms could be extracted from conventional software.
On the first one, I assume we are still talking hand-generation\coordination of the procedural bits. I was waving my hands at possibly learning the topology of those bits, possibly even from recognizing them as being reproduced [inefficiently] in a trained NN.
I don't think I've ever pondered that second technique before and it's very intriguing. Is there a canonical best-of-class in that category? Offhand, it sounds brutally hard to do.
Also, I think DeepMind might have published something on an NN that learned to write a procedural program that wrote a sort algorithm. Is that related?
Differentiable Programs with Neural Libraries - https://www.microsoft.com/en-us/research/wp-content/uploads/...
Making Neural Programming Architectures Generalize via Recursion - https://openreview.net/forum?id=BkbY4psgg
Neural Programmer Interpreters - https://arxiv.org/abs/1511.06279
But what the article tells us is- basically , that its time to go back to where we where before the cloud hype and get statistic models on the machines, in the machines and horray. Full Circle. Till we are all in boxes.