Habr, olá!
Este artigo é sobre Machine Learning preservado por privacidade. Discutiremos por que e como garantir a privacidade dos usuários ao treinar, por exemplo, redes neurais.
A maior parte do artigo Ă© uma recontagem dos discursos e palestras de Andrew Trask. Ele Ă© o lĂder da comunidade OpenMined . SĂŁo pessoas unidas pelo tema da privacidade no aprendizado de máquina. Em particular, o OpenMined está trabalhando na biblioteca PySyft . Este Ă© um invĂłlucro sobre PyTorch, Tensorflow ou Keras para aprendizado de máquina particular. Vamos conhecer o PySyft durante este artigo.
Motivação
Vamos querer fazer um classificador de tumores humanos. Se conseguirmos fazer esse classificador, ajudaremos milhões de pessoas. EntĂŁo, nosso primeiro passo Ă© encontrar um conjunto de dados adequado. Observe que esses dados sĂŁo privados, Ă© difĂcil acessá-los. A maioria das pessoas nĂŁo quer falar publicamente sobre suas doenças.
Esclarecemos por que o anonimato dos dados nĂŁo Ă© suficiente. Em 2007, a Netflix publicou 10 milhões de classificações de filmes de 500.000 usuários. Esse conjunto de dados fazia parte de uma competição para criar o melhor sistema de recomendação. Nele, os nomes das pessoas e os nomes dos filmes foram substituĂdos por identificadores. No entanto, os pesquisadores foram capazes de identificar indivĂduos usando dados abertos no IMDb. Mais detalhes no artigo original .
EntĂŁo, vocĂŞ precisa de algo mais do que anonimização. AlĂ©m disso, acredito que Ă© possĂvel treinar redes neurais em dados aos quais nĂŁo temos acesso. A privacidade será assegurada e poderemos construir um classificador de tumores. AlĂ©m disso, poderemos trabalhar em outras doenças, como demĂŞncia ou depressĂŁo. Se aprendermos a trabalhar com dados particulares no aprendizado de máquina, poderemos resolver importantes problemas mundiais.
Remote Execution/Federated Learning
, Apple. . , . , : . , . !

, . . , . 'Remote Execution' , .. .
PySyft — python- . , . . , Torch-, .
import torch as th
import syft as sy
hook = sy.TorchHook(th)
bob = sy.VirtualWorker(hook, id="bob")
x = th.tensor([1,2,3,4,5]).send(bob)
y = th.tensor([1,1,1,1,1]).send(bob)
z = x + y
bob._objects
z = z.get()
z
bob._objects
tensor.get()
. . , - ?
Differential Privacy
, , . , bag-of-words, , {"": " "}. . Differential Privacy — , .
.
. — . , . , , , . . , , . , . .

, - , 50/50. , . . , 60% ''. , . : 35% '', 25% '', 15% '' 25% ''. , 70% '' 30% ''. .
, . , , . , , .
. , . . , ( ).
. 'Remote Execution' , . , . .
. . , Secure multi-party computation Homomorphic Encryption. ?
:
- Apple , . .
- — "Differential Privacy". , . .
: