如果机器学习数据是关于个人的,那么存储系统需要有保护隐私的特性。将数据从资产转化为负债的最快方式之一是泄露客户或合作伙伴的私人信息。
对于私人数据的处理,在架构上有两种方案供我们选择:消除它或锁定它。当我们在没有私人数据时仍能获得出色结果的情况下,消除私人数据是一个极其健全的策略。如果我们防止PII数据被存储在数据存储系统中,我们就消除了持有私人数据的大部分风险。
这可能是十分困难的——不仅因为识别私人数据并不总是容易的,而且还因为如果没有私人数据,那么不一定能得到很好的结果。
让我们考虑一下YarnIt的推荐或发现系统。一般的想法是,我们希望在客户访问 yarnit.ai 网站的不同阶段向他们展示其可能有兴趣购买的商品。这可能包括他们登录页面、他们搜索某种类型的纱线或某种品牌的织针、他们把东西放入购物车,以及他们结账等阶段。理想情况下,我们会向他们提出其认为有吸引力的建议。那么,我们需要哪些信息作为系统的输入来确定他们可能也会考虑的产品呢?
历史悠久的方法之一是”购买 X 的人也购买 Y ”。这是有道理的,它允许我们对客户之间存在共性或同质性的大范围内的产品进行合理的推荐。如果每个购买特定类型马海毛纱线的人也购买特定类型的针,我们现在应该可以在没有任何关于单个用户的私人信息的情况下推荐它们。但是,如果我们的客户中存在一些多样性,事情就会变得更加有趣。
例如,如果一个客户对价格的敏感度比其他客户高得多或低得多怎么办?如果他们的预算比典型的马海毛纱线购买者少得多,他们可能选择不购买额外的针,或者只购买低于某个价格的针。或者,如果系统知道这个顾客在以前的交易中已经购买了这些针,那该怎么办?在这种情况下,推荐更多的针可能是在浪费屏幕空间和宝贵的注意力。应该推荐一些我们更有理由相信顾客实际上会有兴趣购买的东西。
然而,要做出这样的推荐,需要私人数据。具体而言,需要个人用户的购买历史。有了这些数据,我们可以很容易地确定某些东西,如大概的预算和以前购买的物品类型,包括已经购买的具体物品。如果我们断定自己的模型只有通过访问私人数据才能实现目标,那么我们将需要认真讨论存储、使用和最终删除这些私人数据的架构。最彻底的结构方法通常需要创建每个用户的数据存储,这些数据存储在静止状态下是加密的,并且通过仅由客户控制的密钥解锁。这在处理其他组织的数据时是最常见的,但对于运行自己训练系统的个人来说则不太常见。此外,使用这样的数据,需要再加上具有多个用户数据的一般数据集来进行联邦学习——这是一个高级话题,超出了本书的范围 [6] 。(参见图2-5,了解数据的类型和访问控制的含义)。
图2-5:数据在机器学习系统中流动时的选择和处理
鉴于所有这些内容的复杂性,在提取数据时对其进行匿名化处理会大大改善,也更容易。如前所述,匿名化的主题在技术上很复杂,但每个构建机器学习系统的人都需要知道以下两个关键事实:
匿名化是困难的
这是一个正在研究和发展的主题。不要试图蒙混过关,应认真对待并正确处理它。
匿名化与上下文有关
如果不知道还有什么其他数据存在,以及这两块数据之间的关系如何,就无法保证能将数据匿名化。
匿名化是困难的,但并非完全不可能,如果做得好,它可以避免一系列相关问题。请注意,要持久地做到这一点,需要定期审查,以确保当前的匿名化仍然符合实施时对数据和访问权限的假设,还需要每次添加新数据源时的审查,以确保数据源之间的连接不会破坏匿名化。这个主题在第6章会有更广泛的论述。