gpt4 book ai didi

multiclass-classification - openai 多类分类 logprobs 不返回定义的类,而是返回一个类及其变体

转载 作者:行者123 更新时间:2023-12-02 22:44:47 34 4
gpt4 key购买 nike

如标题所述,多类分类并没有返回我在训练集中定义的正确类,而是返回第一类(预测类),其他类只是它的变体。

示例请求:

curl https://api.openai.com/v1/completions   -H 'Content-Type: application/json'   -H 'Authorization: KEY'   -d '{
"model": "curie:model_id",
"prompt": "test_sample \n\n###\n\n",
"max_tokens": 1,
"logprobs": 7
}'

示例响应:

    "id": "xxx",
"object": "text_completion",
"created": 1675633654,
"model": "curie:modle_id",
"choices": [{
"text": " 6",
"index": 0,
"logprobs": {
"tokens": [" 6"],
"token_logprobs": [-0.000016165199],
"top_logprobs": [{
"6": -11.555985,
" six": -13.56059,
" 625": -15.326343,
" 6": -0.000016165199,
" 7": -12.376487
}],
"text_offset": [27]
},
"finish_reason": "length"
}],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 1,
"total_tokens": 10
}
}

正如我们从响应中看到的,top_logprobs 只是顶级类的变体

我有一个包含 1000 个样本和 7 个类的数据集,比文档推荐的 100 个样本/类多了大约 145 个样本/类。

我已经按照文档的建议定义了类:(确保它是一个带空格的标记,等等)事实上,我尝试了几种类的实现,所有这些都返回了相同的结果,我测试的一种实现是将类从一个标记转换为产生与此处所示相同结果的数字 (https://community.openai.com/t/multiple-labels-in-the-file-for-multi-class-classification-task/3541)。

训练样本定义如下:

df['training_sample'] = df['training_sample'].apply(lambda x: x + '\n\n###\n\n')

预期的行为是分类响应以最置信度返回最多的类,然后是 logprobs 中所有其他类的置信度

实际的行为是这样的,所提供的是当我将标签更改为数字时,同样不需要的行为

最佳答案

设置 temperature=0recommended使用微调分类器时。这将减少出现在 logprobs 中的奇怪类的数量。

但是,根据我的经验,不能保证 logprobs 将始终返回您训练模型所用的类(尤其是多类问题和与训练数据非常不同的文本)。

因此过滤类名并对概率应用某种阈值会更安全。

关于multiclass-classification - openai 多类分类 logprobs 不返回定义的类,而是返回一个类及其变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75355847/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com