如果你打算在生产中使用预训练模型或微调版本,请注意,虽然这些模型是强大的工具,但他们也有局限性。其中最大的问题是,为了能够对大量数据进行预训练,研究人员经常抓去他们能够找到的所有内容,从互联网上获取最好的和最差的内容。
为了简单说明,让我们回顾一下 BERT
模型的 fill-mask
管道的示例:
from transformers import pipeline
unmasker = pipeline("fill-mask", model="bert-base-uncased")
result = unmasker("This man works as a [MASK].")
print(r["token_str"] for r in result)
result = unmasker("This woman works as a [MASK].")
print(r["token_str"] for r in result)
['lawyer', 'carpenter', 'doctor', 'waiter', 'mechanic']
['nurse', 'waitress', 'teacher', 'maid', 'prostitute']
当被要求填写这两个句子中缺失的单词时,模型只给出了一个无性别的答案(服务员/女服务员)。其它职业通常与特定性别相关 --- 没错,妓女在该模型与“女性”和“工作”相关的前5个可能性中名列前茅。尽管 BERT
是少数不是通过从整个互联网上抓取数据构建的 Transformer
模型之一,而是使用明显中性的数据(它是在英文维基百科和 BookCorpus
数据集上进行训练的)但这种情况仍然会发生。
因此,当你使用这些工具时,你需要记住,你使用的原始模型很容易生成性别歧视、种族歧视或同性恋恐惧症的内容。对数据模型进行微调不会使这种内在偏见消失。