避免产生不良输出的方法

每个基础模型都有可能生成包含错误甚至有害内容的输出。 了解可能产生的不良输出类型、导致不良输出的原因,以及您可以采取的措施来降低造成伤害的风险。

IBM ( watsonx.ai )中提供的基础模型生成的内容可能包含幻觉、个人信息、仇恨言论、辱骂、粗俗语言和偏见。 以下方法有助于降低风险,但不能保证生成的内容中不会出现不良内容。

幻觉

当基础模型生成与主题无关、重复或错误的内容,或是编造细节时,这种行为有时被称为 “幻觉”

由于生成的输出在解码过程中存在伪随机性,可能会出现与主题无关的幻觉。 在最佳情况下,这种随机性可能会催生出极具创意的成果。 但随机性也可能导致毫无意义且无用的输出。

当模型被要求生成文本,却未获得足够的相关文本作为参考时,可能会以虚构细节的形式产生“幻觉”。 如果你在提示中包含正确的细节,例如,模型就较少会出现“幻觉”并编造细节。

避免产生幻觉的方法

为避免产生幻觉,请尝试以下一种或多种方法:

  • 选择一个预训练和微调都与您的领域及当前任务相匹配的模型。

  • 请在提示中提供背景信息。

    如果你让基础模型生成关于某个主题的文本,而该主题在其预训练数据中并不常见,且你没有在提示词中添加关于该主题的信息,那么模型出现“幻觉”的可能性就会更大。

  • 为“Min tokens”和“Max tokens”参数指定保守的数值,并指定一个或多个停止序列。

    当您为“Min tokens”参数指定一个较大的数值时,可以强制模型生成比其针对该提示词自然返回的更长的响应。 该模型在输出中添加词语以达到所需字数限制时,更容易产生幻觉。

  • 对于那些对生成的结果不需要太多创造性的用例,请使用贪婪解码。 如果您更倾向于使用采样解码,请务必为温度、top-p 和 top-k 参数指定保守的数值。

  • 为了减少生成的输出中的重复文本,请尝试增加重复惩罚参数的值。

  • 如果您在使用贪婪解码时发现生成的输出中出现了重复的文本,且您的使用场景允许一定程度的创造性,那么不妨尝试改用采样解码。 请务必将温度、top-p 和 top-k 参数设置为适度较低的数值。

  • 在您的提示中,请告知模型在无法给出确信或高概率答案时应如何处理。

    例如,在问答场景中,你可以加入以下提示: If the answer is not in the article, say “I don't know”.

个人信息

基础模型的词汇表由其预训练数据中的单词构成。 如果预训练数据包含从互联网抓取的网页,模型的词汇表中可能会包含以下类型的信息:

  • 文章作者的姓名
  • 公司网站上的联系方式
  • 在公开社区论坛中发布的提问和评论中所包含的个人信息

如果您使用基础模型为广告邮件的部分内容生成文本,生成的内容中可能会包含其他公司的联系信息!

如果你让一个基础模型撰写一篇带引用文献的论文,该模型可能会加入一些看似合法但实际上并不合法的参考文献。 它甚至可能会将这些杜撰的引用归因于该领域内真实存在的作者。 基础模型很可能生成虚假引用——形式上正确但缺乏事实依据,因为这些模型擅长将那些共同出现概率较高的词汇(包括人名)串联起来。 该模型通过在引用中将真实人物的名字列为作者,从而为生成的内容增添了一丝可信度,这使得这种幻觉显得极具说服力且令人信服。 这也使得这种幻觉变得危险。 如果人们相信这些引用是真实的,可能会惹上麻烦。 更不用说那些被列为作品作者却并非作者本人的人可能会遭受的伤害。

排除个人信息的技巧

若要排除个人信息,请尝试以下方法:

  • 在您的提示中,请指示模型不要提及姓名、联系方式或个人信息。

    例如,当你要求模型生成一封广告邮件时,请指示模型在邮件中包含贵公司的名称和电话号码。 此外,请指示模型“不要包含任何其他公司或个人信息”。

  • 在 watsonx.ai API 中,您可以在提交推理请求时,在 字段 moderations 中启用 PII 过滤器。

    如需了解更多信息,请参阅 API 参考文档

  • 在您的整体应用程序、管道或解决方案中,对基础模型生成的内容进行后处理,以查找并移除个人信息。

仇恨言论、辱骂和粗俗语言

与个人信息的情况类似,当预训练数据包含仇恨言论、辱骂性词汇或粗俗语言时,基于这些数据训练的基础模型在其词汇表中也会包含这些有问题的词汇。 如果模型的词汇表中包含不当语言,基础模型可能会生成包含不良内容的文本。

当您使用基础模型为您的业务生成内容时,必须做到以下几点:

  • 请认识到,这种情况随时都可能发生。
  • 采取措施,降低模型产生此类有害输出的可能性。
  • 在您的解决方案中融入人工审核和验证流程。

降低仇恨言论、辱骂和粗俗语言风险的方法

为避免出现仇恨言论、辱骂和粗俗语言,请尝试以下一种或多种方法:

  • 在 Prompt Lab 中, 将AI Guardrails 开关设置为“开启”。 启用此功能后,输入提示或生成的输出中任何包含有害语言的句子都将被替换为一条提示信息,说明已移除了潜在的有害内容。

  • 请勿在提示词中包含仇恨言论、辱骂或粗俗语言,以免模型做出类似回应。

  • 在您的提示中,请指示模型使用得体的语言。

    例如,根据您对输出语气的要求,可以指示模型使用“正式”、“专业”、“适合所有年龄段”或“亲切”的语言。

  • 在 watsonx.ai API 中,您可以在提交推理请求时,在 字段 moderations 中启用 HAP 过滤器。

    如需了解更多信息,请参阅 API 参考文档

  • 在您的整体应用程序、管道或解决方案中,对基础模型生成的内容进行后处理,以移除不需要的内容。

降低模型输出中的偏差风险

在预训练阶段,基础模型会根据训练数据中词汇的出现情况,学习特定词汇紧跟在其他词汇之后的统计概率。 训练数据中的任何偏差都会被训练到模型中。

例如,如果训练数据中更常将“医生”视为男性,将“护士”视为女性,那么这种偏见很可能反映在模型中这两个词之间的统计关系上。 因此,该模型生成的结果很可能更频繁地将医生描述为男性,将护士描述为女性。 有时,人们认为算法比人类更公平、更公正,因为算法“只是用数学来做决定”。 但训练数据中的偏见会体现在基于这些数据训练的基础模型所生成的内容中。

减少偏见的方法

对于那些基于带有偏见的数据进行预训练的基础模型所生成的输出,很难消除其中的偏见。 不过,您可以在提示词中加入相关内容,以消除可能影响您使用场景的偏见,从而改善结果。

例如,与其让模型“列出心脏病发作的症状”,不如让它“列出心脏病发作的症状,包括男性常见的症状和女性常见的症状”。