如何在词嵌入中找到性别偏见?

问题描述

我有 glove.twitter.27B.200d.txt 个词嵌入。 glove 格式的这些嵌入。我使用此代码将其传输为 w2v 格式:

model = KeyedVectors.load_word2vec_format(
"data/glove.twitter.27B.200d.w2v.txt",binary=False
)

len(model.vocab) == 1193514

这个词嵌入存在性别偏见:

model.similarity("man","kitchen") == 0.32785824

model.similarity("woman","kitchen") == 0.40180725

我想在这个词嵌入中找到性别偏见的方向,但不确定如何。

解决方法

您可以使用this paper(男人之于计算机程序员,女人之于家庭主妇?消除词嵌入偏差)方法:

为了更稳健地估计偏差,我们将汇总 跨多个配对比较。通过结合几个方向,例如 enter image description here

确定一个性别方向 g ∈ R^d,在嵌入中主要捕捉性别。这个方向有助于我们量化单词和联想中的直接和间接偏见。

因此,首先,生成一些用于生成性别子空间的预定义对差异。然后:

为了识别性别子空间,我们取了十个性别对差异向量并计算了它的主体 组件 (PC)。如图 6 所示,有一个方向可以解释大部分方差 在这些向量中。第一个特征值明显大于其他特征值。注意,从随机性 在 10 个噪声向量的有限样本中,人们预计特征值会减少。然而,也如图所示 在 6 中,由于随机抽样而观察到的减少更加渐进和均匀。因此我们 假设由单位向量 g 表示的顶部 PC 捕获了性别子空间。一般来说, 性别子空间可以是更高维的,我们所有的分析和算法(如下所述)都可以工作 具有一般子空间。

enter image description here

生成的向量 g 来自对生成的性别子空间的 PC 分析,其性别偏差方向如何。最后,测量DirectBias

为了衡量直接偏见,我们首先确定了对于相关应用程序应该是性别中立的字词。 如何生成这组中性词在第 7 节中描述。​​ 鉴于性别中性词, 由 N 表示,以及从上面学到的性别方向 g,我们将嵌入的直接性别偏差定义为: enter image description here

,

词嵌入提供的是追踪类比的能力,一个例子here,一篇论文here

v('king') - v('man') ~ v('queen') - v('woman')

您甚至可以在二维图中可视化这些向量的投影,这是一个很好的交互式示例,您不仅可以探索性别类比here

发现偏差的策略是,假设训练数据中存在一些可能的偏差,然后寻找那些在有偏见的观点中存在但在公平/无偏见的观点中不存在的类比。

enter image description here