IBM的人工智能安全隐私包——感觉就是看论文实现了一个工具,实际效果待工业检验
地址:https://github.com/IBM/ai-privacy-toolkit
人工智能隐私工具包
与 AI 模型的隐私和合规性相关的工具和技术的工具包。
匿名化模块包含用于匿名化 ML 模型训练数据的方法,因此当模型在匿名数据上重新训练时,模型本身也将被视为匿名。这可能有助于使模型免于 GDPR、CCPA 等数据保护法规中规定的不同义务和限制。
最小化模块包含有助于遵守 GDPR 中用于 ML 模型的数据最小化原则的方法。它能够减少使用机器学习模型执行预测所需的个人数据量,同时仍然使模型能够做出准确的预测。这是通过删除或概括某些输入特征来完成的。
官方 ai-privacy-toolkit 文档:https ://ai-privacy-toolkit.readthedocs.io/en/latest/
安装:pip install ai-privacy-toolkit
匿名化模块
该模块包含用于匿名化 ML 模型训练数据的方法,因此当模型在匿名数据上重新训练时,模型本身也将被视为匿名。这可能有助于使模型免于 GDPR、CCPA 等数据保护法规中规定的不同义务和限制。
该模块包含的方法能够以针对现有的、经过训练的 ML 模型定制和指导的方式对训练数据集进行匿名化。它使用现有模型对训练数据的预测来训练第二个匿名模型,该模型最终确定将应用于训练数据的泛化。有关该方法的更多信息,请参见:https ://arxiv.org/abs/2007.13086
一旦返回匿名的训练数据,就可以用它来重新训练模型。
下图描述了整个过程:
引文
Goldsteen A.、Ezov G.、Shmelkin R.、Moffie M.、Farkash A. (2022) 匿名机器学习模型。在:Garcia-Alfaro J.、Muñoz-Tapia JL、Navarro-Arribas G.、Soriano M. (eds) 数据隐私管理、加密货币和区块链技术。DPM 2021,CBT 2021。计算机科学讲义,第 13140 卷。Springer,Cham。 https://doi.org/10.1007/978-3-030-93944-1_8
数据最小化模块
欧盟通用数据保护条例 (GDPR) 规定了数据最小化原则,该原则要求仅收集实现特定目的所需的数据。但是,通常很难确定所需的最小数据量,尤其是在复杂的机器学习模型中,例如神经网络。
该模块实现了一种首创的方法,通过删除或概括一些输入特征来帮助减少使用机器学习模型执行预测所需的个人数据量。该工具包关注的数据最小化类型是减少为分析收集的特征的数量和/或粒度。
泛化过程基本上是搜索几个相似的记录并将它们组合在一起。然后,对于每个特征,每个组中该特征的单个值被替换为整个组共有的代表性值。这个过程是在使用模型中编码的知识来产生一个对其准确性几乎没有影响的概括时完成的。
有关该方法的更多信息,请参阅:http ://export.arxiv.org/pdf/2008.04113
下图描述了整个过程:
用法
主类GeneralizeToRepresentative
scikit-learn 兼容Transformer
,它接收现有的估计器和标记的训练数据,并学习可应用于任何新收集的数据以供原始模型分析的泛化。该fit()
方法学习泛化,并将其transform()
应用于新数据。
也可以将概括导出为特征范围。
当前实现支持数字特征和分类特征。
首先训练您的机器学习模型。在此示例中,我们将使用DecisionTreeClassifier
,但可以使用任何 scikit-learn 模型。我们将在示例中使用 iris 数据集。
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
dataset = datasets.load_iris()
X_train, X_test, y_train, y_test = train_test_split(dataset.data, dataset.target, test_size=0.2)
base_est = DecisionTreeClassifier()
base_est.fit(X_train, y_train)
现在创建GeneralizeToRepresentative
变压器并训练它。为其提供原始模型和所需的目标精度。训练过程可以接收原始标记的训练数据或模型对数据的预测。
predictions = base_est.predict(X_train)
gen = GeneralizeToRepresentative(base_est, target_accuracy=0.9)
gen.fit(X_train, predictions)
现在使用转换器来转换新数据,例如测试数据。
transformed = gen.transform(X_test)
转换后的数据与原始数据具有相同的列和格式,因此可以直接用于从原始模型中推导出预测。
new_predictions = base_est.predict(transformed)
要导出生成的概括,请检索Transformer
'_generalize
参数。
generalizations = base_est._generalize
返回的对象具有以下结构:
{范围:{(:[])列表},未触及:[]}
例如::
{ 范围:{ 年龄:[21.5, 39.0, 51.0, 70.5],教育年限:[8.0, 12.0, 14.5] },未触及:[“职业”,“婚姻状况”] }
范围列表中的每个值都代表一个截止点。例如,对于该age
特征,此示例中的范围为:<21.5, 21.5-39.0, 39.0-51.0, 51.0-70.5, >70.5
. 该untouched
列表表示未概括的特征,即它们的值应保持不变。
引文
Goldsteen, A.、Ezov, G.、Shmelkin, R. 等人。机器学习模型中 GDPR 合规性的数据最小化。人工智能伦理(2021)。https://doi.org/10.1007/s43681-021-00095-8