
亚马逊造出一个自学会歧视女性的AI招聘系统。我造了一个从设计上就不可能歧视的。
2014年,爱丁堡的一支机器学习工程师团队坐下来,着手解决亚马逊规模下的招聘难题。向系统输入100份简历,系统返回排名前五的候选人,并按一到五星打分——就像给商品评分一样。优雅。高效。然而三年之内,他们发现这套系统自行学会了:身为女性是一项会被淘汰的特征。
这套AI会给含有"women's"(女子)一词的简历扣分——比如"女子国际象棋俱乐部队长"。它给两所女子学院的毕业生降了级。这并非因为有人如此指示它,而是因为当你用一个男性主导的行业十年的招聘数据来训练模型时,"身为男性"从统计上就成了"被录用"最强的预测指标之一。
我记得路透社的这篇独家报道刚曝出时我读到了它。当时我已经深入投身于在Veriprajna构建知识图谱系统,而我的第一反应并不是震惊——而是似曾相识。几个月来我一直在主张:统计相关性引擎根本没有资格对人的潜力做出裁决。亚马逊这件事并非异常,而是一种数学上的必然。它也让我变得激进,坚信整套AI招聘的架构思路都是坏的——不是在边缘出了问题,而是从根基上就错了。
问题不在偏见,而在架构。
关于亚马逊这场惨败,大多数人有一点搞错了:他们以为那些工程师粗心大意。并非如此。他们是全球最顶尖的机器学习工程师之列。当他们发现性别偏见时,他们试图去修复它。他们明确地对模型编程,让它忽略与性别相关的词汇。而模型却找到了绕过去的办法。
这就是所谓的代理变量这一概念,而正是它让我夜不能寐。深度学习模型是不知疲倦的模式发现器。把输入中的"woman"(女性)一词去掉,模型就会抓住句子结构不放。研究表明,男性简历往往使用"executed"(执行)、"captured"(拿下)这类动词,而女性简历更倾向于使用偏重协作的语言。模型看到"executed"与"被录用"相关联,便悄悄地仅凭语言学重建了性别偏见。
亚马逊的工程师无法在不摧毁模型预测能力的前提下,精准地切除这种偏见。于是他们叫停了整个项目。
你无法修复一个偶然产生歧视的系统。你必须从设计上构建一个不可能产生歧视的系统。
这句话三年来一直是我的北极星。也正因如此,我们把Veriprajna的招聘引擎建立在知识图谱之上,而非神经网络。
为什么每一个AI招聘系统最终都学会了歧视?
我需要你理解深度学习在招聘中运作方式的一点,因为它的失效模式违反直觉。
神经网络并不理解"Python"是什么意思。它不知道Python是一门对数据科学有用的编程语言。它只知道"Python"这个字符串频繁出现在被录用者的简历里。如果"Lacrosse"(长曲棍球)也频繁出现——也许是因为某些运动与某些学校之间存在社会经济上的相关性,而这些学校又向某些公司输送人才——模型就可能把"Lacrosse"看得和"Python"一样重。
这是相关性伪装成了智能。模型并不对因果进行推理。它发现模式,并为之优化。而阴险之处在于:偏见放大意味着这些模型不只是复制历史偏见——它们还会夸大偏见。如果训练数据中男性占劳动力的60%,模型可能会为了最大化其准确率得分,而倾向于录用80%甚至90%的男性。
早期我曾与一位潜在投资人有过一次交谈,他对我说:"简历筛选就用GPT-4好了。别人都在用。"我问他:如果你把同一份简历两次输入GPT-4,你会得到相同的分数吗?他顿了一下。答案是不会——大语言模型是随机性的。它们是非确定性的。同样的输入跑两次,会得到两个不同的输出。在审计场景中,这不是一个小怪癖,而是一次合规失败。
监管的高墙正在合拢
这已不再只是理论。各国政府看到了亚马逊的故事,并正在立法。
《纽约市第144号地方法》,自2023年7月起生效,要求任何使用自动化雇佣决策工具的雇主每年接受一次独立的偏见审计。不是那种含糊的"我们检查过公平性了"式审计——而是一次具体的、量化的审计。该法强制要求计算选择率和影响比,涵盖种族、族裔和性别的每一个类别。如果某一受保护群体的选择率除以被选择最多群体的选择率低于0.8——即"五分之四规则"——那便构成差别性影响的初步证据。
而《欧盟AI法案》则走得更远。它将用于招聘的AI系统归类为高风险——与医疗器械和关键基础设施同属一类。第13条要求这些系统"足够透明,使用户能够解读系统的输出"。第14条要求人工监督——即推翻AI决策的能力。但你无法有意义地推翻一个你并不理解的决策。
而根据GDPR,第15条第1款(h)项赋予数据主体获取自动化决策中"所涉逻辑的有意义信息"的权利。前言第71条明确提及"获得对所作决策的解释"的权利。
试着去解释一个神经网络的决策吧。来啊。"第4,502号神经元以0.8的强度激活"并不是一个有意义的解释。"模型判定你的匹配度为73%"却不给出更多细节,同样不是。
技术复杂性与法律对简单解释的要求之间的鸿沟,正是现代人力资源科技的核心危机。
关于这一监管格局,我在我们白皮书的交互式版本中做了更深入的探讨,它逐一讲解了每项法规究竟如何适用于不同的AI架构。
如果AI根本看不见性别呢?
在这里,我需要向你讲述那个一切豁然开朗的夜晚。
我们一直在尝试各种去偏方法——对抗训练、反事实增强,以及那套常规工具箱。晚上11点,我坐在办公室里,盯着屏幕上的一张图可视化,忽然有了那种事后看来显而易见的顿悟:我们一直在试图教会模型去忽略偏见。可如果我们构建一种架构,让偏见根本无法进入推理引擎呢?
在知识图谱中,数据被存储为节点(实体)和边(关系)。一个"人"节点连接到"技能"节点。"技能"节点又通过语义关系连接到其他"技能"节点。图谱知道"PyTorch"是用于"深度学习"的一个库,而深度学习是"人工智能"的一个子集。所以,如果某个职位要求"AI经验",而一位候选人列出了"PyTorch",图谱就会沿着路径追溯并找到匹配——哪怕简历上任何地方都没有出现"AI"这个关键词。
关键的架构决策在于:当我们的匹配算法运行时,它作用于一个受限的子图。这个推理图包含技能、角色、经验层级和资格证书。它明确排除了姓名、性别、族裔、地址以及毕业日期等节点。
偏见并没有被抑制。它是被从结构上斩断的。从"候选人"到"性别"再到"角色"之间不存在任何路径,因为在算法所能看到的图谱里,"性别"节点根本不存在。
把这与深度学习模型对比一下,后者会吞下整段原始文本。即便你删去"性别"字段,模型读到"女子国际象棋俱乐部"仍会推断出性别。在我们的系统中,负责解析简历的LLM会把"女子国际象棋俱乐部"映射为一个中性化的节点:(:Activity {type: "Strategy Club", role: "Leadership"})。带有性别色彩的修饰词在进入推理引擎之前就被剥离了。
我记得团队为此争论过。我的一位工程师强烈反对——他认为剥离上下文会让我们损失有价值的信号。"万一女子国际象棋俱乐部其实比普通俱乐部更具竞争性呢?"有道理。但我们优化的目标不是最大化信息提取,而是在法律审视下的公平性。我宁可错失一个边际信号,也不愿构建一个学会惩罚半数人口的系统。
你究竟如何在没有偏见的情况下衡量人才?

我们不预测谁会成功。我们衡量的是技能距离——即候选人所拥有的与职位所要求的之间的几何差距。这让招聘从主观的概率判断转向客观的度量。
传统的申请人跟踪系统使用布尔逻辑:简历里是否包含关键词"Java"?是或否。这既脆弱又愚蠢。凡是用不同术语来表述同一项能力的人,它都会漏掉。
我们使用图嵌入——诸如Node2Vec这样的算法,会为我们本体中的每一项技能学习出一个向量表示。在图谱中频繁共现的技能(比如"Python"和"Pandas")最终会在向量空间中彼此靠近。互不相关的技能(比如"Python"和"Phlebotomy"(采血))则最终相距甚远。
为了给候选人打分,我们计算余弦相似度——针对候选人的技能向量集合与职位的要求向量集合。这让我们能给予部分得分。一位没有"Tableau"却掌握"Power BI"的候选人会得到很高的相似度分数,因为这两个节点在"商业智能"簇中是语义上的近邻。而关键词搜索只会给他们零分。
我们再叠加Jaccard相似度用于衡量原始技能的重叠,以及测地距离——即在图谱中进行的最短路径计算——用于差距分析。如果某个职位要求Kubernetes,而候选人掌握Docker,图谱会找到这条路径:Docker → 容器化 → 编排 → Kubernetes。距离:3跳。解读:可培养。如果距离达到6跳以上,那就是一道难以跨越的鸿沟。
最终的技能距离分数是一个纯粹基于能力的指标,对人口统计特征完全视而不见。我们不去猜谁优秀。我们衡量他们与要求有多接近。
关于这些算法的完整技术剖析——包括余弦相似度背后的数学原理以及我们的复合评分模型——请参阅我们的研究论文。
那个"缺失SQL"的时刻
让我用测试期间发生的一件事把这一点讲具体。
我们把同一份候选人档案分别交给一个标准的黑箱招聘系统和我们的系统处理。黑箱拒绝了这位候选人,没有给出任何理由。(我们后来查明,这位候选人就读于一所规模不大、名气不响的学院——这是典型的"出身歧视"。)
我们的系统则返回了这样的结果:"候选人缺乏明确的SQL经验。然而,图谱分析显示其在Pandas DataFrames和R dplyr方面有丰富经验。DataFrames与SQL之间的图谱距离很短(共享概念:数据操作)。建议:面试。可迁移性高。"
那位候选人——被黑箱抛弃的那一位——具备职位所需的每一项技能。他们只是用了不同的词来表述而已。而他们所就读的学校,在黑箱的训练数据中出现得不够多,以至于黑箱不认为它是"成功"的。
这正是我所说的知识图谱扩大人才库的含义。它们能找到那些具备能力、却没有相应出身或精确措辞的人。而这自然而然地提升了多样性——不是通过配额或调整,而是通过更好的度量。
当系统标记出一个问题时,会发生什么?
有人问我:"要是你的系统仍然产生带偏见的结果呢?"这是个合理的问题,而对任何宣称自己系统完美无缺的人,我都会心存怀疑。
区别在于:当黑箱产生带偏见的结果时,你束手无策。你能在数字中看到差别性影响,却看不到原因。是大学的名字?邮政编码?还是写作风格?你面对的是一个拥有数百万参数、却没有可读逻辑的系统,只能对它徒劳地排查。
当我们的系统产生统计异常时——比方说,某一特定人口群体的影响比低于0.8——我们可以追溯它。我们能够识别出造成这种差异的具体图谱节点。也许某份职位描述要求一项与社会经济地位相关的昂贵证书。我们能看到这一点,把它标记出来,然后招聘团队可以判断这项证书究竟是真正必要的,还是只是一条无人质疑的历史遗留要求。
玻璃箱并不意味着系统永远正确。它意味着当系统出错时,你能查明原因并加以修正。
LLM仍然有活干——只是不是那份重要的活

我得说清楚:我们确实使用LLM。我们并非勒德分子。但我们使用它们的方式,就像你使用一名翻译——用于读和写,而不是用于评判。
我们的架构强制执行一种严格的关注点分离。LLM负责感知:它读取非结构化的简历文本并提取实体。"我协调一支5人开发团队构建了一款React Native应用"会变成结构化数据——技能:React Native,技能:团队领导,情境:移动开发。LLM还会对同义词进行归一化:"ReactJS"和"React.js"都映射到同一个节点。
但LLM从不做出录用决策。所有的匹配、评分和排名都通过确定性的图谱遍历完成。同样的图谱加上同样的查询,每一次都得出同样的结果。在输出端我们也会用到LLM——它生成人类可读的解释,但只依据经图谱验证过的事实。它无法凭空虚构出一个图谱并不支持的技能匹配。
我把它理解为:LLM是系统的眼睛和嘴巴,而知识图谱才是大脑。你不会让自己的嘴巴替你做决定。(嗯,至少我们大多数人不会。)
我们真正要在什么之间做选择?
在我看来,整个行业正站在一个岔路口。一条路通向更大的模型、更多的参数、更强的不透明性——以及一场与偏见没完没了的打地鼠游戏,而偏见总能找到新的代理变量来加以利用。另一条路通向结构化推理、语义度量,以及能够向监管者、招聘者或被拒候选人解释自身的系统。
我曾与一些仍在使用黑箱筛选工具的公司的人力资源负责人交谈。他们清楚其中的风险。他们读过亚马逊的报道。但更换架构让人觉得既昂贵又充满不确定性,于是他们不断打补丁。他们在根本上就带有偏见的系统之上添加"偏见缓解层"。他们雇来顾问做年度审计,告诉他们哪里坏了,却不给他们修复的工具。
数据是一面镜子。如果你用过去来训练模型,你就会复制过去。在一个努力追求公平的世界里,复制过去就是一种失败状态。
我不打算用模棱两可的话来收尾。我为此耗费了多年心血,我亲眼见过另一条路彻底崩盘,我对这个结论充满信心:招聘AI的未来,不在于根据过去谁成功了来预测谁将成功。它在于衡量一个人能做什么与一份工作要求什么之间的真实距离——并让这种衡量透明、确定,且在结构上不可能产生歧视。
你可以继续预测过去。或者,你可以开始度量未来。
