HandsomeFuHS 2019-04-13
3月初,谷歌推出了TensorFlow Privacy,并将其开源。这款强大的机器学习模型不仅可以使开发者更容易地用隐私来训练机器学习模型,而且能使研究人员以强大的隐私保障来提高机器学习的发展水平。
现代机器学习越来越多地被应用于创造惊人的新技术和用户体验,其中许多都需要训练机器,使其能够负责任地从个人照片或电子邮件等敏感数据中进行学习。理想情况下,经过训练的机器学习模型的参数应该能够编码一般模式,而不是仅针对特定训练示例。
为了确保这一点,在训练数据敏感时提供强有力的隐私保障,可以使用基于差异隐私理论的技术。在用户数据上进行训练时,这些技术提供了强大的数学保障,即模型不会学习或记住任何特定用户的详细信息。特别是对于深度学习而言,额外的保障可以有效地加强其他隐私技术提供的保护,无论是已建立的技术(如阈值和数据删除),还是TensorFlow Federated的新技术。
多年来,谷歌一直在差异隐私的基础研究和实用差异隐私机制的发展上处于领先的地位。去年,谷歌发布了 Responsible AI Practices ,详细介绍了有辨别地开发机器学习系统和产品的推荐实践。
为了协助外部开发人员将这些实践应用到自己的产品之中,Google发布了TensorFlow Privacy,并更新了技术白皮书,在白皮书中更详细地描述了其隐私机制。
要使用TensorFlow Privacy,无需在隐私或其基础数学方面的专业知识,使用标准TensorFlow机制的开发者不必更改其模型架构、训练程序或过程。相反,为了训练保护训练数据隐私的模型,通常只需进行一些简单的代码更改并调整与隐私相关的超参数即可。
作为差异隐私训练的具体例子,让我们来看看文本序列上字符级、循环语言模型的训练。使用神经网络进行语言建模是一项基本的深度学习任务,被应用于无数的应用程序中,其中许多都是基于敏感数据的训练。我们根据TensorFlow Privacy GitHub 中的示例代码,对两个模型(一个使用标准方法,另一个使用差异隐私)使用相同的模型结构进行训练。
这两个模型都很好地建模了标准Penn Treebank 训练数据集 中金融新闻文章中的英语。然而,如果这两个模型之间的细微差别是由于未能捕捉到语言分布的一些基本、核心方面,这将使人们对差异隐私模型的实用性产生怀疑。另一方面,即使隐私模型未能在训练数据中捕捉到一些深奥、独特的细节,它的实用性可能仍然很好。
为了确认隐私模型的实用性,可以查看两个模型在训练和测试数据的语料库上的表现,并检查它们同意和不同意的句子集。为了观察它们的共性,可以测量它们在模型化句子上的相似性,看看两个模型是否接受相同的核心语言。在这种情况下,两个模型接受并获得超过98%的训练数据序列的高分(即低复杂度)。例如,这两个模型在以下金融新闻句子中得分都很高:
there was little turnover and nothing to stimulate the market
south korea and japan continue to be profitable
merchant banks were stronger across the board
为了观察它们的差异,我们可以检查两个模型分数相差很大的训练数据句子。例如,以下三个训练数据句子在标准训练中都被有效地记忆,因此都得到了很高的分数,并被常规语言模型所接受。然而,差异隐私模型对这些句子的得分很低,并且没有接受它们:
aer banknote berlitz calloway … ssangyong swapo wachter
the naczelnik stands too
my god and i know i am correct and innocent
上述所有句子在金融新闻中似乎都不常见,它们似乎是隐私保护的明智选择。例如,因为如此罕见的、奇怪的句子可能识别或揭露敏感数据训练出的模型中的个人信息。这三句话中的第一句是出于技术原因在训练数据中出现的一长串随机单词;第二句是部分波兰语;第三句尽管看起来是自然的英语,但其并非来自正在建模的金融新闻语言。
这些例子都是手工选择的,但全面的检查证实,不被差异隐私模型接受的训练数据语句一般不在金融新闻文章的正常语言分布范围之内。此外,通过评估测试数据,我们可以验证这些难解的句子是隐私和非隐私模型之间质量损失的基础(1.13:1.19的困惑度)。因此,虽然名义上的困惑损失在6%左右,但对于我们所关心的语句,隐私模型的性能可能根本不会降低。
显然,至少在一定程度上,这两个模型的差异是由于隐私模型未能记住异于训练数据的罕见序列。可以通过利用早期在神经网络中测量无意识记忆的工作来量化这种影响,这种工作有意地将独特的、随机的噪声句子插入到训练数据中,并评估噪声对训练模型的影响。在这种情况下,插入一个随机的噪声句子就足以让非隐私模型完全记住噪声。
然而,在任何插入的噪声面前,用差异隐私进行训练的模型都是不可区分的,只有在训练数据中多次出现相同的随机序列时,隐私模型才会了解它。值得注意的是,这对于所有类型的机器学习模型都是正确的(例如,请参阅上面的MNIST训练数据中的罕见示例),即使模型隐私的数学形式上限太大,理论上无法提供任何保证,也仍然是正确的。
TensorFlow Privacy可以防止对罕见细节的记忆,如上图所示,可以保证两个机器学习模型将无法区分是否在训练中使用了某些示例(例如,某些用户的数据)。
要开始使用TensorFlow Privacy,可以查看 GitHub repository中的示例和教程。它包括一个详细的教程,介绍如何使用传统的TensorFlow方法以及TensorFlow 2.0和Keras中新的eager方法对MNIST基准机器学习任务进行差异隐私训练。
若需使用TensorFlow Privacy,你需要采取一项新的关键步骤,即设置三个新的超参数。这些超参数控制梯度创建、剪裁和噪声化的方式。在训练过程中,通过使用改进的随机梯度下降来优化模型,将训练数据示例所产生的多个梯度更新平均在一起,将每个梯度更新剪裁到某个最大范数,并将高斯随机噪声添加到最终平均值,从而确保差异隐私。这种学习方式最大限度地限制了每个训练数据示例的效果,并确保没有任何一个这样的示例因添加的噪声而具有任何影响。设置这三个超参数是一门艺术,但TensorFlow Privacy代码库已就如何为具体示例选择超参数提供了指导准则。
TensorFlow Privacy可以发展成为具有强大隐私保障的、训练机器学习模型的最佳技术中心。世界相关开发人员可以共同参与。例如:
•深入了解差异隐私及其在机器学习中的具体应用。
•尝试在自己的机器学习模型上应用TensorFlow Privacy,并通过调整超参数、模型容量和架构、激活函数等来尝试平衡隐私和实用性。
•对于研究人员,尝试通过改进分析(例如模型参数选择)来提高具有强大隐私保障的现实机器学习的先进性。
•通过提交请求向TensorFlow Privacy投稿。
•在 GitHub 上提出问题并分享意见或疑虑。