差异隐私和深度学习有什么区别()

差异隐私是深度学习领域中的一个新主题。这是为了确保当我们的神经网络从敏感数据中学习时, 它们仅在学习应该从数据中学到什么。
【差异隐私和深度学习有什么区别()】辛西娅·德沃克(Cynthia Dwork)提出的健壮的隐私定义(摘自她的《算法基础》一书)–

“ 差异隐私” 描述了数据持有人或策展人对数据主体的承诺, 承诺如下:” 通过允许将你的数据用于任何研究, 你不会受到不利或其他影响。或分析, 无论是否有其他研究, 数据集或信息来源。”
差异隐私的总体目标是确保不同类型的统计分析不会损害隐私, 并且如果分析后分析人员对数据集的功能一无所知, 则可以保留隐私。在其他地方公开对个人没有害处。
为了在简单数据库的上下文中定义隐私, 我们正在对数据库进行一些查询, 如果我们从数据库中删除一个人并且查询没有更改, 那么该人的隐私将得到完全保护。
让我们看一个例子
给定一个数据库, 其中包含一些数字” 1″ 和” 0″ , 这是一些敏感数据, 例如某个人是否患有某种疾病(也许患者不想透露这些数据)。
db = [1, 0, 1, 1, 0, 1, 0, 1, 0, 0]

现在, 你已经删除了每个条目之一的数据库, 这些数据库称为并行数据库。因此, 如果原始数据库的长度为” n” , 则并行数据库的数量为” n” , 在本例中为10。
现在, 我们考虑一个并行DBS, 让我们首先从中删除第一个个体, 然后得到什么?
pdbs[0] = [0, 1, 1, 0, 1, 0, 1, 0, 0]

因此, 你现在看到该数据库的长度为” n-1″ 。因此, 要计算敏感度, 我们需要一个查询函数so, 我们假设最简单的” 和” 。因此, 我们现在关注两个结果:
sum(db) = 5 sum(pdbs[0]) = 4

并且上面两个之间的差异为’ 1′ , 我们知道我们需要找到所有这些差异的最大值, 因为此数据库仅包含’ 1’ 和’ 0′ , 所有这些差异要么为’ 1′ (上面的, 当删除1时)或’ 0′ (删除0时)。
因此, 我们对本示例的敏感度为” 1″ , 这确实是很高的值, 因此使用此” sum” 查询可以轻松进行差分攻击。
敏感度应在下面, 这样就可以定量地确定差异攻击的级别可以揭示信息/泄漏隐私。
在Python中实现差异隐私代码
import torch# the number of entries in our database num_entries = 5000db = torch.rand(num_entries)> 0.5# generating parallel databases def get_parallel_db(db, remove_index):return torch.cat((db[ 0 :remove_index], db[remove_index + 1 :])) get_parallel_db(db, 52352 )def get_parallel_dbs(db):parallel_dbs = list ()for i in range ( len (db)): pdb = get_parallel_db(db, i) parallel_dbs.append(pdb)return parallel_dbspdbs = get_parallel_dbs(db)# Creating linear and parallel databasesdef create_db_and_parallels(num_entries):db = torch.rand(num_entries)> 0.5 pdbs = get_parallel_dbs(db)return db, pdbsdb, pdbs = create_db_and_parallels( 2000 )# Creating sensitivity functiondef sensitivity(query, n_entries = 1000 ):db, pdbs = create_db_and_parallels(n_entries)full_db_result = query(db)max_distance = 0 for pdb in pdbs: pdb_result = query(pdb)db_distance = torch. abs (pdb_result - full_db_result)if (db_distance> max_distance): max_distance = db_distancereturn max_distance# query our database and evaluate whether or not the result of the # query is leaking "private" informationdef query(db): return db. float ().mean() sensitivity(query)

Input : A randomly generated database(with the help of torch library)

Output : tensor(0.0005)

解释
首先, 我们在炬管库的帮助下创建一个随机数据库, 然后为线性和并行数据库定义了两个函数get_parallel_db和get_parallel_dbs。现在, 我们定义了敏感性函数, 然后我们测量了每个并行DB的查询结果与整个数据库的查询结果之间的差异, 然后计算出最大值(为1)。这个值叫做” 灵敏度” .
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。

    推荐阅读