TensorFlow加密机器学习框架,为联邦学习加一层保护罩

2023-06-01 0 837

传统而言,体能训练数学模型须要统计数据生物学家能间接出访封闭式统计数据集。如果某一统计数据集零散且统计数据脆弱的话,裂解统计数据并体能训练将难以完成。比方说,对GBoard,裂解统计数据须要Google能间接出访所有采用者的每一个键操作,但对许多人而言,这是对其个人个人隐私的侵害;同时可能会引致Google严重错误地搜集采用者公钥、网银号及采用者所输入的其他脆弱文档。而联邦政府自学仅共享资源数学模型的预览,而不是体能训练数学模型的统计数据,很大减轻了这一难题。

联邦政府自学须要数学模型拥有者先将机器自学数学模型发送给每一统计数据拥有者。统计数据拥有者,即每台智能手机会采用邻近地区统计数据运转体能训练演算法的如上所述关键步骤,而体能训练演算法则根据输入与预期输入结果来确定对数学模型的预览方式。这些数学模型预览会再传回数学模型拥有者方,并进行汇整。当体能训练演算法(例如乱数势能下降演算法)达到局部性最优化权重股时,预览汇整结束。

TensorFlow加密机器学习框架,为联邦学习加一层保护罩

然而,联邦政府自学绝非完备的统计数据个人隐私化解方案,它难以保证在预览共享资源时不外泄脆弱重要信息。数次特别针对联邦政府自学的反击说明,自应用程序预览中逻辑思维个人隐私重要信息是能努力做到的。为了化解脆弱统计数据外泄难题,我们能利用相似性个人隐私及安全可靠裂解来为保护预览重要信息。

通过防止裂解器间接写作各应用程序的预览内容,安全可靠裂解化解了由于预设信赖裂解器而引致的难题,但这样并不能化解最终数学模型储存时及以后的体能训练统计数据外泄难题,相似性个人隐私尤其适宜化解这类难题。不过,尽管在采用类似于TensorFlow个人隐私时相互配合相似性个人隐私及安全可靠裂解是可取的,责任编辑还是侧重于安全可靠裂解这类。

TF Encrypted试验

TensorFlow加密机器学习框架,为联邦学习加一层保护罩
关上金沙新闻报道

TF Encrypted是一个TensorFlow身份验证机器自学架构。它看起来,上手感觉都很像TensorFlow,利用了Keras API的易用性,同时通过安全可靠的多方计算和同态身份验证对身份验证统计数据进行体能训练和预测。TF Encrypted的目的是让采用者在并不精通公钥学、分布式系统或高性能计算专业知识的情况下,也能采用个人隐私为保护加持的机器自学随时可用。

目前,此项目已在GitHub开源:https://github.com/tf-encrypted/tf-encrypted

将TensorFlow和TF Encrypted结合起来,无需担心底层细节,我们便能尝试快速迭代高层方面的实现。TF Encrypted所实现的安全可靠计算,以及TensorFlow采用优化计算图标的能力让该团队得以专注于联邦政府自学的细节实现,并采用不同的技术进行试验。

计算数学模型预览

计算数学模型预览时,每一参与部分须要获得最新的数学模型,这一点至关重要,以便邻近地区生成的预览对数学模型是有效的。这意味着每次体能训练迭代都必须在数学模型拥有者、统计数据拥有者及安全可靠裂解器之间进行同步,而TensorFlow能运用Keras接口,以及用于管理设备分配的tf.device接口,让这一过程更为简单。

安全可靠裂解

该团队能用TF Encrypted的安全可靠协议来安全可靠汇整预览内容。当前实现采用了TF Encrypted和额外的密匙共享资源方法,须要三方(至更多方)实现安全可靠地裂解计算。在安全可靠计算中,同步也很重要,而TensorFlow通过在图形模式下运转,并运用分发引擎按恰当顺序执行操作,使得同步成为可能。

TensorFlow加密机器学习框架,为联邦学习加一层保护罩

通过安全可靠裂解进行联邦政府自学会增加一个额外的关键步骤,将数学模型更新发送到裂解器,而不是间接返给数学模型拥有者。之后再通过该安全可靠裂解器,将汇整的预览发送到数学模型拥有者。

示例

本示例的主要目的:演示在TensorFlow及TF Encrypted中以高度可定制的方式实现联邦政府学习。与TensorFlow 1.X相比,最近发布的TensorFlow 2.0让这个试验更加简单。

假设:TF Encrypted已被复制到邻近地区目录中,系统安装了Python 3.5或更高版本,则只需从命令行中运转以下命令,即可运转示例的基础版本。

python examples/federated-learning/main.py

采用help flag可显示用于自定义脚本执行的其他选项。

自定义数学模型所有者

我们提供了两个基本类——BaseModelOwner和BaseDataOwner,这些类包含了网络通讯的方法,并允许对数学模型预览的计算和裂解进行易于配置的定制。

class ModelOwner(BaseModelOwner):@classmethoddef model_fn(cls, data_owner):x, labels = next(data_owner.dataset)

with tf.GradientTape() as tape:preds = data_owner.model(x)loss = tf.reduce_mean(data_owner.loss(labels, preds, from_logits=True))

return tape.gradient(loss, data_owner.model.trainable_variables)

@classmethoddef aggregator_fn(cls, model_gradients, model):aggr_inputs = [tfe.add_n(inputs) / len(inputs)for inputs in collected_inputs]

return aggr_inputs

@classmethoddef evaluator_fn(cls, model_owner):x, y = next(model_owner.evaluation_dataset)

predictions = model_owner.model(x)loss = tf.reduce_mean(model_owner.loss(y, predictions, from_logits=True))

子类BaseModelOwner扩展基本功能示例

我们采用示例中提供的default_model_fn,secure_mean以及evaluate_classifier对BaseModelOwner进行自定义。为了展示其基础功能之外的可定制性,我们还采用了Reptile元自学演算法实现了一些功能,以计算并实现数学模型预览的安全可靠汇整。

class DataOwner(BaseDataOwner):@from_simulated_datasetdef build_data_pipeline(self):”””Build data pipeline for validation by model owner.”””def to_tensors(instance):return instance[“image”], instance[“label”]

def cast(image, label):return tf.cast(image, tf.float32), tf.cast(label, tf.int32)

def normalize(image, label):return image / 255, label

dataset = self.dataset.map(to_tensors)dataset = dataset.map(cast)dataset = dataset.map(normalize)dataset = dataset.batch(batch_size, drop_remainder=True)dataset = dataset.repeat()

return dataset

子类BaseDataOwner指定统计数据加载方式的示例

同步和演算法选择完成自定义之后,能如上所述化对象并在机器自学数学模型上运转.fit方法,以开启体能训练,并将预览与安全可靠裂解同步。

model_owner = ModelOwner(“model-owner”, “./data/train.tfrecord”,model, loss, optimizer=tf.keras.optimizers.Adam(learning_rate))

data_owners = []for i in range(num_data_owners):do = DataOwner(f”data-owner-{i}”, f”./data/train{i}.tfrecord”,model, loss, optimizer=tf.keras.optimizers.Adam(learning_rate)

data_owners.append(do)

model_owner.fit(data_owners, rounds=batches, evaluate_every=10)

在model_owner上调用fit以开始体能训练

编写联邦政府自学

该示例利用了网络通讯的两种方式来实现联邦政府自学:采用tfe.local_computation decorator在邻近地区计算令输入与输入保持身份验证状态的函数,在函数内部对这些值进行解密。在对数学模型预览进行前向和反向迭代(forward and backward pass)时采用该方法,使得预览输入(即数学模型预览)保持身份验证状态。pin_to_owner是一个辅助函数decorator,通过tf.device调用函数,以保证TensorFlow在正确的设备上运转。在预览裂解及评估数学模型最终版本时采用。

完备版请查看 https://github.com/tf-encrypted/tf-encrypted/tree/494b95844860424c026fe0a31dd99788aaeee0e9/examples/federated-learning。

未来展望

TF Encrypted及联邦政府自学将不会止步于这个小示例,而是将TF Encrypted与现有的联邦政府自学架构结合起来,比如TensorFlow Federated,允许开发者与机器自学工程师利用TF Encrypted来进行安全可靠裂解,也允许开发者和统计数据生物学家将多种不同的技术结合在一起,同时还能选择采用联邦政府自学。从示例TensorFlow Federated和Distribution Strategies中也还有很多能思考的地方,迸发灵感,如何找出安全可靠联邦政府自学更好的API用法。

https://medium.com/dropoutlabs/federated-learning-with-secure-aggregation-in-tensorflow-95f2f96ebecd

(*责任编辑为AI科技大本营翻译文章,转载请联系微信1092722531)

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务