Machine learning without centralized training data
research.googleblog.com
research.googleblog.com
No. The vast majority of people in any organisation are timid folks who want what's best in the sense of the greater good, unless the greater good involves any courage on their part. These people are congenial, but don't confuse those with good people.
% and often mentions competition/monopoly laws
I think this is a win, because the consumer has the choice, and if enough people do it ,the resulting aggregated datasets will have exceptional power to help solve global medical problems.
Maybe Google could be interested in move some of the processing load to the users devices.
If a goverment wants more power it makes sense to be able to read and store the data in their datacenter.
How does Federated Learning cope with ... FAKE NEWS! (for example).
A key component is that to analyze the data in the cloud for the same refinement would mean sending the data to the cloud, which the user may not want, and may also be bandwidth intensive.
For fake news, the data is already in the cloud, being pushed down to the users device. A user could mark something as 'fake' (via explicit action, or possibly inaction), and that 'mark' is uploaded and the data is analyzed by central compute for refinement. To be clear, that is NOT what this paper is about, I am saying fake news would be a bad use, because the data is not being sourced by the user, only viewed and possibly marked.
A better example than the gboard gesture learning refinements might be in the form of an app that acts as a dashcam (leaving aside the kludgeyness of that). The user could mark things like proper recognition of street signs, traffic lights, or brands/models of vehicles. The phone would then analyze those classification, compute a diff to the algorithm, send just that diff to the cloud (summarizing a lot). Multiply that by 1,000,000 users, and now you have a refined data set that did not require sending 100,000,000,000 images to the cloud for analysis.
I would also consider WolframAlpha to be in a similar category as Google in the sense that they're "answer machines". I think there's a market opening for a search engine with the wisdom (knowing what you're looking for) of Google with the Intelligence of WolframAlpha (being able to draw curves that look like Darth Vader).
For example if you search "Darth Vader curve" in WA, you'll get this: http://m.wolframalpha.com/input/?i=Darth+Vader+curve&x=0&y=0
But if you can't remember exactly what it's called and search "Darth Vader graph" you'll just get redirected to the page for Darth Vader. Ideally, a WA would know what I'm looking for ("Darth Vader curve") and show it to me instead.
Federated Learning: Strategies for Improving Communication Efficiency (2016) https://arxiv.org/abs/1610.05492
Federated Optimization: Distributed Machine Learning for On-Device Intelligence (2016) https://arxiv.org/abs/1610.02527
Communication-Efficient Learning of Deep Networks from Decentralized Data (2017) https://arxiv.org/abs/1602.05629
Practical Secure Aggregation for Privacy Preserving Machine Learning (2017) http://eprint.iacr.org/2017/281
(Slides only here: https://www.slideshare.net/0xdata/h2o-world-consensus-optimi...)
At that time I was working at a healthcare startup, and the ramifications of consensus algorithms blew my mind, especially given the constraints of HIPAA. This could be massive within the medical space, being able to train an algorithm with data from everyone, while still preserving privacy.
Edit, link to the paper: http://eprint.iacr.org/2017/281
The key algorithmic detail: it seems they have each device perform multiple batch updates to the model, and then average all the multi-batch updates. "That is, each client locally takes one step of gradient descent on the current model using its local data, and the server then takes a weighted average of the resulting models. Once the algorithm is written this way, we can add more computation to each client by iterating the local update. "
They do some sensible things with model initialization to make sure weight update averaging works, and show in practice this way of doing things requires less communication and gets to the goal faster than a more naive approach. It seems like a fairly straighforward idea from the baseline SGD, so the contribution is mostly in actually doing it.
This paper seems to suggest that this parallelization might actually be feasible. Would you agree?
So I assume this would help with privacy in a sense that you can train model on user data without transmitting it to the server. Is this in any way similar to something Apple calls 'Differential Privacy' [0] ?
"The key idea is to use the powerful processors in modern mobile devices to compute higher quality updates than simple gradient steps."
"Careful scheduling ensures training happens only when the device is idle, plugged in, and on a free wireless connection, so there is no impact on the phone's performance."
It's crazy what the phones of near future will be doing while 'idle'.
------------------------
[0] https://www.wired.com/2016/06/apples-differential-privacy-co...
From one run, you can't tell if any individual is telling the truth, but you can still estimate the number of communists from the aggregate responses.
This is doing local model training, and sending the model updates, instead of the raw data that would usually be used for training.
In contrast, what Google's proposing is more like distributed training. In regular SGD, you'd iterate over a bunch of tiny batches, sequentially through your whole training set. Sounds like Google's saying each device becomes it's own mini-batch, and it beams up the result, and Google will average them all out in a smart way (I didn't read the paper, but this was the gist I got from the article).
Both ideas are in the same spirit, just the implementations are very different.
They even say at the end of the paper: "While federated learning offers many practical privacy benefits, providing stronger guarantees via differential privacy, secure multi-party computation, or their combination is an interesting direction for future work." So, the "practical privacy benefits" here is referring to the dimensionality reduction from running the raw data thru the LSTM.
Counterpoint: perhaps they don't need your data if they already have the model that describes you!
If the data is like oil, but the algorithm is like gold.. then they still extract the gold without extracting the oil. You're still giving it away in exchange for the use of their service.
For that matter, run the model in reverse, and while you might not get the exact data... we've seen that machine learning has the ability to generate something that simulates the original input...
I'm not an expert on ML (clearly). What format does the model actually take when you share it? Is it raw data (like weights for neurons or something) + the configuration of the algorithms?
I understand deanonymizing data and sharing aggregated results, but I thought actually sharing that data via essentially encoding into an algorithm and then sharing that algorithm is quite different.
I'm not sure this is ready for decentralized P2P yet, but I would love to see someone working towards that.
They take pains to say:
> your device downloads the current model, improves it by learning from data on your phone, and then summarizes the changes as a small focused update. Only this update to the model is sent to the cloud, using encrypted communication, where it is immediately averaged with other user updates to improve the shared model. All the training data remains on your device, and no individual updates are stored in the cloud.
(my emphasis on the word stored)
Now there are lots of scholarly articles on reverse-engineering and rule-extraction from neural nets.
So Google, having the diff can actually get some idea what it is you are trying to teach the net.
They just promise not to.
Google makes the OS and the keyboard. If they wanted to run a keylogger on every device against the express wish of users they could.
So I think the more important question is if someone else could steal or "legally" request that data from Google and recover my keystrokes.
Plus this would seem a computationally expensive way of conducting mass surveillance
Well, that's my fallible summary anyway, go read the paper. :-)
More generally, there's the notion that a sufficiently complex model encodes the training data. There's been work on extracting training data (or highly deformed versions of it) from a fully trained neural network. We should be under no illusions that networks offer cryptographically strong protections to their memories. It's simply not a design goal.
Reading this, I couldn't shake the feeling that I heard all of this somewhere before in a work of fiction.
Then I remembered - here's the relevant clip from "Ex Machina":
https://medium.com/numerai/encrypted-data-for-efficient-mark...
Why did they not build something like this ? I'm kind of concerned that my private keyboard data is being distributed without security. The secure aggregation protocol doesn't seem to be doing anything like this.
The interesting technical bits are in https://arxiv.org/abs/1610.05492
To save on update bandwidth, they either restrict the gradient to a lower dimensional space, or compress by quantizing the full gradient (which should effectively add zero-mean noise) before sending it back. (In theory they could do both of these, but they didn't actually test that.)
The entire point of using stochasticity (ie: random shuffling) is to avoid similar and/or a same-ordered run of examples from redirecting the hill climbing in a globally non-optimal direction all at once.
A single user's examples will be very similar, so you can shuffle all the examples from one user you want - that doesn't make it truly stochastic in the context of gradient descent optimization.
The quantization / compression part is pretty cool though. I suppose that could obfuscate slightly what the original example was for privacy purposes? Seems like you'd lose on accuracy though.
When the rail company in Sweden first offered voice bookings people would hoax it by calling and saying "I want to book a ticket from Göteborg to Stockholm", and a robotic voice would reply "Do you want to book a ticket from Göteborg to Stockholm?"; at this point the hoaxer says "No, I want to book a ticket from Stockholm to Göteborg". And back and forth for hours and hours until the system could no longer distinguish between Stockholm and Göteborg and the system was basically useless.
A system that tries to learn corrections, e.g. the keyboard example in the article, are all vulnerable to poisoning. As anyone who plays with poisoning Google search results delights in.
My Google-fu is weak.
When I first read this I was thinking: surely we can already do distributed learning, isnt that what for example SparkML does?
Is the benefit of this in the outsourcing of training of a large model to a bunch of weak devices?
Perhaps a statistically random tests to ensure that client's code has not been tampered.
In the other hand no one speaks about energy/battery consumption of the clients (you got 8 cores and a gpu in your pocket right? Finally there is an application a part of videogames which will take profit of them).
I know ideas without execution don't worth anything, but I'm just happy to see my vision is on the right direction.
(and the phones are only part-time, at that!)
Also, gboard is installed on between 500 million and 1 billion phones.
https://play.google.com/store/apps/details?id=com.google.and...
So I can't confidently dismiss the computational cost away just yet.