Aprendizado de máquina confidencial. Biblioteca PySyft

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-, .


#  PyTorch  PySyft
import torch as th
import syft as sy

#     PyTorch-
hook = sy.TorchHook(th)

#  "" ,  " " -    .
bob = sy.VirtualWorker(hook, id="bob")

#    x  y     .    .
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
# {5102423178: tensor([1, 2, 3, 4, 5]),
#  6031624222: tensor([1, 1, 1, 1, 1]),
#  4479039083: tensor([2, 3, 4, 5, 6])}

#      ,    
z = z.get()
z
# tensor([2, 3, 4, 5, 6])

bob._objects
# {5102423178: tensor([1, 2, 3, 4, 5]), 
#  6031624222: tensor([1, 1, 1, 1, 1])}

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". , . .

:



All Articles