1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai
现在ML和人工智能算法正渐渐地被信任用以辅助或是制定极其重要的决策,因此我们想尽可能地确保它们不受非预期形式偏见影响,比如说性别歧视、种族歧视等等。
本节课中我会向你展示词嵌入中一些有关减少或是消除这些形式的偏见的办法。
本节课中当我使用术语bias时,我不是指bias本身这个词,或是偏见这种感觉,而是指性别、种族、性取向方面的偏见,那是不同的偏见,同时这也通常用于ML的学术讨论中。
不过我们讨论的大部分内容是词嵌入是怎样学习类比,像Man:Woman,像King:Queen,不过如果你这样问,如果Man对应Computer Programmer,那么Woman会对应什么呢?
所以这篇论文(Bolukbasi T, Chang K W, Zou J, et al. Man is to Computer Programmer as Woman is to Homemaker? Debiasing Word Embeddings[J]. 2016.)的作者Tolga Bolukbasi、Kai-Wei Chang、James Zou、Venkatesh Saligrama和 Adam Kalai发现了一个十分可怕的结果,就是说
因此根据训练模型所使用的文本,词嵌入能够反映出性别、种族、年龄、性取向等其他方面的偏见,一件我尤其热衷的事是,这些偏见都和社会经济状态相关,我认为每个人不论你出身富裕还是贫穷,亦或是二者之间,我认为每个人都应当拥有好的机会,同时因为ML算法正用来制定十分重要的决策,它也影响着世间万物,从大学录取到人们找工作的途径,到贷款申请,不论你的的贷款申请是否会被批准,再到刑事司法系统,甚至是判决标准,学习算法都在作出非常重要的决策,所以我认为我们尽量修改学习算法来尽可能减少或是理想化消除这些非预期类型的偏见是十分重要的。
至于词嵌入,它们能够轻易学会用来训练模型的文本中的偏见内容,所以算法获取到的偏见内容就可以反映出人们写作中的偏见。在漫长的世纪里,我认为人类已经在减少这些类型的偏见上取得了进展,幸运的是对于人工智能来说,实际上我认为有更好的办法来实现更快地减少AI领域中相比与人类社会中的偏见。虽然我认为我们仍未实现人工智能,仍然有许多研究许多难题需要完成来减少学习算法中这些类型的偏见。
本节课里我想要做的是与你们分享一个例子,它是一篇论文的一套办法,就是下面引用的这篇由Bolukbasi和其他人共同撰写的论文,它是研究减少词嵌入中偏见问题的。
就是这些,假设说我们已经完成一个词嵌入的学习,那么babysitter就是在这里,doctor在这里,grandmother在这里,grandfather在这里,也许girl嵌入在这里,boy嵌入在这里,也许she嵌在这里,he在这里,所以首先我们要做的事就是辨别出我们想要减少或想要消除的特定偏见的趋势(Identify bias direction)。
为了便于说明,我会集中讨论性别歧视,不过这些想法对于所有我在上面提及的其他类型的偏见都是通用的。这个例子中,你会怎样辨别出与这个偏见相似的趋势呢?
主要有以下三个步骤:
一、对于性别歧视这种情况来说,我们能做的是 e h e − e s h e e_{he}-e_{she} ehe−eshe,因为它们的性别不同,然后将 e m a l e − e f e m a l e e_{male}-e{female} emale−efemale,然后将这些值取平均,将这些差简单地求平均。
这个趋势(上图横轴)看起来就是性别趋势或说是偏见趋势(bias),然后这个趋势(上图纵轴)与我们想要尝试处理的特定偏见并不相关,因此这就是个无偏见趋势(non-bias direction)。
在这种情况下,偏见趋势可以将它看做1D子空间,所以这个无偏见趋势就会是299D的子空间。我已经略微简化了,原文章中的描述这个偏见趋势可以比1维更高,同时相比于取平均值,如同我在这里描述的这样,实际上它会用一个更加复杂的算法叫做SVU,也就是奇异值分解,如果你对主成分分析(Principle Component Analysis)很熟悉的话,奇异值分解这个算法的一些方法和主成分分析 (PCA)其实很类似。
二、中和步骤(Neutralize),对于那些定义不确切的词可以将其处理一下,避免偏见。
有些词本质上就和性别有关,像grandmother、grandfather、girl、boy、she、he,他们的定义中本就含有性别的内容,不过也有一些词像doctor和babysitter我们想使之在性别方面是中立的。
同时在更通常的情况下,你可能会希望像doctor或babysitter这些词成为种族中立的,或是性取向中立的等等,不过这里我们仍然只用性别来举例说明。对于那些定义不明确的词,它的基本意思是不像grandmother和grandfather这种定义里有着十分合理的性别含义的,因为从定义上来说grandmothers是女性,grandfather是男性。
所以对于像doctor和babysitter这种单词我们就可以将它们在这个轴(纵轴)上进行处理,来减少或是消除他们的性别歧视趋势的成分,也就是说减少他们在水平方向上的距离。这就是第二个中和步。
三、均衡步(Equalize pairs),意思是说你可能会有这样的词对,grandmother和grandfather,或者是girl和boy,对于这些词嵌入,你只希望性别是其区别。那为什么要那样呢?
在这个例子中,babysitter和grandmother之间的距离或者说是相似度实际上是小于babysitter和grandfather之间的(上图紫色线所示),因此这可能会加重不良状态,或者可能是非预期的偏见,也就是说grandmothers相比于grandfathers最终更有可能输出babysitting。
所以在最后的均衡步中,我们想要确保的是像grandmother和grandfather这样的词都能够有一致的相似度,或者说是相等的距离,和babysitter或是doctor这样性别中立的词一样。这其中会有一些线性代数的步骤,但它主要做的就是将grandmother和grandfather移至与中间轴线等距的一对点上,现在性别歧视的影响也就是这两个词与babysitter的距离就完全相同了(上图绿色线)。
所以总体来说,会有许多对像grandmother-grandfather,boy-girl,sorority-fraternity,girlhood-boyhood,sister-brother,niece-nephew,daughter-son这样的词对,你可能想要通过均衡步来解决他们。
最后一个细节是你怎样才能够决定哪个词是中立的呢?
对于这个例子来说,doctor看起来像是一个应该对其中和(Neutralize)的单词,来使之性别不确定或是种族不确定。相反地,grandmother和grandfather就不应是性别不确定的词。也会有一些像是beard词,一个统计学上的事实是男性相比于比女性更有可能拥有胡子,因此也许beard应该比female更靠近male一些。
因此论文作者做的就是训练一个分类器来尝试解决哪些词是有明确定义的,哪些词是性别确定的,哪些词不是。结果表明英语里大部分词在性别方面上是没有明确定义的,意思就是说性别并不是其定义的一部分,只有一小部分词像是grandmother-grandfather,girl-boy,sorority-fraternity等等,不是性别中立的。因此一个线性分类器能够告诉你哪些词能够通过中和步来预测这个偏见趋势,或将其与这个本质是299D的子空间进行处理。
最后,你需要平衡的词对的数实际上是很小的,至少对于性别歧视这个例子来说,用手都能够数出来你需要平衡的大部分词对。完整的算法会比我在这里展示的更复杂一些,你可以去看一下这篇论文了解详细内容,你也可以通过编程作业来练习一下这些想法。
总结一下,减少或者是消除学习算法中的偏见问题是个十分重要的问题,因为这些算法会用来辅助制定越来越多的社会中的重要决策,在本节课中分享了一套如何尝试处理偏见问题的办法,不过这仍是一个许多学者正在进行主要研究的领域。