机密机器学习。PySyft库

哈伯,你好!


本文是关于保留隐私的机器学习的。我们将讨论为什么以及如何在训练(例如神经网络)时确保用户的隐私。


本文的大部分内容是对安德鲁·特拉斯克(Andrew Trask)演讲和演讲的重述。他是OpenMined社区的负责人这些人通过机器学习中的隐私主题团结在一起。特别是,OpenMined正在使用PySyft这是PyTorch,Tensorflow或Keras的包装,用于私人机器学习。在本文中,我们将了解PySyft。


动机


让我们想对人类肿瘤进行分类。如果我们可以进行这样的分类,我们将为数百万人提供帮助。然后,我们的第一步是找到合适的数据集。请注意,此数据是私有数据,很难访问它。大多数人都不想公开谈论自己的病。


我将阐明为什么数据匿名化还不够。2007年,Netflix从500,000个用户那里发布了1000万部电影收视率。该数据集是创建最佳推荐系统的比赛的一部分。其中,人名和电影名被标识符代替。但是,研究人员能够使用带有IMDb的开放数据来识别个人。原始文章中有更多详细信息


然后,您需要的不仅仅是匿名化。此外,我认为可以在我们无法访问的数据上训练神经网络。然后,将确保隐私,我们将能够建立一个肿瘤分类器。此外,我们将能够治疗其他疾病,例如痴呆症或抑郁症。如果我们学习在机器学习中使用私有数据,则可以解决重要的世界性问题。


远程执行/联合学习


假设我们是苹果。我们希望使我们的服务更好。例如,我们要改善自动完成功能。然后,我们需要数据:用户键入什么单词和顺序。我们可以从iPhone和iPad下载这些数据,并将其存储在公司的服务器上,并且数据集已准备就绪。但是我们侵犯了隐私!


由于数据不会进入模型,因此模型会进入数据。这是我们的第一个想法。我们将把神经网络发送给用户,我们将从他们的数据中本地学习,并获得具有更新权重的模型。``远程执行''的另一个功能是并行模型训练的能力,即 同时在不同的设备上。


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