W = rtt.private_input(1, model_W)
现实中有一类典范的场景是一方有数据,一方有模子参数。都很需要互相,但因为数据与参数的敏感性,又显得“同床异梦”。 可以看出A方凭据预期顺利地拿到了预测的功效,并且在整个计较进程中,A方的模子参数不会袒露,B方的明文数据也不会袒露。
# initialize model W & b with P1’s private data
# load P0’s private feature data to be predicted.
pred_Y = tf.sigmoid(tf.matmul(X, W) + b)
基于Rosetta只需要当地先挪用加密转换的接口,将当地待处理惩罚数据集和模子参数都加密后,就可以在后头的巨大模子上运行。B公司完全不会泄露本身这些敏感的人脸图像数据,A公司也不会泄露属于本身公司焦点资产的这些模子参数。由于篇幅限制,,我们仍以上述LR简朴模子来示例,假定A公司脚色是P0,B公司脚色是P1,而P2只需要是一个姑且的无输入、无输出的帮助节点。可以对基于安详多方计较技能的整套业务进程举办加快。
import tensorflow as tf
好比,一家专注AI视觉算法的公司A有一套先进的人脸识别模子,而且模子参数在不绝的迭代优化中,其处事可以通过RESTful API来会见。而另一家公司B需要基于人脸识别系统构建本身的用户认证系统,可是用户的人脸图像等敏感数据不能泄露。
with tf.Session() as sess:
model_W = np.loadtxt(‘W.txt’)
import csv
model_W = None
model_b = np.loadtxt(‘b.txt’)
print(“plain Y:”, Y_plain)
else:
import latticex.rosetta as rtt
from util import read_dataset
# for demo, only P0 can get this plain result
在这里通过Rosetta的隐私数据处理惩罚接口,别离指定了各方输入本身的隐私数据,然后就可以和原生TensorFlow一样,执行模子预测的任务了。
X = tf.placeholder(tf.float64, [None, DIM_NUM])
cipher_feature= rtt.SecureDataSet().load_X(file_feature, header=None)
Y_cipher, Y_plain = sess.run([pred_Y, plain_Y], feed_dict={X: cipher_feature})
model_b = None
我们可以在最后打印一下输出的密文值和明文值看一下结果(留意我们指定了只有P0(即A方)才可以返回明文功效)。
# predict with model
sess.run(init)
b = rtt.private_input(1, model_b)
以下为B方的输出:
plain_Y = rtt.SecureReveal(pred_Y, 1)此前我们通过基于Rosetta的隐私掩护多方金融连系AI建模场景,相识了Rosetta在金融行业中的实际应用。实际上,隐私开源框架Rosetta可应用范畴极广,各行各业中需要在隐私掩护下连系建模的场景中,城市用到Rosetta。下面我们从人脸识此外应用场景中理会Rosetta的实际应用。
# predictif rtt.get_party_id() == 0:
init = tf.global_variables_initializer()
此时A方和B方假如需要举办相助,由于隐私方面的问题会存在坚苦,B不能用本身明文的人脸图像作为输入直接挪用A的接口,因为很容易将人脸图像数据袒露给了对方,并且很难知道两边会不会用数据和参数去做此外工作。而基于Rosetta提供的隐私AI框架可以轻松办理这个难点。
import numpy as np
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。