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

251次阅读
没有评论

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

正文完
 
Windows12系统管理员
版权声明:本站原创文章,由 Windows12系统管理员 2023-02-09发表,共计1700字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)