机器学习中的安全与隐私及人在回路的机器学习
1. 机器学习中的安全与隐私技术
1.1 同态加密
同态加密是一种允许对加密数据进行计算的技术,在机器学习场景中很有帮助,比如可以在不进行解密的情况下,使用模型对加密数据进行推理。不过,实现全同态加密可能很复杂,计算成本高且内存效率低。
有一些Python库可以帮助我们实践同态加密方案:
- TenSEAL (https://github.com/OpenMined/TenSEAL),可与PyTorch和NumPy集成
- PySEAL (https://github.com/Huelse/PySEAL)
- HElib (https://github.com/homenc/HElib)
下面是一个使用TenSEAL进行同态加密的简单示例:
import tenseal as ts
context = ts.context(ts.SCHEME_TYPE.BFV,
poly_modulus_degree=4096, plain_modulus=1032193)
在上述代码中,
poly_modulus_degree
参数用于确定多项式模的次数,它是一个具有整数系数的多项式。
plain_modulus
参数用于指定将明文消息编码为可以进行同态加密和处理的多项式的模数。如果
plain_modulus
参数太小,消息可能会溢出并导致结果错误;如果太大,密文可能会变得太大,从而减慢同态操作的速度。
这里使用了Brakerski - Fan - Vercauteren (BFV)方案,它是一种支持整数运算的同态加密方案,包含用于生成公钥和私钥、加密明文消息、解密密文消息、对两个密文进行加减和乘法运算的不同多项式时间算法。
接下来定义一个包含三个数字的列表:
plain_list = [50, 60, 70]
然后使用之前定义的上下文对象进行加密:
encrypted_list = ts.bfv_vector(context, plain_list)
接着进行一个操作:
add_result = encrypted_vector + [1, 2, 3]
结果
add_result
列表将是
[51, 62, 73]
,这是原始值列表
[50, 60, 70]
和
[1, 2, 3]
的逐元素求和。
虽然同态加密或其他加密技术看起来非常安全,但它仍然需要访问密钥,例如在云服务器上,这可能会导致安全问题。可以通过使用密钥管理服务(如AWS KMS (https://aws.amazon.com/kms/))或多因素身份验证(MFA)来降低此类风险。
1.2 差分隐私
差分隐私的目标是确保单个数据点的移除或添加不会影响建模的结果。例如,通过向正态分布中添加随机噪声,试图使单个数据点的特征变得模糊。如果有大量的数据点,根据大数定律,可以消除噪声在学习中的影响。
首先定义一个函数
gaussian_add_noise()
,用于向查询值列表中添加高斯噪声:
import numpy as np
def gaussian_add_noise(query_result: float,
sensitivity: float, epsilon: float):
std_dev = sensitivity / epsilon
noise = np.random.normal(loc=0.0, scale=std_dev)
noisy_result = query_result + noise
return noisy_result
在这个函数中,使用了
sensitivity
和
epsilon
作为输入参数,它们的含义如下:
-
sensitivity
:差分隐私机制中所需的噪声水平由
sensitivity
参数决定。它告诉我们查询结果的变化影响程度。较大的
sensitivity
值会带来更好的隐私保护,但响应的准确性会降低。
-
epsilon (隐私预算)
:隐私预算是一个限制噪声数据和查询数据之间偏差程度的参数。较小的
epsilon
值会带来更好的隐私保护,但响应的准确性会降低。
然后使用一个简单的for循环生成遵循正态分布的随机值作为查询值,并使用定义的
gaussian_add_noise()
函数向它们添加噪声:
query_list = []
noisy_list = []
sensitivity = 1.0 # 假设值
epsilon_budget = 0.1 # 假设值
for iter in range(1000):
# 生成0到100之间的随机值
query_val = np.random.rand()*100
noisy_val = gaussian_add_noise(query_val, sensitivity,
epsilon_budget)
query_list.append(query_val)
noisy_list.append(noisy_val)
print('Mean of the original distribution: {}'.format(np.mean(query_list)))
print('Mean of the noisy distribution: {}'.format(np.mean(noisy_list)))
print('Standard deviation of the original distribution: {}'.format(np.std(query_list)))
print('Standard deviation of the noisy distribution: {}'.format(np.std(noisy_list)))
生成的噪声分布和查询分布非常相似。可以通过调整
sensitivity
和
epsilon
参数来改变查询值和噪声值之间的距离。
也有一些Python库可以用于实现差分隐私:
- IBM Differential Privacy Library (Diffprivlib) (https://github.com/IBM/differential - privacy - library)
- PyDP (https://github.com/OpenMined/PyDP)
- Opacus (https://github.com/pytorch/opacus)
1.3 联邦学习
联邦学习(FL)基于去中心化学习、数据分析和推理的理念,允许用户数据保留在各个设备或本地数据库中。通过联邦学习,我们可以利用无法存储在集中式数据存储系统中的本地设备和用户的数据来训练和改进机器学习模型。
一个本地设备或用户可以提供本地数据来更新全局模型,全局模型得到更新和改进后,为本地用户和设备提供更新后的推理。
有几个Python库可以用于实现联邦学习:
- PySyft (https://github.com/OpenMined/PySyft)
- TensorFlow Federated (https://www.tensorflow.org/federated)
- FedML (https://github.com/FedML - AI/FedML)
- Flower (https://github.com/adap/flower)
- FATE (https://github.com/FederatedAI/FATE)
然而,在实践中使用联邦学习的挑战不仅仅在于编程或基础设施设计。尽管它是一种将用户数据本地存储的好方法,但在不同应用中使用联邦学习仍然存在伦理、法律和商业挑战。例如在医疗保健领域,联邦学习可以带来很大的好处,但仍然存在法律和伦理挑战,这减缓了其在实践中的实施。
下面是一个简单的流程图,展示了联邦学习的基本流程:
graph LR
A[本地设备/用户] --> B[提供本地数据]
B --> C[更新全局模型]
C --> D[中央服务器]
D --> E[改进全局模型]
E --> F[提供更新后的推理]
F --> A
2. 人在回路的机器学习
2.1 机器学习生命周期中的人类角色
开发和改进机器学习生命周期的不同组件,以将可靠且高性能的模型投入生产,是一项可以从专家和非专家的人类反馈中受益的协作工作。
人类反馈不仅限于生命周期开始时的数据标注。例如,放射科医生可以帮助标注放射图像,大多数视力良好的人可以轻松标注猫和狗的图像。我们还可以利用人类的智能和专业知识来改进数据准备、特征工程、表示学习、模型训练和测试以及最终的模型部署和监控等方面。
人类反馈可以被动或主动地融入,被动的人在回路是指收集专家和非专家的反馈和信息,并在下次修改相应机器学习建模系统的组件时从中受益。主动的人在回路机器学习则需要对基础设施和一个或所有生命周期组件进行设计,以便可以主动且持续地融入额外的人在回路信息和数据,以改进数据分析和建模。
2.2 专家反馈收集
构建基于一个或多个机器学习模型的技术的最终目标是为用户、专家或非专家提供用于特定目标的工具,例如医疗图像分类、股票价格预测、信用风险评估和在亚马逊等平台上的产品推荐。
可以出于四个主要目的融入专家反馈:数据生成和标注、数据过滤、模型选择和模型监控。
对于模型选择,我们可以使用专家反馈,而不是仅仅依赖用于模型性能评估的性能指标来选择最佳模型,还可以根据错误预测检测危险信号,或依赖模型的可解释性信息,例如模型用于预测特定数据集输出的最具信息性的特征是否与任务相关。
在监控模型时,我们也可以从专家的反馈中受益。漂移检测对于确保模型在生产中的可靠性至关重要。在许多应用中,模型的用户可能是特定领域的专家,如医疗保健和药物发现领域。在这种情况下,我们需要确保持续收集他们的反馈,并使用这些反馈来检测和消除模型中的漂移。
收集专家反馈时应注意以下几点:
-
提供足够的信息
:向专家用户询问反馈时,需要提供足够的信息以获得更好、更相关的反馈。例如,除了模型在测试和生产中的性能,或特定数据集的错误和正确预测外,还可以提供模型如何做出决策的可解释性信息。
-
不要要求翻译
:许多模型用户可能对统计和机器学习建模知识有限,要求他们将意见和想法转换为技术术语会限制有效反馈的收集。需要提供足够的信息,询问他们的反馈,并进行来回对话,将他们的见解转化为可用于改进模型的行动项。
-
设计自动化反馈收集
:可以朝着更自动化的反馈收集方向发展,使用清晰详细的问题和适当的基础设施设计来收集反馈并将其融入模型。例如,可以使用机器学习可解释性,询问模型用于预测特定数据集输出的最具信息性的特征是否与任务相关。
人在回路也有其自身的挑战,例如在需要第三方公司监控模型和管道时保护隐私,或者在与团队和组织中的其他人共享来自合作伙伴和商业伙伴的数据时存在特定的法律障碍。
2.3 人在回路建模
尽管高质量的标注数据点更有价值,但标注数据的成本可能非常高,特别是在需要领域专业知识的情况下。主动学习是一种策略,可以帮助我们以较低的成本生成和标注数据,以提高模型的性能。
在主动学习设置中,我们旨在利用有限数量的数据的模型,并迭代地选择新的数据点进行标注,或者确定其连续值,以实现更高的性能。模型查询新的实例,由专家或非专家进行标注,或者通过任何计算或实验技术确定其标签或连续值。
有一些技术可以用于选择新实例,以帮助我们用更少的实例和迭代次数实现更好的模型,每种技术都有其优缺点。例如,不确定性采样很简单,但如果实例预测输出的不确定性与模型误差没有高度相关性,其对性能的影响可能有限。
下面是一个简单的表格,展示了不同实例选择技术的优缺点:
| 实例选择技术 | 优点 | 缺点 |
| — | — | — |
| 不确定性采样 | 简单 | 若不确定性与模型误差相关性低,对性能影响有限 |
2.4 主动学习实例选择技术分析
为了更深入地理解主动学习中不同实例选择技术,我们将进一步探讨几种常见技术及其特点。
-
不确定性采样
- 原理 :选择模型预测最不确定的实例进行标注。例如,在分类问题中,选择那些预测概率接近 0.5 的样本。
- 优点 :实现简单,不需要额外的复杂计算。它直接关注模型最“困惑”的地方,理论上可以快速提高模型对困难样本的识别能力。
- 缺点 :如前文所述,如果实例预测输出的不确定性与模型误差没有高度相关性,其对性能的提升效果可能有限。而且在某些情况下,可能会过度关注一些异常样本,导致模型的泛化能力下降。
-
委员会查询
- 原理 :训练多个不同的模型组成委员会,选择那些委员会成员预测结果差异最大的实例进行标注。
- 优点 :通过多个模型的意见分歧来选择样本,能够更全面地捕捉数据中的不确定性。相比于单一模型的不确定性采样,它考虑了不同模型之间的差异,可能会选择到更有价值的样本。
- 缺点 :需要训练多个模型,计算成本较高。而且模型之间的差异可能是由于随机因素导致的,不一定能准确反映样本的重要性。
-
密度加权采样
- 原理 :结合数据的密度信息,选择那些位于数据分布密集区域且模型预测不确定的实例。
- 优点 :既考虑了模型的不确定性,又关注了数据的分布情况。在数据分布不均匀的情况下,能够优先选择那些对模型性能提升有较大影响的样本,提高标注效率。
- 缺点 :需要对数据的密度进行估计,这可能需要额外的计算和假设。而且密度估计的准确性会影响实例选择的效果。
下面是一个简单的流程图,展示了主动学习中实例选择的基本流程:
graph LR
A[初始模型] --> B[选择实例]
B --> C{选择技术}
C -->|不确定性采样| D[选择最不确定实例]
C -->|委员会查询| E[选择分歧最大实例]
C -->|密度加权采样| F[选择密集且不确定实例]
D --> G[标注实例]
E --> G
F --> G
G --> H[更新模型]
H --> B
2.5 人在回路机器学习的应用案例
人在回路的机器学习在多个领域都有广泛的应用,下面我们将介绍几个典型的案例。
医疗影像诊断
在医疗影像诊断领域,人在回路的机器学习可以帮助提高诊断的准确性和效率。例如,放射科医生可以对机器学习模型的诊断结果进行审核和修正,同时模型也可以根据医生的反馈不断学习和改进。
- 数据标注阶段 :医生可以对大量的医学影像进行标注,为模型提供高质量的训练数据。
- 模型训练和测试阶段 :模型在训练过程中可以不断向医生查询新的实例,以提高对复杂病例的诊断能力。医生可以对模型的诊断结果进行评估和反馈,帮助模型调整参数。
- 模型部署和监控阶段 :在实际应用中,模型可以实时为医生提供诊断建议,医生可以根据自己的经验对建议进行判断和修正。同时,系统可以收集医生的反馈,持续改进模型的性能。
自然语言处理
在自然语言处理领域,人在回路的机器学习可以用于文本分类、情感分析、机器翻译等任务。例如,在文本分类任务中,人工标注员可以对模型的分类结果进行审核和修正,同时模型可以根据标注员的反馈不断优化分类算法。
- 数据标注阶段 :标注员可以对大量的文本数据进行分类标注,为模型提供训练数据。
- 模型训练和测试阶段 :模型在训练过程中可以选择一些不确定的文本实例向标注员查询,以提高分类的准确性。标注员可以对模型的分类结果进行评估和反馈,帮助模型调整参数。
- 模型部署和监控阶段 :在实际应用中,模型可以对新的文本进行分类,同时系统可以收集用户的反馈,持续改进模型的性能。
2.6 总结与展望
人在回路的机器学习结合了人类的智能和机器的计算能力,为提高机器学习模型的性能和可靠性提供了一种有效的方法。通过融入人类反馈,我们可以在数据标注、模型训练、测试和部署等各个阶段对模型进行优化,从而更好地满足实际应用的需求。
然而,人在回路的机器学习也面临着一些挑战,如隐私保护、法律障碍、成本控制等。未来,我们需要进一步研究和开发相关技术,以解决这些挑战,推动人在回路的机器学习在更多领域的应用。
同时,随着人工智能技术的不断发展,我们可以期待人在回路的机器学习与其他技术的融合,如强化学习、深度学习、迁移学习等,以实现更加高效、智能的机器学习系统。
问题解答
为了帮助大家更好地理解本文所介绍的内容,下面我们对一些常见问题进行解答。
-
解释三种加密技术,它们如何在机器学习项目中发挥作用?
- 同态加密 :允许在加密数据上进行计算,无需解密。在机器学习中,可以在加密数据上进行模型推理,保护数据隐私。例如,在云服务器上对加密数据进行预测,而无需将数据解密。
- 差分隐私 :通过向数据中添加随机噪声,确保单个数据点的移除或添加不会影响建模结果。可以在数据收集和处理阶段使用,保护数据的隐私性。
- 联邦学习 :基于去中心化的理念,允许用户数据保留在本地设备或数据库中。通过在本地设备上进行模型训练,然后将模型参数发送到中央服务器进行聚合,实现数据隐私保护和模型训练的平衡。
-
同态加密在机器学习场景中有什么好处?
同态加密可以在不解密数据的情况下对加密数据进行计算,这在机器学习场景中有多个好处。首先,它可以保护数据的隐私性,特别是在数据需要在不可信环境中进行处理时。其次,它允许在加密数据上进行模型推理,避免了数据泄露的风险。例如,在医疗领域,可以在加密的患者数据上进行疾病诊断,而无需将数据暴露给第三方。 -
什么是差分隐私?
差分隐私的目标是确保单个数据点的移除或添加不会影响建模的结果。通过向数据中添加随机噪声,使单个数据点的特征变得模糊,从而保护数据的隐私性。在大数据分析中,根据大数定律,当数据量足够大时,噪声对整体分析结果的影响可以忽略不计。 -
使用联邦学习或差分隐私时,存在哪些非技术挑战?
使用联邦学习或差分隐私时,存在伦理、法律和商业等非技术挑战。在伦理方面,需要确保数据的使用符合道德规范,保护用户的隐私和权益。在法律方面,不同地区和行业可能有不同的法律法规,需要确保数据的处理和使用符合相关法律要求。在商业方面,需要解决数据所有权、利益分配等问题,以促进技术的推广和应用。例如,在医疗保健领域,使用联邦学习需要解决患者数据的隐私保护、医疗机构之间的合作和利益分配等问题。
通过以上内容,我们对机器学习中的安全与隐私技术以及人在回路的机器学习有了更深入的了解。希望这些知识能够帮助你在实际项目中更好地应用相关技术,保护数据隐私,提高模型性能。
超级会员免费看

被折叠的 条评论
为什么被折叠?



