OpenAI 使用对数偏差来定义标记概率

Logit_bias是一个可选参数,用于修改指定标记出现在Completion中的可能性。

此参数接受一个 JSON 对象,该对象将令牌映射到从 -100(禁止)到 100(令牌的独占选择)的相关偏差值。适度的值,如 -1 和 1 将在较小程度上改变标记被选择的概率。使用 logit_bias 参数时,偏差会添加到模型在采样之前生成的 logits 中。

由于该参数采用标记而非文本,因此您需要使用标记器工具将文本转换为标记 ID。让我们来看几个例子。

示例 1:删除“时间”

如果我们用提示“Once upon a”调用 Completions 端点,完成很可能会以“time”开始。

单词“time”标记为 ID 2435,单词“time”(开头有一个空格)标记为 ID 640。我们可以通过带有 -100 的 logit_bias 传递它们以禁止它们出现在完成中,例如所以:

openai.Completion.create( engine="davinci", max_tokens=50, temperature=0, prompt = "Once upon a", logit_bias={2435:-100, 640:-100},)

现在,提示“Once upon a”生成完成“午夜沉闷,而我沉思,虚弱和疲倦。” 请注意,“时间”一词无处可寻,因为我们已经使用 logit_bias 有效地禁止了该标记。

示例 2:使用目标 logit 偏差值给出方向

让我们来看另一个例子,使用配方生成器提示。默认情况下,常见的补全以“1. 在炉子上的锅里加热辣椒。” 但是,假设我们没有锅。我们可以禁止单词“pot”,它标记为 1787,如下所示:

openai.Completion.create( engine="davinci-instruct-beta", prompt="Write a recipe based on these ingredients and instructions:\n\nFrito Pie\n\nIngredients:\nFritos\nChili\nShredded cheddar cheese\nSweet white or red onions, diced small\nSour cream\n\nDirections:", temperature=0, max_tokens=120, top_p=1, frequency_penalty=0, logit_bias={1787:-100}, presence_penalty=0)

现在,我们的补全从“1. 在平底锅里加热辣椒。” 完美的!

示例 3:增加单词出现的几率

假设我们想增加一个词出现的可能性。例如,也许我们正在运行一个网站,提供可以用微波炉制作的食谱,因此我们希望确保食谱中出现“微波炉”一词,它标记为 ID 27000。我们可以增加这样的可能性此标记通过设置正的 logit_bias 出现,如下所示:

openai.Completion.create( engine="davinci-instruct-beta", prompt="Write a recipe based on these ingredients and instructions:\n\nFrito Pie\n\nIngredients:\nFritos\nChili\nShredded cheddar cheese\nSweet white or red onions, diced small\nSour cream\n\nDirections:", temperature=0, max_tokens=120, top_p=1, frequency_penalty=0, logit_bias={27000:5}, presence_penalty=0)

现在,我们的补全从“1. 用微波炉或炉灶加热辣椒。” 我们将 logit_bias 设置为 5,因为我们发现将 logit_bias 设置为 1 通常不会导致补全中出现单词“microwave”,而较高的 logit_bias 值(如 10)会导致补全中出现单词“microwave”的频率太高。

ChatGPT中国体验版点击进入https://yundongfang.com/chatgpt.php

原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun212315.html

(0)
打赏 微信扫一扫不于多少! 微信扫一扫不于多少! 支付宝扫一扫礼轻情意重 支付宝扫一扫礼轻情意重
上一篇 2023年2月9日
下一篇 2023年2月9日

相关推荐